18、无扫描器广义LR解析器的消歧过滤器与模块化静态程序分析

无扫描器广义LR解析器的消歧过滤器与模块化静态程序分析

无扫描器广义LR解析器(SGLR)

语法定义与应用

SGLR 相关技术涉及多种通用和特定领域语言的语法定义,如 Cobol、Java、SDL、Stratego、YACC 和 XML 等。许多语法定义是通过 XT 的语法操作工具从 LEX/YACC 定义半自动化重构而来,使得语法定义更加紧凑。基于 Sdf/SGLR 的解析器已在众多使用 XT 构建的项目中得到应用,涵盖软件翻新、语法恢复、程序优化和编译器构建等领域。

基准测试

对 SGLR 实现进行了基准测试,通过解析大量大文件并测量用户时间。以下是相关测试结果:
- 解析速度
| 语法 | 平均文件大小 | 有过滤器和解析树构建时的字符/秒 | 无过滤器和解析树构建时的字符/秒 |
| ---- | ---- | ---- | ---- |
| ATerms | 106,000 字符 | 108,000 | 340,000 |
| BibTEX | 455,000 字符 | 85,000 | 405,000 |
| Box | 80,000 字符 | 34,000 | 368,000 |
| Cobol | 170,000 字符 | 58,000 | 146,000 |
| Java | 105,000 字符 | 37,000 | 210,000 |
| Java (LR1) | 105,000 字符 | 53,000 | 242,000 |

从这个表格可以看出,解析器速度足以满足工业应用。同时,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值