Конференция "Прочее" » Разработка КС-грамматики
 
  • brother © (21.03.19 03:40) [0]
    Всех приветсвую! Давненько я тут не появлялся)
    Столкнулся с такой задачей, помогите решить, кто знает.

    Разработка КС-грамматики
    Паскаль, оператор цикла типа 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
    Помогите создать правила...
  • Pavia © (21.03.19 21:34) [1]

    предложение
    : список предложений
    | круг со счётчиком
    | простое предложение
    ;

    список предложений
    : 'begin'
       предложение ';'
       ...
       'end'
    ;

    круг со счётчиком
    : 'for' позывной ':=' фактор 'to' фактор 'do'
       предложение ';'
    | 'for' позывной ':=' фактор 'downto' фактор 'do'
             предложение ';'
    ;

    простое предложение : распаковка ':=' фактор ';'

    распаковка: позывной
    | позывной '[' фактор ']'
    ;

    фактор: распаковка
    | фактор '*' терма
    | терма '*' фактор
    | терма '*' терма
    | фактор 'div' терма
    | терма 'div' фактор
    | терма 'div' терма
    | фактор 'mod' терма
    | терма 'mod' фактор
    | терма 'mod' терма
    ;

    терма: распаковка
    | терма '+' распаковка
    | распаковка '+' терма
    | распаковка '+' распаковка
    | терма '-' распаковка
    | распаковка '-' терма
    | распаковка '-' распаковка
    ;


  • Pavia © (21.03.19 21:43) [2]
    Правила я написал. А вот КС они или КЗ это вы уж без меня разбирайтесь.
  • brother © (22.03.19 04:09) [3]
    Благодарю
 
Конференция "Прочее" » Разработка КС-грамматики
Есть новые Нет новых   [118667   +47][b:0][p:0.001]