diff --git a/grammars/verilogPreprocLexer.g4 b/grammars/verilogPreprocLexer.g4 index 8fb4adec..59cc0ee2 100644 --- a/grammars/verilogPreprocLexer.g4 +++ b/grammars/verilogPreprocLexer.g4 @@ -359,11 +359,15 @@ mode KEYWOORDS_MODE; // include argument processing mode INCLUDE_MODE; INCLUDE_MODE_STR - : STR -> type(STR),popMode + : STR -> type(STR) ; + INCLUDE_MODE_STR_CHEVRONS - : '<' ( ~('\\'|'>') )* '>' -> type(STR),popMode + : '<' ( ~('\\'|'>') )* '>' -> type(STR) ; + INCLUDE_LINE_COMMENT : LINE_COMMENT -> popMode,type(LINE_COMMENT),channel(CH_LINE_COMMENT); + INCLUDE_MODE_NEW_LINE: CRLF -> type(NEW_LINE),popMode,skip; + INCLUDE_MODE_MACRO_ENTER: '`' -> popMode,pushMode(DIRECTIVE_MODE),skip; INCLUDE_MODE_WS : WS ->skip; diff --git a/src/verilogPreproc/out_buffer.cpp b/src/verilogPreproc/out_buffer.cpp index 68d863e5..ee11c42d 100644 --- a/src/verilogPreproc/out_buffer.cpp +++ b/src/verilogPreproc/out_buffer.cpp @@ -60,7 +60,6 @@ VerilogPreprocOutBuffer& VerilogPreprocOutBuffer::operator<<( VerilogPreprocOutBuffer& VerilogPreprocOutBuffer::operator<<( const VerilogPreprocOutBuffer &other) { - (*this) << endl; (*static_cast(this)) << other.str(); for (auto &i : other.file_line_map) { FileLineMapItem i_new(i.line + output_line, i.file_override, diff --git a/tests/sv_pp/expected/debug_macro.txt b/tests/sv_pp/expected/debug_macro.txt index a1a5103d..8a8ee519 100644 --- a/tests/sv_pp/expected/debug_macro.txt +++ b/tests/sv_pp/expected/debug_macro.txt @@ -5,6 +5,4 @@ - - $display(">> %s, %d: %s", "sv_pp/src/debug_macro.txt", 3, "msg") diff --git a/tests/sv_pp/expected/include_many_dir/dir0-a/dir1-a/spec_incdir.txt b/tests/sv_pp/expected/include_many_dir/dir0-a/dir1-a/spec_incdir.txt index 807a1ca1..1124e96b 100644 --- a/tests/sv_pp/expected/include_many_dir/dir0-a/dir1-a/spec_incdir.txt +++ b/tests/sv_pp/expected/include_many_dir/dir0-a/dir1-a/spec_incdir.txt @@ -1,2 +1 @@ - "good content" \ No newline at end of file diff --git a/tests/sv_pp/expected/include_many_dir/dir0-a/local_include_higher_priority.txt b/tests/sv_pp/expected/include_many_dir/dir0-a/local_include_higher_priority.txt index 807a1ca1..1124e96b 100644 --- a/tests/sv_pp/expected/include_many_dir/dir0-a/local_include_higher_priority.txt +++ b/tests/sv_pp/expected/include_many_dir/dir0-a/local_include_higher_priority.txt @@ -1,2 +1 @@ - "good content" \ No newline at end of file diff --git a/tests/sv_pp/expected/include_many_dir/from_subdirectory.txt b/tests/sv_pp/expected/include_many_dir/from_subdirectory.txt index 8528768f..d1f22783 100644 --- a/tests/sv_pp/expected/include_many_dir/from_subdirectory.txt +++ b/tests/sv_pp/expected/include_many_dir/from_subdirectory.txt @@ -1,6 +1 @@ - -"file2-a.txt" - -"file2-a.txt" - -"file2-a.txt" +"file2-a.txt""file2-a.txt""file2-a.txt" \ No newline at end of file diff --git a/tests/sv_pp/expected/include_many_dir/from_subdirectory2.txt b/tests/sv_pp/expected/include_many_dir/from_subdirectory2.txt new file mode 100644 index 00000000..53e98acd --- /dev/null +++ b/tests/sv_pp/expected/include_many_dir/from_subdirectory2.txt @@ -0,0 +1,3 @@ +"file2-a.txt" +"file2-a.txt" +"file2-a.txt" diff --git a/tests/sv_pp/expected/include_many_dir/transitive.txt b/tests/sv_pp/expected/include_many_dir/transitive.txt index a7c0eed4..92cde8dc 100644 --- a/tests/sv_pp/expected/include_many_dir/transitive.txt +++ b/tests/sv_pp/expected/include_many_dir/transitive.txt @@ -1,8 +1,4 @@ - "transitive-0" - "transitive-1" - "transitive-2" - "transitive-3" \ No newline at end of file diff --git a/tests/sv_pp/expected/include_same_dir/basic_include.txt b/tests/sv_pp/expected/include_same_dir/basic_include.txt index 12fb4c89..5e2ef389 100644 --- a/tests/sv_pp/expected/include_same_dir/basic_include.txt +++ b/tests/sv_pp/expected/include_same_dir/basic_include.txt @@ -1,4 +1,3 @@ - "a.vh" diff --git a/tests/sv_pp/expected/include_same_dir/basic_include2times.txt b/tests/sv_pp/expected/include_same_dir/basic_include2times.txt index dd0b6a63..5e2ef389 100644 --- a/tests/sv_pp/expected/include_same_dir/basic_include2times.txt +++ b/tests/sv_pp/expected/include_same_dir/basic_include2times.txt @@ -1,6 +1,3 @@ - "a.vh" - - diff --git a/tests/sv_pp/src/include_many_dir/dir0-a/dir1-a/file2-b.txt b/tests/sv_pp/src/include_many_dir/dir0-a/dir1-a/file2-b.txt new file mode 100644 index 00000000..ba5cbc4f --- /dev/null +++ b/tests/sv_pp/src/include_many_dir/dir0-a/dir1-a/file2-b.txt @@ -0,0 +1 @@ +"file2-a.txt" diff --git a/tests/sv_pp/src/include_many_dir/from_subdirectory2.txt b/tests/sv_pp/src/include_many_dir/from_subdirectory2.txt new file mode 100644 index 00000000..dbf9d3d1 --- /dev/null +++ b/tests/sv_pp/src/include_many_dir/from_subdirectory2.txt @@ -0,0 +1,3 @@ +`include "dir0-a/dir1-a/file2-b.txt" +`include "./dir0-a/dir1-a/file2-b.txt" +`include "./dir0-a/../dir0-a/dir1-a/file2-b.txt" diff --git a/tests/test_verilog_preproc_include.py b/tests/test_verilog_preproc_include.py index 92187d68..a906c78e 100644 --- a/tests/test_verilog_preproc_include.py +++ b/tests/test_verilog_preproc_include.py @@ -43,6 +43,9 @@ def test_basic_include2times(self): def test_from_subdirectory(self): self.run_test(["include_many_dir", "from_subdirectory.txt"], []) + + def test_from_subdirectory2(self): + self.run_test(["include_many_dir", "from_subdirectory2.txt"], []) def test_local_include_higher_priority(self): self.run_test(