;
私はSMIEを使用して、ステートメントを終了する必要がない言語を解析しています。{}
行の終わりが中括弧構造( 、、)の外側にあり()
、[]
最後の非コメントトークンが演算子ではなかった場合\n
、ステートメントターミネータとして機能します。それ以外の場合、行の終わりが中括弧内にあるか、最後のトークンが演算子である場合、\n
継続として機能します。
例えば、
variable := 172 + 92;
variable := 172 + 92
variable :=
172 + 92;
variable :=
172 + 92
variable := (172 +
92)
すべて有効なステートメントです。だが、
variable
:= 172 + 92
ではありません。
これをSMIEのBNF文法(または初心者向けのBNF)にエンコードするにはどうすればよいですか?または、それは不可能ですか?
これをレクサーに入れて必要に応じてトークンを追加する方法を理解して;
いますが、可能であれば文法に入れたいと思います。