compiler-construction - 如何在 JavaCC 中为整数编写正则表达式?
问题描述
如何为整数和标识符编写正则表达式:
整数由一个或多个数字 0-9 组成的字符串表示,并且可以以减号“-”开头,例如 246、-789。除非它的 0。数字不能以 0 开头,例如 0123,这是非法的。
标识符可以是一串以字母开头的字母、数字或下划线(“_”)。标识符不能是保留字。
这是我到目前为止所拥有的,这是不正确的。我将如何编写上面在 JavaCC 中指定的正则表达式。
TOKEN :
{
< #LETTER: ["a"-"z","A"-"Z"] >
| < DIGIT: ["0"] | (["1"-"9"])+>
| < IDENTIFIER: < LETTER > | < DIGIT > | (< LETTER > | ["_"]) >
}
解决方案
你的问题有些不清楚。但是像下面这样的东西可能会起作用
TOKEN :
{
< #LETTER: ["a"-"z","A"-"Z"] >
| < #DIGIT: ["0"-"9"]>
| < IDENTIFIER: <LETTER> ( <LETTER> | <DIGIT> | "_")* >
| < INTEGER: "0" | ("-")? ["1"-"9"] (<DIGIT>)* >
}
当然 IDENTIFIER 可能匹配保留字,所以你还需要处理那个方面。有关常用方法,请参阅常见问题解答。
如果这是一项作业,请务必引用此答案。
推荐阅读
- excel - Excel,试图将一个月中的天数拆分为全年的每月租金
- javascript - 尝试发送正文参数但 req.body 为空
- bootloader - 在 F28M36x 微控制器的引导加载程序中检测 USB 记忆棒的存在
- r - 在字符串向量中找到子字符串向量的第一个匹配项(每个都重复)
- excel - 将一列中的邮政编码拆分为 2 列
- security - 文件可以上传到服务器的攻击类型是什么?
- javascript - 从跨度到Angular 10中的按钮获取模板变量的值
- apache-superset - 将 CSV 数据附加到 Apache Superset 数据集
- angular - 将组件动态加载到 Angular 应用程序的正确模式
- sql-server - 调用 API 的 SQL Server 程序集