実験室




   

14/15 03-03-13 01:00:36  T-Satoh

コンパイラ/インタープリッタの制作
コンパイラかインタープリッタを作りたいと思い、字句解析と構文解析部を作って います。 (以前yaccを使った電卓を作成しましたが、今度は構文解析まで手作りです)  次のようなCライクのソースコードを解析させると黄色文字のように解析結果が 出力されます。 〜〜〜 ソースコード 〜〜〜 /*   コンパイラ構文解析試験ソース     made by T.Satoh 2003/03/12 */ print( "start" ); if( (a == 123) || !(a==~3)) { a = 1+2*(3-4)/5 if( b == 234 ) { print( "123" ); } a = abs( -1 ); print( "end of then" ); } else { print( "else" ); } print( "bye" ); 〜〜〜 ここまで 〜〜〜  解析結果は次のとおり(インデントはソース状態にかかわらず自動整形されます) ** error 8行目 : ';'がありません <call print[start]> {if <<a==123>||<!<a==<~3>>>> then <a=<1+<<2*<3-4>>/5>>> {if <b==234> then <call print[123]> } <a=<call abs[<-1>]>> <call print[end of then]> else <call print[else]> } <call print[bye]>