我正在编写类似于 javascript 的语言解析器,其中包含分号插入 ex:
var x = 1 + 2;
x;
和
var x = 1 + 2
x
乃至
var x = 1 +
2
x
是相同的。
现在,我的词法分析器仅在它出现在与分号不同的标记之后才匹配换行符(\n )。这在 1 和 2 等基本情况下很好,但我如何处理第三种情况?即在表达式中间出现新行。我不能每次都匹配新行,因为它会污染我的解析器(在任何地方插入带有换行符的替代项),而且我也根本无法匹配它们,因为它是语句终止符。基本上,如果那里有换行符或分号,我最好在解析语句结束时以某种方式检查。