1

当十进制和千位分隔符(十进制分组字符)依赖于语言环境调用系统时,如何编写正确解析浮点数的 Antlr (v4) 语法?

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

4

1 回答 1

0

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

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

为了分解单个数值,可以为每个本地化变体使用单独的词法分析器/解析器,或者可以在单个语言定义中支持多个替代方案。

于 2013-10-26T13:57:49.013 回答