1

我正在编写类似于 javascript 的语言解析器,其中包含分号插入 ex:

var x = 1 + 2;
x;

var x = 1 + 2

x

乃至

var x = 1 +
2
x

是相同的。

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

4

1 回答 1

0

这已经有一段时间没有答案了。我不明白为什么您不能将语句分隔符设为换行符**或*分号。有点像这样:

whitespace    [ \t]+
%%
{whitespace}    /* Skip */
;[\n]*        return(SEMICOLON);
[\n]+         return(SEMICOLON);

那么你的语法一点也不乱,因为你只得到语法中的分号。

于 2015-01-23T15:20:50.117 回答