Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Java tools & IDE's > ANTLR |
Автор: PovAnd 4.12.2007, 16:33 |
Может кто подкинет пример для ANTLR где присутствует отработка вложенности скобок в выражении (логическом или арифметическом по ходу без разницы). Или как вариант, вот я составил правила для записи логических выражений вида: "op1" && "op2" || "op3" && !!!"op4" -------------------------- grammar Parser; UNIT : '"'('a'..'z' | 'A'..'Z'| '0' .. '9' | ' ')*'"'; expression : conditionalOrExpression ; conditionalOrExpression : conditionalAndExpression ( '||' conditionalAndExpression )* ; conditionalAndExpression : exclusiveOrExpression ( '&&' exclusiveOrExpression )* ; exclusiveOrExpression : unaryExpressionNot ( '^' unaryExpressionNot )* ; unaryExpressionNot : '!'* UNIT ; -------------------------- Помогите доработать, чтобы данный парсер поддерживал возможность выражений вложенных в скобоки. |
Автор: PovAnd 4.12.2007, 17:24 |
ну вроде дадумался, так вроде работает: ------ grammar Parser; UNIT : '"'('a'..'z' | 'A'..'Z'| '0' .. '9' | ' ')*'"'; expression : conditionalOrExpression ; conditionalOrExpression : conditionalAndExpression ( '||' conditionalAndExpression )* ; conditionalAndExpression : exclusiveOrExpression ( '&&' exclusiveOrExpression )* ; exclusiveOrExpression : unaryExpressionNot ( '^' unaryExpressionNot )* ; unaryExpressionNot : '!' unaryExpressionNot | valueExpression ; valueExpression : UNIT | '(' conditionalOrExpression ')' ; ------ |