J'essaie de faire une grammaire ANTLR pour une donnée, qui contient une partie, où je peux passer NewLine
, et une partie, où cela peut être important. Plus précisément, je suis intéressé à sauter NewLine
entre parenthèses et que vous voulez réaliser qu'en utilisant les modes lexer. Mais il y a le problème: en DEFAULT_MODE
il y a beaucoup de règles lexer, et les jetons, qui sont décrits dans ces règles, peuvent apparaître à l'intérieur de parenthèses aussi. Comment puis-je résoudre le problème?ANTLR: Sauter NewLine en fonction du contexte sans utiliser les actions
Peut-être que l'état actuel de mon code vous aidera à comprendre la question
// ...
LPAREN : '(' -> pushMode(InsideParen) ;
// ...
mode InsideParen ;
InsideParenNewLine : ('\r'? '\n') -> skip ;
// here I want somehow recognize all tokens from DEFAULT_MODE without rewriting all rules
RPAREN: ')' -> popMode ;
Merci à l'avance.
Ceci est ANTLR3? Ou voulez-vous faire ces actions dans ANTLR4? – TomServo
@JLH C'est ANTLR3 – sibstudent1
Je suis un gars ANTLR4. Cependant, le comportement dont vous parlez est similaire à la façon dont Python traite les espaces. Suggérez-vous de rechercher une grammaire ANTL3 Python et de prendre quelques conseils à ce sujet. Il doit y en avoir un là-bas. Bonne chance! – TomServo