F.2 Syntactical GrammarF GrammarF.1 Lexical Grammar

F.1 Lexical Grammar

// identifiers, labels, numbers, strings
IDENT: REALLETTER (LETTER | DIGIT)* ;
LABEL: (LETTER | DIGIT) (LETTER | DIGIT)* ;
NUMBER: DIGIT (DIGIT)* ;
REALLETTER: ('a'..'z' | 'A'..'Z' );
LETTER: ('a'..'z' | 'A'..'Z' | '_');
DIGIT: ('0'..'9');
STRING : '"' (~('"' | '\n' | '\r' | '\f' | '\uffff'))* 
         '"' ;
UNDERSCORE: '_';

// language tokens
LPAR: "(";
RPAR: ")";
LBRACK: "[";
RBRACK: "]";
LPARGRID: "(#";
RPARGRID: "#)";
LBRACKGRID: "[#";
RBRACKGRID: "#]";
PERIOD: ".";
COLON: ":";
SEMICOLON: ";";
COMMA: ",";
ASSIGNMENT: ":=";
EQUALITY: "=";
NONEQUALITY: "/=";
LESS: "<";
LESSEQ: "<=";
GREATER: ">";
GREATEREQ: ">=";
PLUS: "+";
MINUS: "-";
TIMES: "*";
DIVIDES: "/";
POWER: "^";
IMPLIES: "=>";
EQUIV: "<=>";
ARROW: "->";
DOTDOT: "..";

// whitespace (filtered by lexer)
WS: (' ' | '\t' | EOL | COMMENT)+ ;
EOL: ('\n' | '\r' | '\f') ;
COMMENT : '%' (~('\n' | '\r' | '\f' | '\uffff'))* 
              (EOL | '\uffff') ;

Wolfgang Schreiner

F.2 Syntactical GrammarF GrammarF.1 Lexical Grammar