Metadata-Version: 2.0
Name: modparc
Version: 0.1.2
Summary: A Modelica parser based on parser generator
Home-page: https://github.com/xie-dongping/modparc
Author: 谢东平 Dongping XIE
Author-email: dongping.xie.tud@gmail.com
License: GNU General Public License v3
Keywords: modparc
Platform: UNKNOWN
Classifier: Development Status :: 2 - Pre-Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
Classifier: Natural Language :: English
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.6
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5

===============================
modparc
===============================


.. image:: https://img.shields.io/pypi/v/modparc.svg
        :target: https://pypi.python.org/pypi/modparc

.. image:: https://img.shields.io/travis/xie-dongping/modparc.svg
        :target: https://travis-ci.org/xie-dongping/modparc

.. image:: https://readthedocs.org/projects/modparc/badge/?version=latest
        :target: https://modparc.readthedocs.io/en/latest/?badge=latest
        :alt: Documentation Status

.. image:: https://pyup.io/repos/github/xie-dongping/modparc/shield.svg
     :target: https://pyup.io/repos/github/xie-dongping/modparc/
     :alt: Updates


modparc is a Modelica parser in Python based on parser combinator.


* Free software: GNU General Public License v3
* Documentation: https://modparc.readthedocs.io.

.. contents::

.. section-numbering::

Quickstart
--------

Install the package from PyPI:

.. code-block:: bash

    $ pip install modparc


To parse a Modelica source file `"your_modelica_file.mo"`:

.. code-block:: python

    import modparc
    with open("your_modelica_file.mo", 'r') as f:
        modelica_source_code = f.read()
        model_definition = modparc.parse(modelica_source_code)

To use the `model_definition` instance:

.. code-block:: python

    all_equations = model_definition.search('Equation')
    for equation in all_equations:
        print(equation.code())  # The code of the equation as string

One could also parse a certain syntax element in Modelica:

.. code-block:: python

    import modparc
    from modparc.syntax import tokenize
    source_code = """
                  if init==InitializationOptions.FixedPopulation then
                    population = initial_population;
                  elseif init==InitializationOptions.SteadyState then
                    der(population) = 0;
                  else
                  end if
                  """
    tokens_list = tokenize(source_code)
    if_equation_element = modparc.syntax.equations.if_equation(tokens_list)
    sub_equations = if_equation_element.search('Equation')
    for equation in sub_equations:
        print(equation.code())  # The code of the equation as string



Features
--------

* Experimentally parses Modelica Standard Library 3.2.1
* Search element of a certain class

Known Issues
--------

* Handling tokenization of Q-IDENT and comments, which comes first?
* Assertion syntax not defined in modelica specification
* Recursion limit (since no tail recursion optimization)
* Test case for long vector literals
* Default recursion depth is not enough for long vector literals
* Cyclic import is neccessary for the Modelica syntax definition

Credits
---------

This package was created with Cookiecutter_ and the `audreyr/cookiecutter-pypackage`_ project template.

.. _Cookiecutter: https://github.com/audreyr/cookiecutter
.. _`audreyr/cookiecutter-pypackage`: https://github.com/audreyr/cookiecutter-pypackage



=======
History
=======

0.1.0 (2016-10-22)
------------------

* First release on PyPI.


