Skip to content

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)*;

Clone this wiki locally