grammar NaturalLanguage; options { language = Java; output = AST; } tokens { KEY; } @parser::header { package net.certiv.test.gen; } @lexer::header { package net.certiv.test.gen; } keywords : text? ( keyword text? )+ EOF ; keyword : ASP | NET ; text : ( WORD | DIGIT | PUNCT )+ ; ASP : 'ASP.NET' | 'ASP' ; NET : 'NET' | '.NET' | '.' { $type = PUNCT; } ; WS : ( '\t' | ' ' | '\r' | '\n' | '\u000C' )+ { $channel = HIDDEN; } ; DIGIT : '0'..'9' ; WORD : LETTER+ ; fragment LETTER : UPPER | LOWER ; fragment LOWER : 'a'..'z' ; fragment UPPER : 'A'..'Z' ; PUNCT : '.' | ',' | '/' | ';' ;