| Register | FAQ | Calendar | Search | Today's Posts | Mark Forums Read |
|
#1
| |||
| |||
| Hi all, I'm currently trying to write a grammar for a C++/ADA hybrid language. I have built my grammar file, and everything went smoothly. But since I added the possibility of writing : <expression_evaluating_to_a_class_type>.<some_memb er> I have been having reduce/reduce problems. Here is the bison output, with grammar and states. I don't know how I can resolve the conflicts. Please someone, help me ! Ho ! by the way, i'm sorry to be using a french-translated version, so my log is in french. I hope you'll still be able to decrypt this for me ! Code: Terminaux qui ne sont utilisis WAIT_TOKEN SLEEP_TOKEN CASE_TOKEN SWITCH_TOKEN VAR_TOKEN LBRACE_TOKEN RBRACE_TOKEN LBRACKET_TOKEN RBRACKET_TOKEN unary_minus Itat 96conflits: 13 riduction/riduction Grammaire 0 $accept: file $end 1 file: programs 2 programs: /* vide */ 3 | programs program 4 program: EOL_TOKEN 5 | proghdr vardecls progbdy progend 6 proghdr: PROGRAM_TOKEN namespace IDF_TOKEN LPAR_TOKEN varlst RPAR_TOKEN progret EOL_TOKEN 7 varlst: /* vide */ 8 | varlst2 9 varlst2: vardecl 10 | varlst2 COMMA_TOKEN vardecl 11 vardecl: IDF_TOKEN CLN_TOKEN type 12 progret: /* vide */ 13 | CLN_TOKEN type 14 type: namespace IDF_TOKEN 15 | type STAR_TOKEN 16 vardecls: /* vide */ 17 | vardecls EOL_TOKEN 18 | vardecls vardecl EOL_TOKEN 19 progbdy: BEGIN_TOKEN EOL_TOKEN instructions 20 instructions: /* vide */ 21 | instructions instruction 22 instruction: EOL_TOKEN 23 | LOOP_TOKEN EOL_TOKEN instructions END_TOKEN LOOP_TOKEN EOL_TOKEN 24 | WHILE_TOKEN expression LOOP_TOKEN EOL_TOKEN instructions END_TOKEN EOL_TOKEN 25 | IF_TOKEN expression THEN_TOKEN EOL_TOKEN instructions ifnext END_TOKEN IF_TOKEN 26 | expression EOL_TOKEN 27 | locator BIND_TOKEN locator EOL_TOKEN 28 | RETURN_TOKEN expression EOL_TOKEN 29 | RETURN_TOKEN EOL_TOKEN 30 | FOR_TOKEN locator FROM_TOKEN expression TO_TOKEN expression forstep LOOP_TOKEN instructions END_TOKEN LOOP_TOKEN 31 forstep: /* vide */ 32 | STEP_TOKEN expression 33 ifnext: /* vide */ 34 | ELSIF_TOKEN expression THEN_TOKEN EOL_TOKEN instructions ifnext 35 | ELSE_TOKEN EOL_TOKEN instructions 36 progend: END_TOKEN PROGRAM_TOKEN EOL_TOKEN 37 | END_TOKEN PROGRAM_TOKEN ON_TOKEN expression EOL_TOKEN 38 namespace: /* vide */ 39 | namespace IDF_TOKEN DBLCLN_TOKEN 40 exprlst: /* vide */ 41 | exprlst2 42 exprlst2: expression 43 | exprlst2 COMMA_TOKEN expression 44 locator: expression DOT_TOKEN IDF_TOKEN 45 | namespace IDF_TOKEN 46 expression: locator ASSIGN_TOKEN expression 47 | expression OR_TOKEN expression 48 | expression AND_TOKEN expression 49 | expression EQUAL_TOKEN expression 50 | expression DIFF_TOKEN expression 51 | expression LESS_TOKEN expression 52 | expression GREATER_TOKEN expression 53 | expression LESSEQU_TOKEN expression 54 | expression GREATEREQU_TOKEN expression 55 | expression PLUS_TOKEN expression 56 | expression MINUS_TOKEN expression 57 | expression STAR_TOKEN expression 58 | expression SLASH_TOKEN expression 59 | MINUS_TOKEN expression 60 | NOT_TOKEN expression 61 | locator LPAR_TOKEN exprlst RPAR_TOKEN 62 | locator 63 | LPAR_TOKEN expression RPAR_TOKEN 64 | INTCST_TOKEN 65 | FLOATCST_TOKEN 66 | BOOLCST_TOKEN 67 | STRCST_TOKEN 68 | locator BOUND_TOKEN locator Terminaux, suivis des rhgles oy ils apparaissent $end (0) 0 error (256) PROGRAM_TOKEN (258) 6 36 37 RETURN_TOKEN (259) 28 29 ON_TOKEN (260) 37 BEGIN_TOKEN (261) 19 IDF_TOKEN (262) 6 11 14 39 44 45 WAIT_TOKEN (263) SLEEP_TOKEN (264) IF_TOKEN (265) 25 THEN_TOKEN (266) 25 34 ELSE_TOKEN (267) 35 ELSIF_TOKEN (268) 34 FOR_TOKEN (269) 30 FROM_TOKEN (270) 30 TO_TOKEN (271) 30 STEP_TOKEN (272) 32 WHILE_TOKEN (273) 24 LOOP_TOKEN (274) 23 24 30 CASE_TOKEN (275) SWITCH_TOKEN (276) VAR_TOKEN (277) ASSIGN_TOKEN (278) 46 BOUND_TOKEN (279) 68 BIND_TOKEN (280) 27 LESSEQU_TOKEN (281) 53 GREATEREQU_TOKEN (282) 54 EQUAL_TOKEN (283) 49 DIFF_TOKEN (284) 50 LESS_TOKEN (285) 51 GREATER_TOKEN (286) 52 LPAR_TOKEN (287) 6 61 63 RPAR_TOKEN (288) 6 61 63 LBRACE_TOKEN (289) RBRACE_TOKEN (290) LBRACKET_TOKEN (291) RBRACKET_TOKEN (292) STAR_TOKEN (293) 15 57 DOT_TOKEN (294) 44 COMMA_TOKEN (295) 10 43 CLN_TOKEN (296) 11 13 PLUS_TOKEN (297) 55 MINUS_TOKEN (298) 56 59 SLASH_TOKEN (299) 58 INTCST_TOKEN (300) 64 FLOATCST_TOKEN (301) 65 BOOLCST_TOKEN (302) 66 STRCST_TOKEN (303) 67 EOL_TOKEN (304) 4 6 17 18 19 22 23 24 25 26 27 28 29 34 35 36 37 END_TOKEN (305) 23 24 25 30 36 37 AND_TOKEN (306) 48 OR_TOKEN (307) 47 NOT_TOKEN (308) 60 DBLCLN_TOKEN (309) 39 unary_minus (310) Non-terminaux, suivis des rhgles oy ils apparaissent $accept (56) ` gauche: 0 file (57) ` gauche: 1, ` droite: 0 programs (58) ` gauche: 2 3, ` droite: 1 3 program (59) ` gauche: 4 5, ` droite: 3 proghdr (60) ` gauche: 6, ` droite: 5 varlst (61) ` gauche: 7 8, ` droite: 6 varlst2 (62) ` gauche: 9 10, ` droite: 8 10 vardecl (63) ` gauche: 11, ` droite: 9 10 18 progret (64) ` gauche: 12 13, ` droite: 6 type (65) ` gauche: 14 15, ` droite: 11 13 15 vardecls (66) ` gauche: 16 17 18, ` droite: 5 17 18 progbdy (67) ` gauche: 19, ` droite: 5 instructions (68) ` gauche: 20 21, ` droite: 19 21 23 24 25 30 34 35 instruction (69) ` gauche: 22 23 24 25 26 27 28 29 30, ` droite: 21 forstep (70) ` gauche: 31 32, ` droite: 30 ifnext (71) ` gauche: 33 34 35, ` droite: 25 34 progend (72) ` gauche: 36 37, ` droite: 5 namespace (73) ` gauche: 38 39, ` droite: 6 14 39 45 exprlst (74) ` gauche: 40 41, ` droite: 61 exprlst2 (75) ` gauche: 42 43, ` droite: 41 43 locator (76) ` gauche: 44 45, ` droite: 27 30 46 61 62 68 expression (77) ` gauche: 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68, ` droite: 24 25 26 28 30 32 34 37 42 43 44 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 63 itat 0 0 $accept: . file $end $difaut riduction par utilisation de la rhgle 2 (programs) file aller ` l'itat 1 programs aller ` l'itat 2 itat 1 0 $accept: file . $end $end dicalage et aller ` l'itat 3 itat 2 1 file: programs . 3 programs: programs . program PROGRAM_TOKEN dicalage et aller ` l'itat 4 EOL_TOKEN dicalage et aller ` l'itat 5 $difaut riduction par utilisation de la rhgle 1 (file) program aller ` l'itat 6 proghdr aller ` l'itat 7 itat 3 0 $accept: file $end . $difaut accepter itat 4 6 proghdr: PROGRAM_TOKEN . namespace IDF_TOKEN LPAR_TOKEN varlst RPAR_TOKEN progret EOL_TOKEN $difaut riduction par utilisation de la rhgle 38 (namespace) namespace aller ` l'itat 8 itat 5 4 program: EOL_TOKEN . $difaut riduction par utilisation de la rhgle 4 (program) itat 6 3 programs: programs program . $difaut riduction par utilisation de la rhgle 3 (programs) itat 7 5 program: proghdr . vardecls progbdy progend $difaut riduction par utilisation de la rhgle 16 (vardecls) vardecls aller ` l'itat 9 itat 8 6 proghdr: PROGRAM_TOKEN namespace . IDF_TOKEN LPAR_TOKEN varlst RPAR_TOKEN progret EOL_TOKEN 39 namespace: namespace . IDF_TOKEN DBLCLN_TOKEN IDF_TOKEN dicalage et aller ` l'itat 10 itat 9 5 program: proghdr vardecls . progbdy progend 17 vardecls: vardecls . EOL_TOKEN 18 | vardecls . vardecl EOL_TOKEN BEGIN_TOKEN dicalage et aller ` l'itat 11 IDF_TOKEN dicalage et aller ` l'itat 12 EOL_TOKEN dicalage et aller ` l'itat 13 vardecl aller ` l'itat 14 progbdy aller ` l'itat 15 itat 10 6 proghdr: PROGRAM_TOKEN namespace IDF_TOKEN . LPAR_TOKEN varlst RPAR_TOKEN progret EOL_TOKEN 39 namespace: namespace IDF_TOKEN . DBLCLN_TOKEN LPAR_TOKEN dicalage et aller ` l'itat 16 DBLCLN_TOKEN dicalage et aller ` l'itat 17 itat 11 19 progbdy: BEGIN_TOKEN . EOL_TOKEN instructions EOL_TOKEN dicalage et aller ` l'itat 18 itat 12 11 vardecl: IDF_TOKEN . CLN_TOKEN type CLN_TOKEN dicalage et aller ` l'itat 19 itat 13 17 vardecls: vardecls EOL_TOKEN . $difaut riduction par utilisation de la rhgle 17 (vardecls) itat 14 18 vardecls: vardecls vardecl . EOL_TOKEN EOL_TOKEN dicalage et aller ` l'itat 20 itat 15 5 program: proghdr vardecls progbdy . progend END_TOKEN dicalage et aller ` l'itat 21 progend aller ` l'itat 22 itat 16 6 proghdr: PROGRAM_TOKEN namespace IDF_TOKEN LPAR_TOKEN . varlst RPAR_TOKEN progret EOL_TOKEN IDF_TOKEN dicalage et aller ` l'itat 12 $difaut riduction par utilisation de la rhgle 7 (varlst) varlst aller ` l'itat 23 varlst2 aller ` l'itat 24 vardecl aller ` l'itat 25 itat 17 39 namespace: namespace IDF_TOKEN DBLCLN_TOKEN . $difaut riduction par utilisation de la rhgle 39 (namespace) itat 18 19 progbdy: BEGIN_TOKEN EOL_TOKEN . instructions $difaut riduction par utilisation de la rhgle 20 (instructions) instructions aller ` l'itat 26 itat 19 11 vardecl: IDF_TOKEN CLN_TOKEN . type $difaut riduction par utilisation de la rhgle 38 (namespace) type aller ` l'itat 27 namespace aller ` l'itat 28 itat 20 18 vardecls: vardecls vardecl EOL_TOKEN . $difaut riduction par utilisation de la rhgle 18 (vardecls) itat 21 36 progend: END_TOKEN . PROGRAM_TOKEN EOL_TOKEN 37 | END_TOKEN . PROGRAM_TOKEN ON_TOKEN expression EOL_TOKEN PROGRAM_TOKEN dicalage et aller ` l'itat 29 itat 22 5 program: proghdr vardecls progbdy progend . $difaut riduction par utilisation de la rhgle 5 (program) itat 23 6 proghdr: PROGRAM_TOKEN namespace IDF_TOKEN LPAR_TOKEN varlst . RPAR_TOKEN progret EOL_TOKEN RPAR_TOKEN dicalage et aller ` l'itat 30 itat 24 8 varlst: varlst2 . 10 varlst2: varlst2 . COMMA_TOKEN vardecl COMMA_TOKEN dicalage et aller ` l'itat 31 $difaut riduction par utilisation de la rhgle 8 (varlst) itat 25 9 varlst2: vardecl . $difaut riduction par utilisation de la rhgle 9 (varlst2) itat 26 19 progbdy: BEGIN_TOKEN EOL_TOKEN instructions . 21 instructions: instructions . instruction RETURN_TOKEN dicalage et aller ` l'itat 32 IF_TOKEN dicalage et aller ` l'itat 33 FOR_TOKEN dicalage et aller ` l'itat 34 WHILE_TOKEN dicalage et aller ` l'itat 35 LOOP_TOKEN dicalage et aller ` l'itat 36 LPAR_TOKEN dicalage et aller ` l'itat 37 MINUS_TOKEN dicalage et aller ` l'itat 38 INTCST_TOKEN dicalage et aller ` l'itat 39 FLOATCST_TOKEN dicalage et aller ` l'itat 40 BOOLCST_TOKEN dicalage et aller ` l'itat 41 STRCST_TOKEN dicalage et aller ` l'itat 42 EOL_TOKEN dicalage et aller ` l'itat 43 NOT_TOKEN dicalage et aller ` l'itat 44 IDF_TOKEN riduction par utilisation de la rhgle 38 (namespace) $difaut riduction par utilisation de la rhgle 19 (progbdy) instruction aller ` l'itat 45 namespace aller ` l'itat 46 locator aller ` l'itat 47 expression aller ` l'itat 48 itat 27 11 vardecl: IDF_TOKEN CLN_TOKEN type . 15 type: type . STAR_TOKEN STAR_TOKEN dicalage et aller ` l'itat 49 $difaut riduction par utilisation de la rhgle 11 (vardecl) itat 28 14 type: namespace . IDF_TOKEN 39 namespace: namespace . IDF_TOKEN DBLCLN_TOKEN IDF_TOKEN dicalage et aller ` l'itat 50 itat 29 36 progend: END_TOKEN PROGRAM_TOKEN . EOL_TOKEN 37 | END_TOKEN PROGRAM_TOKEN . ON_TOKEN expression EOL_TOKEN ON_TOKEN dicalage et aller ` l'itat 51 EOL_TOKEN dicalage et aller ` l'itat 52 itat 30 6 proghdr: PROGRAM_TOKEN namespace IDF_TOKEN LPAR_TOKEN varlst RPAR_TOKEN . progret EOL_TOKEN CLN_TOKEN dicalage et aller ` l'itat 53 $difaut riduction par utilisation de la rhgle 12 (progret) progret aller ` l'itat 54 itat 31 10 varlst2: varlst2 COMMA_TOKEN . vardecl IDF_TOKEN dicalage et aller ` l'itat 12 vardecl aller ` l'itat 55 itat 32 28 instruction: RETURN_TOKEN . expression EOL_TOKEN 29 | RETURN_TOKEN . EOL_TOKEN LPAR_TOKEN dicalage et aller ` l'itat 37 MINUS_TOKEN dicalage et aller ` l'itat 38 INTCST_TOKEN dicalage et aller ` l'itat 39 FLOATCST_TOKEN dicalage et aller ` l'itat 40 BOOLCST_TOKEN dicalage et aller ` l'itat 41 STRCST_TOKEN dicalage et aller ` l'itat 42 EOL_TOKEN dicalage et aller ` l'itat 56 NOT_TOKEN dicalage et aller ` l'itat 44 $difaut riduction par utilisation de la rhgle 38 (namespace) namespace aller ` l'itat 46 locator aller ` l'itat 57 expression aller ` l'itat 58 itat 33 25 instruction: IF_TOKEN . expression THEN_TOKEN EOL_TOKEN instructions ifnext END_TOKEN IF_TOKEN LPAR_TOKEN dicalage et aller ` l'itat 37 MINUS_TOKEN dicalage et aller ` l'itat 38 INTCST_TOKEN dicalage et aller ` l'itat 39 FLOATCST_TOKEN dicalage et aller ` l'itat 40 BOOLCST_TOKEN dicalage et aller ` l'itat 41 STRCST_TOKEN dicalage et aller ` l'itat 42 NOT_TOKEN dicalage et aller ` l'itat 44 $difaut riduction par utilisation de la rhgle 38 (namespace) namespace aller ` l'itat 46 locator aller ` l'itat 57 expression aller ` l'itat 59 itat 34 30 instruction: FOR_TOKEN . locator FROM_TOKEN expression TO_TOKEN expression forstep LOOP_TOKEN instructions END_TOKEN LOOP_TOKEN LPAR_TOKEN dicalage et aller ` l'itat 37 MINUS_TOKEN dicalage et aller ` l'itat 38 INTCST_TOKEN dicalage et aller ` l'itat 39 FLOATCST_TOKEN dicalage et aller ` l'itat 40 BOOLCST_TOKEN dicalage et aller ` l'itat 41 STRCST_TOKEN dicalage et aller ` l'itat 42 NOT_TOKEN dicalage et aller ` l'itat 44 $difaut riduction par utilisation de la rhgle 38 (namespace) namespace aller ` l'itat 46 locator aller ` l'itat 60 expression aller ` l'itat 61 itat 35 24 instruction: WHILE_TOKEN . expression LOOP_TOKEN EOL_TOKEN instructions END_TOKEN EOL_TOKEN LPAR_TOKEN dicalage et aller ` l'itat 37 MINUS_TOKEN dicalage et aller ` l'itat 38 INTCST_TOKEN dicalage et aller ` l'itat 39 FLOATCST_TOKEN dicalage et aller ` l'itat 40 BOOLCST_TOKEN dicalage et aller ` l'itat 41 STRCST_TOKEN dicalage et aller ` l'itat 42 NOT_TOKEN dicalage et aller ` l'itat 44 $difaut riduction par utilisation de la rhgle 38 (namespace) namespace aller ` l'itat 46 locator aller ` l'itat 57 expression aller ` l'itat 62 itat 36 23 instruction: LOOP_TOKEN . EOL_TOKEN instructions END_TOKEN LOOP_TOKEN EOL_TOKEN EOL_TOKEN dicalage et aller ` l'itat 63 itat 37 63 expression: LPAR_TOKEN . expression RPAR_TOKEN LPAR_TOKEN dicalage et aller ` l'itat 37 MINUS_TOKEN dicalage et aller ` l'itat 38 INTCST_TOKEN dicalage et aller ` l'itat 39 FLOATCST_TOKEN dicalage et aller ` l'itat 40 BOOLCST_TOKEN dicalage et aller ` l'itat 41 STRCST_TOKEN dicalage et aller ` l'itat 42 NOT_TOKEN dicalage et aller ` l'itat 44 $difaut riduction par utilisation de la rhgle 38 (namespace) namespace aller ` l'itat 46 locator aller ` l'itat 57 expression aller ` l'itat 64 itat 38 59 expression: MINUS_TOKEN . expression LPAR_TOKEN dicalage et aller ` l'itat 37 MINUS_TOKEN dicalage et aller ` l'itat 38 INTCST_TOKEN dicalage et aller ` l'itat 39 FLOATCST_TOKEN dicalage et aller ` l'itat 40 BOOLCST_TOKEN dicalage et aller ` l'itat 41 STRCST_TOKEN dicalage et aller ` l'itat 42 NOT_TOKEN dicalage et aller ` l'itat 44 $difaut riduction par utilisation de la rhgle 38 (namespace) namespace aller ` l'itat 46 locator aller ` l'itat 57 expression aller ` l'itat 65 itat 39 64 expression: INTCST_TOKEN . $difaut riduction par utilisation de la rhgle 64 (expression) itat 40 65 expression: FLOATCST_TOKEN . $difaut riduction par utilisation de la rhgle 65 (expression) itat 41 66 expression: BOOLCST_TOKEN . $difaut riduction par utilisation de la rhgle 66 (expression) itat 42 67 expression: STRCST_TOKEN . $difaut riduction par utilisation de la rhgle 67 (expression) itat 43 22 instruction: EOL_TOKEN . $difaut riduction par utilisation de la rhgle 22 (instruction) itat 44 60 expression: NOT_TOKEN . expression LPAR_TOKEN dicalage et aller ` l'itat 37 MINUS_TOKEN dicalage et aller ` l'itat 38 INTCST_TOKEN dicalage et aller ` l'itat 39 FLOATCST_TOKEN dicalage et aller ` l'itat 40 BOOLCST_TOKEN dicalage et aller ` l'itat 41 STRCST_TOKEN dicalage et aller ` l'itat 42 NOT_TOKEN dicalage et aller ` l'itat 44 $difaut riduction par utilisation de la rhgle 38 (namespace) namespace aller ` l'itat 46 locator aller ` l'itat 57 expression aller ` l'itat 66 itat 45 21 instructions: instructions instruction . $difaut riduction par utilisation de la rhgle 21 (instructions) itat 46 39 namespace: namespace . IDF_TOKEN DBLCLN_TOKEN 45 locator: namespace . IDF_TOKEN IDF_TOKEN dicalage et aller ` l'itat 67 itat 47 27 instruction: locator . BIND_TOKEN locator EOL_TOKEN 46 expression: locator . ASSIGN_TOKEN expression 61 | locator . LPAR_TOKEN exprlst RPAR_TOKEN 62 | locator . 68 | locator . BOUND_TOKEN locator ASSIGN_TOKEN dicalage et aller ` l'itat 68 BOUND_TOKEN dicalage et aller ` l'itat 69 BIND_TOKEN dicalage et aller ` l'itat 70 LPAR_TOKEN dicalage et aller ` l'itat 71 $difaut riduction par utilisation de la rhgle 62 (expression) itat 48 26 instruction: expression . EOL_TOKEN 44 locator: expression . DOT_TOKEN IDF_TOKEN 47 expression: expression . OR_TOKEN expression 48 | expression . AND_TOKEN expression 49 | expression . EQUAL_TOKEN expression 50 | expression . DIFF_TOKEN expression 51 | expression . LESS_TOKEN expression 52 | expression . GREATER_TOKEN expression 53 | expression . LESSEQU_TOKEN expression 54 | expression . GREATEREQU_TOKEN expression 55 | expression . PLUS_TOKEN expression 56 | expression . MINUS_TOKEN expression 57 | expression . STAR_TOKEN expression 58 | expression . SLASH_TOKEN expression LESSEQU_TOKEN dicalage et aller ` l'itat 72 GREATEREQU_TOKEN dicalage et aller ` l'itat 73 EQUAL_TOKEN dicalage et aller ` l'itat 74 DIFF_TOKEN dicalage et aller ` l'itat 75 LESS_TOKEN dicalage et aller ` l'itat 76 GREATER_TOKEN dicalage et aller ` l'itat 77 STAR_TOKEN dicalage et aller ` l'itat 78 DOT_TOKEN dicalage et aller ` l'itat 79 PLUS_TOKEN dicalage et aller ` l'itat 80 MINUS_TOKEN dicalage et aller ` l'itat 81 SLASH_TOKEN dicalage et aller ` l'itat 82 EOL_TOKEN dicalage et aller ` l'itat 83 AND_TOKEN dicalage et aller ` l'itat 84 OR_TOKEN dicalage et aller ` l'itat 85 itat 49 15 type: type STAR_TOKEN . $difaut riduction par utilisation de la rhgle 15 (type) itat 50 14 type: namespace IDF_TOKEN . 39 namespace: namespace IDF_TOKEN . DBLCLN_TOKEN DBLCLN_TOKEN dicalage et aller ` l'itat 17 $difaut riduction par utilisation de la rhgle 14 (type) itat 51 37 progend: END_TOKEN PROGRAM_TOKEN ON_TOKEN . expression EOL_TOKEN LPAR_TOKEN dicalage et aller ` l'itat 37 MINUS_TOKEN dicalage et aller ` l'itat 38 INTCST_TOKEN dicalage et aller ` l'itat 39 FLOATCST_TOKEN dicalage et aller ` l'itat 40 BOOLCST_TOKEN dicalage et aller ` l'itat 41 STRCST_TOKEN dicalage et aller ` l'itat 42 NOT_TOKEN dicalage et aller ` l'itat 44 $difaut riduction par utilisation de la rhgle 38 (namespace) namespace aller ` l'itat 46 locator aller ` l'itat 57 expression aller ` l'itat 86 itat 52 36 progend: END_TOKEN PROGRAM_TOKEN EOL_TOKEN . $difaut riduction par utilisation de la rhgle 36 (progend) itat 53 13 progret: CLN_TOKEN . type $difaut riduction par utilisation de la rhgle 38 (namespace) type aller ` l'itat 87 namespace aller ` l'itat 28 itat 54 6 proghdr: PROGRAM_TOKEN namespace IDF_TOKEN LPAR_TOKEN varlst RPAR_TOKEN progret . EOL_TOKEN EOL_TOKEN dicalage et aller ` l'itat 88 itat 55 10 varlst2: varlst2 COMMA_TOKEN vardecl . $difaut riduction par utilisation de la rhgle 10 (varlst2) itat 56 29 instruction: RETURN_TOKEN EOL_TOKEN . $difaut riduction par utilisation de la rhgle 29 (instruction) itat 57 46 expression: locator . ASSIGN_TOKEN expression 61 | locator . LPAR_TOKEN exprlst RPAR_TOKEN 62 | locator . 68 | locator . BOUND_TOKEN locator ASSIGN_TOKEN dicalage et aller ` l'itat 68 BOUND_TOKEN dicalage et aller ` l'itat 69 LPAR_TOKEN dicalage et aller ` l'itat 71 $difaut riduction par utilisation de la rhgle 62 (expression) itat 58 28 instruction: RETURN_TOKEN expression . EOL_TOKEN 44 locator: expression . DOT_TOKEN IDF_TOKEN 47 expression: expression . OR_TOKEN expression 48 | expression . AND_TOKEN expression 49 | expression . EQUAL_TOKEN expression 50 | expression . DIFF_TOKEN expression 51 | expression . LESS_TOKEN expression 52 | expression . GREATER_TOKEN expression 53 | expression . LESSEQU_TOKEN expression 54 | expression . GREATEREQU_TOKEN expression 55 | expression . PLUS_TOKEN expression 56 | expression . MINUS_TOKEN expression 57 | expression . STAR_TOKEN expression 58 | expression . SLASH_TOKEN expression LESSEQU_TOKEN dicalage et aller ` l'itat 72 GREATEREQU_TOKEN dicalage et aller ` l'itat 73 EQUAL_TOKEN dicalage et aller ` l'itat 74 DIFF_TOKEN dicalage et aller ` l'itat 75 LESS_TOKEN dicalage et aller ` l'itat 76 GREATER_TOKEN dicalage et aller ` l'itat 77 STAR_TOKEN dicalage et aller ` l'itat 78 DOT_TOKEN dicalage et aller ` l'itat 79 PLUS_TOKEN dicalage et aller ` l'itat 80 MINUS_TOKEN dicalage et aller ` l'itat 81 SLASH_TOKEN dicalage et aller ` l'itat 82 EOL_TOKEN dicalage et aller ` l'itat 89 AND_TOKEN dicalage et aller ` l'itat 84 OR_TOKEN dicalage et aller ` l'itat 85 itat 59 25 instruction: IF_TOKEN expression . THEN_TOKEN EOL_TOKEN instructions ifnext END_TOKEN IF_TOKEN 44 locator: expression . DOT_TOKEN IDF_TOKEN 47 expression: expression . OR_TOKEN expression 48 | expression . AND_TOKEN expression 49 | expression . EQUAL_TOKEN expression 50 | expression . DIFF_TOKEN expression 51 | expression . LESS_TOKEN expression 52 | expression . GREATER_TOKEN expression 53 | expression . LESSEQU_TOKEN expression 54 | expression . GREATEREQU_TOKEN expression 55 | expression . PLUS_TOKEN expression 56 | expression . MINUS_TOKEN expression 57 | expression . STAR_TOKEN expression 58 | expression . SLASH_TOKEN expression THEN_TOKEN dicalage et aller ` l'itat 90 LESSEQU_TOKEN dicalage et aller ` l'itat 72 GREATEREQU_TOKEN dicalage et aller ` l'itat 73 EQUAL_TOKEN dicalage et aller ` l'itat 74 DIFF_TOKEN dicalage et aller ` l'itat 75 LESS_TOKEN dicalage et aller ` l'itat 76 GREATER_TOKEN dicalage et aller ` l'itat 77 STAR_TOKEN dicalage et aller ` l'itat 78 DOT_TOKEN dicalage et aller ` l'itat 79 PLUS_TOKEN dicalage et aller ` l'itat 80 MINUS_TOKEN dicalage et aller ` l'itat 81 SLASH_TOKEN dicalage et aller ` l'itat 82 AND_TOKEN dicalage et aller ` l'itat 84 OR_TOKEN dicalage et aller ` l'itat 85 itat 60 30 instruction: FOR_TOKEN locator . FROM_TOKEN expression TO_TOKEN expression forstep LOOP_TOKEN instructions END_TOKEN LOOP_TOKEN 46 expression: locator . ASSIGN_TOKEN expression 61 | locator . LPAR_TOKEN exprlst RPAR_TOKEN 62 | locator . 68 | locator . BOUND_TOKEN locator FROM_TOKEN dicalage et aller ` l'itat 91 ASSIGN_TOKEN dicalage et aller ` l'itat 68 BOUND_TOKEN dicalage et aller ` l'itat 69 LPAR_TOKEN dicalage et aller ` l'itat 71 $difaut riduction par utilisation de la rhgle 62 (expression) itat 61 44 locator: expression . DOT_TOKEN IDF_TOKEN 47 expression: expression . OR_TOKEN expression 48 | expression . AND_TOKEN expression 49 | expression . EQUAL_TOKEN expression 50 | expression . DIFF_TOKEN expression 51 | expression . LESS_TOKEN expression 52 | expression . GREATER_TOKEN expression 53 | expression . LESSEQU_TOKEN expression 54 | expression . GREATEREQU_TOKEN expression 55 | expression . PLUS_TOKEN expression 56 | expression . MINUS_TOKEN expression 57 | expression . STAR_TOKEN expression 58 | expression . SLASH_TOKEN expression LESSEQU_TOKEN dicalage et aller ` l'itat 72 GREATEREQU_TOKEN dicalage et aller ` l'itat 73 EQUAL_TOKEN dicalage et aller ` l'itat 74 DIFF_TOKEN dicalage et aller ` l'itat 75 LESS_TOKEN dicalage et aller ` l'itat 76 GREATER_TOKEN dicalage et aller ` l'itat 77 STAR_TOKEN dicalage et aller ` l'itat 78 DOT_TOKEN dicalage et aller ` l'itat 79 PLUS_TOKEN dicalage et aller ` l'itat 80 MINUS_TOKEN dicalage et aller ` l'itat 81 SLASH_TOKEN dicalage et aller ` l'itat 82 AND_TOKEN dicalage et aller ` l'itat 84 OR_TOKEN dicalage et aller ` l'itat 85 itat 62 24 instruction: WHILE_TOKEN expression . LOOP_TOKEN EOL_TOKEN instructions END_TOKEN EOL_TOKEN 44 locator: expression . DOT_TOKEN IDF_TOKEN 47 expression: expression . OR_TOKEN expression 48 | expression . AND_TOKEN expression 49 | expression . EQUAL_TOKEN expression 50 | expression . DIFF_TOKEN expression 51 | expression . LESS_TOKEN expression 52 | expression . GREATER_TOKEN expression 53 | expression . LESSEQU_TOKEN expression 54 | expression . GREATEREQU_TOKEN expression 55 | expression . PLUS_TOKEN expression 56 | expression . MINUS_TOKEN expression 57 | expression . STAR_TOKEN expression 58 | expression . SLASH_TOKEN expression LOOP_TOKEN dicalage et aller ` l'itat 92 LESSEQU_TOKEN dicalage et aller ` l'itat 72 GREATEREQU_TOKEN dicalage et aller ` l'itat 73 EQUAL_TOKEN dicalage et aller ` l'itat 74 DIFF_TOKEN dicalage et aller ` l'itat 75 LESS_TOKEN dicalage et aller ` l'itat 76 GREATER_TOKEN dicalage et aller ` l'itat 77 STAR_TOKEN dicalage et aller ` l'itat 78 DOT_TOKEN dicalage et aller ` l'itat 79 PLUS_TOKEN dicalage et aller ` l'itat 80 MINUS_TOKEN dicalage et aller ` l'itat 81 SLASH_TOKEN dicalage et aller ` l'itat 82 AND_TOKEN dicalage et aller ` l'itat 84 OR_TOKEN dicalage et aller ` l'itat 85 itat 63 23 instruction: LOOP_TOKEN EOL_TOKEN . instructions END_TOKEN LOOP_TOKEN EOL_TOKEN $difaut riduction par utilisation de la rhgle 20 (instructions) instructions aller ` l'itat 93 itat 64 44 locator: expression . DOT_TOKEN IDF_TOKEN 47 expression: expression . OR_TOKEN expression 48 | expression . AND_TOKEN expression 49 | expression . EQUAL_TOKEN expression 50 | expression . DIFF_TOKEN expression 51 | expression . LESS_TOKEN expression 52 | expression . GREATER_TOKEN expression 53 | expression . LESSEQU_TOKEN expression 54 | expression . GREATEREQU_TOKEN expression 55 | expression . PLUS_TOKEN expression 56 | expression . MINUS_TOKEN expression 57 | expression . STAR_TOKEN expression 58 | expression . SLASH_TOKEN expression 63 | LPAR_TOKEN expression . RPAR_TOKEN LESSEQU_TOKEN dicalage et aller ` l'itat 72 GREATEREQU_TOKEN dicalage et aller ` l'itat 73 EQUAL_TOKEN dicalage et aller ` l'itat 74 DIFF_TOKEN dicalage et aller ` l'itat 75 LESS_TOKEN dicalage et aller ` l'itat 76 GREATER_TOKEN dicalage et aller ` l'itat 77 RPAR_TOKEN dicalage et aller ` l'itat 94 STAR_TOKEN dicalage et aller ` l'itat 78 DOT_TOKEN dicalage et aller ` l'itat 79 PLUS_TOKEN dicalage et aller ` l'itat 80 MINUS_TOKEN dicalage et aller ` l'itat 81 SLASH_TOKEN dicalage et aller ` l'itat 82 AND_TOKEN dicalage et aller ` l'itat 84 OR_TOKEN dicalage et aller ` l'itat 85 itat 65 44 locator: expression . DOT_TOKEN IDF_TOKEN 47 expression: expression . OR_TOKEN expression 48 | expression . AND_TOKEN expression 49 | expression . EQUAL_TOKEN expression 50 | expression . DIFF_TOKEN expression 51 | expression . LESS_TOKEN expression 52 | expression . GREATER_TOKEN expression 53 | expression . LESSEQU_TOKEN expression 54 | expression . GREATEREQU_TOKEN expression 55 | expression . PLUS_TOKEN expression 56 | expression . MINUS_TOKEN expression 57 | expression . STAR_TOKEN expression 58 | expression . SLASH_TOKEN expression 59 | MINUS_TOKEN expression . STAR_TOKEN dicalage et aller ` l'itat 78 SLASH_TOKEN dicalage et aller ` l'itat 82 $difaut riduction par utilisation de la rhgle 59 (expression) itat 66 44 locator: expression . DOT_TOKEN IDF_TOKEN 47 expression: expression . OR_TOKEN expression 48 | expression . AND_TOKEN expression 49 | expression . EQUAL_TOKEN expression 50 | expression . DIFF_TOKEN expression 51 | expression . LESS_TOKEN expression 52 | expression . GREATER_TOKEN expression 53 | expression . LESSEQU_TOKEN expression 54 | expression . GREATEREQU_TOKEN expression 55 | expression . PLUS_TOKEN expression 56 | expression . MINUS_TOKEN expression 57 | expression . STAR_TOKEN expression 58 | expression . SLASH_TOKEN expression 60 | NOT_TOKEN expression . $difaut riduction par utilisation de la rhgle 60 (expression) itat 67 39 namespace: namespace IDF_TOKEN . DBLCLN_TOKEN 45 locator: namespace IDF_TOKEN . DBLCLN_TOKEN dicalage et aller ` l'itat 17 $difaut riduction par utilisation de la rhgle 45 (locator) itat 68 46 expression: locator ASSIGN_TOKEN . expression LPAR_TOKEN dicalage et aller ` l'itat 37 MINUS_TOKEN dicalage et aller ` l'itat 38 INTCST_TOKEN dicalage et aller ` l'itat 39 FLOATCST_TOKEN dicalage et aller ` l'itat 40 BOOLCST_TOKEN dicalage et aller ` l'itat 41 STRCST_TOKEN dicalage et aller ` l'itat 42 NOT_TOKEN dicalage et aller ` l'itat 44 $difaut riduction par utilisation de la rhgle 38 (namespace) namespace aller ` l'itat 46 locator aller ` l'itat 57 expression aller ` l'itat 95 itat 69 68 expression: locator BOUND_TOKEN . locator LPAR_TOKEN dicalage et aller ` l'itat 37 MINUS_TOKEN dicalage et aller ` l'itat 38 INTCST_TOKEN dicalage et aller ` l'itat 39 FLOATCST_TOKEN dicalage et aller ` l'itat 40 BOOLCST_TOKEN dicalage et aller ` l'itat 41 STRCST_TOKEN dicalage et aller ` l'itat 42 NOT_TOKEN dicalage et aller ` l'itat 44 $difaut riduction par utilisation de la rhgle 38 (namespace) namespace aller ` l'itat 46 locator aller ` l'itat 96 expression aller ` l'itat 61 itat 70 27 instruction: locator BIND_TOKEN . locator EOL_TOKEN LPAR_TOKEN dicalage et aller ` l'itat 37 MINUS_TOKEN dicalage et aller ` l'itat 38 INTCST_TOKEN dicalage et aller ` l'itat 39 FLOATCST_TOKEN dicalage et aller ` l'itat 40 BOOLCST_TOKEN dicalage et aller ` l'itat 41 STRCST_TOKEN dicalage et aller ` l'itat 42 NOT_TOKEN dicalage et aller ` l'itat 44 $difaut riduction par utilisation de la rhgle 38 (namespace) namespace aller ` l'itat 46 locator aller ` l'itat 97 expression aller ` l'itat 61 itat 71 61 expression: locator LPAR_TOKEN . exprlst RPAR_TOKEN LPAR_TOKEN dicalage et aller ` l'itat 37 MINUS_TOKEN dicalage et aller ` l'itat 38 INTCST_TOKEN dicalage et aller ` l'itat 39 FLOATCST_TOKEN dicalage et aller ` l'itat 40 BOOLCST_TOKEN dicalage et aller ` l'itat 41 STRCST_TOKEN dicalage et aller ` l'itat 42 NOT_TOKEN dicalage et aller ` l'itat 44 RPAR_TOKEN riduction par utilisation de la rhgle 40 (exprlst) $difaut riduction par utilisation de la rhgle 38 (namespace) namespace aller ` l'itat 46 exprlst aller ` l'itat 98 exprlst2 aller ` l'itat 99 locator aller ` l'itat 57 expression aller ` l'itat 100 itat 72 53 expression: expression LESSEQU_TOKEN . expression LPAR_TOKEN dicalage et aller ` l'itat 37 MINUS_TOKEN dicalage et aller ` l'itat 38 INTCST_TOKEN dicalage et aller ` l'itat 39 FLOATCST_TOKEN dicalage et aller ` l'itat 40 BOOLCST_TOKEN dicalage et aller ` l'itat 41 STRCST_TOKEN dicalage et aller ` l'itat 42 NOT_TOKEN dicalage et aller ` l'itat 44 $difaut riduction par utilisation de la rhgle 38 (namespace) namespace aller ` l'itat 46 locator aller ` l'itat 57 expression aller ` l'itat 101 itat 73 54 expression: expression GREATEREQU_TOKEN . expression LPAR_TOKEN dicalage et aller ` l'itat 37 MINUS_TOKEN dicalage et aller ` l'itat 38 INTCST_TOKEN dicalage et aller ` l'itat 39 FLOATCST_TOKEN dicalage et aller ` l'itat 40 BOOLCST_TOKEN dicalage et aller ` l'itat 41 STRCST_TOKEN dicalage et aller ` l'itat 42 NOT_TOKEN dicalage et aller ` l'itat 44 $difaut riduction par utilisation de la rhgle 38 (namespace) namespace aller ` l'itat 46 locator aller ` l'itat 57 expression aller ` l'itat 102 itat 74 49 expression: expression EQUAL_TOKEN . expression LPAR_TOKEN dicalage et aller ` l'itat 37 MINUS_TOKEN dicalage et aller ` l'itat 38 INTCST_TOKEN dicalage et aller ` l'itat 39 FLOATCST_TOKEN dicalage et aller ` l'itat 40 BOOLCST_TOKEN dicalage et aller ` l'itat 41 STRCST_TOKEN dicalage et aller ` l'itat 42 NOT_TOKEN dicalage et aller ` l'itat 44 $difaut riduction par utilisation de la rhgle 38 (namespace) namespace aller ` l'itat 46 locator aller ` l'itat 57 expression aller ` l'itat 103 itat 75 50 expression: expression DIFF_TOKEN . expression LPAR_TOKEN dicalage et aller ` l'itat 37 MINUS_TOKEN dicalage et aller ` l'itat 38 INTCST_TOKEN dicalage et aller ` l'itat 39 FLOATCST_TOKEN dicalage et aller ` l'itat 40 BOOLCST_TOKEN dicalage et aller ` l'itat 41 STRCST_TOKEN dicalage et aller ` l'itat 42 NOT_TOKEN dicalage et aller ` l'itat 44 $difaut riduction par utilisation de la rhgle 38 (namespace) namespace aller ` l'itat 46 locator aller ` l'itat 57 expression aller ` l'itat 104 itat 76 51 expression: expression LESS_TOKEN . expression LPAR_TOKEN dicalage et aller ` l'itat 37 MINUS_TOKEN dicalage et aller ` l'itat 38 INTCST_TOKEN dicalage et aller ` l'itat 39 FLOATCST_TOKEN dicalage et aller ` l'itat 40 BOOLCST_TOKEN dicalage et aller ` l'itat 41 STRCST_TOKEN dicalage et aller ` l'itat 42 NOT_TOKEN dicalage et aller ` l'itat 44 $difaut riduction par utilisation de la rhgle 38 (namespace) namespace aller ` l'itat 46 locator aller ` l'itat 57 expression aller ` l'itat 105 itat 77 52 expression: expression GREATER_TOKEN . expression LPAR_TOKEN dicalage et aller ` l'itat 37 MINUS_TOKEN dicalage et aller ` l'itat 38 INTCST_TOKEN dicalage et aller ` l'itat 39 FLOATCST_TOKEN dicalage et aller ` l'itat 40 BOOLCST_TOKEN dicalage et aller ` l'itat 41 STRCST_TOKEN dicalage et aller ` l'itat 42 NOT_TOKEN dicalage et aller ` l'itat 44 $difaut riduction par utilisation de la rhgle 38 (namespace) namespace aller ` l'itat 46 locator aller ` l'itat 57 expression aller ` l'itat 106 itat 78 57 expression: expression STAR_TOKEN . expression LPAR_TOKEN dicalage et aller ` l'itat 37 MINUS_TOKEN dicalage et aller ` l'itat 38 INTCST_TOKEN dicalage et aller ` l'itat 39 FLOATCST_TOKEN dicalage et aller ` l'itat 40 BOOLCST_TOKEN dicalage et aller ` l'itat 41 STRCST_TOKEN dicalage et aller ` l'itat 42 NOT_TOKEN dicalage et aller ` l'itat 44 $difaut riduction par utilisation de la rhgle 38 (namespace) namespace aller ` l'itat 46 locator aller ` l'itat 57 expression aller ` l'itat 107 itat 79 44 locator: expression DOT_TOKEN . IDF_TOKEN IDF_TOKEN dicalage et aller ` l'itat 108 itat 80 55 expression: expression PLUS_TOKEN . expression LPAR_TOKEN dicalage et aller ` l'itat 37 MINUS_TOKEN dicalage et aller ` l'itat 38 INTCST_TOKEN dicalage et aller ` l'itat 39 FLOATCST_TOKEN dicalage et aller ` l'itat 40 BOOLCST_TOKEN dicalage et aller ` l'itat 41 STRCST_TOKEN dicalage et aller ` l'itat 42 NOT_TOKEN dicalage et aller ` l'itat 44 $difaut riduction par utilisation de la rhgle 38 (namespace) namespace aller ` l'itat 46 locator aller ` l'itat 57 expression aller ` l'itat 109 itat 81 56 expression: expression MINUS_TOKEN . expression LPAR_TOKEN dicalage et aller ` l'itat 37 MINUS_TOKEN dicalage et aller ` l'itat 38 INTCST_TOKEN dicalage et aller ` l'itat 39 FLOATCST_TOKEN dicalage et aller ` l'itat 40 BOOLCST_TOKEN dicalage et aller ` l'itat 41 STRCST_TOKEN dicalage et aller ` l'itat 42 NOT_TOKEN dicalage et aller ` l'itat 44 $difaut riduction par utilisation de la rhgle 38 (namespace) namespace aller ` l'itat 46 locator aller ` l'itat 57 expression aller ` l'itat 110 itat 82 58 expression: expression SLASH_TOKEN . expression LPAR_TOKEN dicalage et aller ` l'itat 37 MINUS_TOKEN dicalage et aller ` l'itat 38 INTCST_TOKEN dicalage et aller ` l'itat 39 FLOATCST_TOKEN dicalage et aller ` l'itat 40 BOOLCST_TOKEN dicalage et aller ` l'itat 41 STRCST_TOKEN dicalage et aller ` l'itat 42 NOT_TOKEN dicalage et aller ` l'itat 44 $difaut riduction par utilisation de la rhgle 38 (namespace) namespace aller ` l'itat 46 locator aller ` l'itat 57 expression aller ` l'itat 111 itat 83 26 instruction: expression EOL_TOKEN . $difaut riduction par utilisation de la rhgle 26 (instruction) itat 84 48 expression: expression AND_TOKEN . expression LPAR_TOKEN dicalage et aller ` l'itat 37 MINUS_TOKEN dicalage et aller ` l'itat 38 INTCST_TOKEN dicalage et aller ` l'itat 39 FLOATCST_TOKEN dicalage et aller ` l'itat 40 BOOLCST_TOKEN dicalage et aller ` l'itat 41 STRCST_TOKEN dicalage et aller ` l'itat 42 NOT_TOKEN dicalage et aller ` l'itat 44 $difaut riduction par utilisation de la rhgle 38 (namespace) namespace aller ` l'itat 46 locator aller ` l'itat 57 expression aller ` l'itat 112 itat 85 47 expression: expression OR_TOKEN . expression LPAR_TOKEN dicalage et aller ` l'itat 37 MINUS_TOKEN dicalage et aller ` l'itat 38 INTCST_TOKEN dicalage et aller ` l'itat 39 FLOATCST_TOKEN dicalage et aller ` l'itat 40 BOOLCST_TOKEN dicalage et aller ` l'itat 41 STRCST_TOKEN dicalage et aller ` l'itat 42 NOT_TOKEN dicalage et aller ` l'itat 44 $difaut riduction par utilisation de la rhgle 38 (namespace) namespace aller ` l'itat 46 locator aller ` l'itat 57 expression aller ` l'itat 113 itat 86 37 progend: END_TOKEN PROGRAM_TOKEN ON_TOKEN expression . EOL_TOKEN 44 locator: expression . DOT_TOKEN IDF_TOKEN 47 expression: expression . OR_TOKEN expression 48 | expression . AND_TOKEN expression 49 | expression . EQUAL_TOKEN expression 50 | expression . DIFF_TOKEN expression 51 | expression . LESS_TOKEN expression 52 | expression . GREATER_TOKEN expression 53 | expression . LESSEQU_TOKEN expression 54 | expression . GREATEREQU_TOKEN expression 55 | expression . PLUS_TOKEN expression 56 | expression . MINUS_TOKEN expression 57 | expression . STAR_TOKEN expression 58 | expression . SLASH_TOKEN expression LESSEQU_TOKEN dicalage et aller ` l'itat 72 GREATEREQU_TOKEN dicalage et aller ` l'itat 73 EQUAL_TOKEN dicalage et aller ` l'itat 74 DIFF_TOKEN dicalage et aller ` l'itat 75 LESS_TOKEN dicalage et aller ` l'itat 76 GREATER_TOKEN dicalage et aller ` l'itat 77 STAR_TOKEN dicalage et aller ` l'itat 78 DOT_TOKEN dicalage et aller ` l'itat 79 PLUS_TOKEN dicalage et aller ` l'itat 80 MINUS_TOKEN dicalage et aller ` l'itat 81 SLASH_TOKEN dicalage et aller ` l'itat 82 EOL_TOKEN dicalage et aller ` l'itat 114 AND_TOKEN dicalage et aller ` l'itat 84 OR_TOKEN dicalage et aller ` l'itat 85 itat 87 13 progret: CLN_TOKEN type . 15 type: type . STAR_TOKEN STAR_TOKEN dicalage et aller ` l'itat 49 $difaut riduction par utilisation de la rhgle 13 (progret) itat 88 6 proghdr: PROGRAM_TOKEN namespace IDF_TOKEN LPAR_TOKEN varlst RPAR_TOKEN progret EOL_TOKEN . $difaut riduction par utilisation de la rhgle 6 (proghdr) itat 89 28 instruction: RETURN_TOKEN expression EOL_TOKEN . $difaut riduction par utilisation de la rhgle 28 (instruction) itat 90 25 instruction: IF_TOKEN expression THEN_TOKEN . EOL_TOKEN instructions ifnext END_TOKEN IF_TOKEN EOL_TOKEN dicalage et aller ` l'itat 115 itat 91 30 instruction: FOR_TOKEN locator FROM_TOKEN . expression TO_TOKEN expression forstep LOOP_TOKEN instructions END_TOKEN LOOP_TOKEN LPAR_TOKEN dicalage et aller ` l'itat 37 MINUS_TOKEN dicalage et aller ` l'itat 38 INTCST_TOKEN dicalage et aller ` l'itat 39 FLOATCST_TOKEN dicalage et aller ` l'itat 40 BOOLCST_TOKEN dicalage et aller ` l'itat 41 STRCST_TOKEN dicalage et aller ` l'itat 42 NOT_TOKEN dicalage et aller ` l'itat 44 $difaut riduction par utilisation de la rhgle 38 (namespace) namespace aller ` l'itat 46 locator aller ` l'itat 57 expression aller ` l'itat 116 itat 92 24 instruction: WHILE_TOKEN expression LOOP_TOKEN . EOL_TOKEN instructions END_TOKEN EOL_TOKEN EOL_TOKEN dicalage et aller ` l'itat 117 itat 93 21 instructions: instructions . instruction 23 instruction: LOOP_TOKEN EOL_TOKEN instructions . END_TOKEN LOOP_TOKEN EOL_TOKEN RETURN_TOKEN dicalage et aller ` l'itat 32 IF_TOKEN dicalage et aller ` l'itat 33 FOR_TOKEN dicalage et aller ` l'itat 34 WHILE_TOKEN dicalage et aller ` l'itat 35 LOOP_TOKEN dicalage et aller ` l'itat 36 LPAR_TOKEN dicalage et aller ` l'itat 37 MINUS_TOKEN dicalage et aller ` l'itat 38 INTCST_TOKEN dicalage et aller ` l'itat 39 FLOATCST_TOKEN dicalage et aller ` l'itat 40 BOOLCST_TOKEN dicalage et aller ` l'itat 41 STRCST_TOKEN dicalage et aller ` l'itat 42 EOL_TOKEN dicalage et aller ` l'itat 43 END_TOKEN dicalage et aller ` l'itat 118 NOT_TOKEN dicalage et aller ` l'itat 44 $difaut riduction par utilisation de la rhgle 38 (namespace) instruction aller ` l'itat 45 namespace aller ` l'itat 46 locator aller ` l'itat 47 expression aller ` l'itat 48 itat 94 63 expression: LPAR_TOKEN expression RPAR_TOKEN . $difaut riduction par utilisation de la rhgle 63 (expression) itat 95 44 locator: expression . DOT_TOKEN IDF_TOKEN 46 expression: locator ASSIGN_TOKEN expression . 47 | expression . OR_TOKEN expression 48 | expression . AND_TOKEN expression 49 | expression . EQUAL_TOKEN expression 50 | expression . DIFF_TOKEN expression 51 | expression . LESS_TOKEN expression 52 | expression . GREATER_TOKEN expression 53 | expression . LESSEQU_TOKEN expression 54 | expression . GREATEREQU_TOKEN expression 55 | expression . PLUS_TOKEN expression 56 | expression . MINUS_TOKEN expression 57 | expression . STAR_TOKEN expression 58 | expression . SLASH_TOKEN expression LESSEQU_TOKEN dicalage et aller ` l'itat 72 GREATEREQU_TOKEN dicalage et aller ` l'itat 73 EQUAL_TOKEN dicalage et aller ` l'itat 74 DIFF_TOKEN dicalage et aller ` l'itat 75 LESS_TOKEN dicalage et aller ` l'itat 76 GREATER_TOKEN dicalage et aller ` l'itat 77 STAR_TOKEN dicalage et aller ` l'itat 78 PLUS_TOKEN dicalage et aller ` l'itat 80 MINUS_TOKEN dicalage et aller ` l'itat 81 SLASH_TOKEN dicalage et aller ` l'itat 82 AND_TOKEN dicalage et aller ` l'itat 84 OR_TOKEN dicalage et aller ` l'itat 85 $difaut riduction par utilisation de la rhgle 46 (expression) itat 96 46 expression: locator . ASSIGN_TOKEN expression 61 | locator . LPAR_TOKEN exprlst RPAR_TOKEN 62 | locator . 68 | locator . BOUND_TOKEN locator 68 | locator BOUND_TOKEN locator . ASSIGN_TOKEN dicalage et aller ` l'itat 68 BOUND_TOKEN dicalage et aller ` l'itat 69 LPAR_TOKEN dicalage et aller ` l'itat 71 THEN_TOKEN riduction par utilisation de la rhgle 68 (expression) TO_TOKEN riduction par utilisation de la rhgle 68 (expression) STEP_TOKEN riduction par utilisation de la rhgle 68 (expression) LOOP_TOKEN riduction par utilisation de la rhgle 68 (expression) LESSEQU_TOKEN riduction par utilisation de la rhgle 62 (expression) LESSEQU_TOKEN [riduction par utilisation de la rhgle 68 (expression)] GREATEREQU_TOKEN riduction par utilisation de la rhgle 62 (expression) GREATEREQU_TOKEN [riduction par utilisation de la rhgle 68 (expression)] EQUAL_TOKEN riduction par utilisation de la rhgle 62 (expression) EQUAL_TOKEN [riduction par utilisation de la rhgle 68 (expression)] DIFF_TOKEN riduction par utilisation de la rhgle 62 (expression) DIFF_TOKEN [riduction par utilisation de la rhgle 68 (expression)] LESS_TOKEN riduction par utilisation de la rhgle 62 (expression) LESS_TOKEN [riduction par utilisation de la rhgle 68 (expression)] GREATER_TOKEN riduction par utilisation de la rhgle 62 (expression) GREATER_TOKEN [riduction par utilisation de la rhgle 68 (expression)] RPAR_TOKEN riduction par utilisation de la rhgle 68 (expression) STAR_TOKEN riduction par utilisation de la rhgle 62 (expression) STAR_TOKEN [riduction par utilisation de la rhgle 68 (expression)] DOT_TOKEN riduction par utilisation de la rhgle 62 (expression) DOT_TOKEN [riduction par utilisation de la rhgle 68 (expression)] COMMA_TOKEN riduction par utilisation de la rhgle 68 (expression) PLUS_TOKEN riduction par utilisation de la rhgle 62 (expression) PLUS_TOKEN [riduction par utilisation de la rhgle 68 (expression)] MINUS_TOKEN riduction par utilisation de la rhgle 62 (expression) MINUS_TOKEN [riduction par utilisation de la rhgle 68 (expression)] SLASH_TOKEN riduction par utilisation de la rhgle 62 (expression) SLASH_TOKEN [riduction par utilisation de la rhgle 68 (expression)] EOL_TOKEN riduction par utilisation de la rhgle 68 (expression) AND_TOKEN riduction par utilisation de la rhgle 62 (expression) AND_TOKEN [riduction par utilisation de la rhgle 68 (expression)] OR_TOKEN riduction par utilisation de la rhgle 62 (expression) OR_TOKEN [riduction par utilisation de la rhgle 68 (expression)] $difaut riduction par utilisation de la rhgle 62 (expression) itat 97 27 instruction: locator BIND_TOKEN locator . EOL_TOKEN 46 expression: locator . ASSIGN_TOKEN expression 61 | locator . LPAR_TOKEN exprlst RPAR_TOKEN 62 | locator . 68 | locator . BOUND_TOKEN locator ASSIGN_TOKEN dicalage et aller ` l'itat 68 BOUND_TOKEN dicalage et aller ` l'itat 69 LPAR_TOKEN dicalage et aller ` l'itat 71 EOL_TOKEN dicalage et aller ` l'itat 119 $difaut riduction par utilisation de la rhgle 62 (expression) itat 98 61 expression: locator LPAR_TOKEN exprlst . RPAR_TOKEN RPAR_TOKEN dicalage et aller ` l'itat 120 itat 99 41 exprlst: exprlst2 . 43 exprlst2: exprlst2 . COMMA_TOKEN expression COMMA_TOKEN dicalage et aller ` l'itat 121 $difaut riduction par utilisation de la rhgle 41 (exprlst) itat 100 42 exprlst2: expression . 44 locator: expression . DOT_TOKEN IDF_TOKEN 47 expression: expression . OR_TOKEN expression 48 | expression . AND_TOKEN expression 49 | expression . EQUAL_TOKEN expression 50 | expression . DIFF_TOKEN expression 51 | expression . LESS_TOKEN expression 52 | expression . GREATER_TOKEN expression 53 | expression . LESSEQU_TOKEN expression 54 | expression . GREATEREQU_TOKEN expression 55 | expression . PLUS_TOKEN expression 56 | expression . MINUS_TOKEN expression 57 | expression . STAR_TOKEN expression 58 | expression . SLASH_TOKEN expression LESSEQU_TOKEN dicalage et aller ` l'itat 72 GREATEREQU_TOKEN dicalage et aller ` l'itat 73 EQUAL_TOKEN dicalage et aller ` l'itat 74 DIFF_TOKEN dicalage et aller ` l'itat 75 LESS_TOKEN dicalage et aller ` l'itat 76 GREATER_TOKEN dicalage et aller ` l'itat 77 STAR_TOKEN dicalage et aller ` l'itat 78 DOT_TOKEN dicalage et aller ` l'itat 79 PLUS_TOKEN dicalage et aller ` l'itat 80 MINUS_TOKEN dicalage et aller ` l'itat 81 SLASH_TOKEN dicalage et aller ` l'itat 82 AND_TOKEN dicalage et aller ` l'itat 84 OR_TOKEN dicalage et aller ` l'itat 85 $difaut riduction par utilisation de la rhgle 42 (exprlst2) itat 101 44 locator: expression . DOT_TOKEN IDF_TOKEN 47 expression: expression . OR_TOKEN expression 48 | expression . AND_TOKEN expression 49 | expression . EQUAL_TOKEN expression 50 | expression . DIFF_TOKEN expression 51 | expression . LESS_TOKEN expression 52 | expression . GREATER_TOKEN expression 53 | expression . LESSEQU_TOKEN expression 53 | expression LESSEQU_TOKEN expression . 54 | expression . GREATEREQU_TOKEN expression 55 | expression . PLUS_TOKEN expression 56 | expression . MINUS_TOKEN expression 57 | expression . STAR_TOKEN expression 58 | expression . SLASH_TOKEN expression STAR_TOKEN dicalage et aller ` l'itat 78 PLUS_TOKEN dicalage et aller ` l'itat 80 MINUS_TOKEN dicalage et aller ` l'itat 81 SLASH_TOKEN dicalage et aller ` l'itat 82 LESSEQU_TOKEN erreur (non-associative) GREATEREQU_TOKEN erreur (non-associative) LESS_TOKEN erreur (non-associative) GREATER_TOKEN erreur (non-associative) $difaut riduction par utilisation de la rhgle 53 (expression) itat 102 44 locator: expression . DOT_TOKEN IDF_TOKEN 47 expression: expression . OR_TOKEN expression 48 | expression . AND_TOKEN expression 49 | expression . EQUAL_TOKEN expression 50 | expression . DIFF_TOKEN expression 51 | expression . LESS_TOKEN expression 52 | expression . GREATER_TOKEN expression 53 | expression . LESSEQU_TOKEN expression 54 | expression . GREATEREQU_TOKEN expression 54 | expression GREATEREQU_TOKEN expression . 55 | expression . PLUS_TOKEN expression 56 | expression . MINUS_TOKEN expression 57 | expression . STAR_TOKEN expression 58 | expression . SLASH_TOKEN expression STAR_TOKEN dicalage et aller ` l'itat 78 PLUS_TOKEN dicalage et aller ` l'itat 80 MINUS_TOKEN dicalage et aller ` l'itat 81 SLASH_TOKEN dicalage et aller ` l'itat 82 LESSEQU_TOKEN erreur (non-associative) GREATEREQU_TOKEN erreur (non-associative) LESS_TOKEN erreur (non-associative) GREATER_TOKEN erreur (non-associative) $difaut riduction par utilisation de la rhgle 54 (expression) itat 103 44 locator: expression . DOT_TOKEN IDF_TOKEN 47 expression: expression . OR_TOKEN expression 48 | expression . AND_TOKEN expression 49 | expression . EQUAL_TOKEN expression 49 | expression EQUAL_TOKEN expression . 50 | expression . DIFF_TOKEN expression 51 | expression . LESS_TOKEN expression 52 | expression . GREATER_TOKEN expression 53 | expression . LESSEQU_TOKEN expression 54 | expression . GREATEREQU_TOKEN expression 55 | expression . PLUS_TOKEN expression 56 | expression . MINUS_TOKEN expression 57 | expression . STAR_TOKEN expression 58 | expression . SLASH_TOKEN expression LESSEQU_TOKEN dicalage et aller ` l'itat 72 GREATEREQU_TOKEN dicalage et aller ` l'itat 73 LESS_TOKEN dicalage et aller ` l'itat 76 GREATER_TOKEN dicalage et aller ` l'itat 77 STAR_TOKEN dicalage et aller ` l'itat 78 PLUS_TOKEN dicalage et aller ` l'itat 80 MINUS_TOKEN dicalage et aller ` l'itat 81 SLASH_TOKEN dicalage et aller ` l'itat 82 EQUAL_TOKEN erreur (non-associative) DIFF_TOKEN erreur (non-associative) $difaut riduction par utilisation de la rhgle 49 (expression) itat 104 44 locator: expression . DOT_TOKEN IDF_TOKEN 47 expression: expression . OR_TOKEN expression 48 | expression . AND_TOKEN expression 49 | expression . EQUAL_TOKEN expression 50 | expression . DIFF_TOKEN expression 50 | expression DIFF_TOKEN expression . 51 | expression . LESS_TOKEN expression 52 | expression . GREATER_TOKEN expression 53 | expression . LESSEQU_TOKEN expression 54 | expression . GREATEREQU_TOKEN expression 55 | expression . PLUS_TOKEN expression 56 | expression . MINUS_TOKEN expression 57 | expression . STAR_TOKEN expression 58 | expression . SLASH_TOKEN expression LESSEQU_TOKEN dicalage et aller ` l'itat 72 GREATEREQU_TOKEN dicalage et aller ` l'itat 73 LESS_TOKEN dicalage et aller ` l'itat 76 GREATER_TOKEN dicalage et aller ` l'itat 77 STAR_TOKEN dicalage et aller ` l'itat 78 PLUS_TOKEN dicalage et aller ` l'itat 80 MINUS_TOKEN dicalage et aller ` l'itat 81 SLASH_TOKEN dicalage et aller ` l'itat 82 EQUAL_TOKEN erreur (non-associative) DIFF_TOKEN erreur (non-associative) $difaut riduction par utilisation de la rhgle 50 (expression) itat 105 44 locator: expression . DOT_TOKEN IDF_TOKEN 47 expression: expression . OR_TOKEN expression 48 | expression . AND_TOKEN expression 49 | expression . EQUAL_TOKEN expression 50 | expression . DIFF_TOKEN expression 51 | expression . LESS_TOKEN expression 51 | expression LESS_TOKEN expression . 52 | expression . GREATER_TOKEN expression 53 | expression . LESSEQU_TOKEN expression 54 | expression . GREATEREQU_TOKEN expression 55 | expression . PLUS_TOKEN expression 56 | expression . MINUS_TOKEN expression 57 | expression . STAR_TOKEN expression 58 | expression . SLASH_TOKEN expression STAR_TOKEN dicalage et aller ` l'itat 78 PLUS_TOKEN dicalage et aller ` l'itat 80 MINUS_TOKEN dicalage et aller ` l'itat 81 SLASH_TOKEN dicalage et aller ` l'itat 82 LESSEQU_TOKEN erreur (non-associative) GREATEREQU_TOKEN erreur (non-associative) LESS_TOKEN erreur (non-associative) GREATER_TOKEN erreur (non-associative) $difaut riduction par utilisation de la rhgle 51 (expression) itat 106 44 locator: expression . DOT_TOKEN IDF_TOKEN 47 expression: expression . OR_TOKEN expression 48 | expression . AND_TOKEN expression 49 | expression . EQUAL_TOKEN expression 50 | expression . DIFF_TOKEN expression 51 | expression . LESS_TOKEN expression 52 | expression . GREATER_TOKEN expression 52 | expression GREATER_TOKEN expression . 53 | expression . LESSEQU_TOKEN expression 54 | expression . GREATEREQU_TOKEN expression 55 | expression . PLUS_TOKEN expression 56 | expression . MINUS_TOKEN expression 57 | expression . STAR_TOKEN expression 58 | expression . SLASH_TOKEN expression STAR_TOKEN dicalage et aller ` l'itat 78 PLUS_TOKEN dicalage et aller ` l'itat 80 MINUS_TOKEN dicalage et aller ` l'itat 81 SLASH_TOKEN dicalage et aller ` l'itat 82 LESSEQU_TOKEN erreur (non-associative) GREATEREQU_TOKEN erreur (non-associative) LESS_TOKEN erreur (non-associative) GREATER_TOKEN erreur (non-associative) $difaut riduction par utilisation de la rhgle 52 (expression) itat 107 44 locator: expression . DOT_TOKEN IDF_TOKEN 47 expression: expression . OR_TOKEN expression 48 | expression . AND_TOKEN expression 49 | expression . EQUAL_TOKEN expression 50 | expression . DIFF_TOKEN expression 51 | expression . LESS_TOKEN expression 52 | expression . GREATER_TOKEN expression 53 | expression . LESSEQU_TOKEN expression 54 | expression . GREATEREQU_TOKEN expression 55 | expression . PLUS_TOKEN expression 56 | expression . MINUS_TOKEN expression 57 | expression . STAR_TOKEN expression 57 | expression STAR_TOKEN expression . 58 | expression . SLASH_TOKEN expression $difaut riduction par utilisation de la rhgle 57 (expression) itat 108 44 locator: expression DOT_TOKEN IDF_TOKEN . $difaut riduction par utilisation de la rhgle 44 (locator) itat 109 44 locator: expression . DOT_TOKEN IDF_TOKEN 47 expression: expression . OR_TOKEN expression 48 | expression . AND_TOKEN expression 49 | expression . EQUAL_TOKEN expression 50 | expression . DIFF_TOKEN expression 51 | expression . LESS_TOKEN expression 52 | expression . GREATER_TOKEN expression 53 | expression . LESSEQU_TOKEN expression 54 | expression . GREATEREQU_TOKEN expression 55 | expression . PLUS_TOKEN expression 55 | expression PLUS_TOKEN expression . 56 | expression . MINUS_TOKEN expression 57 | expression . STAR_TOKEN expression 58 | expression . SLASH_TOKEN expression STAR_TOKEN dicalage et aller ` l'itat 78 SLASH_TOKEN dicalage et aller ` l'itat 82 $difaut riduction par utilisation de la rhgle 55 (expression) itat 110 44 locator: expression . DOT_TOKEN IDF_TOKEN 47 expression: expression . OR_TOKEN expression 48 | expression . AND_TOKEN expression 49 | expression . EQUAL_TOKEN expression 50 | expression . DIFF_TOKEN expression 51 | expression . LESS_TOKEN expression 52 | expression . GREATER_TOKEN expression 53 | expression . LESSEQU_TOKEN expression 54 | expression . GREATEREQU_TOKEN expression 55 | expression . PLUS_TOKEN expression 56 | expression . MINUS_TOKEN expression 56 | expression MINUS_TOKEN expression . 57 | expression . STAR_TOKEN expression 58 | expression . SLASH_TOKEN expression STAR_TOKEN dicalage et aller ` l'itat 78 SLASH_TOKEN dicalage et aller ` l'itat 82 $difaut riduction par utilisation de la rhgle 56 (expression) itat 111 44 locator: expression . DOT_TOKEN IDF_TOKEN 47 expression: expression . OR_TOKEN expression 48 | expression . AND_TOKEN expression 49 | expression . EQUAL_TOKEN expression 50 | expression . DIFF_TOKEN expression 51 | expression . LESS_TOKEN expression 52 | expression . GREATER_TOKEN expression 53 | expression . LESSEQU_TOKEN expression 54 | expression . GREATEREQU_TOKEN expression 55 | expression . PLUS_TOKEN expression 56 | expression . MINUS_TOKEN expression 57 | expression . STAR_TOKEN expression 58 | expression . SLASH_TOKEN expression 58 | expression SLASH_TOKEN expression . $difaut riduction par utilisation de la rhgle 58 (expression) itat 112 44 locator: expression . DOT_TOKEN IDF_TOKEN 47 expression: expression . OR_TOKEN expression 48 | expression . AND_TOKEN expression 48 | expression AND_TOKEN expression . 49 | expression . EQUAL_TOKEN expression 50 | expression . DIFF_TOKEN expression 51 | expression . LESS_TOKEN expression 52 | expression . GREATER_TOKEN expression 53 | expression . LESSEQU_TOKEN expression 54 | expression . GREATEREQU_TOKEN expression 55 | expression . PLUS_TOKEN expression 56 | expression . MINUS_TOKEN expression 57 | expression . STAR_TOKEN expression 58 | expression . SLASH_TOKEN expression LESSEQU_TOKEN dicalage et aller ` l'itat 72 GREATEREQU_TOKEN dicalage et aller ` l'itat 73 EQUAL_TOKEN dicalage et aller ` l'itat 74 DIFF_TOKEN dicalage et aller ` l'itat 75 LESS_TOKEN dicalage et aller ` l'itat 76 GREATER_TOKEN dicalage et aller ` l'itat 77 STAR_TOKEN dicalage et aller ` l'itat 78 PLUS_TOKEN dicalage et aller ` l'itat 80 MINUS_TOKEN dicalage et aller ` l'itat 81 SLASH_TOKEN dicalage et aller ` l'itat 82 $difaut riduction par utilisation de la rhgle 48 (expression) itat 113 44 locator: expression . DOT_TOKEN IDF_TOKEN 47 expression: expression . OR_TOKEN expression 47 | expression OR_TOKEN expression . 48 | expression . AND_TOKEN expression 49 | expression . EQUAL_TOKEN expression 50 | expression . DIFF_TOKEN expression 51 | expression . LESS_TOKEN expression 52 | expression . GREATER_TOKEN expression 53 | expression . LESSEQU_TOKEN expression 54 | expression . GREATEREQU_TOKEN expression 55 | expression . PLUS_TOKEN expression 56 | expression . MINUS_TOKEN expression 57 | expression . STAR_TOKEN expression 58 | expression . SLASH_TOKEN expression LESSEQU_TOKEN dicalage et aller ` l'itat 72 GREATEREQU_TOKEN dicalage et aller ` l'itat 73 EQUAL_TOKEN dicalage et aller ` l'itat 74 DIFF_TOKEN dicalage et aller ` l'itat 75 LESS_TOKEN dicalage et aller ` l'itat 76 GREATER_TOKEN dicalage et aller ` l'itat 77 STAR_TOKEN dicalage et aller ` l'itat 78 PLUS_TOKEN dicalage et aller ` l'itat 80 MINUS_TOKEN dicalage et aller ` l'itat 81 SLASH_TOKEN dicalage et aller ` l'itat 82 AND_TOKEN dicalage et aller ` l'itat 84 $difaut riduction par utilisation de la rhgle 47 (expression) itat 114 37 progend: END_TOKEN PROGRAM_TOKEN ON_TOKEN expression EOL_TOKEN . $difaut riduction par utilisation de la rhgle 37 (progend) itat 115 25 instruction: IF_TOKEN expression THEN_TOKEN EOL_TOKEN . instructions ifnext END_TOKEN IF_TOKEN $difaut riduction par utilisation de la rhgle 20 (instructions) instructions aller ` l'itat 122 itat 116 30 instruction: FOR_TOKEN locator FROM_TOKEN expression . TO_TOKEN expression forstep LOOP_TOKEN instructions END_TOKEN LOOP_TOKEN 44 locator: expression . DOT_TOKEN IDF_TOKEN 47 expression: expression . OR_TOKEN expression 48 | expression . AND_TOKEN expression 49 | expression . EQUAL_TOKEN expression 50 | expression . DIFF_TOKEN expression 51 | expression . LESS_TOKEN expression 52 | expression . GREATER_TOKEN expression 53 | expression . LESSEQU_TOKEN expression 54 | expression . GREATEREQU_TOKEN expression 55 | expression . PLUS_TOKEN expression 56 | expression . MINUS_TOKEN expression 57 | expression . STAR_TOKEN expression 58 | expression . SLASH_TOKEN expression TO_TOKEN dicalage et aller ` l'itat 123 LESSEQU_TOKEN dicalage et aller ` l'itat 72 GREATEREQU_TOKEN dicalage et aller ` l'itat 73 EQUAL_TOKEN dicalage et aller ` l'itat 74 DIFF_TOKEN dicalage et aller ` l'itat 75 LESS_TOKEN dicalage et aller ` l'itat 76 GREATER_TOKEN dicalage et aller ` l'itat 77 STAR_TOKEN dicalage et aller ` l'itat 78 DOT_TOKEN dicalage et aller ` l'itat 79 PLUS_TOKEN dicalage et aller ` l'itat 80 MINUS_TOKEN dicalage et aller ` l'itat 81 SLASH_TOKEN dicalage et aller ` l'itat 82 AND_TOKEN dicalage et aller ` l'itat 84 OR_TOKEN dicalage et aller ` l'itat 85 itat 117 24 instruction: WHILE_TOKEN expression LOOP_TOKEN EOL_TOKEN . instructions END_TOKEN EOL_TOKEN $difaut riduction par utilisation de la rhgle 20 (instructions) instructions aller ` l'itat 124 itat 118 23 instruction: LOOP_TOKEN EOL_TOKEN instructions END_TOKEN . LOOP_TOKEN EOL_TOKEN LOOP_TOKEN dicalage et aller ` l'itat 125 itat 119 27 instruction: locator BIND_TOKEN locator EOL_TOKEN . $difaut riduction par utilisation de la rhgle 27 (instruction) itat 120 61 expression: locator LPAR_TOKEN exprlst RPAR_TOKEN . $difaut riduction par utilisation de la rhgle 61 (expression) itat 121 43 exprlst2: exprlst2 COMMA_TOKEN . expression LPAR_TOKEN dicalage et aller ` l'itat 37 MINUS_TOKEN dicalage et aller ` l'itat 38 INTCST_TOKEN dicalage et aller ` l'itat 39 FLOATCST_TOKEN dicalage et aller ` l'itat 40 BOOLCST_TOKEN dicalage et aller ` l'itat 41 STRCST_TOKEN dicalage et aller ` l'itat 42 NOT_TOKEN dicalage et aller ` l'itat 44 $difaut riduction par utilisation de la rhgle 38 (namespace) namespace aller ` l'itat 46 locator aller ` l'itat 57 expression aller ` l'itat 126 itat 122 21 instructions: instructions . instruction 25 instruction: IF_TOKEN expression THEN_TOKEN EOL_TOKEN instructions . ifnext END_TOKEN IF_TOKEN RETURN_TOKEN dicalage et aller ` l'itat 32 IF_TOKEN dicalage et aller ` l'itat 33 ELSE_TOKEN dicalage et aller ` l'itat 127 ELSIF_TOKEN dicalage et aller ` l'itat 128 FOR_TOKEN dicalage et aller ` l'itat 34 WHILE_TOKEN dicalage et aller ` l'itat 35 LOOP_TOKEN dicalage et aller ` l'itat 36 LPAR_TOKEN dicalage et aller ` l'itat 37 MINUS_TOKEN dicalage et aller ` l'itat 38 INTCST_TOKEN dicalage et aller ` l'itat 39 FLOATCST_TOKEN dicalage et aller ` l'itat 40 BOOLCST_TOKEN dicalage et aller ` l'itat 41 STRCST_TOKEN dicalage et aller ` l'itat 42 EOL_TOKEN dicalage et aller ` l'itat 43 NOT_TOKEN dicalage et aller ` l'itat 44 IDF_TOKEN riduction par utilisation de la rhgle 38 (namespace) $difaut riduction par utilisation de la rhgle 33 (ifnext) instruction aller ` l'itat 45 ifnext aller ` l'itat 129 namespace aller ` l'itat 46 locator aller ` l'itat 47 expression aller ` l'itat 48 itat 123 30 instruction: FOR_TOKEN locator FROM_TOKEN expression TO_TOKEN . expression forstep LOOP_TOKEN instructions END_TOKEN LOOP_TOKEN LPAR_TOKEN dicalage et aller ` l'itat 37 MINUS_TOKEN dicalage et aller ` l'itat 38 INTCST_TOKEN dicalage et aller ` l'itat 39 FLOATCST_TOKEN dicalage et aller ` l'itat 40 BOOLCST_TOKEN dicalage et aller ` l'itat 41 STRCST_TOKEN dicalage et aller ` l'itat 42 NOT_TOKEN dicalage et aller ` l'itat 44 $difaut riduction par utilisation de la rhgle 38 (namespace) namespace aller ` l'itat 46 locator aller ` l'itat 57 expression aller ` l'itat 130 itat 124 21 instructions: instructions . instruction 24 instruction: WHILE_TOKEN expression LOOP_TOKEN EOL_TOKEN instructions .. END_TOKEN EOL_TOKEN RETURN_TOKEN dicalage et aller ` l'itat 32 IF_TOKEN dicalage et aller ` l'itat 33 FOR_TOKEN dicalage et aller ` l'itat 34 WHILE_TOKEN dicalage et aller ` l'itat 35 LOOP_TOKEN dicalage et aller ` l'itat 36 LPAR_TOKEN dicalage et aller ` l'itat 37 MINUS_TOKEN dicalage et aller ` l'itat 38 INTCST_TOKEN dicalage et aller ` l'itat 39 FLOATCST_TOKEN dicalage et aller ` l'itat 40 BOOLCST_TOKEN dicalage et aller ` l'itat 41 STRCST_TOKEN dicalage et aller ` l'itat 42 EOL_TOKEN dicalage et aller ` l'itat 43 END_TOKEN dicalage et aller ` l'itat 131 NOT_TOKEN dicalage et aller ` l'itat 44 $difaut riduction par utilisation de la rhgle 38 (namespace) instruction aller ` l'itat 45 namespace aller ` l'itat 46 locator aller ` l'itat 47 expression aller ` l'itat 48 itat 125 23 instruction: LOOP_TOKEN EOL_TOKEN instructions END_TOKEN LOOP_TOKEN . EOL_TOKEN EOL_TOKEN dicalage et aller ` l'itat 132 itat 126 43 exprlst2: exprlst2 COMMA_TOKEN expression . 44 locator: expression . DOT_TOKEN IDF_TOKEN 47 expression: expression . OR_TOKEN expression 48 | expression . AND_TOKEN expression 49 | expression . EQUAL_TOKEN expression 50 | expression . DIFF_TOKEN expression 51 | expression . LESS_TOKEN expression 52 | expression . GREATER_TOKEN expression 53 | expression . LESSEQU_TOKEN expression 54 | expression . GREATEREQU_TOKEN expression 55 | expression . PLUS_TOKEN expression 56 | expression . MINUS_TOKEN expression 57 | expression . STAR_TOKEN expression 58 | expression . SLASH_TOKEN expression LESSEQU_TOKEN dicalage et aller ` l'itat 72 GREATEREQU_TOKEN dicalage et aller ` l'itat 73 EQUAL_TOKEN dicalage et aller ` l'itat 74 DIFF_TOKEN dicalage et aller ` l'itat 75 LESS_TOKEN dicalage et aller ` l'itat 76 GREATER_TOKEN dicalage et aller ` l'itat 77 STAR_TOKEN dicalage et aller ` l'itat 78 DOT_TOKEN dicalage et aller ` l'itat 79 PLUS_TOKEN dicalage et aller ` l'itat 80 MINUS_TOKEN dicalage et aller ` l'itat 81 SLASH_TOKEN dicalage et aller ` l'itat 82 AND_TOKEN dicalage et aller ` l'itat 84 OR_TOKEN dicalage et aller ` l'itat 85 $difaut riduction par utilisation de la rhgle 43 (exprlst2) itat 127 35 ifnext: ELSE_TOKEN . EOL_TOKEN instructions EOL_TOKEN dicalage et aller ` l'itat 133 itat 128 34 ifnext: ELSIF_TOKEN . expression THEN_TOKEN EOL_TOKEN instructions ifnext LPAR_TOKEN dicalage et aller ` l'itat 37 MINUS_TOKEN dicalage et aller ` l'itat 38 INTCST_TOKEN dicalage et aller ` l'itat 39 FLOATCST_TOKEN dicalage et aller ` l'itat 40 BOOLCST_TOKEN dicalage et aller ` l'itat 41 STRCST_TOKEN dicalage et aller ` l'itat 42 NOT_TOKEN dicalage et aller ` l'itat 44 $difaut riduction par utilisation de la rhgle 38 (namespace) namespace aller ` l'itat 46 locator aller ` l'itat 57 expression aller ` l'itat 134 itat 129 25 instruction: IF_TOKEN expression THEN_TOKEN EOL_TOKEN instructions ifnext . END_TOKEN IF_TOKEN END_TOKEN dicalage et aller ` l'itat 135 itat 130 30 instruction: FOR_TOKEN locator FROM_TOKEN expression TO_TOKEN expression . forstep LOOP_TOKEN instructions END_TOKEN LOOP_TOKEN 44 locator: expression . DOT_TOKEN IDF_TOKEN 47 expression: expression . OR_TOKEN expression 48 | expression . AND_TOKEN expression 49 | expression . EQUAL_TOKEN expression 50 | expression . DIFF_TOKEN expression 51 | expression . LESS_TOKEN expression 52 | expression . GREATER_TOKEN expression 53 | expression . LESSEQU_TOKEN expression 54 | expression . GREATEREQU_TOKEN expression 55 | expression . PLUS_TOKEN expression 56 | expression . MINUS_TOKEN expression 57 | expression . STAR_TOKEN expression 58 | expression . SLASH_TOKEN expression STEP_TOKEN dicalage et aller ` l'itat 136 LESSEQU_TOKEN dicalage et aller ` l'itat 72 GREATEREQU_TOKEN dicalage et aller ` l'itat 73 EQUAL_TOKEN dicalage et aller ` l'itat 74 DIFF_TOKEN dicalage et aller ` l'itat 75 LESS_TOKEN dicalage et aller ` l'itat 76 GREATER_TOKEN dicalage et aller ` l'itat 77 STAR_TOKEN dicalage et aller ` l'itat 78 DOT_TOKEN dicalage et aller ` l'itat 79 PLUS_TOKEN dicalage et aller ` l'itat 80 MINUS_TOKEN dicalage et aller ` l'itat 81 SLASH_TOKEN dicalage et aller ` l'itat 82 AND_TOKEN dicalage et aller ` l'itat 84 OR_TOKEN dicalage et aller ` l'itat 85 $difaut riduction par utilisation de la rhgle 31 (forstep) forstep aller ` l'itat 137 itat 131 24 instruction: WHILE_TOKEN expression LOOP_TOKEN EOL_TOKEN instructions END_TOKEN . EOL_TOKEN EOL_TOKEN dicalage et aller ` l'itat 138 itat 132 23 instruction: LOOP_TOKEN EOL_TOKEN instructions END_TOKEN LOOP_TOKEN EOL_TOKEN . $difaut riduction par utilisation de la rhgle 23 (instruction) itat 133 35 ifnext: ELSE_TOKEN EOL_TOKEN . instructions $difaut riduction par utilisation de la rhgle 20 (instructions) instructions aller ` l'itat 139 itat 134 34 ifnext: ELSIF_TOKEN expression . THEN_TOKEN EOL_TOKEN instructions ifnext 44 locator: expression . DOT_TOKEN IDF_TOKEN 47 expression: expression . OR_TOKEN expression 48 | expression . AND_TOKEN expression 49 | expression . EQUAL_TOKEN expression 50 | expression . DIFF_TOKEN expression 51 | expression . LESS_TOKEN expression 52 | expression . GREATER_TOKEN expression 53 | expression . LESSEQU_TOKEN expression 54 | expression . GREATEREQU_TOKEN expression 55 | expression . PLUS_TOKEN expression 56 | expression . MINUS_TOKEN expression 57 | expression . STAR_TOKEN expression 58 | expression . SLASH_TOKEN expression THEN_TOKEN dicalage et aller ` l'itat 140 LESSEQU_TOKEN dicalage et aller ` l'itat 72 GREATEREQU_TOKEN dicalage et aller ` l'itat 73 EQUAL_TOKEN dicalage et aller ` l'itat 74 DIFF_TOKEN dicalage et aller ` l'itat 75 LESS_TOKEN dicalage et aller ` l'itat 76 GREATER_TOKEN dicalage et aller ` l'itat 77 STAR_TOKEN dicalage et aller ` l'itat 78 DOT_TOKEN dicalage et aller ` l'itat 79 PLUS_TOKEN dicalage et aller ` l'itat 80 MINUS_TOKEN dicalage et aller ` l'itat 81 SLASH_TOKEN dicalage et aller ` l'itat 82 AND_TOKEN dicalage et aller ` l'itat 84 OR_TOKEN dicalage et aller ` l'itat 85 itat 135 25 instruction: IF_TOKEN expression THEN_TOKEN EOL_TOKEN instructions ifnext END_TOKEN . IF_TOKEN IF_TOKEN dicalage et aller ` l'itat 141 itat 136 32 forstep: STEP_TOKEN . expression LPAR_TOKEN dicalage et aller ` l'itat 37 MINUS_TOKEN dicalage et aller ` l'itat 38 INTCST_TOKEN dicalage et aller ` l'itat 39 FLOATCST_TOKEN dicalage et aller ` l'itat 40 BOOLCST_TOKEN dicalage et aller ` l'itat 41 STRCST_TOKEN dicalage et aller ` l'itat 42 NOT_TOKEN dicalage et aller ` l'itat 44 $difaut riduction par utilisation de la rhgle 38 (namespace) namespace aller ` l'itat 46 locator aller ` l'itat 57 expression aller ` l'itat 142 itat 137 30 instruction: FOR_TOKEN locator FROM_TOKEN expression TO_TOKEN expression forstep . LOOP_TOKEN instructions END_TOKEN LOOP_TOKEN LOOP_TOKEN dicalage et aller ` l'itat 143 itat 138 24 instruction: WHILE_TOKEN expression LOOP_TOKEN EOL_TOKEN instructions END_TOKEN EOL_TOKEN . $difaut riduction par utilisation de la rhgle 24 (instruction) itat 139 21 instructions: instructions . instruction 35 ifnext: ELSE_TOKEN EOL_TOKEN instructions . RETURN_TOKEN dicalage et aller ` l'itat 32 IF_TOKEN dicalage et aller ` l'itat 33 FOR_TOKEN dicalage et aller ` l'itat 34 WHILE_TOKEN dicalage et aller ` l'itat 35 LOOP_TOKEN dicalage et aller ` l'itat 36 LPAR_TOKEN dicalage et aller ` l'itat 37 MINUS_TOKEN dicalage et aller ` l'itat 38 INTCST_TOKEN dicalage et aller ` l'itat 39 FLOATCST_TOKEN dicalage et aller ` l'itat 40 BOOLCST_TOKEN dicalage et aller ` l'itat 41 STRCST_TOKEN dicalage et aller ` l'itat 42 EOL_TOKEN dicalage et aller ` l'itat 43 NOT_TOKEN dicalage et aller ` l'itat 44 IDF_TOKEN riduction par utilisation de la rhgle 38 (namespace) $difaut riduction par utilisation de la rhgle 35 (ifnext) instruction aller ` l'itat 45 namespace aller ` l'itat 46 locator aller ` l'itat 47 expression aller ` l'itat 48 itat 140 34 ifnext: ELSIF_TOKEN expression THEN_TOKEN . EOL_TOKEN instructions ifnext EOL_TOKEN dicalage et aller ` l'itat 144 itat 141 25 instruction: IF_TOKEN expression THEN_TOKEN EOL_TOKEN instructions ifnext END_TOKEN IF_TOKEN . $difaut riduction par utilisation de la rhgle 25 (instruction) itat 142 32 forstep: STEP_TOKEN expression . 44 locator: expression . DOT_TOKEN IDF_TOKEN 47 expression: expression . OR_TOKEN expression 48 | expression . AND_TOKEN expression 49 | expression . EQUAL_TOKEN expression 50 | expression . DIFF_TOKEN expression 51 | expression . LESS_TOKEN expression 52 | expression . GREATER_TOKEN expression 53 | expression . LESSEQU_TOKEN expression 54 | expression . GREATEREQU_TOKEN expression 55 | expression . PLUS_TOKEN expression 56 | expression . MINUS_TOKEN expression 57 | expression . STAR_TOKEN expression 58 | expression . SLASH_TOKEN expression LESSEQU_TOKEN dicalage et aller ` l'itat 72 GREATEREQU_TOKEN dicalage et aller ` l'itat 73 EQUAL_TOKEN dicalage et aller ` l'itat 74 DIFF_TOKEN dicalage et aller ` l'itat 75 LESS_TOKEN dicalage et aller ` l'itat 76 GREATER_TOKEN dicalage et aller ` l'itat 77 STAR_TOKEN dicalage et aller ` l'itat 78 DOT_TOKEN dicalage et aller ` l'itat 79 PLUS_TOKEN dicalage et aller ` l'itat 80 MINUS_TOKEN dicalage et aller ` l'itat 81 SLASH_TOKEN dicalage et aller ` l'itat 82 AND_TOKEN dicalage et aller ` l'itat 84 OR_TOKEN dicalage et aller ` l'itat 85 $difaut riduction par utilisation de la rhgle 32 (forstep) itat 143 30 instruction: FOR_TOKEN locator FROM_TOKEN expression TO_TOKEN expression forstep LOOP_TOKEN . instructions END_TOKEN LOOP_TOKEN $difaut riduction par utilisation de la rhgle 20 (instructions) instructions aller ` l'itat 145 itat 144 34 ifnext: ELSIF_TOKEN expression THEN_TOKEN EOL_TOKEN . instructions ifnext $difaut riduction par utilisation de la rhgle 20 (instructions) instructions aller ` l'itat 146 itat 145 21 instructions: instructions . instruction 30 instruction: FOR_TOKEN locator FROM_TOKEN expression TO_TOKEN expression forstep LOOP_TOKEN instructions . END_TOKEN LOOP_TOKEN RETURN_TOKEN dicalage et aller ` l'itat 32 IF_TOKEN dicalage et aller ` l'itat 33 FOR_TOKEN dicalage et aller ` l'itat 34 WHILE_TOKEN dicalage et aller ` l'itat 35 LOOP_TOKEN dicalage et aller ` l'itat 36 LPAR_TOKEN dicalage et aller ` l'itat 37 MINUS_TOKEN dicalage et aller ` l'itat 38 INTCST_TOKEN dicalage et aller ` l'itat 39 FLOATCST_TOKEN dicalage et aller ` l'itat 40 BOOLCST_TOKEN dicalage et aller ` l'itat 41 STRCST_TOKEN dicalage et aller ` l'itat 42 EOL_TOKEN dicalage et aller ` l'itat 43 END_TOKEN dicalage et aller ` l'itat 147 NOT_TOKEN dicalage et aller ` l'itat 44 $difaut riduction par utilisation de la rhgle 38 (namespace) instruction aller ` l'itat 45 namespace aller ` l'itat 46 locator aller ` l'itat 47 expression aller ` l'itat 48 itat 146 21 instructions: instructions . instruction 34 ifnext: ELSIF_TOKEN expression THEN_TOKEN EOL_TOKEN instructions . ifnext RETURN_TOKEN dicalage et aller ` l'itat 32 IF_TOKEN dicalage et aller ` l'itat 33 ELSE_TOKEN dicalage et aller ` l'itat 127 ELSIF_TOKEN dicalage et aller ` l'itat 128 FOR_TOKEN dicalage et aller ` l'itat 34 WHILE_TOKEN dicalage et aller ` l'itat 35 LOOP_TOKEN dicalage et aller ` l'itat 36 LPAR_TOKEN dicalage et aller ` l'itat 37 MINUS_TOKEN dicalage et aller ` l'itat 38 INTCST_TOKEN dicalage et aller ` l'itat 39 FLOATCST_TOKEN dicalage et aller ` l'itat 40 BOOLCST_TOKEN dicalage et aller ` l'itat 41 STRCST_TOKEN dicalage et aller ` l'itat 42 EOL_TOKEN dicalage et aller ` l'itat 43 NOT_TOKEN dicalage et aller ` l'itat 44 IDF_TOKEN riduction par utilisation de la rhgle 38 (namespace) $difaut riduction par utilisation de la rhgle 33 (ifnext) instruction aller ` l'itat 45 ifnext aller ` l'itat 148 namespace aller ` l'itat 46 locator aller ` l'itat 47 expression aller ` l'itat 48 itat 147 30 instruction: FOR_TOKEN locator FROM_TOKEN expression TO_TOKEN expression forstep LOOP_TOKEN instructions END_TOKEN . LOOP_TOKEN LOOP_TOKEN dicalage et aller ` l'itat 149 itat 148 34 ifnext: ELSIF_TOKEN expression THEN_TOKEN EOL_TOKEN instructions ifnext . $difaut riduction par utilisation de la rhgle 34 (ifnext) itat 149 30 instruction: FOR_TOKEN locator FROM_TOKEN expression TO_TOKEN expression forstep LOOP_TOKEN instructions END_TOKEN LOOP_TOKEN . $difaut riduction par utilisation de la rhgle 30 (instruction) Floof |
|
#2
| |||
| |||
| Lets look closely at your conflict to see what is going on. The conflicts are all in state 96: > itat 96 : > 62 | locator . : > 68 | locator BOUND_TOKEN locator . : > PLUS_TOKEN riduction par utilisation de la rhgle 62 (expression) > PLUS_TOKEN [riduction par utilisation de la rhgle 68 (expression)] I've edited this down severely so we're looking at just one conflicting token, but all the rest are the same, just with different following tokens. What this means is that in a state where the parser has seen "locator BOUND_TOKEN locator" and the following token needs to have an expression before it, it can't decide whether to reduce the whole thing to an expression or just the final locator (which would require later reducing the expression back to a locator with rule 44 "locator: expression DOT_TOKEN IDF_TOKEN". So this is both an ambiguity and a lack of enough lookahead case -- if there isn't a trailing "DOT_TOKEN IDF_TOKEN", reducing rule 62 will lead to a syntax error, so it would have to be rule 68. However, if there is such a trailing context, either might be valid. The 'easy' solution is if reducing rule 68 is correct even in the presence of such trailing context (which I think it is). In that case, you can just put rule 68 before rule 62, and the default conflict resolution will do the right thing. If you want to actually get rid of the conflict, there are a number of approaches. One is simplifying the grammar to get rid of grammar distinctions and instead resolve them with later semantic checks. This is what is usually done with stongly typed languages, as doing typechecking in the grammar is very hard. In this case you could move the distinction between a 'locator' and an 'expression' out of the grammar; it could easily be handled with normal typechecking. To do this, you just replace 'locator' with 'expression' everywhere appears in the grammar, and get rid of the resulting redundant "expression : expression" rule. The second approach is unfactoring -- replacing nonterminals on the rhs of rules with the rhs of the rules for those nonterminals (which involves duplicating rules if there are multiple rules for the nonterminal.) In this case, for example, you can replace the rule 'expression : locator' with 'expression : expression DOT_TOKEN IDF_TOKEN | namespace IDF_TOKEN' (two rules). To get rid of the conflicts, you'll need to keep doing this until you get rid of all uses of 'locator' in the grammar. Since 'locator' is non-self-recursive, you can actaullay do that, but it will lead to a significantly more complex grammar. In cases with recursive rules and conflicts that require unbounded lookahead to resolve, unfactoring will never reach a solution. Unfactoring works best when there is no ambiguity and you just need a little bit of extra lookahaead to resolve the conflict. Chris Dodd cdodd@acm.org |
|
#3
| |||
| |||
| Thanks, I chose the the first solution, replacing all "locator" occurences by the "expression" non-terminal. I had a bit of refactoring to do on my tree walker, but it wasn't too heavy, and now my grammar compiles without errors or warnings. Keep the good stuff going ! Floof. -----Message d'origine----- De : Chris Dodd [mailto:cdodd@acm.org] Envoyi : samedi 5 juillet 2008 22:57 @ : Florent LAGAYE Objet : Re: Writing a parser for C++ - Ada hybrid Lets look closely at your conflict to see what is going on. The conflicts are all in state 96: > itat 96 : > 62 | locator . : > 68 | locator BOUND_TOKEN locator . : > PLUS_TOKEN riduction par utilisation de la rhgle 62 (expression) > PLUS_TOKEN [riduction par utilisation de la rhgle 68 (expression)] I've edited this down severely so we're looking at just one conflicting token, but all the rest are the same, just with different following tokens. What this means is that in a state where the parser has seen "locator BOUND_TOKEN locator" and the following token needs to have an expression before it, it can't decide whether to reduce the whole thing to an expression or just the final locator (which would require later reducing the expression back to a locator with rule 44 "locator: expression DOT_TOKEN IDF_TOKEN". So this is both an ambiguity and a lack of enough lookahead case -- if there isn't a trailing "DOT_TOKEN IDF_TOKEN", reducing rule 62 will lead to a syntax error, so it would have to be rule 68. However, if there is such a trailing context, either might be valid. The 'easy' solution is if reducing rule 68 is correct even in the presence of such trailing context (which I think it is). In that case, you can just put rule 68 before rule 62, and the default conflict resolution will do the right thing. If you want to actually get rid of the conflict, there are a number of approaches. One is simplifying the grammar to get rid of grammar distinctions and instead resolve them with later semantic checks. This is what is usually done with stongly typed languages, as doing typechecking in the grammar is very hard. In this case you could move the distinction between a 'locator' and an 'expression' out of the grammar; it could easily be handled with normal typechecking. To do this, you just replace 'locator' with 'expression' everywhere appears in the grammar, and get rid of the resulting redundant "epression : expression" rule. The second approach is unfactoring -- replacing nonterminals on the rhs of rules with the rhs of the rules for those nonterminals (which involves duplicating rules if there are multiple rules for the nonterminal.) In this case, for example, you can replace the rule 'expression : locator' with 'expression : expression DOT_TOKEN IDF_TOKEN | namespace IDF_TOKEN' (two rules). To get rid of the conflicts, you'll need to keep doing this until you get rid of all uses of 'locator' in the grammar. Since 'locator' is non-self-recursive, you can actaullay do that, but it will lead to a significantly more complex grammar. In cases with recursive rules and conflicts that require unbounded lookahead to resolve, unfactoring will never reach a solution. Unfactoring works best when there is no ambiguity and you just need a little bit of extra lookahaead to resolve the conflict. Chris Dodd cdodd@acm.org |
![]() |
| Thread Tools | |
| Display Modes | |
In an effort to better serve ads to our visitors, cookies are used on objectmix.com. For more information, check out our Privacy Policy.