You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Nishad Mathur edited this page Jan 9, 2015
·
3 revisions
/* This is an implementation of a subset of our grammar language, which should hopefully be eventually compilable */
let program = assignment*;
let assignment = 'let' identifier '=' rules ';';
let rules = ruleElement ('|'? ruleElement)*;
let ruleElement = predicate?
( string
| identifier
| range
| nestedRules
| any
) quantifier? ;
let nestedRules = "(" rules ")";
let quantifier = '*'
| '?'
| '+'
| arbitraryQuantifier;
let arbitraryQuantifier = '{' number (',' number)? '}';
let range = '[' string '..' string ']';
let identifier = character+;
let string = '"' (character | number | whitespace)* '"';
@Literal let any = '.';
@Literal let predicate = '!';
@Ignored
@Literal let whitespace = '\n' | '\t';
@Literal let character = ['A'..'z'];
@Literal let number = ['0'..'9'];
@Ignored
@Literal let comment = '//' (character | number | whitespace)*;