File: grammar

package info (click to toggle)
bisonc%2B%2B 6.09.02-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 5,984 kB
  • sloc: cpp: 9,375; ansic: 1,505; fortran: 1,134; makefile: 1,062; sh: 526; yacc: 84; lex: 60
file content (141 lines) | stat: -rw-r--r-- 2,092 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
%default-actions quiet
%debug

%union {
  int ival;
  char cval;
  char *strval;
  float fval;
}


/* Keywords */
%token DEFINEtkn DEFINE_GROUPtkn 


%token LPARAtkn RPARAtkn LBRtkn RBRtkn COLONtkn SEMItkn COMMAtkn

/* Arithmetic operators */
%token EQtkn

%left  PLUStkn MINUStkn
%left  MULTtkn DIVtkn
%right UNARY

%token <strval> IDtkn 

%token <ival>   INT_CONSTtkn
%token <fval>   FLOAT_CONSTtkn 
%token <strval> STRING_CONSTtkn
%token <ival>   TRUEtkn FALSEtkn


%%

file:    collection ;

collection:
    prefix LBRtkn statement_list RBRtkn
  | prefix LBRtkn RBRtkn
  ;

prefix:
    IDtkn  LPARAtkn param_list RPARAtkn 
  | IDtkn  LPARAtkn RPARAtkn 
  ;

param_list:
    param_list COMMAtkn parameter
  | parameter
  ;

parameter:
    numeric_constant
  | string_or_named_constant
  | string_or_named_constant COLONtkn string_or_named_constant
  | boolean_constant
  ;

statement_list:
    statement_list statement
  | statement
  ;

statement:
    primitive_attribute
  | complex_attribute
  | definition
  | definition_group
  | collection
  ;

definition: 
    DEFINEtkn LPARAtkn enumerator COMMAtkn enumerator COMMAtkn enumerator RPARAtkn SEMItkn 
  ;

definition_group:
    DEFINE_GROUPtkn LPARAtkn enumerator COMMAtkn enumerator RPARAtkn SEMItkn 
  ;

primitive_attribute:
    IDtkn COLONtkn primitive_attribute_value 
  | IDtkn COLONtkn primitive_attribute_value SEMItkn
  | IDtkn EQtkn    primitive_attribute_value
  ;

primitive_attribute_value: 
    expr
  ;


expr:
    expr PLUStkn  term
  | expr MINUStkn term
  | term
  ;

term:
    term MULTtkn primary
  | term DIVtkn  primary
  | primary
  ;

primary:
    LPARAtkn expr RPARAtkn
  | MINUStkn expr %prec UNARY
  | PLUStkn  expr %prec UNARY
  | constant
  ;

constant:
    boolean_constant
  | numeric_constant
  | string_or_named_constant
  ;

enumerator: 
    string_or_named_constant
  ;

string_or_named_constant:
    STRING_CONSTtkn
  | IDtkn
  ;

numeric_constant:
    INT_CONSTtkn
  | FLOAT_CONSTtkn
  ;

boolean_constant:
    TRUEtkn
  | FALSEtkn
  ;

complex_attribute:    
    prefix SEMItkn
  | prefix
  ;