Информация об изменениях

Сообщение Re[8]: [Nitra] Парсинг языков базирующихся на отсупах от 02.10.2014 19:01

Изменено 03.10.2014 4:00 VladD2

Здравствуйте, VladD2, Вы писали:

VD>Мысль интересная.

VD>Но, на этом же месте ведь и другие конструкции могут начинаться. Это не приведет к конфликту?
VD>Ведь будет два правила с одного места спарсиваться.
Проблем не будет. Ибо в почти любой грамматике множество правил с одного места начинаются.

VD>Виртуальным скобкам, конечно, можно задавать пустые локейшоны. Теоретически это может срастись.

Должно всё работать. Если пройтись по тексту и сказать где у нас NewLine, IndentInc, Indent и IndentDec то с помощью этой грамматики можно будет спокойно парсить питон.
  syntax Block = ":" NewLine IndentInc (Indent Statement)+ IndentDec;

  syntax Statement
  {
    | If      = "if" Expression Block else Block;
    | While   = "while" Expression Block;
    | Return  = "return " Expression NewLine;
  }
... << RSDN@Home 1.2.0 alpha 5 rev. 62>>
Re[8]: [Nitra] Парсинг языков базирующихся на отсупах
Здравствуйте, VladD2, Вы писали:

VD>Мысль интересная.

VD>Но, на этом же месте ведь и другие конструкции могут начинаться. Это не приведет к конфликту?
VD>Ведь будет два правила с одного места спарсиваться.
Проблем не будет. Ибо в почти любой грамматике множество правил с одного места начинаются.

VD>Виртуальным скобкам, конечно, можно задавать пустые локейшоны. Теоретически это может срастись.

Должно всё работать. Если пройтись по тексту и сказать где у нас NewLine, IndentInc, Indent и IndentDec то с помощью этой грамматики можно будет спокойно парсить питон.
  syntax Block = ":" NewLine IndentInc (Indent Statement)+ IndentDec;

  syntax Statement
  {
    | If      = "if" Expression Block else Block;
    | While   = "while" Expression Block;
    | Return  = "return " Expression NewLine;
  }
... << RSDN@Home 1.2.0 alpha 5 rev. 62>>