2019-03-12から1日間の記事一覧

コンパイラ作成(3) Lexerクラス

# 字句解析 class Lexer # コンストラクタ def initialize(fname) @fname = fname # ソースファイルのファイル名 begin @io = File.open(@fname,"r") rescue SystemCallError => e puts %Q(class=[#{e.class}] message=[#{e.message}]) end # 1行先読み @li…

コンパイラ作成(2) rubyのenum

前回の続きで字句解析の中身をちょっとだけ。 # トークンの種類 enumの代わり module TK EOF = 1 # End of file ID = 2 # Identifire NUMBER = 3 # Number SYMBOL = 4 # Operator STRING = 5 # String UNKNOWN = 6 # Unkown token end rubyにはenumに相当す…