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

Last change on this file since 4118 was 4118, checked in by yura, 11 years ago
  • Use Rfp tokens.
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 EXTERNAL ENTRY
10
11%token SC COL COMMA EQL
12
13%token LPAR RPAR
14%token LANGU RANGU
15%token LCURL RCURL
16
17%token VAR
18%token CHAR WORD NUMB
19
20
21%%
22
23program :       /* empty */
24        |       EXTERNAL extern_defs SC program
25        |       func_def maybe_sc program
26        ;
27
28maybe_sc
29        :       /* empty */
30        |       SC
31        ;
32
33extern_defs
34        :       name COMMA extern_defs
35        |       /* empty */
36        ;
37
38func_def
39        :       name block
40        |       ENTRY name block
41        ;
42
43
44
45
46
47block
48        :       LCURL sentences RCURL
49        ;
50
51sentences
52        :       /* empty */
53        |       sentence sc_sentences
54        ;
55
56sc_sentences
57        :       /* empty */
58        |       SC sentences
59        ;
60
61sentence
62        :       exp conditions
63        ;
64
65conditions
66        :       COMMA exp COL conditions2
67        |       EQL exp
68        ;
69
70conditions2
71        :       exp conditions
72        |       block   
73        ;
74
75
76
77
78
79exp
80        :       /* empty */
81        |       exp_head exp
82        ;
83
84exp_head
85        :       static_symbol
86        |       LPAR exp RPAR
87        |       VAR
88        |       LANGU name exp RANGU
89        ;
90
91static_symbol
92        :       CHAR
93        |       WORD
94        |       NUMB
95        ;
96
97name    :       WORD
98        ;
Note: See TracBrowser for help on using the repository browser.