パーサのアイディアが2つほど。

①すべてのアトムみたいなのには、括弧をつけておくと扱いやすい。


aはa
a()(a (@paren))

構文解析してたところを


aは(a)
a()(a (@paren))


にすると、カッコがついていようがついていまいが同じ形なので扱いやすくなる。


②行番号や位置番号をArrayのプロパティに設定する。

JavaのEPPのようなことをやりたいっていうことで、構文解析結果にline情報などを
入れておきたいと考えてました。それで、

aは["id", "a", "2", "3"]
のようにしてましたが、2行目の3文字目と言う風にしていたのですが、


aを

l=["a"]
l.line = line
l.pos = pos

とすることで、すっきり出来ました。

演算子定義構文

#left(0, "+")

とすると、+が左結合演算子として定義できる機能をつけました。