In Antlr4 Grammatik muss ich mit Hilfe von Regular Expressions Lateinische, kyrillische, polnische und griechische Buchstaben sowie Sonderzeichen zusammenpassen. Das ist, was ich habe:Antlr4 Spiel Kyrillische, lateinische, polnische und griechische Buchstaben plus Sonderzeichen?
STRING: ['][\p{L} 0-9\[\]\^\$\.\|\?\*\+\(\)\\~`\[email protected]#%&\-_+={}""<>:;,\/°]*['];
So bin ich, dass ein String
beginnt zu sagen und endet mit ''
. Innerhalb kann ich einen beliebigen Buchstaben (\p{L}
), Nummer und Sonderzeichen außer '
haben. Ich habe das auf regex101.com getestet und es genau was ich will. Aber in Antlr4 funktioniert es nicht. Stattdessen wird das nächste, was ich bekommen ist:
['][a-zA-Z0-9 \[\]\^\$\.\|\?\*\+\(\)\\~`\[email protected]#%&\-_+={}""<>:;,\/°]*[']
Aber das Problem ist, dass so etwas wie 'Ąłćórżnęł'
nicht in meiner Sprache akzeptiert werden, aber sollte es sein.
Mache ich in Antlr4 etwas falsch oder ist das eine Einschränkung? Wie konnte ich es in Antlr4 zum Laufen bringen? String ist eine Lexer-Regel.
Danke, aber wie wäre es mit einem regulären Ausdruck in Antlr4, wo ich alles innerhalb eines Strings außer einem Zeichen wie 'erlaube. Aber ich sage, dass eine Saite mit "beginnt" und endet mit "? – Devid
@Devid Überprüfen Sie meine bearbeitete Antwort –
Danke. In Antlr4 habe ich es so gemacht: STRING: ['] (~ ['] | '\' \ '') * [']; – Devid