【发布时间】:2016-03-17 11:06:10
【问题描述】:
我正在使用 Jison 作为带有角度前端的词法分析器/解析器生成器,在 JS 中编写 clike 语言的编译器。我几乎得到了我预期的结果,但有一件事让我感到困惑——如何让 Jison 忽略 cmets(/* block */ 和 // line)?
有什么简单的方法可以实现吗?请记住,注释可能会插入到任何语句/表达式的中间?
【问题讨论】:
标签: jison
我正在使用 Jison 作为带有角度前端的词法分析器/解析器生成器,在 JS 中编写 clike 语言的编译器。我几乎得到了我预期的结果,但有一件事让我感到困惑——如何让 Jison 忽略 cmets(/* block */ 和 // line)?
有什么简单的方法可以实现吗?请记住,注释可能会插入到任何语句/表达式的中间?
【问题讨论】:
标签: jison
您忽略 cmets 的方式与忽略空格相同:使用没有操作的词法分析器规则。
例如:
\s+ /* IGNORE */
"//".* /* IGNORE */
[/][*][^*]*[*]+([^/*][^*]*[*]+)*[/] /* IGNORE */
第一行忽略空格。第二个忽略单行 cmets。第三个忽略块 cmets。
【讨论】:
"/*"((\*+[^/*])|([^*]))*\**"*/"