tombo2-progress’s diary

できるだけ毎日1時間を切り取ってここに晒す。誤字脱字気にしない。日本語が崩壊するのも気にしない。最終的にまとめて本ブログに書く

コンパイラ入門実践 その1

最近調子が良いけど、やはり定期的なアウトプットをしたほうが良さそう。 ということで現状を書いておく。コンパイラ学習の調子は良くないw

現状

Computer Science Library9のコンパイラ入門を読みつつbison, flexで簡単な言語のコンパイラを作ってみている。

この本のSL1を解析してCSTを作る途中。

yacc, lexの写経、include周りを修正したのが↓

Fix include settings · tom--bo/compiler-study@1a15a28 · GitHub

コンパイル方法

bison -d mycc/parser.y
flex --header-file=lex.yy.h mycc/lexer.l
# bison, flex結果をcfiles dirに移動
gcc -I cfiles cfiles/*.c -o ./parser

todo

  • 宣言部がどう変換されるのか

parserでlexのheaderをincludeするのに宣言部で

%{
  #include "lex.yy.h"  
%}

するとちゃんとヘッダーが読めたがこのあたりがどうファイルに入っているか確認しないといけない。

  • LALRの構文規則を左再帰で書くか、右再帰で書くかの違い

SL1の拡張SL2案

  • PrintStmtsをプログラム中のどこでもかける蝶にする
  • 型推論を試す。変数宣言にvarとか入れる