Skip to content

Action argument grammar fails on empty [] or {} literals #71

@wshlavacek

Description

@wshlavacek

Location:

  • bionetgen/core/utils/utils.py:569 (list literal grammar)
  • bionetgen/core/utils/utils.py:585 (curly literal grammar)

Original markers:

# TODO: deal w/ zero argument list   (line 569)
# TODO: handle 0 case                (line 585)

The action-argument grammar uses pp.delimitedList(...), which requires at least one element. As a result, [] and {} literals don't parse:

  • arg_type_list = "[" + pp.delimitedList(quote_word ^ arg_type_float) + "]" — empty list fails
  • arg_type_curly = "{" + pp.delimitedList(curly_arg_token) + "}" — empty hash fails

What would unblock this: wrap each delimitedList call in pp.Optional(...):

arg_type_list  = "[" + pp.Optional(pp.delimitedList(quote_word ^ arg_type_float)) + "]"
arg_type_curly = "{" + pp.Optional(pp.delimitedList(curly_arg_token)) + "}"

Add a regression test that round-trips an action with an empty literal arg.

Discovered during: non-Atomizer TODO/FIXME triage sweep, 2026-05-08.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions