lems.parser package

Submodules

lems.parser.LEMS module

LEMS XML file format parser.

author:

Gautham Ganapathy

organization:

LEMS (https://github.com/organizations/LEMS)

class lems.parser.LEMS.LEMSFileParser(model, include_dirs=[], include_includes=True)

Bases: LEMSBase

LEMS XML file format parser class.

id_counter

Counter generator for generating unique ids.

Type:

generator(int)

include_dirs

List of directories to search for included files.

Type:

list(str)

include_includes

Whether to include LEMS definitions in <Include> elements

Type:

boolean

init_parser()

Initializes the parser

model

Model instance to be populated from the parsed file.

Type:

lems.model.model.Model

parse(xmltext)

Parse a string containing LEMS XML text.

Parameters:

xmltext (str) – String containing LEMS XML formatted text.

parse_assertion(node)

Parses <Assertion>

Parameters:

node (xml.etree.Element) – Node containing the <Assertion> element

parse_attachments(node)

Parses <Attachments>

Parameters:

node (xml.etree.Element) – Node containing the <Attachments> element

parse_case(node)

Parses <Case>

Parameters:

node (xml.etree.Element) – Node containing the <Case> element

Raises:

ParseError – When no condition or value is specified

parse_child(node)

Parses <Child>

Parameters:

node (xml.etree.Element) – Node containing the <Child> element

parse_child_instance(node)

Parses <ChildInstance>

Parameters:

node (xml.etree.Element) – Node containing the <ChildInstance> element

parse_children(node)

Parses <Children>

Parameters:

node (xml.etree.Element) – Node containing the <Children> element

parse_component(node)

Parses <Component>

Parameters:

node (xml.etree.Element) – Node containing the <Component> element

parse_component_by_typename(node, type_)

Parses components defined directly by component name.

Parameters:
  • node (xml.etree.Element) – Node containing the <Component> element

  • type (string) – Type of this component.

Raises:

ParseError – Raised when the component does not have an id.

parse_component_reference(node)

Parses <ComponentReference>

Parameters:

node (xml.etree.Element) – Node containing the <ComponentTypeRef> element

parse_component_requirement(node)

Parses <ComponentRequirement>

Parameters:

node (xml.etree.Element) – Node containing the <ComponentRequirement> element

parse_component_type(node)

Parses <ComponentType>

Parameters:

node (xml.etree.Element) – Node containing the <ComponentType> element

Raises:

ParseError – Raised when the component type does not have a name.

parse_conditional_derived_variable(node)

Parses <ConditionalDerivedVariable>

Parameters:

node (xml.etree.Element) – Node containing the <ConditionalDerivedVariable> element

Raises:

ParseError – Raised when no name or value is specified for the conditional derived variable.

parse_constant(node)

Parses <Constant>

Parameters:

node (xml.etree.Element) – Node containing the <Constant> element

parse_data_display(node)

Parses <DataDisplay>

Parameters:

node (xml.etree.Element) – Node containing the <DataDisplay> element

parse_data_writer(node)

Parses <DataWriter>

Parameters:

node (xml.etree.Element) – Node containing the <DataWriter> element

parse_derived_parameter(node)

Parses <DerivedParameter>

Parameters:

node (xml.etree.Element) – Node containing the <DerivedParameter> element

parse_derived_variable(node)

Parses <DerivedVariable>

Parameters:

node (xml.etree.Element) – Node containing the <DerivedVariable> element

Raises:

ParseError – Raised when no name of specified for the derived variable.

parse_dimension(node)

Parses <Dimension>

Parameters:

node (xml.etree.Element) – Node containing the <Dimension> element

Raises:

ParseError – When the name is not a string or if the dimension is not a signed integer.

parse_dynamics(node)

Parses <Dynamics>

Parameters:

node (xml.etree.Element) – Node containing the <Behaviour> element

parse_event_connection(node)

Parses <EventConnection>

Parameters:

node (xml.etree.Element) – Node containing the <EventConnection> element

parse_event_out(node)

Parses <EventOut>

Parameters:

node (xml.etree.Element) – Node containing the <EventOut> element

parse_event_port(node)

Parses <EventPort>

Parameters:

node (xml.etree.Element) – Node containing the <EventPort> element

parse_event_record(node)

Parses <EventRecord>

Parameters:

node (xml.etree.Element) – Node containing the <EventRecord> element

parse_event_writer(node)

Parses <EventWriter>

Parameters:

node (xml.etree.Element) – Node containing the <EventWriter> element

parse_exposure(node)

Parses <Exposure>

Parameters:

node (xml.etree.Element) – Node containing the <Exposure> element

Raises:

ParseError – Raised when the exposure name is not being defined in the context of a component type.

parse_fixed(node)

Parses <Fixed>

Parameters:

node (xml.etree.Element) – Node containing the <Fixed> element

parse_for_each(node)

Parses <ForEach>

Parameters:

node (xml.etree.Element) – Node containing the <ForEach> element

parse_include(node)

Parses <Include>

Parameters:

node (xml.etree.Element) – Node containing the <Include> element

Raises:

ParseError – Raised when the file to be included is not specified.

parse_index_parameter(node)

Parses <IndexParameter>

Parameters:

node (xml.etree.Element) – Node containing the <IndexParameter> element

Raises:

ParseError – Raised when the IndexParameter does not have a name.

parse_instance_requirement(node)

Parses <InstanceRequirement>

Parameters:

node (xml.etree.Element) – Node containing the <InstanceRequirement> element

parse_kinetic_scheme(node)

Parses <KineticScheme>

Parameters:

node (xml.etree.Element) – Node containing the <KineticScheme> element

Parses <Link>

Parameters:

node (xml.etree.Element) – Node containing the <Link> element

parse_multi_instantiate(node)

Parses <MultiInstantiate>

Parameters:

node (xml.etree.Element) – Node containing the <MultiInstantiate> element

parse_on_condition(node)

Parses <OnCondition>

Parameters:

node (xml.etree.Element) – Node containing the <OnCondition> element

parse_on_entry(node)

Parses <OnEntry>

Parameters:

node (xml.etree.Element) – Node containing the <OnEntry> element

parse_on_event(node)

Parses <OnEvent>

Parameters:

node (xml.etree.Element) – Node containing the <OnEvent> element

parse_on_start(node)

Parses <OnStart>

Parameters:

node (xml.etree.Element) – Node containing the <OnStart> element

parse_parameter(node)

Parses <Parameter>

Parameters:

node (xml.etree.Element) – Node containing the <Parameter> element

Raises:
  • ParseError – Raised when the parameter does not have a name.

  • ParseError – Raised when the parameter does not have a dimension.

parse_path(node)

Parses <Path>

Parameters:

node (xml.etree.Element) – Node containing the <Path> element

parse_property(node)

Parses <Property>

Parameters:

node (xml.etree.Element) – Node containing the <Property> element

Raises:
  • ParseError – Raised when the property does not have a name.

  • ParseError – Raised when the property does not have a dimension.

parse_record(node)

Parses <Record>

Parameters:

node (xml.etree.Element) – Node containing the <Record> element

parse_regime(node)

Parses <Regime>

Parameters:

node (xml.etree.Element) – Node containing the <Behaviour> element

parse_requirement(node)

Parses <Requirement>

Parameters:

node (xml.etree.Element) – Node containing the <Requirement> element

parse_run(node)

Parses <Run>

Parameters:

node (xml.etree.Element) – Node containing the <Run> element

parse_show(node)

Parses <Show>

Parameters:

node (xml.etree.Element) – Node containing the <Show> element

parse_simulation(node)

Parses <Simulation>

Parameters:

node (xml.etree.Element) – Node containing the <Simulation> element

parse_state_assignment(node)

Parses <StateAssignment>

Parameters:

node (xml.etree.Element) – Node containing the <StateAssignment> element

parse_state_variable(node)

Parses <StateVariable>

Parameters:

node (xml.etree.Element) – Node containing the <StateVariable> element

Raises:

ParseError – Raised when the state variable is not being defined in the context of a component type.

parse_structure(node)

Parses <Structure>

Parameters:

node (xml.etree.Element) – Node containing the <Structure> element

parse_target(node)

Parses <Target>

Parameters:

node (xml.etree.Element) – Node containing the <Target> element

parse_text(node)

Parses <Text>

Parameters:

node (xml.etree.Element) – Node containing the <Text> element

parse_time_derivative(node)

Parses <TimeDerivative>

Parameters:

node (xml.etree.Element) – Node containing the <TimeDerivative> element

Raises:

ParseError – Raised when the time derivative does not hava a variable name of a value.

parse_transition(node)

Parses <Transition>

Parameters:

node (xml.etree.Element) – Node containing the <Transition> element

parse_tunnel(node)

Parses <Tunnel>

Parameters:

node (xml.etree.Element) – Node containing the <Tunnel> element

Raises:

ParseError – Raised when the Tunnel does not have a name.

parse_unit(node)

Parses <Unit>

Parameters:

node (xml.etree.Element) – Node containing the <Unit> element

Raises:
  • ParseError – When the name is not a string or the unit specfications are incorrect.

  • ModelError – When the unit refers to an undefined dimension.

parse_with(node)

Parses <With>

Parameters:

node (xml.etree.Element) – Node containing the <With> element

process_nested_tags(node, tag='')

Process child tags.

Parameters:

node (xml.etree.Element) – Current node being parsed.

Raises:

ParseError – Raised when an unexpected nested tag is found.

raise_error(message, *params, **key_params)

Raise a parse error.

tag_parse_table

Dictionary of xml tags to parse methods

Type:

dict(string, function)

valid_children

Dictionary mapping each tag to it’s list of valid child tags.

Type:

dict(string, string)

class lems.parser.LEMS.LEMSXMLNode(pyxmlnode)

Bases: object

LEMS XML Node container class.

This does not include any namespace declarations in tags and their attributes with their corresponding Component definitions (because LEMS does not know what XML namespaces are).

lems.parser.LEMS.get_nons_attribute(attribute)

Get attributes without namespace prefixes.

The parsed attributes will include their namespaces in {}:

eg: {some_namespace_url}attribute=value

Similar to tags, we replace these with their corresponding LEMS component types.

Parameters:

attribute (str) – attribute to strip namespace from

Returns:

tweaked attribute

lems.parser.LEMS.get_nons_tag_from_node(node)

Get tags without namespace prefixes.

The parsed tags will include their namespaces in {}:

eg: <{some_namespace_url}mytag ..>

Similar to attributes, we replace these with their corresponding LEMS component types.

Parameters:

tag (xml.ElementTree.Element) – tag to strip namespace from

Returns:

tweaked tag

lems.parser.expr module

Expression parser

author:

Gautham Ganapathy

organization:

LEMS (https://github.com/organizations/LEMS)

class lems.parser.expr.ExprNode(type)

Bases: LEMSBase

Base class for a node in the expression parse tree.

FUNC1 = 3
OP = 1
VALUE = 2
type

Node type.

Type:

enum(ExprNode.OP, ExprNode.VALUE)

class lems.parser.expr.ExprParser(parse_string)

Bases: LEMSBase

Parser class for parsing an expression and generating a parse tree.

cleanup_stacks()
debug = False
depth = 0

Dictionary mapping operators to their priorities.

Type:

dict(string, Integer)

is_func(str)

Checks if a token string contains a function.

Parameters:

str (string) – Token string to be checked.

Returns:

True if the token string contains a function.

Return type:

Boolean

is_op(str)

Checks if a token string contains an operator.

Parameters:

str (string) – Token string to be checked.

Returns:

True if the token string contains an operator.

Return type:

Boolean

is_sym(str)

Checks if a token string contains a symbol.

Parameters:

str (string) – Token string to be checked.

Returns:

True if the token string contains a symbol.

Return type:

Boolean

make_op_node(op, right)
op_priority = {'$': -5, '*': 6, '+': 5, '-': 5, '.and.': 1, '.eq.': 2, '.ge.': 2, '.geq.': 2, '.gt.': 2, '.le.': 2, '.lt.': 2, '.ne.': 2, '.neq.': 2, '.or.': 1, '/': 6, '^': 7, 'exp': 8, 'func': 8, '~': 8}
parse()

Tokenizes and parses an arithmetic expression into a parse tree.

Returns:

Returns a token string.

Return type:

lems.parser.expr.ExprNode

parse2()
parse_string

Expression to be parsed.

Type:

string

parse_token_list_rec(min_precedence)

Parses a tokenized arithmetic expression into a parse tree. It calls itself recursively to handle bracketed subexpressions.

Returns:

Returns a token string.

Return type:

lems.parser.expr.ExprNode

@attention: Does not handle unary minuses at the moment. Needs to be fixed.

priority(op)
token_list

List of tokens from the expression to be parsed.

Type:

list(string)

tokenize()

Tokenizes the string stored in the parser object into a list of tokens.

class lems.parser.expr.Func1Node(func, param)

Bases: ExprNode

Unary function node in an expression parse tree. This will always be a non-leaf node.

func

Funcion stored in this node.

Type:

string

param

Parameter.

Type:

lems.parser.expr.ExprNode

to_python_expr()
class lems.parser.expr.OpNode(op, left, right)

Bases: ExprNode

Operation node in an expression parse tree. This will always be a non-leaf node.

left

Left operand.

Type:

lems.parser.expr.ExprNode

op

Operation stored in this node.

Type:

string

right

Right operand.

Type:

lems.parser.expr.ExprNode

to_python_expr()
class lems.parser.expr.ValueNode(value)

Bases: ExprNode

Value node in an expression parse tree. This will always be a leaf node.

clean_up()

To make sure an integer is returned as a float. No division by integers!!

to_python_expr()
value

Value to be stored in this node.

Type:

string

Module contents

author:

Gautham Ganapathy

organization:

LEMS (https://github.com/organizations/LEMS)