Source code for pynusmv.parser
"""
The :mod:`pynusmv.parser` module provides functions to parse strings
and return corresponding ASTs.
"""
__all__ = ['parse_simple_expression', 'parse_next_expression',
'parse_identifier']
from .exception import NuSMVParsingError, Error
from .nusmv.parser import parser as nsparser
from .nusmv.node import node as nsnode
[docs]def parse_simple_expression(expression):
"""
Parse a simple expression.
:param string expression: the expression to parse
:raise: a :exc:`NuSMVParsingError
<pynusmv.exception.NuSMVParsingError>`
if a parsing error occurs
.. warning:: Returned value is a SWIG wrapper for the NuSMV node_ptr.
It is the responsibility of the caller to manage it.
"""
node, err = nsparser.ReadSimpExprFromString(expression)
if err:
errlist = []
errors = nsparser.Parser_get_syntax_errors_list()
while errors is not None:
error = nsnode.car(errors)
err = nsparser.Parser_get_syntax_error(error)
errlist.append(Error(*err[1:]))
errors = nsnode.cdr(errors)
raise NuSMVParsingError(tuple(errlist))
else:
return nsnode.car(node) # Get rid of the top SIMPWFF node
[docs]def parse_next_expression(expression):
"""
Parse a "next" expression.
:param string expression: the expression to parse
:raise: a :exc:`NuSMVParsingError
<pynusmv.exception.NuSMVParsingError>`
if a parsing error occurs
.. warning:: Returned value is a SWIG wrapper for the NuSMV node_ptr.
It is the responsibility of the caller to manage it.
"""
node, err = nsparser.ReadNextExprFromString(expression)
if err:
errlist = []
errors = nsparser.Parser_get_syntax_errors_list()
while errors is not None:
error = nsnode.car(errors)
err = nsparser.Parser_get_syntax_error(error)
errlist.append(Error(*err[1:]))
errors = nsnode.cdr(errors)
raise NuSMVParsingError(tuple(errlist))
else:
return nsnode.car(node) # Get rid of the top NEXTWFF node
[docs]def parse_identifier(expression):
"""
Parse an identifier
:param string expression: the identifier to parse
:raise: a :exc:`NuSMVParsingError
<pynusmv.exception.NuSMVParsingError>`
if a parsing error occurs
.. warning:: Returned value is a SWIG wrapper for the NuSMV node_ptr.
It is the responsibility of the caller to manage it.
"""
node, err = nsparser.ReadIdentifierExprFromString(expression)
if err:
errlist = []
errors = nsparser.Parser_get_syntax_errors_list()
while errors is not None:
error = nsnode.car(errors)
err = nsparser.Parser_get_syntax_error(error)
errlist.append(Error(*err[1:]))
errors = nsnode.cdr(errors)
raise NuSMVParsingError(tuple(errlist))
else:
return nsnode.car(node) # Get rid of the top COMPID node