パーサのアイディアが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, "+")
とすると、+が左結合演算子として定義できる機能をつけました。