我正在使用 SMIE 来解析一种并不总是需要;
终止语句的语言。如果行尾位于大括号构造 ( {}
, ()
, []
) 之外,并且最后一个非注释标记不是运算符,则\n
充当语句终止符。否则,如果行尾在大括号结构内或最后一个标记是运算符,则\n
充当延续。
例如,
variable := 172 + 92;
variable := 172 + 92
variable :=
172 + 92;
variable :=
172 + 92
variable := (172 +
92)
都是有效的陈述。但,
variable
:= 172 + 92
不是。
我如何编码这是 SMIE 的 BNF 语法(或初学者的任何 BNF)?或者,这不可能吗?
我了解如何将其放入词法分析器并;
酌情添加标记,但如果可能的话,我宁愿将其放入语法中。