_lr_signature='and closedBra closedParen coma div do doubleColon doubleEquals elif else end equals exit id if int integer less lessEquals minus more moreEquals mul not notEquals openBra openParen or parens plus print program rea read real string subroutine swap then\n programa : program id V F B end program\n\n V : V Tipo Dim doubleColon Rid\n |\n\n Rid : id\n | Rid coma id\n\n Tipo : integer\n | real\n\n Dim : openBra int closedBra\n | openBra int closedBra openBra int closedBra\n |\n\n F : F subroutine id B end subroutine\n |\n\n B : B S\n |\n\n S : Dimensional equals EA\n | id parens\n | read RDimensional\n | print RDimOrString\n | if Relif ElseOrEmpty end if\n | do id equals EA coma EA IntOrEmpty then B end do\n | do then B end do\n | swap Dimensional coma Dimensional\n | exit\n\n Dimensional : id DimensionsOrEmpty\n\n DimensionsOrEmpty : openParen EA ComaEAOrEmpty closedParen\n |\n\n ComaEAOrEmpty : coma EA\n |\n\n RDimensional : Dimensional\n | RDimensional coma Dimensional\n\n RDimOrString : DimOrString\n | RDimOrString coma DimOrString\n\n DimOrString : Dimensional\n | string\n\n Relif : openParen EL closedParen then B\n | Relif elif openParen EL closedParen then B\n\n ElseOrEmpty : else B\n |\n\n IntOrEmpty : coma int\n |\n\n EA : MultDiv\n | EA SumOrSub MultDiv\n\n SumOrSub : plus\n | minus\n\n MultDiv : EAParens\n | MultDiv MDSymbols EAParens\n\n MDSymbols : mul\n | div\n\n EAParens : EItem\n | openParen EA closedParen\n\n EL : AND\n | EL or AND\n\n AND : Equality\n | AND and Equality\n\n Equality : EItem EQSymbols EItem\n | openParen EL closedParen\n | not EL\n\n EItem : Dimensional\n | int\n | rea\n\n EQSymbols : less\n | more\n | doubleEquals\n | notEquals\n | lessEquals\n | moreEquals\n'