Сообщение Re[10]: [Nitra] Парсинг языков базирующихся на отсупах от 02.10.2014 20:12
Изменено 02.10.2014 21:16 VladD2
Здравствуйте, VladD2, Вы писали:
VD>Про левую рекурсию не забыл? Она тут не стрельнет?
Не вижу в каком месте она может стрельнуть.
VD>Про NewLine не понял. Наверно ты имеешь в виду требование начала новой вложенности.
Нет. NewLine это перевод строки.
IndentInc начало новой вложенности.
Indent текущий отступ.
IndentDec конец.
VD>Там еще вопросы есть. Например, в некоторых языках можно искусственно игнорировать конец строки и рассматривать следующую строку как продолжение предыдущей. Например, в Васике это "_" в конце строки. А в Питоне, вроде бы, "\". Причем она даже в строках действует.
Пробельное правило просто не должно содержать перевод строки.
Но должно содержать:
И всё.
VD>Так что твоя грамматика не верна. В прочем, это детали. Может и прокатить.
А так?
VD>Про левую рекурсию не забыл? Она тут не стрельнет?
Не вижу в каком месте она может стрельнуть.
VD>Про NewLine не понял. Наверно ты имеешь в виду требование начала новой вложенности.
Нет. NewLine это перевод строки.
IndentInc начало новой вложенности.
Indent текущий отступ.
IndentDec конец.
VD>Там еще вопросы есть. Например, в некоторых языках можно искусственно игнорировать конец строки и рассматривать следующую строку как продолжение предыдущей. Например, в Васике это "_" в конце строки. А в Питоне, вроде бы, "\". Причем она даже в строках действует.
Пробельное правило просто не должно содержать перевод строки.
Но должно содержать:
"_" NewLine
И всё.
VD>Так что твоя грамматика не верна. В прочем, это детали. Может и прокатить.
А так?
syntax Block
{
| MultyLine = ":" NewLine IndentInc (Indent Statement)+ IndentDec;
| OneLine = ":" OneLineStatement NewLine;
}
syntax Statement
{
| If = "if" Expression Block else Block;
| While = "while" Expression Block;
| OneLineStatement = OneLineStatement NewLine;
}
syntax OneLineStatement
{
| Return = "return " Expression;
}
... << RSDN@Home 1.2.0 alpha 5 rev. 62>>
Re[10]: [Nitra] Парсинг языков базирующихся на отсупах
Здравствуйте, VladD2, Вы писали:
VD>Про левую рекурсию не забыл? Она тут не стрельнет?
Не вижу в каком месте она может стрельнуть.
VD>Про NewLine не понял. Наверно ты имеешь в виду требование начала новой вложенности.
Нет. NewLine это перевод строки.
IndentInc начало новой вложенности.
Indent текущий отступ.
IndentDec конец.
VD>Там еще вопросы есть. Например, в некоторых языках можно искусственно игнорировать конец строки и рассматривать следующую строку как продолжение предыдущей. Например, в Васике это "_" в конце строки. А в Питоне, вроде бы, "\". Причем она даже в строках действует.
Пробельное правило просто не должно содержать перевод строки.
Но должно содержать:
И всё.
VD>Так что твоя грамматика не верна. В прочем, это детали. Может и прокатить.
А так?
VD>Про левую рекурсию не забыл? Она тут не стрельнет?
Не вижу в каком месте она может стрельнуть.
VD>Про NewLine не понял. Наверно ты имеешь в виду требование начала новой вложенности.
Нет. NewLine это перевод строки.
IndentInc начало новой вложенности.
Indent текущий отступ.
IndentDec конец.
VD>Там еще вопросы есть. Например, в некоторых языках можно искусственно игнорировать конец строки и рассматривать следующую строку как продолжение предыдущей. Например, в Васике это "_" в конце строки. А в Питоне, вроде бы, "\". Причем она даже в строках действует.
Пробельное правило просто не должно содержать перевод строки.
Но должно содержать:
"_" NewLine
И всё.
VD>Так что твоя грамматика не верна. В прочем, это детали. Может и прокатить.
А так?
syntax Block
{
| MultyLine = ":" NewLine IndentInc (Indent Statement)+ IndentDec;
| OneLine = ":" OneLineStatement NewLine;
}
syntax Statement
{
| If = "if" Expression Block else Block;
| While = "while" Expression Block;
| OneLineStatement = OneLineStatement NewLine;
}
syntax OneLineStatement
{
| Return = "return " Expression;
}
... << RSDN@Home 1.2.0 alpha 5 rev. 62>>