This pull request closes #70 and represents an overhaul of the parsing module for eBCSgen. It integrates multiple smaller pull requests developed over an extended period, each addressing specific issues and introducing enhancements to ensure robust, flexible, and more efficient parsing capabilities.
Parsing corrections and features
revised the logic of insert methods (insert_atomic_to_complex, insert_struct_to_complex, insert_atomic_to_struct) to enhance insertion validity and data integrity
issue #72
pr #91
enabled the direct usage of complexes in abstract_sequence by modifying the grammar to support complex names as values
issue #89
pr #92
model syntax changes
introduced flexibility in the order of sections in BCSL files and
multiple definitions of the same sections are side effect turned into feature - contents of the section are merged
new lines are enforced and forbidden in specific places to prevent unclear model definition
issue #93
pr #94
full support for bidirectional rules implemented
specifying distinct rates for each direction
issue #30
pr #96
regulations
ensured that all referenced rule labels in regulation exist
regular regulations patterns are separated by semicolon ; to better check for existing labels
issue #95
restricted regular regulations to accept only valid regular expressions, not expressions consisting of regex characters
issue #88
pr #97
expanded grammar to support rates as complex nested rational expression
issue #87
pr #100
zooming syntax aligned with original BCSL
zooming uses ::, same as compartment specification, instead of :
syntax ambiguity solved by switching to Earley parser from LALR(1)
issue #98
pr #99
added checks to ensure that all used complex aliases are defined before use, raising ComplexParsingError when mismatches are detected
issue #103
pr #105
checking for uniqueness of atomic agents within structure agents
issue #102
pr #105
defined replication rules
to avoid complex replication checks in every rule
issue #106
pr #107
implemented parsing for observables
pools and basic arithmetic scaling based on the BNGL
issue #108
pr #109
Testing
tests were extended to make sure any changes do not disrupt the existing functionalities of eBCSgen
organized test cases for both existing parsing functionalities and feature tests
issue #75
pr #78
added test cases for parsing
issue #79
pr #85
moved testing objects to objects_testing.py to eliminate redundancy and text models shifted to .txt files
issue #80
pr #90
changed tests for rules (replication and bidirectional), syntax for zooming ::, etc
added parsing tests for new feature observables
pr #109
All tests are passing, indicating that the updates are stable and maintain the integrity.
This pull request closes #70 and represents an overhaul of the parsing module for eBCSgen. It integrates multiple smaller pull requests developed over an extended period, each addressing specific issues and introducing enhancements to ensure robust, flexible, and more efficient parsing capabilities.
Parsing corrections and features
insert_atomic_to_complex
,insert_struct_to_complex
,insert_atomic_to_struct
) to enhance insertion validity and data integritycomplex
es inabstract_sequence
by modifying the grammar to support complex names as values;
to better check for existing labels::
, same as compartment specification, instead of:
ComplexParsingError
when mismatches are detectedTesting
objects_testing.py
to eliminate redundancy and text models shifted to.txt
files::
, etcAll tests are passing, indicating that the updates are stable and maintain the integrity.