Writing a parser for C++ - Ada hybrid

This is a discussion on Writing a parser for C++ - Ada hybrid within the Compilers forums in Theory and Concepts category; 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 ...

Go Back   Application Development Forum > Theory and Concepts > Compilers

Object Mix

Register FAQ Calendar Search Today's Posts Mark Forums Read
  #1  
Old 07-03-2008, 01:10 PM
Florent LAGAYE
Guest
 
Default Writing a parser for C++ - Ada hybrid

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)
See ya'll.

Floof

Reply With Quote
  #2  
Old 07-05-2008, 04:56 PM
Chris Dodd
Guest
 
Default 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 "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
Reply With Quote
  #3  
Old 07-07-2008, 08:16 AM
Florent LAGAYE
Guest
 
Default RE: Writing a parser for C++ - Ada hybrid

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
Reply With Quote
Reply


Thread Tools
Display Modes


All times are GMT -5. The time now is 07:28 PM.


Powered by vBulletin® Version 3.7.2
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
vB Ad Management by =RedTyger=

In an effort to better serve ads to our visitors, cookies are used on objectmix.com. For more information, check out our Privacy Policy.