blob: ecf79b3eef821be422d686cfa3bd1d06a3e4e995 [file] [log] [blame]
parser grammar PhoneNumberParser;
options {tokenVocab = PhoneNumberLexer;}
phoneNumber: PrefixTel (global=globalNumber | local=localNumber);
globalNumber: globalDigits=Plus GlobalNumberDigits (SEMI (PrefixExt Ext | PrefixIsub Isub))? parameter*;
localNumber: localDigits=localNumberDigits (SEMI (PrefixExt Ext | PrefixIsub Isub))? (SEMI|ParamTerm) phoneContext parameter*;
phoneContext: PrefixPhoneContext (dn=DomainName | (CtxPlus dig=GlobalNumberDigits));
localNumberDigits: (DIGIT | HEX_ALPHA | STAR | POUND | VisualSeparator | DOT | DASH)* (DIGIT | HEX_ALPHA | STAR | POUND) (DIGIT | HEX_ALPHA | STAR | POUND | VisualSeparator | DOT | DASH)*;
parameter: (SEMI|ParamTerm) (ParamName (ParamWithValue ParamValue)? );