Re[11]: [Nitra] Парсинг языков базирующихся на отсупах
От: VladD2 Российская Империя www.nemerle.org
Дата: 02.10.14 21:17
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>А так?

WH>
WH>syntax Block
WH>{
WH>  | MultyLine = ":" NewLine IndentInc (Indent Statement)+ IndentDec;
WH>  | OneLine   = ":" OneLineStatement NewLine;
WH>}
WH>


Сдается мне этот NewLine просто лишний. Если будет информация о блоках, то накаких приседаний просто ненужно.

Будет именно что
syntax Block
{
  | MultyLine = ":" IndentInc (Indent Statement)+ IndentDec;
  | OneLine   = ":" OneLineStatement NewLine;
}

Парсер сам разрулит неоднозначность на основании этих самых IndentInc/IndentDec. Точнее ее, для парсера, просто не будет. Он увидит IndentInc и пойдев путем блока, а не увидев его пойдет путем выражения.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Отредактировано 03.10.2014 4:01 VladD2 . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.