以下のメッセージを削除します。


[1509] 「1回以上の繰り返し」の定義
返信


投稿者:yuya
2010/03/08 09:19:49

Link:
「プログラミング言語を作る」p43〜p44にかけてのソースに、

expression /* 「式」とは… */
        : primary_expression  /* 「一次式」、 */
        | expression ADD expression /* または、「式」 + 「式」 */
        (以下略)

とあるのを見て、はたと疑問に思いました。

これって、

expression /* 「式」とは… */
        : primary_expression  /* 「一次式」、 */
        | expression ADD primary_expression /* または、「式」 + 「一次式」 */
        (以下略)

としなくてもよいのでしょうか?

他のソースではそうなっているので、反射的に「あっ、間違いだ!」と思ってしまったのですが、
よく考えると、これでもいいような気がします。

一般に、「hoge は piyo の1回以上の繰り返しである」という定義を、

hoge
        : piyo
        | hoge piyo

と書かずに

hoge
        : piyo
        | hoge hoge

と書いてはいけない理由って、何かありますでしょうか?

パスワード:

管理者削除