diff --git a/lexers/s/systemverilog.go b/lexers/s/systemverilog.go index 21021a2..85c459f 100644 --- a/lexers/s/systemverilog.go +++ b/lexers/s/systemverilog.go @@ -18,6 +18,7 @@ var Systemverilog = internal.Register(MustNewLexer( "root": { {"^\\s*`define", CommentPreproc, Push("macro")}, {`^(\s*)(package)(\s+)`, ByGroups(Text, KeywordNamespace, Text), nil}, + {`^(\s*)(import)(\s+)("DPI(?:-C)?")(\s+)`, ByGroups(Text, KeywordNamespace, Text, LiteralString, Text), nil}, {`^(\s*)(import)(\s+)`, ByGroups(Text, KeywordNamespace, Text), Push("import")}, {`\n`, Text, nil}, {`\s+`, Text, nil}, diff --git a/lexers/testdata/systemverilog.actual b/lexers/testdata/systemverilog.actual new file mode 100644 index 0000000..1f7fcc5 --- /dev/null +++ b/lexers/testdata/systemverilog.actual @@ -0,0 +1,11 @@ +// Comment + +program top; + + import "DPI-C" hello=task hello(); + + initial begin + hello(); + end + +endprogram : top diff --git a/lexers/testdata/systemverilog.expected b/lexers/testdata/systemverilog.expected new file mode 100644 index 0000000..6b55663 --- /dev/null +++ b/lexers/testdata/systemverilog.expected @@ -0,0 +1,35 @@ +[ + {"type":"CommentSingle","value":"// Comment\n"}, + {"type":"Text","value":"\n"}, + {"type":"Keyword","value":"program"}, + {"type":"Text","value":" "}, + {"type":"Name","value":"top"}, + {"type":"Punctuation","value":";"}, + {"type":"Text","value":"\n\n "}, + {"type":"KeywordNamespace","value":"import"}, + {"type":"Text","value":" "}, + {"type":"LiteralString","value":"\"DPI-C\""}, + {"type":"Text","value":" "}, + {"type":"Name","value":"hello"}, + {"type":"Operator","value":"="}, + {"type":"Keyword","value":"task"}, + {"type":"Text","value":" "}, + {"type":"Name","value":"hello"}, + {"type":"Punctuation","value":"();"}, + {"type":"Text","value":"\n\n "}, + {"type":"Keyword","value":"initial"}, + {"type":"Text","value":" "}, + {"type":"Keyword","value":"begin"}, + {"type":"Text","value":"\n "}, + {"type":"Name","value":"hello"}, + {"type":"Punctuation","value":"();"}, + {"type":"Text","value":"\n "}, + {"type":"Keyword","value":"end"}, + {"type":"Text","value":"\n\n"}, + {"type":"Keyword","value":"endprogram"}, + {"type":"Text","value":" "}, + {"type":"Operator","value":":"}, + {"type":"Text","value":" "}, + {"type":"Name","value":"top"}, + {"type":"Text","value":"\n"} +]