※ ChatGPTを利用し、要約された質問です(原文:秀丸での正規表現:複雑な条件を指定する場合 続き)
秀丸での正規表現:複雑な条件を指定する場合
このQ&Aのポイント
Verilog-HDLというハードウェア記述言語での話です。サブモジュールのインスタンス記述を強調したいと思っていますが、それ以外にも特定の記述で誤マッチしてしまう問題があります。
他者のコードも受け入れる関係上、サブモジュールインスタンス記述の条件を正確に表現する方法に悩んでいます。
インスタンス記述に関連する正規表現パターンについても検討しています。
この質問は、
http://okwave.jp/qa/q8757880.html
の続きです。
具体的な事を全然書いてませんでした。すみません。
Verilog-HDLというハードウェア記述言語での話です。
上記であげたパターンは、サブモジュールのインスタンス記述
(プログラムで言うサブルーチン呼び出しのようなもの)です。
サブモジュールのインスタンス記述を強調したいと思っていますが、それ以外にも
always @(posedge clk)begin
if(xxx)begin
...
end
else if(yyy)begin //←ここで誤検出
...
end
end
というサブモジュールでない記述で誤マッチしてしまうのです。
話それてしまいますが
always @(posedge clk)begin
if(xxx)begin
...
end
else begin
if(yyy)begin
...
end
end
end
とかけばよい、という手もあるのですが、他者のコードも受け入れる関係上、その手も難しいのが実情です。
話が前後してしまいましたがサブモジュールインスタンス記述は、
sub_mod_name instance_name ( ....
のようになっており、1語目、2語目ともに任意の文字列となっています。
else ifともに言語上の予約語であり、これはインスタンス記述にはなり得ません。
『これにマッチする正規表現」かつ『else if(』にはマッチしないというのは、そもそも『ひとつの正規表現』では表せないのかと悩んでおります。
長くなりすみません。
なにか抜けている点などありましたらご指摘頂けると助かります。
お礼
コメント有難うございます。 後方不一致の考え方を勉強してみようと思います。これで凌げそうです。 お察しの通り、予約語はこれ以外にも多数あり、インスタンス記述の誤検出になる可能性はこれからも出てくると思います。その都度ルールに追加、という運用が落とし所としてはベストかもしれません。 アドバイスのおかげでこの発想に至らせて頂きました。有難うございます! \w\dの類のキーワードについても、スッキリするので積極使用していきたいと思います。