- 266 名前:227 mailto:sage [2010/01/23(土) 00:12:26 ]
- >>261, >>263
知らなかった。確かに違う。> a +b と a + b で意味が違う この辺、複雑なルールなのに穴に落ちる事が少なく 普通の使用者は気がつかないようになってるのが、凄いですね。 本当にRubyの作者はアホですね。 このRubyのやつとか、Perlの関数名によってパース結果が変わるのとか、 真似するのはやめるべきですね。シンプルよりも使いやすさを求めるのではなく、 許容できない使いにくさが無い範囲でシンプルな文法を目指したいですね。 >>246 で書いた文法の場合、正確に文法を書くとすると、 関数呼び出し ← id ( '('? (式 ',')+ ')'? / '()' ) 参照 ← id にしようと考えています。( ?は省略可能, /はor, +は一回以上の繰り返し) 要は、idの後ろからその式の終端までに他の式があれば 関数呼び出しとして扱うつもりです。 LL(1)だと、 a(1) と a = 1 が両方パースできません。 PEG文法の範囲の文法が使いやすくて良いと思います。パーサの実装も楽です。 LLだと無限大相当ですが。
|

|