K.Maebashi's BBS 削除ページ

以下の投稿を削除します。

[2125] 【質問】lexのトークン判断優先方法(プログラミング言語を作る3章質問その1)
返信
投稿者:mano
2018/04/24 07:02:35

たびたびお邪魔します。 3章途中まで読み進めたのですが、わからないところがあったので教えてください。 P.102のcrowbar.lのソースで、59行目で整数型「([1-9][0-9]*)|"0"」、65行目で実数型「0-9]+\.[0-9]+」、78行目で例外「.」のトークンを切り分けているように見えます。 入力が、「123.456」だった場合、なぜ実数型のトークンと判断されるのでしょうか? 疑問に思ったのは「123.456」を「123」を整数型トークン、「.」を例外トークン、「456」の整数型トークンと判断する方法や、「1」,「2」「3」「.」「4」「5」「6」を全て例外トークンとして扱うこともできそうな気がするのですが、そうならない理由がわからないためです。 (済みません。書籍に記述があるのに私が読み飛ばしてしまっているだけかもしれません。) また、整数トークンと実数トークン、"if"トークンと[ \t]トークンの関係から推測すると、例えば"for while other if"みたいな命令語もトークンとして定義できそうですが、その場合に.lファイルでの定義行(ルール順番)によっては動きが変わるものなのでしょうか? 整数型の場合「....|"0"」と0をダブルクォーテーションで括っていますが、電卓のケースでP.36では、「(....|0|([0-9]....)」と0をダブルクォーテーションで括っていません。この違いが上の判断条件に影響しているのでしょうか?
パスワード:

管理者削除