Здравствуйте, 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>>