verilog

Verilogパーサで抽象構文木を生成するようにした

Verilogファイルから、抽象構文木を生成できるようにしました。 処理できる構文はまだまだ限定的ですが。。 Haskell Parsecで直接扱うことのできない左再帰の構文を 右再帰に変形している部分があるのですが (expression構文のところ) ここをパースして右再…

抽象構文木をどうしようかと

とりあえず Verilogのシンタックスチェックできる程度、ということで (意味解析してないから、たとえば入力ポートの信号と input宣言の信号が合ってなくても文句言わないくらいザルですし) 遠くを見ると気を失いそうになるのですが わからないことを書き出…

左再帰の除去についてプチまとめ

Verilogパーサを書き進めていくと、Verilog構文の左再帰に遭遇します。 Haskell Parsecは再帰下降パーサということで、左再帰の構文をそのまま書くと stack overflowを起こしてうまく処理を続けられません。 うまいこと左再帰を除去(右再帰に置き換える)す…

lexemeパーサを使うようにした

今週にはいって風邪をひいたりして、あまり作業を進められていないのですが とはいえ、溜め込むと書くのが億劫になってしまうので、少しでも書いておこうと思います。 前回、とりあえず Vparsecという名前で書いています - kei-os2007 against the machine!!…

BNFが違うかな

参考にしている BNF、違っている箇所がいくつかあるか。 input_declarationは明らかにおかしいと思うけど。 Draftなので仕方ないっちゃー仕方ないので 適宜 BNFを修正しながら進めますか。 参考書籍をひっぱりだす。 appendixに BNFが出ています。 (これも …

githubに vparsecリポジトリを作りました

githubで開発を進めるのは初めてですが、習うより慣れろでいくことにします。 とりあえずリポジトリを作りました。 はてダにソースをちまちま貼っていくのも、やがて限界がくるだろうし。 http://github.com/kei-os/vparsec/tree/master なんか、こんなの置…

字句解析フェーズ

前回の実装では、Verilogソースファイルをいきなりパースしていて いわゆる字句解析フェーズが抜けています。 そのため、Verilogをパースする処理のなかで ちまちまと空白文字を読み飛ばす羽目になっていて、冗長なソースになっています>< 短い構文だと、…

とりあえず Vparsecという名前で書いています

とりあえず Parsecをちゃんと使えてるかどうかをチェックしたいので semantic valueの処理は全然作り込んでいなくて パースした文字列を表示する処理だけ書いています。 declarationを書いているのだけど、どんどん繋がっていってキリがないので 一旦 module…

Verilog 1995 BNF

Haskell Parsecで Verilogをパースする際に参照する BNF資料は verilog.comのサイトのものを使うことにしました。Verilog Formal Syntax Specification 誰もが自由に参照できる資料、ということで。

Haskellの Parsec使って Verilogパーサを書こうかと

今年の 3月頃に、yacc/lexで Verilogパーサを書き始めていたのだけど... Verilogパーサ - kei-os2007 against the machine!! 書きかけのコードを入れていた PowerBook G4を失ってしまい、それっきりになっていた>< 大敗 - kei-os2007 against the machine!…