-----------------------------------------------------------------------------
Info file generated by Happy Version 1.20.0 from src/Grammar/Par.y
-----------------------------------------------------------------------------


-----------------------------------------------------------------------------
Grammar
-----------------------------------------------------------------------------
	%start_pProgram -> Program                         (0)
	%start_pExp3 -> Exp3                               (1)
	%start_pExp2 -> Exp2                               (2)
	%start_pExp1 -> Exp1                               (3)
	%start_pExp -> Exp                                 (4)
	Ident -> L_Ident                                   (5)
	Integer -> L_integ                                 (6)
	Program -> 'main' '=' Exp                          (7)
	Exp3 -> Ident                                      (8)
	Exp3 -> Integer                                    (9)
	Exp3 -> '(' Exp ')'                                (10)
	Exp2 -> Exp2 Exp3                                  (11)
	Exp2 -> Exp3                                       (12)
	Exp1 -> Exp1 '+' Exp2                              (13)
	Exp1 -> Exp1 '-' Exp2                              (14)
	Exp1 -> Exp2                                       (15)
	Exp -> '\\' Ident '->' Exp                         (16)
	Exp -> Exp1                                        (17)

-----------------------------------------------------------------------------
Terminals
-----------------------------------------------------------------------------
	'('            { PT _ (TS _ 1) }
	')'            { PT _ (TS _ 2) }
	'+'            { PT _ (TS _ 3) }
	'-'            { PT _ (TS _ 4) }
	'->'           { PT _ (TS _ 5) }
	'='            { PT _ (TS _ 6) }
	'\\'           { PT _ (TS _ 7) }
	'main'         { PT _ (TS _ 8) }
	L_Ident        { PT _ (TV $$) }
	L_integ        { PT _ (TI $$) }

-----------------------------------------------------------------------------
Non-terminals
-----------------------------------------------------------------------------
	%start_pProgram rule  0
	%start_pExp3    rule  1
	%start_pExp2    rule  2
	%start_pExp1    rule  3
	%start_pExp     rule  4
	Ident           rule  5
	Integer         rule  6
	Program         rule  7
	Exp3            rules 8, 9, 10
	Exp2            rules 11, 12
	Exp1            rules 13, 14, 15
	Exp             rules 16, 17

-----------------------------------------------------------------------------
States
-----------------------------------------------------------------------------
State 0

	%start_pProgram -> . Program                        (rule 0)

	'main'         shift, and enter state 20

	Program        goto state 19

State 1

	%start_pExp3 -> . Exp3                              (rule 1)

	'('            shift, and enter state 13
	L_Ident        shift, and enter state 6
	L_integ        shift, and enter state 15

	Ident          goto state 7
	Integer        goto state 8
	Exp3           goto state 18

State 2

	%start_pExp2 -> . Exp2                              (rule 2)

	'('            shift, and enter state 13
	L_Ident        shift, and enter state 6
	L_integ        shift, and enter state 15

	Ident          goto state 7
	Integer        goto state 8
	Exp3           goto state 9
	Exp2           goto state 17

State 3

	%start_pExp1 -> . Exp1                              (rule 3)

	'('            shift, and enter state 13
	L_Ident        shift, and enter state 6
	L_integ        shift, and enter state 15

	Ident          goto state 7
	Integer        goto state 8
	Exp3           goto state 9
	Exp2           goto state 10
	Exp1           goto state 16

State 4

	%start_pExp -> . Exp                                (rule 4)

	'('            shift, and enter state 13
	'\\'           shift, and enter state 14
	L_Ident        shift, and enter state 6
	L_integ        shift, and enter state 15

	Ident          goto state 7
	Integer        goto state 8
	Exp3           goto state 9
	Exp2           goto state 10
	Exp1           goto state 11
	Exp            goto state 12

State 5

	Ident -> . L_Ident                                  (rule 5)

	L_Ident        shift, and enter state 6


State 6

	Ident -> L_Ident .                                  (rule 5)

	'('            reduce using rule 5
	')'            reduce using rule 5
	'+'            reduce using rule 5
	'-'            reduce using rule 5
	'->'           reduce using rule 5
	L_Ident        reduce using rule 5
	L_integ        reduce using rule 5
	%eof           reduce using rule 5


State 7

	Exp3 -> Ident .                                     (rule 8)

	'('            reduce using rule 8
	')'            reduce using rule 8
	'+'            reduce using rule 8
	'-'            reduce using rule 8
	L_Ident        reduce using rule 8
	L_integ        reduce using rule 8
	%eof           reduce using rule 8


State 8

	Exp3 -> Integer .                                   (rule 9)

	'('            reduce using rule 9
	')'            reduce using rule 9
	'+'            reduce using rule 9
	'-'            reduce using rule 9
	L_Ident        reduce using rule 9
	L_integ        reduce using rule 9
	%eof           reduce using rule 9


State 9

	Exp2 -> Exp3 .                                      (rule 12)

	'('            reduce using rule 12
	')'            reduce using rule 12
	'+'            reduce using rule 12
	'-'            reduce using rule 12
	L_Ident        reduce using rule 12
	L_integ        reduce using rule 12
	%eof           reduce using rule 12


State 10

	Exp2 -> Exp2 . Exp3                                 (rule 11)
	Exp1 -> Exp2 .                                      (rule 15)

	'('            shift, and enter state 13
	')'            reduce using rule 15
	'+'            reduce using rule 15
	'-'            reduce using rule 15
	L_Ident        shift, and enter state 6
	L_integ        shift, and enter state 15
	%eof           reduce using rule 15

	Ident          goto state 7
	Integer        goto state 8
	Exp3           goto state 22

State 11

	Exp1 -> Exp1 . '+' Exp2                             (rule 13)
	Exp1 -> Exp1 . '-' Exp2                             (rule 14)
	Exp -> Exp1 .                                       (rule 17)

	')'            reduce using rule 17
	'+'            shift, and enter state 23
	'-'            shift, and enter state 24
	%eof           reduce using rule 17


State 12

	%start_pExp -> Exp .                                (rule 4)

	%eof           accept


State 13

	Exp3 -> '(' . Exp ')'                               (rule 10)

	'('            shift, and enter state 13
	'\\'           shift, and enter state 14
	L_Ident        shift, and enter state 6
	L_integ        shift, and enter state 15

	Ident          goto state 7
	Integer        goto state 8
	Exp3           goto state 9
	Exp2           goto state 10
	Exp1           goto state 11
	Exp            goto state 26

State 14

	Exp -> '\\' . Ident '->' Exp                        (rule 16)

	L_Ident        shift, and enter state 6

	Ident          goto state 25

State 15

	Integer -> L_integ .                                (rule 6)

	'('            reduce using rule 6
	')'            reduce using rule 6
	'+'            reduce using rule 6
	'-'            reduce using rule 6
	L_Ident        reduce using rule 6
	L_integ        reduce using rule 6
	%eof           reduce using rule 6


State 16

	%start_pExp1 -> Exp1 .                              (rule 3)
	Exp1 -> Exp1 . '+' Exp2                             (rule 13)
	Exp1 -> Exp1 . '-' Exp2                             (rule 14)

	'+'            shift, and enter state 23
	'-'            shift, and enter state 24
	%eof           accept


State 17

	%start_pExp2 -> Exp2 .                              (rule 2)
	Exp2 -> Exp2 . Exp3                                 (rule 11)

	'('            shift, and enter state 13
	L_Ident        shift, and enter state 6
	L_integ        shift, and enter state 15
	%eof           accept

	Ident          goto state 7
	Integer        goto state 8
	Exp3           goto state 22

State 18

	%start_pExp3 -> Exp3 .                              (rule 1)

	%eof           accept


State 19

	%start_pProgram -> Program .                        (rule 0)

	%eof           accept


State 20

	Program -> 'main' . '=' Exp                         (rule 7)

	'='            shift, and enter state 21


State 21

	Program -> 'main' '=' . Exp                         (rule 7)

	'('            shift, and enter state 13
	'\\'           shift, and enter state 14
	L_Ident        shift, and enter state 6
	L_integ        shift, and enter state 15

	Ident          goto state 7
	Integer        goto state 8
	Exp3           goto state 9
	Exp2           goto state 10
	Exp1           goto state 11
	Exp            goto state 31

State 22

	Exp2 -> Exp2 Exp3 .                                 (rule 11)

	'('            reduce using rule 11
	')'            reduce using rule 11
	'+'            reduce using rule 11
	'-'            reduce using rule 11
	L_Ident        reduce using rule 11
	L_integ        reduce using rule 11
	%eof           reduce using rule 11


State 23

	Exp1 -> Exp1 '+' . Exp2                             (rule 13)

	'('            shift, and enter state 13
	L_Ident        shift, and enter state 6
	L_integ        shift, and enter state 15

	Ident          goto state 7
	Integer        goto state 8
	Exp3           goto state 9
	Exp2           goto state 30

State 24

	Exp1 -> Exp1 '-' . Exp2                             (rule 14)

	'('            shift, and enter state 13
	L_Ident        shift, and enter state 6
	L_integ        shift, and enter state 15

	Ident          goto state 7
	Integer        goto state 8
	Exp3           goto state 9
	Exp2           goto state 29

State 25

	Exp -> '\\' Ident . '->' Exp                        (rule 16)

	'->'           shift, and enter state 28


State 26

	Exp3 -> '(' Exp . ')'                               (rule 10)

	')'            shift, and enter state 27


State 27

	Exp3 -> '(' Exp ')' .                               (rule 10)

	'('            reduce using rule 10
	')'            reduce using rule 10
	'+'            reduce using rule 10
	'-'            reduce using rule 10
	L_Ident        reduce using rule 10
	L_integ        reduce using rule 10
	%eof           reduce using rule 10


State 28

	Exp -> '\\' Ident '->' . Exp                        (rule 16)

	'('            shift, and enter state 13
	'\\'           shift, and enter state 14
	L_Ident        shift, and enter state 6
	L_integ        shift, and enter state 15

	Ident          goto state 7
	Integer        goto state 8
	Exp3           goto state 9
	Exp2           goto state 10
	Exp1           goto state 11
	Exp            goto state 32

State 29

	Exp2 -> Exp2 . Exp3                                 (rule 11)
	Exp1 -> Exp1 '-' Exp2 .                             (rule 14)

	'('            shift, and enter state 13
	')'            reduce using rule 14
	'+'            reduce using rule 14
	'-'            reduce using rule 14
	L_Ident        shift, and enter state 6
	L_integ        shift, and enter state 15
	%eof           reduce using rule 14

	Ident          goto state 7
	Integer        goto state 8
	Exp3           goto state 22

State 30

	Exp2 -> Exp2 . Exp3                                 (rule 11)
	Exp1 -> Exp1 '+' Exp2 .                             (rule 13)

	'('            shift, and enter state 13
	')'            reduce using rule 13
	'+'            reduce using rule 13
	'-'            reduce using rule 13
	L_Ident        shift, and enter state 6
	L_integ        shift, and enter state 15
	%eof           reduce using rule 13

	Ident          goto state 7
	Integer        goto state 8
	Exp3           goto state 22

State 31

	Program -> 'main' '=' Exp .                         (rule 7)

	%eof           reduce using rule 7


State 32

	Exp -> '\\' Ident '->' Exp .                        (rule 16)

	')'            reduce using rule 16
	%eof           reduce using rule 16


-----------------------------------------------------------------------------
Grammar Totals
-----------------------------------------------------------------------------
Number of rules: 18
Number of terminals: 10
Number of non-terminals: 12
Number of states: 33
