regex - Antlr4 how to avoid syntax errors with anything between quotes rule? -


i'm trying build own dsl in order create custom rules match given json object.

for purpose i've created far 2 kind of rules following grammar:

grammar rulegrammar;  def: 'def(' jsonrule ')'; jsonrule: regex|composite; regex: '"' code '"'; composite: '[' jsonrule ('&&'jsonrule)* ']'; code: any+;  any: ( '\\"' | .);  ws: [ \t\r\n]+ -> skip(); 

this grammar fails syntax error when "code" of regex contains characters '[' or ']', such as:

def("[a-za-z0-9]+") line 1:5 extraneous input '[' expecting 

i see has definition of composite rule, has ']' in it.

is there way avoid syntax error without escaping brackets in code?

regex , code should lexer rules. besides, code greedy, it'll consume input.

write regex rule instead:

regex: '"' ('\\' ["\\] | ~["\\\r\n])* '"'; 

if want explanation error get, it's because [ character implicitly defined token, used in composite rule. doesn't recognized any because of lexer priority rules.


Comments

Popular posts from this blog

android - Gradle sync Error:Configuration with name 'default' not found -

java - Andrioid studio start fail: Fatal error initializing 'null' -

html - jQuery UI Sortable - Remove placeholder after item is dropped -