----------------------------------------------------------------------------- Info file generated by Happy Version 1.18.6 from Syntax/Par.y ----------------------------------------------------------------------------- terminal L_err is unused ----------------------------------------------------------------------------- Grammar ----------------------------------------------------------------------------- %start_pProgram -> Program (0) %start_pDecls -> Decls (1) %start_pDecl -> Decl (2) %start_pListDecl -> ListDecl (3) %start_pListIdent -> ListIdent (4) %start_pExpr -> Expr (5) %start_pExpr1 -> Expr1 (6) %start_pExpr2 -> Expr2 (7) Ident -> L_ident (8) Program -> Decls (9) Decls -> Decl ';' Decls (10) Decls -> Decl ';' (11) Decl -> Ident ':' Expr '=' Expr (12) Decl -> Ident ':' Expr (13) ListDecl -> Decl (14) ListDecl -> Decl ';' ListDecl (15) ListIdent -> Ident (16) ListIdent -> Ident ListIdent (17) Expr -> '\\' Expr1 '->' Expr (18) Expr -> '(' Expr1 ':' Expr ')' '->' Expr (19) Expr -> '[' Expr1 ':' Expr ']' '->' Expr (20) Expr -> '(' Expr1 ':' Expr ')' '*' Expr (21) Expr -> 'let' '{' ListDecl '}' 'in' Expr (22) Expr -> Expr1 '->' Expr (23) Expr -> Expr1 (24) Expr1 -> Expr1 Expr2 (25) Expr1 -> Expr2 (26) Expr2 -> '_' (27) Expr2 -> Ident (28) Expr2 -> '(' Expr ')' (29) ----------------------------------------------------------------------------- Terminals ----------------------------------------------------------------------------- '(' { PT _ (TS _ 1) } ')' { PT _ (TS _ 2) } '*' { PT _ (TS _ 3) } '->' { PT _ (TS _ 4) } ':' { PT _ (TS _ 5) } ';' { PT _ (TS _ 6) } '=' { PT _ (TS _ 7) } '[' { PT _ (TS _ 8) } '\\' { PT _ (TS _ 9) } ']' { PT _ (TS _ 10) } '_' { PT _ (TS _ 11) } 'in' { PT _ (TS _ 12) } 'let' { PT _ (TS _ 13) } '{' { PT _ (TS _ 14) } '}' { PT _ (TS _ 15) } L_ident { PT _ (TV $$) } L_err { _ } ----------------------------------------------------------------------------- Non-terminals ----------------------------------------------------------------------------- %start_pProgram rule 0 %start_pDecls rule 1 %start_pDecl rule 2 %start_pListDecl rule 3 %start_pListIdent rule 4 %start_pExpr rule 5 %start_pExpr1 rule 6 %start_pExpr2 rule 7 Ident rule 8 Program rule 9 Decls rules 10, 11 Decl rules 12, 13 ListDecl rules 14, 15 ListIdent rules 16, 17 Expr rules 18, 19, 20, 21, 22, 23, 24 Expr1 rules 25, 26 Expr2 rules 27, 28, 29 ----------------------------------------------------------------------------- States ----------------------------------------------------------------------------- State 0 L_ident shift, and enter state 9 Ident goto state 24 Program goto state 30 Decls goto state 31 Decl goto state 29 State 1 L_ident shift, and enter state 9 Ident goto state 24 Decls goto state 28 Decl goto state 29 State 2 L_ident shift, and enter state 9 Ident goto state 24 Decl goto state 27 State 3 L_ident shift, and enter state 9 Ident goto state 24 Decl goto state 25 ListDecl goto state 26 State 4 L_ident shift, and enter state 9 Ident goto state 22 ListIdent goto state 23 State 5 '(' shift, and enter state 18 '[' shift, and enter state 19 '\\' shift, and enter state 20 '_' shift, and enter state 13 'let' shift, and enter state 21 L_ident shift, and enter state 9 Ident goto state 10 Expr goto state 16 Expr1 goto state 17 Expr2 goto state 15 State 6 '(' shift, and enter state 12 '_' shift, and enter state 13 L_ident shift, and enter state 9 Ident goto state 10 Expr1 goto state 14 Expr2 goto state 15 State 7 '(' shift, and enter state 12 '_' shift, and enter state 13 L_ident shift, and enter state 9 Ident goto state 10 Expr2 goto state 11 State 8 L_ident shift, and enter state 9 State 9 Ident -> L_ident . (rule 8) '(' reduce using rule 8 ')' reduce using rule 8 '->' reduce using rule 8 ':' reduce using rule 8 ';' reduce using rule 8 '=' reduce using rule 8 ']' reduce using rule 8 '_' reduce using rule 8 '}' reduce using rule 8 L_ident reduce using rule 8 %eof reduce using rule 8 State 10 Expr2 -> Ident . (rule 28) '(' reduce using rule 28 ')' reduce using rule 28 '->' reduce using rule 28 ':' reduce using rule 28 ';' reduce using rule 28 '=' reduce using rule 28 ']' reduce using rule 28 '_' reduce using rule 28 '}' reduce using rule 28 L_ident reduce using rule 28 %eof reduce using rule 28 State 11 %start_pExpr2 -> Expr2 . (rule 7) %eof accept State 12 Expr2 -> '(' . Expr ')' (rule 29) '(' shift, and enter state 18 '[' shift, and enter state 19 '\\' shift, and enter state 20 '_' shift, and enter state 13 'let' shift, and enter state 21 L_ident shift, and enter state 9 Ident goto state 10 Expr goto state 39 Expr1 goto state 17 Expr2 goto state 15 State 13 Expr2 -> '_' . (rule 27) '(' reduce using rule 27 ')' reduce using rule 27 '->' reduce using rule 27 ':' reduce using rule 27 ';' reduce using rule 27 '=' reduce using rule 27 ']' reduce using rule 27 '_' reduce using rule 27 '}' reduce using rule 27 L_ident reduce using rule 27 %eof reduce using rule 27 State 14 %start_pExpr1 -> Expr1 . (rule 6) Expr1 -> Expr1 . Expr2 (rule 25) '(' shift, and enter state 12 '_' shift, and enter state 13 L_ident shift, and enter state 9 %eof accept Ident goto state 10 Expr2 goto state 41 State 15 Expr1 -> Expr2 . (rule 26) '(' reduce using rule 26 ')' reduce using rule 26 '->' reduce using rule 26 ':' reduce using rule 26 ';' reduce using rule 26 '=' reduce using rule 26 ']' reduce using rule 26 '_' reduce using rule 26 '}' reduce using rule 26 L_ident reduce using rule 26 %eof reduce using rule 26 State 16 %start_pExpr -> Expr . (rule 5) %eof accept State 17 Expr -> Expr1 . '->' Expr (rule 23) Expr -> Expr1 . (rule 24) Expr1 -> Expr1 . Expr2 (rule 25) '(' shift, and enter state 12 ')' reduce using rule 24 '->' shift, and enter state 42 ';' reduce using rule 24 '=' reduce using rule 24 ']' reduce using rule 24 '_' shift, and enter state 13 '}' reduce using rule 24 L_ident shift, and enter state 9 %eof reduce using rule 24 Ident goto state 10 Expr2 goto state 41 State 18 Expr -> '(' . Expr1 ':' Expr ')' '->' Expr (rule 19) Expr -> '(' . Expr1 ':' Expr ')' '*' Expr (rule 21) Expr2 -> '(' . Expr ')' (rule 29) '(' shift, and enter state 18 '[' shift, and enter state 19 '\\' shift, and enter state 20 '_' shift, and enter state 13 'let' shift, and enter state 21 L_ident shift, and enter state 9 Ident goto state 10 Expr goto state 39 Expr1 goto state 40 Expr2 goto state 15 State 19 Expr -> '[' . Expr1 ':' Expr ']' '->' Expr (rule 20) '(' shift, and enter state 12 '_' shift, and enter state 13 L_ident shift, and enter state 9 Ident goto state 10 Expr1 goto state 38 Expr2 goto state 15 State 20 Expr -> '\\' . Expr1 '->' Expr (rule 18) '(' shift, and enter state 12 '_' shift, and enter state 13 L_ident shift, and enter state 9 Ident goto state 10 Expr1 goto state 37 Expr2 goto state 15 State 21 Expr -> 'let' . '{' ListDecl '}' 'in' Expr (rule 22) '{' shift, and enter state 36 State 22 ListIdent -> Ident . (rule 16) ListIdent -> Ident . ListIdent (rule 17) L_ident shift, and enter state 9 %eof reduce using rule 16 Ident goto state 22 ListIdent goto state 35 State 23 %start_pListIdent -> ListIdent . (rule 4) %eof accept State 24 Decl -> Ident . ':' Expr '=' Expr (rule 12) Decl -> Ident . ':' Expr (rule 13) ':' shift, and enter state 34 State 25 ListDecl -> Decl . (rule 14) ListDecl -> Decl . ';' ListDecl (rule 15) ';' shift, and enter state 33 '}' reduce using rule 14 %eof reduce using rule 14 State 26 %start_pListDecl -> ListDecl . (rule 3) %eof accept State 27 %start_pDecl -> Decl . (rule 2) %eof accept State 28 %start_pDecls -> Decls . (rule 1) %eof accept State 29 Decls -> Decl . ';' Decls (rule 10) Decls -> Decl . ';' (rule 11) ';' shift, and enter state 32 State 30 %start_pProgram -> Program . (rule 0) %eof accept State 31 Program -> Decls . (rule 9) %eof reduce using rule 9 State 32 Decls -> Decl ';' . Decls (rule 10) Decls -> Decl ';' . (rule 11) L_ident shift, and enter state 9 %eof reduce using rule 11 Ident goto state 24 Decls goto state 51 Decl goto state 29 State 33 ListDecl -> Decl ';' . ListDecl (rule 15) L_ident shift, and enter state 9 Ident goto state 24 Decl goto state 25 ListDecl goto state 50 State 34 Decl -> Ident ':' . Expr '=' Expr (rule 12) Decl -> Ident ':' . Expr (rule 13) '(' shift, and enter state 18 '[' shift, and enter state 19 '\\' shift, and enter state 20 '_' shift, and enter state 13 'let' shift, and enter state 21 L_ident shift, and enter state 9 Ident goto state 10 Expr goto state 49 Expr1 goto state 17 Expr2 goto state 15 State 35 ListIdent -> Ident ListIdent . (rule 17) %eof reduce using rule 17 State 36 Expr -> 'let' '{' . ListDecl '}' 'in' Expr (rule 22) L_ident shift, and enter state 9 Ident goto state 24 Decl goto state 25 ListDecl goto state 48 State 37 Expr -> '\\' Expr1 . '->' Expr (rule 18) Expr1 -> Expr1 . Expr2 (rule 25) '(' shift, and enter state 12 '->' shift, and enter state 47 '_' shift, and enter state 13 L_ident shift, and enter state 9 Ident goto state 10 Expr2 goto state 41 State 38 Expr -> '[' Expr1 . ':' Expr ']' '->' Expr (rule 20) Expr1 -> Expr1 . Expr2 (rule 25) '(' shift, and enter state 12 ':' shift, and enter state 46 '_' shift, and enter state 13 L_ident shift, and enter state 9 Ident goto state 10 Expr2 goto state 41 State 39 Expr2 -> '(' Expr . ')' (rule 29) ')' shift, and enter state 45 State 40 Expr -> '(' Expr1 . ':' Expr ')' '->' Expr (rule 19) Expr -> '(' Expr1 . ':' Expr ')' '*' Expr (rule 21) Expr -> Expr1 . '->' Expr (rule 23) Expr -> Expr1 . (rule 24) Expr1 -> Expr1 . Expr2 (rule 25) '(' shift, and enter state 12 ')' reduce using rule 24 '->' shift, and enter state 42 ':' shift, and enter state 44 '_' shift, and enter state 13 L_ident shift, and enter state 9 Ident goto state 10 Expr2 goto state 41 State 41 Expr1 -> Expr1 Expr2 . (rule 25) '(' reduce using rule 25 ')' reduce using rule 25 '->' reduce using rule 25 ':' reduce using rule 25 ';' reduce using rule 25 '=' reduce using rule 25 ']' reduce using rule 25 '_' reduce using rule 25 '}' reduce using rule 25 L_ident reduce using rule 25 %eof reduce using rule 25 State 42 Expr -> Expr1 '->' . Expr (rule 23) '(' shift, and enter state 18 '[' shift, and enter state 19 '\\' shift, and enter state 20 '_' shift, and enter state 13 'let' shift, and enter state 21 L_ident shift, and enter state 9 Ident goto state 10 Expr goto state 43 Expr1 goto state 17 Expr2 goto state 15 State 43 Expr -> Expr1 '->' Expr . (rule 23) ')' reduce using rule 23 ';' reduce using rule 23 '=' reduce using rule 23 ']' reduce using rule 23 '}' reduce using rule 23 %eof reduce using rule 23 State 44 Expr -> '(' Expr1 ':' . Expr ')' '->' Expr (rule 19) Expr -> '(' Expr1 ':' . Expr ')' '*' Expr (rule 21) '(' shift, and enter state 18 '[' shift, and enter state 19 '\\' shift, and enter state 20 '_' shift, and enter state 13 'let' shift, and enter state 21 L_ident shift, and enter state 9 Ident goto state 10 Expr goto state 56 Expr1 goto state 17 Expr2 goto state 15 State 45 Expr2 -> '(' Expr ')' . (rule 29) '(' reduce using rule 29 ')' reduce using rule 29 '->' reduce using rule 29 ':' reduce using rule 29 ';' reduce using rule 29 '=' reduce using rule 29 ']' reduce using rule 29 '_' reduce using rule 29 '}' reduce using rule 29 L_ident reduce using rule 29 %eof reduce using rule 29 State 46 Expr -> '[' Expr1 ':' . Expr ']' '->' Expr (rule 20) '(' shift, and enter state 18 '[' shift, and enter state 19 '\\' shift, and enter state 20 '_' shift, and enter state 13 'let' shift, and enter state 21 L_ident shift, and enter state 9 Ident goto state 10 Expr goto state 55 Expr1 goto state 17 Expr2 goto state 15 State 47 Expr -> '\\' Expr1 '->' . Expr (rule 18) '(' shift, and enter state 18 '[' shift, and enter state 19 '\\' shift, and enter state 20 '_' shift, and enter state 13 'let' shift, and enter state 21 L_ident shift, and enter state 9 Ident goto state 10 Expr goto state 54 Expr1 goto state 17 Expr2 goto state 15 State 48 Expr -> 'let' '{' ListDecl . '}' 'in' Expr (rule 22) '}' shift, and enter state 53 State 49 Decl -> Ident ':' Expr . '=' Expr (rule 12) Decl -> Ident ':' Expr . (rule 13) ';' reduce using rule 13 '=' shift, and enter state 52 '}' reduce using rule 13 %eof reduce using rule 13 State 50 ListDecl -> Decl ';' ListDecl . (rule 15) '}' reduce using rule 15 %eof reduce using rule 15 State 51 Decls -> Decl ';' Decls . (rule 10) %eof reduce using rule 10 State 52 Decl -> Ident ':' Expr '=' . Expr (rule 12) '(' shift, and enter state 18 '[' shift, and enter state 19 '\\' shift, and enter state 20 '_' shift, and enter state 13 'let' shift, and enter state 21 L_ident shift, and enter state 9 Ident goto state 10 Expr goto state 60 Expr1 goto state 17 Expr2 goto state 15 State 53 Expr -> 'let' '{' ListDecl '}' . 'in' Expr (rule 22) 'in' shift, and enter state 59 State 54 Expr -> '\\' Expr1 '->' Expr . (rule 18) ')' reduce using rule 18 ';' reduce using rule 18 '=' reduce using rule 18 ']' reduce using rule 18 '}' reduce using rule 18 %eof reduce using rule 18 State 55 Expr -> '[' Expr1 ':' Expr . ']' '->' Expr (rule 20) ']' shift, and enter state 58 State 56 Expr -> '(' Expr1 ':' Expr . ')' '->' Expr (rule 19) Expr -> '(' Expr1 ':' Expr . ')' '*' Expr (rule 21) ')' shift, and enter state 57 State 57 Expr -> '(' Expr1 ':' Expr ')' . '->' Expr (rule 19) Expr -> '(' Expr1 ':' Expr ')' . '*' Expr (rule 21) '*' shift, and enter state 63 '->' shift, and enter state 64 State 58 Expr -> '[' Expr1 ':' Expr ']' . '->' Expr (rule 20) '->' shift, and enter state 62 State 59 Expr -> 'let' '{' ListDecl '}' 'in' . Expr (rule 22) '(' shift, and enter state 18 '[' shift, and enter state 19 '\\' shift, and enter state 20 '_' shift, and enter state 13 'let' shift, and enter state 21 L_ident shift, and enter state 9 Ident goto state 10 Expr goto state 61 Expr1 goto state 17 Expr2 goto state 15 State 60 Decl -> Ident ':' Expr '=' Expr . (rule 12) ';' reduce using rule 12 '}' reduce using rule 12 %eof reduce using rule 12 State 61 Expr -> 'let' '{' ListDecl '}' 'in' Expr . (rule 22) ')' reduce using rule 22 ';' reduce using rule 22 '=' reduce using rule 22 ']' reduce using rule 22 '}' reduce using rule 22 %eof reduce using rule 22 State 62 Expr -> '[' Expr1 ':' Expr ']' '->' . Expr (rule 20) '(' shift, and enter state 18 '[' shift, and enter state 19 '\\' shift, and enter state 20 '_' shift, and enter state 13 'let' shift, and enter state 21 L_ident shift, and enter state 9 Ident goto state 10 Expr goto state 67 Expr1 goto state 17 Expr2 goto state 15 State 63 Expr -> '(' Expr1 ':' Expr ')' '*' . Expr (rule 21) '(' shift, and enter state 18 '[' shift, and enter state 19 '\\' shift, and enter state 20 '_' shift, and enter state 13 'let' shift, and enter state 21 L_ident shift, and enter state 9 Ident goto state 10 Expr goto state 66 Expr1 goto state 17 Expr2 goto state 15 State 64 Expr -> '(' Expr1 ':' Expr ')' '->' . Expr (rule 19) '(' shift, and enter state 18 '[' shift, and enter state 19 '\\' shift, and enter state 20 '_' shift, and enter state 13 'let' shift, and enter state 21 L_ident shift, and enter state 9 Ident goto state 10 Expr goto state 65 Expr1 goto state 17 Expr2 goto state 15 State 65 Expr -> '(' Expr1 ':' Expr ')' '->' Expr . (rule 19) ')' reduce using rule 19 ';' reduce using rule 19 '=' reduce using rule 19 ']' reduce using rule 19 '}' reduce using rule 19 %eof reduce using rule 19 State 66 Expr -> '(' Expr1 ':' Expr ')' '*' Expr . (rule 21) ')' reduce using rule 21 ';' reduce using rule 21 '=' reduce using rule 21 ']' reduce using rule 21 '}' reduce using rule 21 %eof reduce using rule 21 State 67 Expr -> '[' Expr1 ':' Expr ']' '->' Expr . (rule 20) ')' reduce using rule 20 ';' reduce using rule 20 '=' reduce using rule 20 ']' reduce using rule 20 '}' reduce using rule 20 %eof reduce using rule 20 ----------------------------------------------------------------------------- Grammar Totals ----------------------------------------------------------------------------- Number of rules: 30 Number of terminals: 17 Number of non-terminals: 17 Number of states: 68