如何避免使用Java正则表达式预处理字符串文本中的注释
我正在为我这学期的课程编译器构建做一个小项目
我现在正在用Java语言为Java语言设计扫描仪部分。 此扫描程序将生成令牌,稍后将用于解析器
我所做的大部分工作都是使用Java正则表达式。 我目前面临的问题是,当我预处理代码以删除内联&;多行注释,它还删除字符串文本中的注释(如果有)。 我正在使用以下正则表达式:
String regExPreProcess = "((?s)(/\\*.*?\\*/|/\\*.*))|(//.*)"
有人能解释一下这个问题吗。我试过向前看&;lookback功能也是如此,但问题仍然存在
# 1 楼答案
首先需要对内联和块(多行)注释进行正式定义
比如:
如您所见,这些定义中存在循环依赖关系。正则表达式不适合这个问题。您需要按顺序处理输入文本:检测开始标记并忽略所有内容,直到相应的结束标记