От: | catbert | ||
Дата: | 31.03.12 16:59 | ||
Оценка: |
[PegGrammar( Options = EmitDebugSources, start,
grammar
{
s : void = ' '*;
letter = ['A'..'Z', 'a'..'z'] / '_';
digit = ['0'..'9'];
identifier is expr = letter+ (letter / digit)* s;
[Extends(expr)]
num is expr = digit + s;
parentheses is expr = '('s expr ')'s;
// postfix unary expressions
postfixInc is expr = expr : 30 "++"s;
postfixDec is expr = expr : 30 "--"s;
// prefix unary expressions
prefixInc is expr = "++"s expr : 30;
prefixDec is expr = "--"s expr : 30;
negation is expr = '-'s expr : 30;
// infix binary expressions
sum is expr = expr : 10 '+'s expr : 10;
sub is expr = expr : 10 '-'s expr : 10;
mul is expr = expr : 20 '*'s expr : 20;
div is expr = expr : 20 '/'s expr : 20;
[Extensible(lol)]
expr : Expr;
start : Expr = s expr ![Any];
})]
public class InterpreterParser
{
// обработчики...
}
}
warning: N10003: method Interpreter.InterpreterParser.prefixDec(op : Nemerle.Peg.NToken, value : Interpreter.Expr) : Interpreter.Expr is not externally visible and has never been referenced