GithubHelp home page GithubHelp logo

xie-dongping / modparc Goto Github PK

View Code? Open in Web Editor NEW
13.0 1.0 7.0 173 KB

modparc is a Modelica parser in Python based on parser combinator

License: GNU General Public License v3.0

Makefile 4.39% Python 95.61%
modelica parser library simulation multiphysics

modparc's Introduction

modparc

image

image

Documentation Status

Updates

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

Quickstart

Install the package from PyPI:

$ pip install modparc

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

import modparc
model_definition = modparc.parse_file("your_modelica_file.mo")

To list all the equations in the model_definition instance:

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

To get the name of the model loaded:

print(model_definition.name())  # get the name of the stored class
print(model_definition.class_type())  # get the type of the class

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
  • 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.

The test cases used code from the ModelicaByExample library (MIT License by Michael Tiller).

modparc's People

Contributors

pyup-bot avatar xie-dongping avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

modparc's Issues

Make short_class_specifier traversable

The part after = sign is returned as the value of the short_class_specifier, but this value syntax element could itself have additional layers which could be traversed.

Related to #48

Load a Directory of Libraries

Load the package.mo or modelica directory as a Library class which inihibits similar behaviour as StoredDefintions class

License

Currently, there is a LICENSE file and a COPYING file, that seems to be redundant; the COPYING file can probably be deleted (github is looking for a LICENSE file first).

Additionally, the license text seems to be slightly changed, otherwise github would recognize what license is used and display it in the overview (next to the number of contributors):
https://github.com/blog/2252-license-now-displayed-on-repository-overview
https://github.com/blog/2335-open-source-license-descriptions-and-metadata
To fix this, I would recommend deleting both files LICENSE and COPYING and then recreate the LICENSE file using githubs webinterface Create new file. When you name the new files LICENSE, a dropdown menu appears on the right.

Clarify the last clause of class specifier

class_specifier :
IDENT string_comment composition end IDENT
| IDENT "=" base_prefix name [ array_subscripts ]
[ class_modification ] comment
| IDENT "=" enumeration "(" ( [enum_list] | ":" ) ")" comment
| IDENT "=" der "(" name "," IDENT { "," IDENT } ")" comment
| extends IDENT [ class_modification ] string_comment composition
end IDENT

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.