Está en la página 1de 12

C+/-

Syntax

<ProgPM> ::= <Dir> <Decl Glb>

<Dir> ::= '#' include '<' Id '.' Id '>' <Dir>


| '#' include StringLiteral <Dir>
|

<Decl Glb> ::= const <Const Decl> <Decl Glb>


| typedef <Type Decl> <Decl Glb>
| void <SubPr Cab> <Decl Glb>
| static void <SubPr Cab> <Decl Glb>
| <Id Tipo> Id <VarFun> <Decl Glb>
| static <Id Tipo> Id <VarFun> <Decl Glb>
| int main '(' ')' <Block>
|

<Id Tipo> ::= int


| char
| float
| bool
| Id

<SubPr Cab> ::= Id '(' <Param List> ')' <CabBlock>


| Id '::' Id '(' <Param List> ')' <CabBlock>

<VarFun> ::= ';'


| '=' <Expr> ';'
| '=' <Estru Inic> ';'
| ',' <List Id> ';'
| '(' <Param List> ')' <CabBlock>
| '::' Id '(' <Param List> ')' <CabBlock>

<List Id> ::= Id ',' <List Id>


| Id

<CabBlock> ::= ';'


| <Block>
<Block> ::= '{' <Body> '}'

<Body> ::= <Decl> <Body>


| <List Ejec>

<Decl> ::= const <Const Decl>


| typedef <Type Decl>
| <Id Tipo> Id <Var Decl>

<Var Decl> ::= ';'


| '=' <Expr> ';'
| '=' <Estru Inic> ';'
| ',' <List Id> ';'

<Estru Inic> ::= '{' <Nodo List> '}'

<Nodo List> ::= <Nodo> ',' <Nodo List>


| <Nodo>
| <Expr List>

<Nodo> ::= <Estru Inic>

<Const Decl> ::= <Id Tipo> Id '=' <Expr> ';'


| <Id Tipo> Id '[' ']' '=' StringLiteral ';'
| <Id Tipo> Id <List Cor> <Estru Inic> ';'

<List Cor> ::= '[' <Expr> ']' <List Cor>


| '='

<Type Decl> ::= <Sino Decl>


| <Enum Decl>
| <Form Decl>
| <Struct Decl>
| <Union Decl>
| <Point Decl>

<Sino Decl> ::= <Id Tipo> Id ';'

<Enum Decl> ::= enum Id '{' <Enum Def> '}' ';'


<Enum Def> ::= Id ',' <Enum Def>
| Id

<Form Decl> ::= <Id Tipo> Id <List Dim> ';'

<List Dim> ::= '[' <Expr> ']' <List Dim>


| '[' <Expr> ']'
| '[' ']' <List Dim>
| '[' ']'

<Union Decl> ::= union Id '{' <List Campos> '}' ';'

<List Campos> ::= <Campo> <List Campos>


| <Campo>

<Point Decl> ::= <Id Tipo> '*' Id ';'

<Struct Decl> ::= struct Id '{' <List PublPriv> '}' ';'

<List PublPriv> ::= <List CampSubp>


| <List CampSubp> private ':' <List CampSubp>

<List CampSubp> ::= <CampSubp> <List CampSubp>


| <CampSubp>

<CampSubp> ::= <Campo>


| <Subpro>

<Campo> ::= <Id Tipo> <List Id> ';'


| <Id Tipo> Id <List Tam> ';'
| <Id Tipo> '*' Id ';'

<Subpro> ::= void Id '(' <Param List> ')' ';'


| <Id Tipo> Id '(' <Param List> ')' ';'

<List Tam> ::= '[' <Expr> ']' <List Tam>


| '[' <Expr> ']'

<Param List> ::= <Param> ',' <Param List>


| <Param>
<Param> ::= const <Id Tipo> Id
| <Id Tipo> '&' Id
| <Id Tipo> Id
| const <Id Tipo> Id '[' ']'
| <Id Tipo> '&' Id '[' ']'
| <Id Tipo> Id '[' ']'
|

<List Ejec> ::= <Ejec> <List Ejec>


|

<Ejec> ::= <Id Cuali> '=' <Expr> ';'


| <Id Cuali> '++' ';'
| <Id Cuali> -- ';'
| if '(' <Expr> ')' '{' <List Ejec> '}' <Elsif Stm>
| switch '(' <Expr> ')' '{' <Case List> '}'
| while '(' <Expr> ')' '{' <List Ejec> '}'
| do '{' <List Ejec> '}' while '(' <Expr> ')' ';'
| for '(' int Id '=' <Expr> ';' Id '<' <Expr> ';' Id '++' ')' '{' <List Ejec> '}'
| for '(' int Id '=' <Expr> ';' Id '<=' <Expr> ';' Id '++' ')' '{' <List Ejec> '}'
| for '(' int Id '=' <Expr> ';' Id '>=' <Expr> ';' Id -- ')' '{' <List Ejec> '}'
| <Id Cuali> '(' <Expr List> ')' ';'
| continue ';'
| return <Expr> ';'
| return ';'
| delete Id ';'
| throw <Expr> ';'
| try '{' <List Ejec> '}' <Captura>
| '{' <List Ejec> '}'
| ';'

<Captura> ::= catch '(' <Id Tipo> Id ')' '{' <List Ejec> '}'
|

<Id Cuali> ::= <Id Cuali> '.' Id


| <Id Cuali> '[' <Expr> ']'
| <Id Cuali> '->' Id
| '*' Id
| Id

<Elsif Stm> ::= else if '(' <Expr> ')' '{' <List Ejec> '}' <Elsif Stm>
| else '{' <List Ejec> '}'
|

<Case List> ::= <Case Stms> <Case List>


| <Case Stms> default ':' <List Ejec>
| <Case Stms>
<Case Stms> ::= <Value List> <List Ejec> break ';'

<Value List> ::= case <Value> ':' <Value List>


| case <Value> ':'

<Expr List> ::= <Expr> ',' <Expr List>


| <Expr>
|

<Expr> ::= <Expr> '||' <Op And>


| <Op And>

<Op And> ::= <Op And> '&&' <Op Equate>


| <Op Equate>

<Op Equate> ::= <Op Compare> '==' <Op Compare>


| <Op Compare> '!=' <Op Compare>
| <Op Compare>

<Op Compare> ::= <Op Add> '<' <Op Add>


| <Op Add> '>' <Op Add>
| <Op Add> '<=' <Op Add>
| <Op Add> '>=' <Op Add>
| <Op Add>

<Op Add> ::= <Op Add> '+' <Op Mult>


| <Op Add> '-' <Op Mult>
| <Op Mult>

<Op Mult> ::= <Op Mult> '*' <Op Unary>


| <Op Mult> '/' <Op Unary>
| <Op Mult> '%' <Op Unary>
| <Op Unary>

<Op Unary> ::= '!' <Op Unary>


| '-' <Op Unary>
| '+' <Op Unary>
| '*' <Op Unary>
| '&' <Op Unary>
| <Op Pointer>

<Op Pointer> ::= <Op Pointer> '.' <Id Gen>


| <Op Pointer> '->' <Id Gen>
| <Op Pointer> '[' <Expr> ']'
| <Value>

<Id Gen> ::= <Id Tipo> '(' <Expr List> ')'


| Id

<Value> ::= EnteroLiteral


| DecimaLiteral
| ExpNulLiteral
| ExpPosLiteral
| ExpNegLiteral
| StringLiteral
| CharLiteral
| <Id Gen>
| '(' <Expr> ')'
| new Id

Data Tables

Terminals
Index Name
0 (EOF)
1 (Error)
2 (Whitespace)
3 (Comment End)
4 (Comment Line)
5 (Comment Start)
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 bool
38 break
39 case
40 catch
41 char
42 CharLiteral
43 const
44 continue
45 DecimaLiteral
46 default
47 delete
48 do
49 else
50 EnteroLiteral
51 enum
52 ExpNegLiteral
53 ExpNulLiteral
54 ExpPosLiteral
55 float
56 for
57 Id
58 if
59 include
60 int
61 main
62 new
63 private
64 return
65 static
66 StringLiteral
67 struct
68 switch
69 throw
70 try
71 typedef
72 union
73 void
74 while

Nonterminals
Index Name
75 <Block>
76 <Body>
77 <CabBlock>
78 <Campo>
79 <CampSubp>
80 <Captura>
81 <Case List>
82 <Case Stms>
83 <Const Decl>
84 <Decl>
85 <Decl Glb>
86 <Dir>
87 <Ejec>
88 <Elsif Stm>
89 <Enum Decl>
90 <Enum Def>
91 <Estru Inic>
92 <Expr>
93 <Expr List>
94 <Form Decl>
95 <Id Cuali>
96 <Id Gen>
97 <Id Tipo>
98 <List Campos>
99 <List CampSubp>
100 <List Cor>
101 <List Dim>
102 <List Ejec>
103 <List Id>
104 <List PublPriv>
105 <List Tam>
106 <Nodo>
107 <Nodo List>
108 <Op Add>
109 <Op And>
110 <Op Compare>
111 <Op Equate>
112 <Op Mult>
113 <Op Pointer>
114 <Op Unary>
115 <Param>
116 <Param List>
117 <Point Decl>
118 <ProgPM>
119 <Sino Decl>
120 <Struct Decl>
121 <SubPr Cab>
122 <Subpro>
123 <Type Decl>
124 <Union Decl>
125 <Value>
126 <Value List>
127 <Var Decl>
128 <VarFun>
Rules
Index Name ::= Definition
0 <ProgPM> ::= <Dir> <Decl Glb>
1 <Dir> ::= '#' include '<' Id '.' Id '>' <Dir>
2 <Dir> ::= '#' include StringLiteral <Dir>
3 <Dir> ::=
4 <Decl Glb> ::= const <Const Decl> <Decl Glb>
5 <Decl Glb> ::= typedef <Type Decl> <Decl Glb>
6 <Decl Glb> ::= void <SubPr Cab> <Decl Glb>
7 <Decl Glb> ::= static void <SubPr Cab> <Decl Glb>
8 <Decl Glb> ::= <Id Tipo> Id <VarFun> <Decl Glb>
9 <Decl Glb> ::= static <Id Tipo> Id <VarFun> <Decl Glb>
10 <Decl Glb> ::= int main '(' ')' <Block>
11 <Decl Glb> ::=
12 <Id Tipo> ::= int
13 <Id Tipo> ::= char
14 <Id Tipo> ::= float
15 <Id Tipo> ::= bool
16 <Id Tipo> ::= Id
17 <SubPr Cab> ::= Id '(' <Param List> ')' <CabBlock>
18 <SubPr Cab> ::= Id '::' Id '(' <Param List> ')' <CabBlock>
19 <VarFun> ::= ';'
20 <VarFun> ::= '=' <Expr> ';'
21 <VarFun> ::= '=' <Estru Inic> ';'
22 <VarFun> ::= ',' <List Id> ';'
23 <VarFun> ::= '(' <Param List> ')' <CabBlock>
24 <VarFun> ::= '::' Id '(' <Param List> ')' <CabBlock>
25 <List Id> ::= Id ',' <List Id>
26 <List Id> ::= Id
27 <CabBlock> ::= ';'
28 <CabBlock> ::= <Block>
29 <Block> ::= '{' <Body> '}'
30 <Body> ::= <Decl> <Body>
31 <Body> ::= <List Ejec>
32 <Decl> ::= const <Const Decl>
33 <Decl> ::= typedef <Type Decl>
34 <Decl> ::= <Id Tipo> Id <Var Decl>
35 <Var Decl> ::= ';'
36 <Var Decl> ::= '=' <Expr> ';'
37 <Var Decl> ::= '=' <Estru Inic> ';'
38 <Var Decl> ::= ',' <List Id> ';'
39 <Estru Inic> ::= '{' <Nodo List> '}'
40 <Nodo List> ::= <Nodo> ',' <Nodo List>
41 <Nodo List> ::= <Nodo>
42 <Nodo List> ::= <Expr List>
43 <Nodo> ::= <Estru Inic>
44 <Const Decl> ::= <Id Tipo> Id '=' <Expr> ';'
45 <Const Decl> ::= <Id Tipo> Id '[' ']' '=' StringLiteral ';'
46 <Const Decl> ::= <Id Tipo> Id <List Cor> <Estru Inic> ';'
47 <List Cor> ::= '[' <Expr> ']' <List Cor>
48 <List Cor> ::= '='
49 <Type Decl> ::= <Sino Decl>
50 <Type Decl> ::= <Enum Decl>
51 <Type Decl> ::= <Form Decl>
52 <Type Decl> ::= <Struct Decl>
53 <Type Decl> ::= <Union Decl>
54 <Type Decl> ::= <Point Decl>
55 <Sino Decl> ::= <Id Tipo> Id ';'
56 <Enum Decl> ::= enum Id '{' <Enum Def> '}' ';'
57 <Enum Def> ::= Id ',' <Enum Def>
58 <Enum Def> ::= Id
59 <Form Decl> ::= <Id Tipo> Id <List Dim> ';'
60 <List Dim> ::= '[' <Expr> ']' <List Dim>
61 <List Dim> ::= '[' <Expr> ']'
62 <List Dim> ::= '[' ']' <List Dim>
63 <List Dim> ::= '[' ']'
64 <Union Decl> ::= union Id '{' <List Campos> '}' ';'
65 <List Campos> ::= <Campo> <List Campos>
66 <List Campos> ::= <Campo>
67 <Point Decl> ::= <Id Tipo> '*' Id ';'
68 <Struct Decl> ::= struct Id '{' <List PublPriv> '}' ';'
69 <List PublPriv> ::= <List CampSubp>
70 <List PublPriv> ::= <List CampSubp> private ':' <List CampSubp>
71 <List CampSubp> ::= <CampSubp> <List CampSubp>
72 <List CampSubp> ::= <CampSubp>
73 <CampSubp> ::= <Campo>
74 <CampSubp> ::= <Subpro>
75 <Campo> ::= <Id Tipo> <List Id> ';'
76 <Campo> ::= <Id Tipo> Id <List Tam> ';'
77 <Campo> ::= <Id Tipo> '*' Id ';'
78 <Subpro> ::= void Id '(' <Param List> ')' ';'
79 <Subpro> ::= <Id Tipo> Id '(' <Param List> ')' ';'
80 <List Tam> ::= '[' <Expr> ']' <List Tam>
81 <List Tam> ::= '[' <Expr> ']'
82 <Param List> ::= <Param> ',' <Param List>
83 <Param List> ::= <Param>
84 <Param> ::= const <Id Tipo> Id
85 <Param> ::= <Id Tipo> '&' Id
86 <Param> ::= <Id Tipo> Id
87 <Param> ::= const <Id Tipo> Id '[' ']'
88 <Param> ::= <Id Tipo> '&' Id '[' ']'
89 <Param> ::= <Id Tipo> Id '[' ']'
90 <Param> ::=
91 <List Ejec> ::= <Ejec> <List Ejec>
92 <List Ejec> ::=
93 <Ejec> ::= <Id Cuali> '=' <Expr> ';'
94 <Ejec> ::= <Id Cuali> '++' ';'
95 <Ejec> ::= <Id Cuali> -- ';'
96 <Ejec> ::= if '(' <Expr> ')' '{' <List Ejec> '}' <Elsif Stm>
97 <Ejec> ::= switch '(' <Expr> ')' '{' <Case List> '}'
98 <Ejec> ::= while '(' <Expr> ')' '{' <List Ejec> '}'
99 <Ejec> ::= do '{' <List Ejec> '}' while '(' <Expr> ')' ';'
100 for '(' int Id '=' <Expr> ';' Id '<' <Expr> ';' Id '++' ')' '{' <List
<Ejec> ::=
Ejec> '}'
101 for '(' int Id '=' <Expr> ';' Id '<=' <Expr> ';' Id '++' ')' '{' <List
<Ejec> ::=
Ejec> '}'
102 for '(' int Id '=' <Expr> ';' Id '>=' <Expr> ';' Id -- ')' '{' <List
<Ejec> ::=
Ejec> '}'
103 <Ejec> ::= <Id Cuali> '(' <Expr List> ')' ';'
104 <Ejec> ::= continue ';'
105 <Ejec> ::= return <Expr> ';'
106 <Ejec> ::= return ';'
107 <Ejec> ::= delete Id ';'
108 <Ejec> ::= throw <Expr> ';'
109 <Ejec> ::= try '{' <List Ejec> '}' <Captura>
110 <Ejec> ::= '{' <List Ejec> '}'
111 <Ejec> ::= ';'
112 <Captura> ::= catch '(' <Id Tipo> Id ')' '{' <List Ejec> '}'
113 <Captura> ::=
114 <Id Cuali> ::= <Id Cuali> '.' Id
115 <Id Cuali> ::= <Id Cuali> '[' <Expr> ']'
116 <Id Cuali> ::= <Id Cuali> '->' Id
117 <Id Cuali> ::= '*' Id
118 <Id Cuali> ::= Id
119 <Elsif Stm> ::= else if '(' <Expr> ')' '{' <List Ejec> '}' <Elsif Stm>
120 <Elsif Stm> ::= else '{' <List Ejec> '}'
121 <Elsif Stm> ::=
122 <Case List> ::= <Case Stms> <Case List>
123 <Case List> ::= <Case Stms> default ':' <List Ejec>
124 <Case List> ::= <Case Stms>
125 <Case Stms> ::= <Value List> <List Ejec> break ';'
126 <Value List> ::= case <Value> ':' <Value List>
127 <Value List> ::= case <Value> ':'
128 <Expr List> ::= <Expr> ',' <Expr List>
129 <Expr List> ::= <Expr>
130 <Expr List> ::=
131 <Expr> ::= <Expr> '||' <Op And>
132 <Expr> ::= <Op And>
133 <Op And> ::= <Op And> '&&' <Op Equate>
134 <Op And> ::= <Op Equate>
135 <Op Equate> ::= <Op Compare> '==' <Op Compare>
136 <Op Equate> ::= <Op Compare> '!=' <Op Compare>
137 <Op Equate> ::= <Op Compare>
138 <Op Compare> ::= <Op Add> '<' <Op Add>
139 <Op Compare> ::= <Op Add> '>' <Op Add>
140 <Op Compare> ::= <Op Add> '<=' <Op Add>
141 <Op Compare> ::= <Op Add> '>=' <Op Add>
142 <Op Compare> ::= <Op Add>
143 <Op Add> ::= <Op Add> '+' <Op Mult>
144 <Op Add> ::= <Op Add> '-' <Op Mult>
145 <Op Add> ::= <Op Mult>
146 <Op Mult> ::= <Op Mult> '*' <Op Unary>
147 <Op Mult> ::= <Op Mult> '/' <Op Unary>
148 <Op Mult> ::= <Op Mult> '%' <Op Unary>
149 <Op Mult> ::= <Op Unary>
150 <Op Unary> ::= '!' <Op Unary>
151 <Op Unary> ::= '-' <Op Unary>
152 <Op Unary> ::= '+' <Op Unary>
153 <Op Unary> ::= '*' <Op Unary>
154 <Op Unary> ::= '&' <Op Unary>
155 <Op Unary> ::= <Op Pointer>
156 <Op Pointer> ::= <Op Pointer> '.' <Id Gen>
157 <Op Pointer> ::= <Op Pointer> '->' <Id Gen>
158 <Op Pointer> ::= <Op Pointer> '[' <Expr> ']'
159 <Op Pointer> ::= <Value>
160 <Id Gen> ::= <Id Tipo> '(' <Expr List> ')'
161 <Id Gen> ::= Id
162 <Value> ::= EnteroLiteral
163 <Value> ::= DecimaLiteral
164 <Value> ::= ExpNulLiteral
165 <Value> ::= ExpPosLiteral
166 <Value> ::= ExpNegLiteral
167 <Value> ::= StringLiteral
168 <Value> ::= CharLiteral
169 <Value> ::= <Id Gen>
170 <Value> ::= '(' <Expr> ')'
171 <Value> ::= new Id

También podría gustarte