Automate d'analyse ascendante pour la grammaire ETF

rule 1    expr -> expr '+' terme
rule 2    expr -> terme
rule 3    terme -> terme '*' facteur
rule 4    terme -> facteur
rule 5    facteur -> '(' expr ')'
rule 6    facteur -> ident

state 0

    ident	shift, and go to state 1
    '(' 	shift, and go to state 2

    expr	go to state 3
    terme	go to state 4
    facteur	go to state 5

state 1

    facteur  ->  ident .   (rule 6)

    $default  reduce using rule 6 (facteur)

state 2

    facteur  ->  '(' . expr ')'   (rule 5)

    ident	shift, and go to state 1
    '(' 	shift, and go to state 2

    expr	go to state 6
    terme	go to state 4
    facteur	go to state 5

state 3

    expr  ->  expr . '+' terme   (rule 1)

    $   	accept
    '+' 	shift, and go to state 7

state 4

    expr  ->  terme .   (rule 2)
    terme  ->  terme . '*' facteur (rule 3)

    '*' 	shift, and go to state 8

    $default  reduce using rule 2 (expr)
    
state 5

    terme  ->  facteur .   (rule 4)

    $default  reduce using rule 4 (terme)
state 6

    expr  ->  expr . '+' terme   (rule 1)
    facteur  ->  '(' expr . ')'   (rule 5)

    '+' 	shift, and go to state 7
    ')' 	shift, and go to state 9

state 7

    expr  ->  expr '+' . terme   (rule 1)

    ident	shift, and go to state 1
    '(' 	shift, and go to state 2

    terme	go to state 10
    facteur	go to state 5

state 8

    terme  ->  terme '*' . facteur (rule 3)

    ident	shift, and go to state 1
    '(' 	shift, and go to state 2

    facteur	go to state 11

state 9

    facteur  ->  '(' expr ')' .   (rule 5)

    $default  reduce using rule 5 (facteur)

state 10

    expr  ->  expr '+' terme .   (rule 1)
    terme  ->  terme . '*' facteur (rule 3)

    '*' 	shift, and go to state 8

    $default  reduce using rule 1 (expr)

state 11

    terme  ->  terme '*' facteur . (rule 3)

    $default  reduce using rule 3 (terme)