Source code for atsim.potentials.config._multi_range_parser
"""Module defining the pyparsing grammar for multi-range and modified
potential definitions used by the config_parser."""
from pyparsing import *
def _grammar():
from pyparsing import pyparsing_common
number = pyparsing_common.number
identifier = Combine(pyparsing_common.identifier+ZeroOrMore(Literal(".")+pyparsing_common.identifier))
# multi_range
range_start = Group((Literal(u">=") | Literal(u">"))("range_type") + number("start"))("range_start")
# range_start = Group((unicodeString(u">=") | unicodeString(u">"))("range_type") + number("start"))("range_start")
modified = Forward()
potential_description = Group(identifier("potential_label") + Group(ZeroOrMore(number))("potential_parameters"))("potential_description")
potential_definition = modified | potential_description
multi_range = Group(Optional(range_start) + potential_definition + ZeroOrMore(range_start + potential_definition))("multi_range")
lpar = Literal('(').suppress()
rpar = Literal(')').suppress()
modifier_parameters = delimitedList(multi_range)
modified << Group(identifier("modifier_label") + lpar + Group(modifier_parameters)("modifier_parameters") + rpar)("modifier")
# multi_range.setDebug()
return multi_range
[docs]multi_range_parser = _grammar()