verilog
Verilogファイルから、抽象構文木を生成できるようにしました。 処理できる構文はまだまだ限定的ですが。。 Haskell Parsecで直接扱うことのできない左再帰の構文を 右再帰に変形している部分があるのですが (expression構文のところ) ここをパースして右再…
とりあえず Verilogのシンタックスチェックできる程度、ということで (意味解析してないから、たとえば入力ポートの信号と input宣言の信号が合ってなくても文句言わないくらいザルですし) 遠くを見ると気を失いそうになるのですが わからないことを書き出…
Verilogパーサを書き進めていくと、Verilog構文の左再帰に遭遇します。 Haskell Parsecは再帰下降パーサということで、左再帰の構文をそのまま書くと stack overflowを起こしてうまく処理を続けられません。 うまいこと左再帰を除去(右再帰に置き換える)す…
今週にはいって風邪をひいたりして、あまり作業を進められていないのですが とはいえ、溜め込むと書くのが億劫になってしまうので、少しでも書いておこうと思います。 前回、とりあえず Vparsecという名前で書いています - kei-os2007 against the machine!!…
参考にしている BNF、違っている箇所がいくつかあるか。 input_declarationは明らかにおかしいと思うけど。 Draftなので仕方ないっちゃー仕方ないので 適宜 BNFを修正しながら進めますか。 参考書籍をひっぱりだす。 appendixに BNFが出ています。 (これも …
githubで開発を進めるのは初めてですが、習うより慣れろでいくことにします。 とりあえずリポジトリを作りました。 はてダにソースをちまちま貼っていくのも、やがて限界がくるだろうし。 http://github.com/kei-os/vparsec/tree/master なんか、こんなの置…
前回の実装では、Verilogソースファイルをいきなりパースしていて いわゆる字句解析フェーズが抜けています。 そのため、Verilogをパースする処理のなかで ちまちまと空白文字を読み飛ばす羽目になっていて、冗長なソースになっています>< 短い構文だと、…
とりあえず Parsecをちゃんと使えてるかどうかをチェックしたいので semantic valueの処理は全然作り込んでいなくて パースした文字列を表示する処理だけ書いています。 declarationを書いているのだけど、どんどん繋がっていってキリがないので 一旦 module…
Haskell Parsecで Verilogをパースする際に参照する BNF資料は verilog.comのサイトのものを使うことにしました。Verilog Formal Syntax Specification 誰もが自由に参照できる資料、ということで。
今年の 3月頃に、yacc/lexで Verilogパーサを書き始めていたのだけど... Verilogパーサ - kei-os2007 against the machine!! 書きかけのコードを入れていた PowerBook G4を失ってしまい、それっきりになっていた>< 大敗 - kei-os2007 against the machine!…