expr最後に、exprへ連結する。rubyの式は文法上はかなり小さい。んどargに行ってしまっているからだ。ものが残っているということになる。これまたメソッド呼び出し括弧の省略組である。引数リストで、command_callは先程言ったとおり括弧省略メソッドのこと。ういうものを「小さい」単位に入れると衝突しまくることになる。以下の二つだけは種類が違う。exprkANDは「and」でkORは「or」。command_call以上に「大きい」構文単位に入れなければならない。command_callはexprにある。連結されてしまうことになる。arg'当然パースエラーだ。primary規則の数は多いが、文法の複雑さは規則の数には比例しない。再帰のほうが複雑さに影響する。実質上ただの列挙にすぎない。そこでargの規則からそういう「ただの列挙」を併合して削ってしまおう。ような前置型演算子、T_infixは'*'や'%'と言った二項演算子を表す。(ただしこれが全てではない)。T_infixが'='を含まないことargはlhsと部分的に重なるので'='があると規則1と3が区別できない。T_opeqとT_infixが共通項を持たないことargはprimaryを含むから共通項を持つと規則2と3が区別できない。conflictを起こす。T_preが'?'や':'を含まないもし含むと規則4と5がかなり複雑に衝突する。結論としては全ての条件が成立しているので、この文法は衝突しない。primaryprimaryは規則が多いので最初から分割して示す。qwordsリテラル類。literalはSymbolリテラル(:sym)と数値。var_refはローカル変数やインスタンス変数など。