parsing - 如何在 Flex 工具中结束序列的标记化?
问题描述
我正在使用 Flex(快速词法分析器生成器)工具。我已经这样定义了我的reges:
value [0-9]|[1-9][0-9]*
id [a-zA-Z][a-zA-Z0-9]*
plus "+"
...
我还有一些类似定义的关键字和运算符。这是一个示例输出,可以帮助您理解我的问题:
> 123
VALUE: 123 (123)
> name
IDENTIFIER: name
> 1230
VALUE: 1230 (1230)
> 0123
VALUE: 0 (0)
VALUE: 123 (123)
> 123x
VALUE: 123 (123)
IDENTIFIER: x
> x+
IDENTIFIER: x
OP_PLUS: +
只要它适合一个适当的类的令牌,它就会完成并再次进入DFA的起始状态。做它应该做的。但我不知道如何在 Flex 中处理这个问题。而且我相信带有前导零正则表达式的数字可以正常工作,但由于同样的原因它会崩溃。我正在等待的正确输出:
> (+ x 3)
OPEN_P: (
PLUS: +
IDENTIFIER: x
VALUE: 3 (3)
CLOSE_P: )
> 0123
SYNTAX ERROR
> 123X
SYNTAX ERROR
> 123+
SYNTAX ERROR
我不希望这个序列123x
显示如下:
VALUE: 123
ID: x
相反,我想得到一个语法错误。因为123x
对我来说不是一个有效的序列。或0123
,或123+
等。
解决方案
推荐阅读
- mongodb - 如何接收一个数组,使用聚合框架比较其他两个数组?
- python - 从网站列表制作数据框
- kdb - 无法评估手动创建的相等〜解析树
- python - 如何使用 Pandas 将具有不同标题的多个 Excel 文件合并到一张表中?
- python - Python AttributeError:'NoneType' 对象没有属性 getText
- ms-access-2007 - MS-Access 2007:尝试打开表单时出错:“没有足够的可用内存来更新显示。关闭不需要的程序并重试。”
- node.js - npm 错误!http://registry.npmjs.org/ansi-escapes 处的无效 json 响应正文 原因:JSON 输入意外结束
- javascript - 在引导模式中单击“保存”按钮后如何禁用刷新页面?
- ios - Swift/Firestore:完成不会被调用
- php - Laravel在ManyToMany中获取哪些类别属于登录用户