Comments (1)
Hi @lionel42 , this is because the ARS and the builder are thought to hold only operators of the same order
Check these two examples (using Vensim syntax with the translator). Note that in the first, as addition and subtraction are same-level operations, they are saved in the same ARS, but for the second case, as exponential and addition have different order, a new ARS is created.
>>> from pysd.translators.vensim.vensim_element import Component
>>> expr1 = Component("my_expr", ([], []), "1 * (2 + 3-4)")
>>> expr1.parse()
>>> expr1.ast
ArithmeticStructure(
operators=['*'],
arguments=(
1,
ArithmeticStructure(
operators=['+', '-'],
arguments=(2, 3, 4)
)
)
)
>>> expr2 = Component("my_expr", ([], []), "1 * (2 + 3^4)")
>>> expr2.parse()
>>> expr2.ast
ArithmeticStructure(
operators=['*'],
arguments=(
1,
ArithmeticStructure(
operators=['+'],
arguments=(
2,
ArithmeticStructure(
operators=['^'],
arguments=(3, 4)
)
)
)
)
)
This is built parsing the expression recursively and taking into account the operation order in each loop, check pysd/translators/vensim/parsing_grammars/components.peg
and pysd/translators/vensim/vensim_utils.py:split_arithmetic
and pysd/translators/vensim/vensim_element.py:EquationVisitor
. Similar approach is done for XMILE models.
from pysd.
Related Issues (20)
- Definition of the DelayN function HOT 2
- Issue when parsing initial values passed through the CLI HOT 1
- Adding pi to the functions HOT 5
- ValueError is raised when delay_time argument in DelayFixed has dimensions HOT 5
- Multidimensional LOOKUP variables not supported
- module 'python_utils.types' has no attribute 'ParamSpec' HOT 7
- Raise when last value of an Excel cell range is empty HOT 1
- Missing Vensim function LOOKUP AREA HOT 1
- vector_reorder doesn't work properly with xarray 2023.8.0 HOT 1
- DelayFixed returning a list assignment index out of range due to wrong pointer value HOT 8
- how to use set_components change Auxiliary lookup values HOT 1
- The code in the tutorial breaks HOT 5
- Not implemented function 'delay' HOT 7
- Missing netcdf4 library HOT 5
- RTD webhook broken HOT 1
- Circular reference error when initializing model with SMOOTH N variable, but no explicit stocks HOT 4
- Error reading Vensim model (parsimonious.exceptions.IncompleteParseError) HOT 50
- Vensims GET DATA XXX functions missing
- Macro dependencies are not properly solved
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from pysd.