System verilog parserを試しに作ってみている

モジュールの入出力信号を自動抽出して、csvか何かファイルに出力できたら便利だと思ったので、試しにSystem verilogのparserを作ってみようとしました。で、以下System Verilogの言語仕様を読んでみたんですが、難しい笑

http://www.ece.uah.edu/~gaede/cpe526/SystemVerilog_3.1a.pdf
Annex A Formal syntax definition

まぁ言語仕様の内容理解は置いといても入出力くらいならなんとかなるかと思い、適当に以下pythonのライブラリを使用して作成しています。

GitHub - lark-parser/lark: A modern parsing library for Python, implementing Earley & LALR(1) and an easy interface

ひとまず簡単なソースコードでできるようになったので、 実績として適当にriscvのコードを使用してみて絶望しました。 以下のようなifdefの記載があったんです、、プリプロセッサが必要ということか、、 なぜか↑のSystem Verilog仕様にはifdefが定義されていないようですが、以下にはありました。 なので、次はプリプロセッサを進めてみようと思います。

http://www-inst.eecs.berkeley.edu/~cs150/fa06/Labs/verilog-ieee
19. Compiler directives

`ifdef xxxx
    input   logic xxx,
`else
    input   logic  yyy,
`endif // xxxx