From 9c160c3d20b6a22b49b60be0dd363b256a195def Mon Sep 17 00:00:00 2001 From: Zachary Snow Date: Sat, 3 Aug 2019 21:50:26 -0400 Subject: [PATCH] added support for package imports in module headers --- src/Language/SystemVerilog/Parser/Parse.y | 11 +++++++++-- test/basic/header_import.sv | 10 ++++++++++ test/basic/header_import.v | 6 ++++++ 3 files changed, 25 insertions(+), 2 deletions(-) create mode 100644 test/basic/header_import.sv create mode 100644 test/basic/header_import.v diff --git a/src/Language/SystemVerilog/Parser/Parse.y b/src/Language/SystemVerilog/Parser/Parse.y index a8b6c60..385845b 100644 --- a/src/Language/SystemVerilog/Parser/Parse.y +++ b/src/Language/SystemVerilog/Parser/Parse.y @@ -336,8 +336,8 @@ Packing :: { Packing } | {- empty -} { Unpacked } Part(begin, end) :: { Description } - : begin opt(Lifetime) Identifier Params PortDecls ";" ModuleItems end opt(Tag) { Part False $1 $2 $3 (fst $5) ($4 ++ (snd $5) ++ $7) } - | "extern" begin opt(Lifetime) Identifier Params PortDecls ";" { Part True $2 $3 $4 (fst $6) ($5 ++ (snd $6) ) } + : begin opt(Lifetime) Identifier PackageImportDeclarations Params PortDecls ";" ModuleItems end opt(Tag) { Part False $1 $2 $3 (fst $6) ($4 ++ $5 ++ (snd $6) ++ $8) } + | "extern" begin opt(Lifetime) Identifier PackageImportDeclarations Params PortDecls ";" { Part True $2 $3 $4 (fst $7) ($5 ++ $6 ++ (snd $7) ) } ModuleKW :: { PartKW } : "module" { Module } @@ -350,6 +350,13 @@ PackageDeclaration :: { Description } Tag :: { Identifier } : ":" Identifier { $2 } +PackageImportDeclarations :: { [ModuleItem] } + : PackageImportDeclaration PackageImportDeclarations { $1 ++ $2 } + | {- empty -} { [] } + +PackageImportDeclaration :: { [ModuleItem] } + : "import" PackageImportItems ";" { map (MIPackageItem . uncurry Import) $2 } + Params :: { [ModuleItem] } : {- empty -} { [] } | "#" "(" ParamDecls { $3 } diff --git a/test/basic/header_import.sv b/test/basic/header_import.sv new file mode 100644 index 0000000..76ab70b --- /dev/null +++ b/test/basic/header_import.sv @@ -0,0 +1,10 @@ +package P; + localparam FOO = 10; +endpackage +module top + import P::FOO; + ; + initial begin + $display(FOO); + end +endmodule diff --git a/test/basic/header_import.v b/test/basic/header_import.v new file mode 100644 index 0000000..091fd81 --- /dev/null +++ b/test/basic/header_import.v @@ -0,0 +1,6 @@ +module top; + localparam P_FOO = 10; + initial begin + $display(P_FOO); + end +endmodule