2017-02-09 14 views
1

TEXTから '('と ')を削除したいと思います。どうすれば逃げることができますか? (および\\(動作しませんでした。ANTLRで括弧文字をエスケープするには4

私は '(' たいと ')' の決定の優先順位のための演算子として認識される。

grammar Query; 

// Parser 

query: expr+ ; 

expr: NOT expr 
    | expr AND? expr 
    | expr OR expr 
    | REGEXP 
    | TEXT 
    | STRING 
    | LPAREN expr RPAREN 
    ; 


// Lexer 

LPAREN : '(' ; 
RPAREN : ')' ; 

AND: 'AND' ; 
OR: 'OR' ; 
NOT: 'NOT' ; 

TEXT : ~[()\n\r" ]+ ; 
STRING : '"' ('""'|~'"')* '"' ; // quote-quote is an escaped quote 
REGEXP : '/' (~'/')* '/' ; // quote-quote is an escaped quote 
WS : [ \t\r\n]+ -> skip ; 

この戻りは

» grun Query query -tree 
(A AND B) OR C 
(query (expr (expr ((expr (expr A) AND (expr B)))) OR (expr C))) 

を次の私は必要

(query (expr (expr (expr (expr A) AND (expr B))) OR (expr C))) 

おかげ

答えて

-1

私はこの問題をレクサーとパーサーでは解決しませんでした。 リスナーが解析結果をどのように処理するかは問題です。

関連する問題