flexで遊ぶ。
今日も浅く広く。浅広。
なんとも楽しげなツールがある。その名もflex/bison。なんと、自作言語を作れちゃうのだ。聞いたことはあったけど、使ったことは無い。
さて、事始めにlexを試します。lexは字句解析担当です。受け取ったデータをトークン(字句)に分けると。
hello.l
%{ #include <stdio.h> %} %% [0-9]+ printf("[NUMBER]"); [a-zA-Z]+ printf("[WORD]"); %%
%{ 〜 %}までにC言語の宣言部分を書いて。%%〜%%までに字句解析を入れると。ふむふむ。
Makefile
all : flex hello.l cc lex.yy.c -o hello -lfl
後は実行するだけ。
$ make $ ./hello Hello, lex world!! [WORD], [WORD] [WORD]!! 123 + 456 + 789 [NUMBER] + [NUMBER] + [NUMBER]
見事に分割されてます。しかも、驚く程簡単に。電卓でも作って遊ぶかな。