Antlr4 匹配西里尔字母、拉丁字母、波兰字母和希腊字母以及特殊字符?

Antlr4 match Cyrillic, Latin, Polish and Greek Letters plus special characters?

在 Antlr4 语法中,我需要借助正则表达式来匹配拉丁文、西里尔文、波兰文和希腊字母以及特殊字符。这是我的:

STRING: ['][\p{L} 0-9\[\]\^$\.\|\?\*\+\(\)\~`\!@#%&\-_+={}""<>:;,\/°]*['];

所以我说 String'' 开始和结束。在里面我可以有任何字母 (\p{L})、数字和特殊字符,除了 '。我已经在 regex101.com 上测试过了,这正是我想要的。但在 Antlr4 中它不起作用。相反,我得到的最接近的是:

['][a-zA-Z0-9 \[\]\^$\.\|\?\*\+\(\)\~`\!@#%&\-_+={}""<>:;,\/°]*[']

但问题是像 'Ąłćórżnęł' 这样的东西在我的语言中不会被接受,但它应该被接受。

我在 Antlr4 中做错了什么或者这是一个限制?我怎样才能让它在 Antlr4 中工作?字符串是词法分析器规则。

\p{L} 不受 ANTLR 支持。您必须像这样手动写出这些范围:[\u1234-\u5678](用您的十六进制 Unicode 点更改 \u....),其中 \u1234 是范围的开始,\u5678结束。请注意,您可以在字符集中放置多个范围:[\u1234-\u1238\u3456-\u5679].

Thanks, but how about a regular expression in Antlr4 where I allow everything inside of a String except a character like '. But I say that a string start with and end with '

看起来像这样:

STRING : '\'' ~[']* '\'';

使用转义引号且不允许换行,请执行以下操作:

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