Skip to content

ANSI Style localparam causes parsing error #129

Open
@mclark-iontra

Description

@mclark-iontra

When a localparam is encountered in the ANSI style parameter declaration, a parsing error is reported.

Example source verilog

module a_module #(
  localparam A = 2
)(
  input [A-1:0] sig
);
endmodule

The resulting pyverilog output:

Generating LALR tables
WARNING: 183 shift/reduce conflicts
Traceback (most recent call last):
  File ".../pyverilog_test.py", line 14, in <module>
    ast, directives = parse(vlog)
                      ^^^^^^^^^^^
  File ".../.venv/lib/python3.12/site-packages/pyverilog/vparser/parser.py", line 2338, in parse
    ast = codeparser.parse()
          ^^^^^^^^^^^^^^^^^^
  File ".../.venv/lib/python3.12/site-packages/pyverilog/vparser/parser.py", line 2316, in parse
    ast = self.parser.parse(text, debug=debug)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File ".../.venv/lib/python3.12/site-packages/pyverilog/vparser/parser.py", line 77, in parse
    return self.parser.parse(text, lexer=self.lexer, debug=debug)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File ".../.venv/lib/python3.12/site-packages/ply/yacc.py", line 333, in parse
    return self.parseopt_notrack(input, lexer, debug, tracking, tokenfunc)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File ".../.venv/lib/python3.12/site-packages/ply/yacc.py", line 1201, in parseopt_notrack
    tok = call_errorfunc(self.errorfunc, errtoken, self)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File ".../.venv/lib/python3.12/site-packages/ply/yacc.py", line 192, in call_errorfunc
    r = errorfunc(token)
        ^^^^^^^^^^^^^^^^
  File ".../.venv/lib/python3.12/site-packages/pyverilog/vparser/parser.py", line 2268, in p_error
    self._raise_error(p)
  File ".../.venv/lib/python3.12/site-packages/pyverilog/vparser/parser.py", line 2279, in _raise_error
    raise ParseError("%s: %s" % (coord, msg))
pyverilog.vparser.parser.ParseError:  line:3: before: "localparam"

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions