$accept : especificacao especificacao : especificacao typesMod especificacao : especificacao bloco especificacao : especificacao ENDMODEL especificacao : especificacao MODEL SIMB especificacao : defTipo : idTipo '=' defTp inv ';' defTipo : idTipo P4 defTp inv ';' defTipo : error ';' $$1 : inv : INV '(' SIMB ')' '=' $$1 exp inv : idTipo : SIMB defTp : simpleType defTp : alternativa2 defTp : alternativa defTp : simpleType INTER rtuplo2 defTp : funcmat defTp : tuplo funcmat : SSETA simpleType funcmat : simpleType SSETA simpleType funcmat : simpleType INTER rtuplo2 SSETA simpleType simpleType : SIMB simpleType : NIL simpleType : relacao simpleType : funcfin simpleType : TBOOL simpleType : lista simpleType : conjunto simpleType : segmentoInicial simpleType : '(' simpleType ')' simpleType : '(' funcmat ')' rtuplo2 : simpleType rtuplo2 : rtuplo2 INTER simpleType tuplo : itemtuplo rtuplo rtuplo : itemtuplo rtuplo rtuplo : itemtuplo : SIMB ':' simpleType itemtuplo : INTER SIMB ':' simpleType funcfin : simpleType SETA simpleType relacao : simpleType RELACAO simpleType lista : SIMB LIST lista : TBOOL LIST lista : '(' simpleType ')' LIST lista : segmentoInicial LIST conjunto : SIMB SET conjunto : TBOOL SET conjunto : '(' simpleType ')' SET conjunto : segmentoInicial SET segmentoInicial : INTEGER alternativa : '[' simpleType ']' alternativa : simpleType '|' simpleType alternativa : alternativa '|' '[' simpleType ']' alternativa : alternativa '|' simpleType alternativa2 : simpleType PLUS simpleType alternativa2 : alternativa2 PLUS simpleType $$2 : $$3 : typesMod : TYPE $$2 defTipo $$3 restDefTypesMod ENDTYPE $$4 : restDefTypesMod : defTipo $$4 restDefTypesMod restDefTypesMod : bloco : bloco elemento bloco : elemento elemento : exp ';' elemento : include elemento : ESTADO SIMB ':' tipo ';' elemento : directiva elemento : deffuncao ';' $$5 : elemento : error ';' $$5 elemento elemento : QUIT directiva : DEBUGON directiva : DEBUGOFF include : INCLUDE SIMB '.' SIMB include : INCLUDE STRING include : INCLUDE SIMB include : INCLUDEM STRING include : INCLUDEM SIMB '.' SIMB include : INCLUDEM SIMB deffuncao : SIMB '(' explist ')' '=' exp deffuncao : FUNCAO SIMB assinatura precond poscondicao poscondicao : estado retorno poscondicao : retorno estado poscondicao : retorno poscondicao : estado poscondicao : LET '(' deflist ')' IN poscondicao retorno : RETUR exp estado : ESTADO exp assinatura : '(' explist2 ')' resultado resultado : ':' resultado1 resultado : resultado1 : resultado1 tipo resultado1 : tipo : defTp explist2 : SIMB ':' tipo ',' explist2 explist2 : SIMB ':' tipo explist2 : SIMB ',' explist2 explist2 : SIMB explist2 : '(' SIMB ')' ',' explist2 explist2 : '(' SIMB ')' explist2 : precond : PRE exp precond : PRE exp SETA exp precond : defobj : SIMB atrib exp defobj : SIMB '.' SIMB atrib exp atrib : PERTENCE exp : SIMB exp : '(' exp ')' exp : NYAVAIL exp : CONSTANTE exp : exp '(' explist ')' exp : FUNCAO assinatura precond poscondicao exp : LAMBDA '(' explist ')' '.' exp exp : SIMB '(' explist ')' exp : QUOTE '(' explist ')' exp : op_orio ORIO '(' exp ',' exp ')' exp : NIL exp : defobj exp : strexp exp : intexp exp : ffexp exp : relexp exp : seqexp exp : setexp exp : letexp exp : ifexp exp : boolexp exp : exp '\\\\' exp exp : exp '/' exp exp : exp '[' exp ']' exp : SIMB '.' SIMB exp : FunctExp strexp : STRING strexp : exp STRCAT exp op_orio : SIMB op_orio : ADD op_orio : STRCAT op_orio : MUL op_orio : OR op_orio : PLUS intexp : INTEGER intexp : '#' exp intexp : exp ADD exp intexp : exp SUB exp intexp : exp DIV exp intexp : exp MUL exp boolexp : exp IN exp boolexp : exp NOTIN exp boolexp : exp EQ exp boolexp : exp AND exp boolexp : exp IMPLICA exp boolexp : exp OR2 exp boolexp : exp OR exp boolexp : NOT exp boolexp : exp '<' exp boolexp : exp GT exp boolexp : exp '>' exp boolexp : exp LEQ exp boolexp : exp GEQ exp boolexp : exp NEQ exp boolexp : IS defTp '(' exp ')' boolexp : ALL '(' all ')' boolexp : EXIST '(' exist ')' boolexp : EXIST1 '(' exist1 ')' boolexp : BOOL FunctExp : exp SET FunctExp : exp LIST FunctExp : exp FSETA FunctExp : FSETA2 exp FunctExp : exp COMP exp FunctExp : ID exp FunctExp : CONSF exp FunctExp : expFAlist FunctExp : expFPlist FunctExp : TOUT SIMB FunctExp : TOUT SIMB '(' exp ')' FunctExp : TIN SIMB FunctExp : TIN SIMB '(' exp ')' expFAlist : exp FADD exp expFAlist : expFAlist FADD exp expFPlist : exp FPROD exp expFPlist : expFPlist FPROD exp all : SIMB PERTENCE exp ',' all all : SIMB PERTENCE exp ':' exp exist : SIMB PERTENCE exp ',' exist exist : SIMB PERTENCE exp ':' exp exist1 : SIMB PERTENCE exp ',' exist1 exist1 : SIMB PERTENCE exp ':' exp setexp : '{' compreensao '}' setexp : '{' extensao '}' setexp : '{' '}' setexp : exp INTER exp setexp : exp UNION exp setexp : exp '-' exp compreensao : exp '|' fromlist compreensao2 : exp '|' fromlist2 extensao : extensao ',' exp extensao : exp seqexp2 : compreensao2 seqexp2 : extensao ',' exp '>' seqexp2 : exp '>' seqexp2 : '>' seqexp2 : exp ':' exp '>' $$6 : seqexp : '<' $$6 seqexp2 seqexp : exp '^' exp fromlist : from ',' fromlist fromlist : from fromlist2 : from ',' fromlist2 fromlist2 : from2 from : SIMB PERTENCE exp from : SIMB PERTENCE exp ':' exp from2 : SIMB PERTENCE exp '>' from2 : SIMB PERTENCE exp ':' exp '>' ffexp : '[' ffcompreensao ']' ffexp : '[' exppairlist ']' ffexp : exp PLUS exp ffcompreensao : exp SETA exp '|' fromlist exppairlist : exppairlist ',' exppair exppairlist : exppair exppairlist : exppair : exp SETA exp relexp : RELBEGIN ffcompreensao RELEND relexp : RELBEGIN exppairlist RELEND explist : exp ',' explist explist : exp explist : letexp : LET '(' deflist ')' IN exp deflist : def ',' deflist deflist : def deflist : comdef ',' deflist deflist : comdef comdef : '<' SIMB ',' SIMB GTs '=' exp comdef : '<' SIMB ',' SIMB ',' SIMB GTs '=' exp def : SIMB '=' exp def : '=' exp ifexp : IF exp THEN exp ifexp : IF '(' expcaselist ifexp : IF exp THEN exp ELSE exp expcaselist : casepair ',' expcaselist expcaselist : casepair ')' expcaselist : ELSE SETA exp ')' expcaselist : casepair ')' OTHER exp casepair : exp SETA exp casepair : is_exp is_exp : exp IS '<' SIMB ':' SIMB GTs SETA exp is_exp : exp IS '<' GTs SETA exp is_exp : exp IS '{' SIMB ':' SIMB '}' SETA exp is_exp : exp IS '{' '}' SETA exp is_exp : exp IS '[' SIMB SETA SIMB ':' SIMB ']' SETA exp is_exp : exp IS '[' ']' SETA exp is_exp : exp IS tag ':' SIMB SETA exp GTs : '>' GTs : GT tag : INTEGER tag : SIMB