Skip to content

Instantly share code, notes, and snippets.

@stdray
Created December 16, 2014 17:45
Show Gist options
  • Save stdray/dcf71e2faef74e4c2c7f to your computer and use it in GitHub Desktop.
Save stdray/dcf71e2faef74e4c2c7f to your computer and use it in GitHub Desktop.
syntax Expression
{
| StringLiteral;
| IntegerLiteral;
| RealLiteral;
| BooleanLiteral;
| FullName;
| Parenthesis = "(" Expression ")";
| Generator = GeneratorExpression;
| Choice = Expression ^ 11 sm ("/" sm Expression ^ 11)+;
| Call = Name ^ 150 "(" (FullName; "," sm)+ ")";
| MemberAccess = Expression ^ 150 "." Name;
| Plus = "+" Expression precedence 140;
| Minus = "-" Expression precedence 140;
| Not = "not" sm Expression precedence 140;
| Mul = Expression sm "*" sm Expression precedence 130;
| Div = Expression sm "/" sm Expression precedence 130;
| Mod = Expression sm "%" sm Expression precedence 130;
| Add = Expression sm "+" sm Expression precedence 120;
| Sub = Expression sm "-" sm Expression precedence 120;
| LessThan = Expression sm "<" sm Expression precedence 100;
| GreaterThan = Expression sm ">" sm Expression precedence 100;
| LessThanOrEqual = Expression sm "<=" sm Expression precedence 100;
| GreaterThanOrEqual = Expression sm ">=" sm Expression precedence 100;
| Equal = Expression sm "==" sm Expression precedence 90;
| NotEqual = Expression sm "!=" sm Expression precedence 90;
| Or = Expression sm "or" sm Expression precedence 40;
| And = Expression sm "and" sm Expression precedence 50;
| If = "if" Expression ^ 21 sm "then" sm Expression sm "else" sm Expression;
}
syntax GeneratorExpression
{
| Simple = "[" sm Name sm "|" sm Expression sm "]";
| Generator = "[" sm Expression sm "|" sm (GeneratorPart; "," sm)+ "]";
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment