K.Maebashi's BBS 投稿フォーム
ハンドル名
件名
Link
>>疑問に思ったのは「123.456」を「123」を整数型トークン、「.」を例外トークン、 >>「456」の整数型トークンと判断する方法や、「1」,「2」「3」「.」「4」「5」「6」を >>全て例外トークンとして扱うこともできそうな気がするのですが、そうならない >>理由がわからないためです。 > >これは、lexがなぜ「123.456」を実数トークンとして解釈するのかがわからない、 >ということでしょうか? >lexは、「最長一致」でトークンを切り出します。つまり「123」や「1」よりも >「123.456」のほうが長いので、「123.456」は実数トークンとして解釈されます。 >それについては本の中ではp.39の一番下の段落で説明しています。 > >>また、整数トークンと実数トークン、"if"トークンと[ \t]トークンの関係から >>推測すると、例えば"for while other if"みたいな命令語もトークンとして >>定義できそうですが、その場合に.lファイルでの定義行(ルール順番)によっては >>動きが変わるものなのでしょうか? > >同じところに書いてある通り、lexはまず「最長一致」でトークンを切り出そうとし、 >長さが同じなら、より前の規則、つまり.lファイルでの定義行が上のほうである >規則を優先します。 > >>整数型の場合「....|"0"」と0をダブルクォーテーションで括っていますが、 >>電卓のケースでP.36では、「(....|0|([0-9]....)」と0をダブルクォーテーションで >>括っていません。この違いが上の判断条件に影響しているのでしょうか? > >これはどちらでも同じですね。なぜ片方だけダブルクォートで囲んだのかは、 >すみませんがさすがに思い出せません……
spamよけのため、ここに「ほげぴよ」と入力してください。
削除パスワード :
クリック!