11<программа> ::= <элемент_программы>
22<программа> ::= <программа><элемент_программы>
3-
43<элемент_программы> ::= <класс>
54<элемент_программы> ::= <реализация_метода_класса>
65<элемент_программы> ::= <декларация_переменных>
76<элемент_программы> ::= <функция>
8-
97<класс> ::= class <идентификатор>" {}" ;
108<класс> ::= class <идентификатор>" {" <тело_класса>" }" ;
11-
129<тело_класса> ::= <элемент_класса>
1310<тело_класса> ::= <спецификатор_доступа>:<элемент_класса>
1411<тело_класса> ::= <тело_класса><элемент_класса>
1512<тело_класса> ::= <тело_класса><спецификатор_доступа>:<элемент_класса>
16-
1713<элемент_класса> ::= <декларация_свойств_класса>
1814<элемент_класса> ::= <метод_класса>
1915<элемент_класса> ::= <элемент_класса><декларация_свойств_класса>
2016<элемент_класса> ::= <элемент_класса><метод_класса>
2117<элемент_класса> ::= ::
2218<элемент_класса> ::= :::
2319<элемент_класса> ::= ::::
24-
2520<спецификатор_доступа> ::= public
2621<спецификатор_доступа> ::= private
27-
2822<метод_класса> ::= <идентификатор>" ()" <блок>
2923<метод_класса> ::= <идентификатор>" (" <список_аргументов>" )" <блок>
3024<метод_класса> ::= <тип_переменной> <идентификатор>" ()" <блок>
3327<метод_класса> ::= void <идентификатор>" (" <список_аргументов>" )" <блок>
3428<метод_класса> ::= ~<идентификатор>" ()" <блок>
3529<метод_класса> ::= ~<идентификатор>" (" <список_аргументов>" )" <блок>
36-
3730<реализация_метода_класса> ::= <идентификатор>::<идентификатор>" ()" <блок>
3831<реализация_метода_класса> ::= <идентификатор>::<идентификатор>" (" <список_аргументов>" )" <блок>
3932<реализация_метода_класса> ::= <тип_переменной> <идентификатор>::<идентификатор>" ()" <блок>
4235<реализация_метода_класса> ::= void <идентификатор>::<идентификатор>" (" <список_аргументов>" )" <блок>
4336<реализация_метода_класса> ::= <идентификатор>::~<идентификатор>" ()" <блок>
4437<реализация_метода_класса> ::= <идентификатор>::~<идентификатор>" (" <список_аргументов>" )" <блок>
45-
4638<функция> ::= <тип_переменной> <идентификатор>" ()" <блок>
4739<функция> ::= <тип_переменной> <идентификатор>" (" <список_аргументов>" )" <блок>
4840<функция> ::= void <идентификатор>" ()" <блок>
4941<функция> ::= void <идентификатор>" (" <список_аргументов>" )" <блок>
50-
5142<список_аргументов> ::= <аргумент>
5243<список_аргументов> ::= <список_аргументов>,<аргумент>
53-
5444<аргумент> ::= <тип_переменной> <идентификатор>
5545<аргумент> ::= const <тип_переменной> <идентификатор>
5646<аргумент> ::= <тип_переменной>&<идентификатор>
5747<аргумент> ::= const <тип_переменной>&<идентификатор>
58-
5948<блок> ::= " {}"
6049<блок> ::= " {" <тело_блока>" }"
61-
6250<тело_блока> ::= <элемент_блока>
6351<тело_блока> ::= <тело_блока><элемент_блока>
64-
6552<элемент_блока> ::= <декларация_переменных>
6653<элемент_блока> ::= ;
6754<элемент_блока> ::= <выражение>;
6855<элемент_блока> ::= <возврат>;
6956<элемент_блока> ::= <цикл>
7057<элемент_блока> ::= <ветвление>
71-
7258<возврат> ::= return
7359<возврат> ::= return <выражение>
74-
7560<выражение> ::= <оператор_1>
7661<выражение> ::= <выражение>,<оператор_1>
77-
7862<оператор_1> ::= <оператор_2>
7963<оператор_1> ::= <объект>=<оператор_1>
8064<оператор_1> ::= <объект>+=<оператор_1>
8165<оператор_1> ::= <объект>-=<оператор_1>
8266<оператор_1> ::= <объект>*=<оператор_1>
8367<оператор_1> ::= <объект>/=<оператор_1>
8468<оператор_1> ::= <объект>%=<оператор_1>
85-
8669<оператор_2> ::= <оператор_3>
8770<оператор_2> ::= <оператор_2>" ||" <оператор_3>
88-
8971<оператор_3> ::= <оператор_4>
9072<оператор_3> ::= <оператор_3>&&<оператор_4>
91-
9273<оператор_4> ::= <оператор_5>
9374<оператор_4> ::= <оператор_4>==<оператор_5>
9475<оператор_4> ::= <оператор_4>!=<оператор_5>
95-
9676<оператор_5> ::= <оператор_6>
9777<оператор_5> ::= <оператор_5>" <" <оператор_6>
9878<оператор_5> ::= <оператор_5>" <" =<оператор_6>
9979<оператор_5> ::= <оператор_5>" >" <оператор_6>
10080<оператор_5> ::= <оператор_5>" >" =<оператор_6>
101-
10281<оператор_6> ::= <оператор_7>
10382<оператор_6> ::= <оператор_6>+<оператор_7>
10483<оператор_6> ::= <оператор_6>-<оператор_7>
105-
10684<оператор_7> ::= <оператор_8>
10785<оператор_7> ::= <оператор_7>*<оператор_8>
10886<оператор_7> ::= <оператор_7>/<оператор_8>
10987<оператор_7> ::= <оператор_7>%<оператор_8>
110-
11188<оператор_8> ::= <оператор_9>
11289<оператор_8> ::= +<оператор_9>
11390<оператор_8> ::= -<оператор_9>
11693<оператор_8> ::= ++<объект>
11794<оператор_8> ::= --<объект>
11895<оператор_8> ::= &<объект>
119-
12096<оператор_9> ::= " (" <выражение>" )"
12197<оператор_9> ::= <литерал>
12298<оператор_9> ::= <объект>
12399<оператор_9> ::= <объект>++
124100<оператор_9> ::= <объект>--
125101<оператор_9> ::= <вызов_функции>
126-
127102<вызов_функции> ::= <объект>" ()"
128103<вызов_функции> ::= <объект>" (" <выражение>" )"
129-
130104<объект> ::= <идентификатор>
131105<объект> ::= <идентификатор>.<идентификатор>
132106<объект> ::= <идентификатор>-" >" <идентификатор>
133-
134107<декларация_свойств_класса> ::= <тип_переменной> <список_свойств_класса>;
135108<декларация_свойств_класса> ::= const <тип_переменной> <список_свойств_класса>;
136-
137109<декларация_переменных> ::= <тип_переменной> <список_переменных>;
138110<декларация_переменных> ::= <тип_переменной>*<список_переменных>;
139111<декларация_переменных> ::= const <тип_переменной> <список_переменных>;
140112<декларация_переменных> ::= const <тип_переменной>*<список_переменных>;
141-
142113<тип_переменной> ::= int
143114<тип_переменной> ::= double
144115<тип_переменной> ::= char
145116<тип_переменной> ::= bool
146117<тип_переменной> ::= <идентификатор>
147-
148118<список_свойств_класса> ::= <идентификатор>
149119<список_свойств_класса> ::= <список_свойств_класса>,<идентификатор>
150-
151120<список_переменных> ::= <идентификатор>
152121<список_переменных> ::= <список_переменных>,<идентификатор>
153122<список_переменных> ::= <список_переменных>,*<идентификатор>
154123<список_переменных> ::= <идентификатор>=<оператор_1>
155124<список_переменных> ::= <список_переменных>,<идентификатор>=<оператор_1>
156125<список_переменных> ::= <список_переменных>,*<идентификатор>=<оператор_1>
157-
158126<цикл> ::= <while -цикл>
159127<цикл> ::= <do -while -цикл>
160128<цикл> ::= <for -цикл>
161-
162129<while -цикл> ::= while " (" <выражение>" )" <блок>
163-
164130<do -while -цикл> ::= do <блок>while " (" <выражение>" )" ;
165-
166131<for -цикл> ::= for " (" <выражение>;<выражение>;<выражение>" )" <блок>
167-
168132<ветвление> ::= if " (" <выражение>" )" <блок>
169133<ветвление> ::= if " (" <выражение>" )" <блок>else <блок>
170134
171-
172135<T_ID> ::= ...
173136<T_CONST> ::= ...
174137
175-
176138<логический_литерал> ::= (true |false )
177139<константа_с_плавающей_точкой> ::= [(+|-)](<цифра>{<цифра>}.[<цифра>{<цифра>]|.<цифра>{<цифра>})[(e|E)<десятичная_целая_константа>]
178140<целая_константа> ::= (<десятичная_целая_константа>|<восьмеричная_целая_константа>|<шестнадцатеричная_целая_константа>)
183145<буква> ::= (a|…|z|A|…|Z)
184146<символьная_константа> ::= ' (?|\( ' |" " " |n|t))'
185147<строковый_литерал> ::= " " " {(?|\(' |"""|n|t))}"""
186-
187148// lvalue == объект
188149// rvalue == выражение
0 commit comments