フゥ!タノシー!

土日を使って計算モデル論のレポートを終わらせ、月曜からフルに愚者る準備万端ですね。みんないつ試験終わるんだろ。日中は外が危険すぎたのでレポートと非想天則をやってました。日も落ちてきたし食事とインクでも買いに行くか…。インクは犠牲になったのだ…。通信理論の犠牲にな。

  • マリサ 2-1
    • 終戦で世紀末人形立ち回りゲームを理解されて分からせ損ねた。
  • イク 1-2
    • ついに現れたJ2A厨の典型的害悪タイプだったが、花曇で甘えた槍がスカってJ2Aが確定して超ドリルで死んでしまった。その上高飛び人形扱いを受ける羽目に。絶対許早苗。
  • レミリア 3-0
    • ワカラセター。
  • アヤ 3-0
    • ワカラセター。

なんかやっぱり終盤での(DA >)千槍が強すぎる。終盤で本当に欲しいのは攻め続行でも有利状況でもゲージでも何でもなくダメージそのものだからなあ。


shift/reduce競合が生じないようにしなさい→数式とかぶら下がりif-elseとかよくあるところを見ても特に曖昧性は見当たらないけど…→そもそもこれ再帰下降型の手書きパーザなのにshift/reduce conflictなんて起こるのか?→shift/reduce競合でぐぐる→なんか全く同じ課題が見つかる→「言語処理系特論」→なるほど本職(?)の大学(院)の授業かこれ→なんかこれコンパイラコンパイラへのソースくさいぞ→Makefileを見る→ocamlyacc/ocamllex→ナルホドナルホド


答え:lex/yaccで生成するコンパイラの改造課題を手書きレキサ・パーザの改造課題としてまるまるコピー


yytextやyylineno(ocamllexで使えるかは知らん)が使えなかったりでめんどくさかったり出力が不親切になったりして仕方ないね。また、新しいトークンを追加したい場合、lexで追加するのと手書きレキサに追加するのとでは明らかに難易度が違います。あとshift/reduce conflictは存在しないのでどう頑張っても除去できません。数式は文法(生成規則)でしっかり定義してあるし、if-elseも期待する、elseを最寄りのifに対応させる動作になっている(ように見えます)。なお、4番以降はOCamlの文法がどうのこうのの上に、さらにJavaバイトコードの理解が必要です。
何度でも言いますが、信者は(ry