Antlr4 如何为本地化的数字格式编写解析器规则?

Antlr4 如何为本地化的数字格式编写解析器规则?,antlr4,Antlr4,当十进制和千位分隔符十进制分组字符依赖于区域设置调用系统时,如何编写正确解析浮点数的Antlr v4语法 目前,我尝试在传递到解析器之前交换输入字符串中的字符,虽然这可以工作,但感觉像是一个黑客。有没有办法制作一个参数化解析器,其中一些东西可以作为参数传递,比如这些标记的字符值?解析器和lexer构造算法通常假设字母表是固定的,而不是可变的。在构造时准备运行时决策时,这是一个非常有用的假设,而且语言定义是明确的 请注意,当嵌入到更复杂的上下文中时,本地化的数字可能会导致歧义。例如,在德语中,用逗

当十进制和千位分隔符十进制分组字符依赖于区域设置调用系统时,如何编写正确解析浮点数的Antlr v4语法


目前,我尝试在传递到解析器之前交换输入字符串中的字符,虽然这可以工作,但感觉像是一个黑客。有没有办法制作一个参数化解析器,其中一些东西可以作为参数传递,比如这些标记的字符值?

解析器和lexer构造算法通常假设字母表是固定的,而不是可变的。在构造时准备运行时决策时,这是一个非常有用的假设,而且语言定义是明确的

请注意,当嵌入到更复杂的上下文中时,本地化的数字可能会导致歧义。例如,在德语中,用逗号代替小数点,但这样写的数字很难在逗号分隔的列表中分组


对于分解单个数值,可以对每个本地化变量使用单独的lexer/parser,或者在单个语言定义中支持多个备选方案。

您是否可以编写数字识别代码来捕获这两种情况,然后在稍后某个时间针对当前语言环境错误提出错误的数字?另一种可能是使用,这样您可以有一个英语语法,然后是一个欧洲语法,它会对它进行微妙的调整,并选择正确的语法在运行时调用。