字句解析フェーズ
前回の実装では、Verilogソースファイルをいきなりパースしていて
いわゆる字句解析フェーズが抜けています。
そのため、Verilogをパースする処理のなかで
ちまちまと空白文字を読み飛ばす羽目になっていて、冗長なソースになっています><
短い構文だと、えいやでパースできるのですが
Verilogの構文はちょっと長いし、今後、意味値(semantic value)を扱っていくことを考えると
字句解析フェーズを用意しておいたほうがよさそう、と思う次第です。
そこで、Haskell Parsecの Tokenライブラリを使っていくことにします。
import Text.ParserCombinators.Parsec.Token
http://legacy.cs.uu.nl/daan/parsec.html
のサイトの parsec-2.0.zip をダウンロードして、Token.hsというファイルを見ると
トークン処理の実装がわかります。
また、Token.hs には makeTokenParserという関数があります。
makeTokenParser :: LanguageDef st -> TokenParser st
これを使えば言語にあわせたトークンパーサ(字句解析器というのかな)を
生成することができるみたいなので、例えば verilogDefという定義を
用意しておくとよさそうな気がしてきました。
というわけで、ソースコードを書き換え中です。