<stmt> := var <ident> = <expr>
| <ident> = <expr>
| for <ident> = <expr> to <expr> do <stmt> end
| read_int <ident>
| print <expr>
| <stmt> ; <stmt>
Перевод: утверждение может быть либо
- объявление переменной (с выражением)
- присваивание переменной (с выражением)
- цикл for () (с двумя выражениями и оператором)
- read_int (с идентификатором)
- печать (с выражением)
- два оператора, разделенные точкой с запятой
<expr> := <string>
| <int>
| <arith_expr>
| <ident>
Перевод: выражение может быть либо
- строковый литерал
- и целое число
- арифметическое выражение
- идентификатор
<bin_expr> := <expr> <bin_op> <expr>
<bin_op> := + | - | * | /
Бинарное выражение состоит из двух выражений и двоичного оператора между ними. Бинарные операторы:
+ - * /
<ident> := <char> <ident_rest>*
<ident_rest> := <char> | <digit>
Идентификатор всегда начинается с символа, но остальная часть идентификатора может состоять из символов и цифр
<int> := <digit>+
<digit> := 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
определение цифры
<string> := " <string_elem>* "
<string_elem> := <any char other than ">
определение строкового литерала