解析 – PEG.js – 如何解析c风格的评论?

前端之家收集整理的这篇文章主要介绍了解析 – PEG.js – 如何解析c风格的评论?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
实现一个基于peg.js的解析器,我无法添加代码来处理c风格的注释/ *像这样* /.

我需要找到结束标记而不吃它.

这不起作用:

multi = '/*' .* '*/'

消息是:

line: 14
Expected "*/" or any character but end of input found.

我明白为什么这不起作用,但不幸的是我不知道如何使评论解析功能.

这是迄今为止的代码

start = item*

item = comment / content_line

content_line = _ p:content _ {return ['CONTENT',p]}

content = 'some' / 'legal' / 'values'

comment = _ p:(single / multi) {return ['COMMENT',p]}

single = '//' p:([^\n]*) {return p.join('')}

multi = 'TODO'


_ = [ \t\r\n]* {return null}

和一些样本输入:

// line comment,no problems here

/*
  how to parse this ??
*/

values

// another comment

some legal

解决方法

使用前瞻的谓词并确保在匹配字符之前字符流中没有“* /”:
comment
 = "/*" (!"*/" .)* "*/"

(!“* /”.)部分可以如下读取:当前面没有’* /’时,匹配任何字符.

这将成功匹配这样的评论:/ * … ** /

原文链接:https://www.f2er.com/js/158975.html

猜你在找的JavaScript相关文章