grammar Mpf; options { k = 1; } tokens { FILEEXISTSP = 'FileExistsP' ; FILECREATEDTODAYP = 'FileCreatedTodayP'; } @members { public static void main(String[] args) throws Exception { MpfLexer lex = new MpfLexer(new ANTLRFileStream(args[0])); CommonTokenStream tokens = new CommonTokenStream(lex); MpfParser parser = new MpfParser(tokens); try { parser.program (); } catch (RecognitionException e) { e.printStackTrace(); } } } /*------------------------------------------------------------------ * PARSER RULES *------------------------------------------------------------------*/ program : (command)* ; command : FILEEXISTSP 'filename=' param {System.out.println("FileExistsP gefunden. param ist " + $param.text );} | FILECREATEDTODAYP 'filename=' param {System.out.println("FileCreatedTodayP gefunden. param ist " + $param.text );} ; param : STRING ; /*------------------------------------------------------------------ * LEXER RULES *------------------------------------------------------------------*/ NUMBER : (DIGIT)+ ; WHITESPACE : ( '\t' | ' ' | '\r' | '\n'| '\u000C' )+ { $channel = HIDDEN; } ; fragment DIGIT : '0'..'9' ; COMMENT : '//' ~('\n'|'\r')* '\r'? '\n' {$channel=HIDDEN;} | '/*' ( options {greedy=false;} : . )* '*/' {$channel=HIDDEN;} ; STRING : '"' ( ESC_SEQ | ~('\\'|'"') )* '"' ; fragment HEX_DIGIT : ('0'..'9'|'a'..'f'|'A'..'F') ; fragment ESC_SEQ : '\\' ('b'|'t'|'n'|'f'|'r'|'\"'|'\''|'\\') | UNICODE_ESC | OCTAL_ESC ; fragment OCTAL_ESC : '\\' ('0'..'3') ('0'..'7') ('0'..'7') | '\\' ('0'..'7') ('0'..'7') | '\\' ('0'..'7') ; fragment UNICODE_ESC : '\\' 'u' HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT ;