当小数和千位分隔符(十进制分组字符串)依赖于语言环境调用系统时,如何编写正确解析浮点数的Antlr(v4)语法?
目前我尝试在传递给解析器之前交换输入字符串中的字符,虽然这有效但感觉就像是黑客。有没有办法制作一个“参数化”解析器,其中一些东西可以作为参数传递,比如这些标记的char值?
答案 0 :(得分:0)
Parser和lexer构造算法通常假设字母表是固定的而不是可变的。在构造时准备运行时决策时,这是一个非常有用的假设,并且非常明确语言定义是明确的。
请注意,嵌入在更复杂的上下文中时,本地化数字可能会导致歧义。例如。在德语中,使用逗号而不是小数点,但是这样写的数字很难用逗号分隔的列表分组。
对于分解单个数值,可以为每个本地化变体使用单独的词法分析器/解析器,或者可以在单个语言定义中支持多个替代词。