0
我需要匹配一個參數,它或者不引用文字或雙引號文字。以下是我的代碼,它不能正確匹配。ANTLR3如何定義非引號字面值和引號字面值?
DOUBLE_QUOTE: '\"';
fragment
SP : ' '+;
UnquotedString
:
(ESC_SEQ | ~('\\'|'"'|' '|'\t'))*
;
QuotedLiteral
:
DOUBLE_QUOTE (SP UnquotedString)* DOUBLE_QUOTE
;
fragment
ESC_SEQ
: '\\' ('b'|'t'|'n'|'f'|'r'|'\"'|'\''|'\\')
| UNICODE_ESC
| OCTAL_ESC
;
fragment
HEX_DIGIT : ('0'..'9'|'a'..'f'|'A'..'F') ;
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
;
Parameter
:
UnquotedString | QuotedLiteral
;
WS : ('\r'|'\t'|'\n'|' ') {$channel=HIDDEN;}
;
例如,當I輸入PARA1 OPERATOR 「PARA2」,所述參數規則可以被匹配PARA1和「PARA2」。