-
Notifications
You must be signed in to change notification settings - Fork 0
Sample Grammar File
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)*;