過去の投稿記事 new!
・【画像】漫画でわかる外国人参政権
・東京電力のHPで停電状態が確認できたり(サービス再開!)
・戦国時代 ~ 江戸時代の徳川家康が熱かった
・vaio のバッテリは寿命が短いような気がする
・話題の Western Digital 製 WD20EARS を購入した
・C01LC をビックカメラで買ってきた
・2025年には空中都市が現実化?!
・【動画】わかりやすい「宇宙ひも理論」
・今世紀には「富士山噴火」「東海連動地震」「首都圏直下型地震」か?
・滅びた町、南浜町が Googleストリートビューで見れる

【 amazon 送料無料キャンペーン 】

バックリンクはご自由にどうぞ!     http://mfsocket.blogspot.com/feeds/posts/default?alt=rss リンク集 / ログイン

2007/02/10
コンパイラ近況 その1

本日は、昨日のブログで宣言したメインテーマと早速 違う議題 にします(ぉ
 
今、複数の判定文が入り乱れるときの処理にすごい悩んでます。
例えばこういう場合↓
 var a, b;
 if( (a==0 && b==0) || (a==-1 && b==-1) ){
 
ジャンプ命令の生成(※1) をする時どんどん複雑になっていくのですよ( ´д`)

ここ2日間色々やって、下記の場合とかは対応できるようになったのですが(※2)
/////////////////////////////////////////////////////
 if( a==0 || a==-1 && b==-1 )
 if( a==0 && a==-1 || b==-1 )
 if( (a==0 && a==-1) || b==-1 )
 if( a==0 || a==-1 &&  b==-1 )

 if( (a==0 || a==-1) &&  b==-1 )
/////////////////////////////////////////////////////
      ※1 ジャンプ命令とはアセンブルコードのお話で、ここでは
          C言語の goto 命令と思って下さい。
      ※2 書いているコードに意味はありません。

今の実装では、判定文の解析が一時凌ぎに過ぎないのがよく身に染みました( ´д⊂
しかし色々考え作っていくと普通の C/Javaコンパイラと遜色の無いものになってしまうし、
そこまでの気力は無いのでここは【妥協】しようと思っています。
 
【独自コンパイラ(仮)の妥協案 その1】
◆ if/while には一つの条件しかかけない。
 
もちろん下記のように else / else if などが込み合った場合は通常どおり
サポートしています。
////////////////////////////////////////////////////////
 if( !a ){
    if( b ){
    }else{
    }
 }else if( a==1 ){
    if( b ){
    }else{
    }
 }else if( a==2 ){
    if( b ){
    }else{
    }
 }else{
 }
////////////////////////////////////////////////////////
 
今日は唐突に if文の近況ついて書きましたが、次はサポートしている命令/構文でもかこうと思います~。
コンパイラの仕様詳細については完成が近くなった時にでも紹介しよっかな( ´д`)
 
あーー何か塩ラーメンが食べたくなりますた( ´д`)

0 コメント:

  • コメントには <b>, <strong>, <em>, <i>, <a> など一部の HTML タグを使用できます。