我试图用sed和正则表达式从VHDL文件中删除所有评论。Sed + RegEx从VHDL文件中删除评论
VHDL注释以 - 开头,在此之后的其余部分是注释。
我的第一种方法是: SED -i的/--.*// G'file.vhdl
这将删除所有的意见,但该文件还可以包含任务与不用管它:符号 - 。因此,分配sig1 < =“11--000”也会受到影响。另外,分配可以是连接,如sig1 < =“0--”&“ - 1”。覆盖所有这些情况是否有很好的正则表达式?也许匹配从行尾,因为赋值行必须以a结尾; ?
的测试文件,它涵盖了所有的情况:
-- comment start of line
architecture beh of ent_name is
signal sig1 : std_logic_vector(6 downto 0); -- comment end of line
begin
proc: process (sensitivity)
begin
sig1 <= "0--11-1"; -- another comment
sig1 <= "0--11--";
sig1 <= "00--" & "--1"; -- yet another
sig1 <= "00--" & "--1";
end process proc;
end beh;
谢谢!
出于兴趣,您有什么理由删除评论? –
这些文件是用户提交的文件,会自动检查某些关键字。例如。学生必须使用预定义的实体,因此我检查实体名称的发生。我不希望他们通过将该名称作为评论来欺骗系统。或者,例如,如果我禁止等待语句,并且有人在等待中写入注释,它将被拒绝。 – MartinM
哦,好主意。万一它很重要,您的测试代码不会涵盖评论内部有双引号的情况。 –