我正在尝试使用ANTLR作为我公司最新项目的解析器。我无法找到有关如何解析一个数字的任何信息,比如说(0005039906179210835699175654)为多个令牌(5位数字,3位数字,14位数字和6位数字)。
我当前的代码吐出错误,
line 1:1 no viable alternative at input '0005039906179210835699175654'
此外,另一方面,有没有人知道如何使用监听器获取令牌的名称?这只是一个我想的奖金问题:)提前感谢所有回复的人!
修改 为了澄清整个问题,我公司从自动化系统接收传统格式的信息。必须将此信息解析为POJO以进行进一步处理。我正在尝试使用ANTLR作为一种简单,流畅,可读和可扩展的解决方案。一个例子是这一行:
U0005138606179090232769522950 0863832 18322862 0284785 3
必须解析哪些部分:U,00051,386,06179090232769,522950,0863832,18322862,0284785和3.显然,用空格分隔的部分很容易解析,但我一直无法找到方法在ANTLR中解析未被空格分隔的值。任何帮助将不胜感激,谢谢!
EDIT2: 为了清楚地说明为什么我使用ANTLR而不仅仅是java,我的公司接收5种传统格式的消息,并且实现解析它们的系统必须易于扩展以适应未来。 ANTLR易于阅读和理解。另外,构建其他语法和监听器比尝试维护随机乱码的java更容易。
EDIT3: 我想到了一个解决方案,但它很漂亮。我的想法是将28个字符数解析为一个标记,然后使用java从监听器中拆分它,因为它每次都以相同的方式分解。我今天晚些时候会报告我是否让它发挥作用。
EDIT4,最终更新: 我选择了我在edit3中提到的解决方案。它不漂亮,但它的工作原理足够快。非常感谢所有评论,分享想法和激发思想的人!