source: devel-tools/trunk/LL1GrammarAnalyzers/LL1Grammars/Rf5LLGr.g @ 4114

Last change on this file since 4114 was 4114, checked in by yura, 11 years ago
File size: 1.6 KB
Line 
1/* rfpllgr.g */
2
3/* This file contains the LL(1) grammar that is actually used in */
4/* the Refal Plus compiler written by R.F.Gurin & S.A.Romanenko. */
5/* The annotated version of this grammar (contained in the file  */
6/* "rfpllgr.f") was produced by executing the command:           */
7/*      gr.exe rfpllgr.g >rfpllgr.f                              */
8
9%token EXTERN ENTRY
10%token SC COL COMMA EQ
11
12%token LPAR RPAR
13%token LANGU RANGU
14%token LCURL RCURL
15
16%token VAR
17%token CHAR WORD NUM REALNUM
18
19
20%%
21
22program :       /* empty */
23        |       EXTERN extern_defs SC program
24        |       func_def maybe_sc program
25        ;
26
27maybe_sc
28        :       /* empty */
29        |       SC
30        ;
31
32extern_defs
33        :       name COMMA extern_defs
34        |       /* empty */
35        ;
36
37func_def
38        :       name block
39        |       ENTRY name block
40        ;
41
42
43
44
45
46block
47        :       LCURL sentences RCURL
48        ;
49
50sentences
51        :       /* empty */
52        |       sentence sc_sentences
53        ;
54
55sc_sentences
56        :       /* empty */
57        |       SC sentences
58        ;
59
60sentence
61        :       exp conditions
62        ;
63
64conditions
65        :       COMMA exp COL conditions2
66        |       EQ exp
67        ;
68
69conditions2
70        :       exp conditions
71        |       block   
72        ;
73
74
75
76
77
78exp
79        :       /* empty */
80        |       exp_head exp
81        ;
82
83exp_head
84        :       static_symbol
85        |       LPAR exp RPAR
86        |       VAR
87        |       LANGU name exp RANGU
88        ;
89
90static_symbol
91        :       CHAR
92        |       WORD
93        |       NUM
94        |       REALNUM
95        ;
96
97name    :       WORD
98        ;
Note: See TracBrowser for help on using the repository browser.