Re[7]: [Nitra] Парсинг языков базирующихся на отсупах
От: WolfHound  
Дата: 03.10.14 13:50
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>Тут на самом деле всё намного проще можно сделать.

Я тут ещё подумал. Не получится совсем так просто.
class Asd:
    def sdf(qwe):
        for a in b:
            c
    def sdf(qwe):
        for a in b:
            c

syntax Block = ":" NewLine IndentInc (Indent Statement)+ IndentDec;

В данном случае у нас первый IndentDec должен закрыть два IndentInc. А второй 3.
Это в нашу таблицу не записать никак.

Соответственно нужно либо делать полноценный препроцессинг вставляя скобки физически.
Либо протаскивать через парсер контекст. Чтобы можно было сделать так
syntax Block = ":" NewLine IndentInc[level] (Indent[level] Statement)+ IndentDec[_ < level];
... << RSDN@Home 1.2.0 alpha 5 rev. 62>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.