字句解析フェーズ


前回の実装では、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という定義を
用意しておくとよさそうな気がしてきました。


というわけで、ソースコードを書き換え中です。