-
Всех приветсвую! Давненько я тут не появлялся) Столкнулся с такой задачей, помогите решить, кто знает.
Разработка КС-грамматики Паскаль, оператор цикла типа FOR for i:= 0 to 5 do begin X[i]:= D+i; n:= i-1; end
Начал так и застопорился: Vт = {id, for, equalsOp, addOp, multOp, Consts, to, do, begin, end, Openbracket, Closebracket}, VN = { ForE, Condition, Option, Interval, Assign, Expression, Term, Factor, Operand } V0 = ForE Помогите создать правила...
-
предложение
: список предложений
| круг со счётчиком
| простое предложение
;
список предложений
: 'begin'
предложение ';'
...
'end'
;
круг со счётчиком
: 'for' позывной ':=' фактор 'to' фактор 'do'
предложение ';'
| 'for' позывной ':=' фактор 'downto' фактор 'do'
предложение ';'
;
простое предложение : распаковка ':=' фактор ';'
распаковка: позывной
| позывной '[' фактор ']'
;
фактор: распаковка
| фактор '*' терма
| терма '*' фактор
| терма '*' терма
| фактор 'div' терма
| терма 'div' фактор
| терма 'div' терма
| фактор 'mod' терма
| терма 'mod' фактор
| терма 'mod' терма
;
терма: распаковка
| терма '+' распаковка
| распаковка '+' терма
| распаковка '+' распаковка
| терма '-' распаковка
| распаковка '-' терма
| распаковка '-' распаковка
;
-
Правила я написал. А вот КС они или КЗ это вы уж без меня разбирайтесь.
-
Благодарю
|