Comments (17)
I can work for it while working for issue #28
from rtamt.
It think now here we can discuss only document for that.
I'm working for it in doc4TLimp branch.
from rtamt.
@nickovic
Could you commit your draft of doc4TLimp?
Just I would like to read to I can revise it.
from rtamt.
@nickovic
I think the progress is very nice. I pushed small things. Once I will share it to Jyo's lab.
from rtamt.
@nickovic I'm trying it. I did not understand what the difference between /node and /operation. We can write explanation.
from rtamt.
@nickovic
Do yout think the warning is problem?
$ antlr4 StlParser.g4 -Dlanguage=Python3 -no-listener -visitor -o ../../parser/stl_ab/
warning(109): /mnt/data/repos/rtamt/rtamt/grammar/tl/LtlParser.g4:3:0: options ignored in imported grammar LtlParser
from rtamt.
@nickovic
I think in last section, we can explain not only specification_parser.py, but also specification.py too.
I know it is now under construction.
from rtamt.
I think my question is difference or functionality between,
/spec, /node, /operation, /evaluator...
I can clarify while leading the code.
from rtamt.
I'm trying to implement somehow different version of dense time offline STL.
It seems to be not distinct where we need to change that.
because the mapping /spec and /node is done in discrete time folder /spec/stl/discrete_time.
It can not change form /spec/stl/dense_time because those are inhering from discrete_time. But it is right way to avoid code duplication and copy as much as possible.
I think problem is I did not understand the architecture 100%. Once we can go thorough the extension then look back again.
from rtamt.
I think all of codes are needed and well split. I think we need some restructuring folder structure.
-
Visitor(in spec), evaluation, node, operation are confusing.
I think, some how visitor's instance is evaluation
and node's instance is operation.
But user need to copy all of them in different folder. -
Really all operator needs different node class?
I know we need node. that what I suggested. I think, we need UnnaryNode, BinaryNode and TimeBound. but do we need each Abs, Always,TimedAlways? I feel TimedUniaryNode and Timed BinaryNode is good enough.
I feel why we can not decide here is we did not implement abstclass for densetime, discretetime. (now operation directly handle it)
-
Perhaps enumerations, interval can merge into node?
Perhaps, not node, but somewhere.
from rtamt.
Now I understand your /node structure is correct.
from rtamt.
@nickovic
I think now I understand your intention of implementation more. Everything is correct.
Once I need to go though current implementation and document. I think potentially we may think,
-
Explain Visitor and AST(node)
I understand Visitor and AST sturcture.
Dejan already mentioned /node. But especially tree side is not mentioned so much. we can explain it in addition Node.
We can explain something like CIL visior
https://people.eecs.berkeley.edu/~necula/cil/api/Cil.cilVisitor.html -
Relation between visitor->evaluator->operation
Everything is based on visitor class.
Visitor class: parents. pastify() is included in here.
Evaluator class (inherits Visitor): it handling offline or online evaluation sofar.
Operation class (inherits Evaluator): Here we can implement semantic. So far we did not have any abstract class for Dense and Discrete time.
Perhaps we can call them all visitor, like visitor->offlineVisitor->STLdenseTimeVisitor or something. because even designer knows "visitor" there is missing link between visitor and final evaluator. -
The location of /enumerations, /interval,
I feel perhaps in /operation -
The location of /exception
perhaps internal of /spec. maybe problem is which is good ordering
-> or ->
If many user can copy and paste original code, we can follow the last option.
from rtamt.
@nickovic
I know naming change and folder relocation, we need to do those very carefully. The good thing is you are holding test case and fixed application layer API.
I think what good use-cases to cover are,
- only change semantics without any syntax change.
It is the first step, and I'm doing. - extend a few operator to STL.
It needs both of syntax and semantics change. you are doing right now. - STQL
It has many extensions but is very practical for RTAMT.
from rtamt.
Let me update the expected use-case a bit.
I think so far, we need to look back coding itself.
-
only change semantics without any syntax change.
It is the first step, and I'm doing. I think I copy the code too much. If I can understand the current architecture correctly, I don't need to copy a lot. -
extend a few operator to existed TL (like STL).
We expect new predicate that is still an extension of binary, unary or time bound.
I think here difficultly what is covering area of ANTRL AST and our defined AST. Still parser, the designer need to now what he need to here, and what we need to do for to generate our AST too. -
extend STL fully (like STQL)
More aggressive extension than 2, like adding "existing" for STQL.
from rtamt.
@nickovic Let's drop out 3. first.
We may aim only 1. and 2. in this refactoring.
from rtamt.
@nickovic
Do you think IA-STL is good for explain RTAMT library, especially use-case 1? because it does not change syntax.
I did not come up with good example for use-case 2. Perhaps we may think add algebraic expression?
from rtamt.
We are writing it in syntax-extension-tutorial branch.
from rtamt.
Related Issues (20)
- Unclear methods in spec layer HOT 1
- get_spec_from_file() HOT 1
- sampling methods in discrete online HOT 1
- How about rename node.name to node.id HOT 1
- Location of visitVariable and visitConstant in online HOT 1
- Update ANTLR version HOT 5
- rtamt/tests/python/ast/test_ast_visitor.py HOT 1
- rtamt/tests/python/ast/test_stl_ast_parser.py HOT 1
- Handling unit with Fraction HOT 3
- IASTL refactoring HOT 2
- PyPi package installs antlr version for python 2 and 3
- Rename from evaluator to interpreter HOT 3
- naming of LTLPastifyException HOT 1
- test_division test case difference between Python and C++ HOT 2
- exception refactoring HOT 2
- Until operator showing key error HOT 1
- ValueError: max() arg is an empty sequence when eventually[time] too long HOT 1
- RTAMT AST data structure document
- AST access HOT 2
- introduction of sub_specs changes robustness traces HOT 1
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 rtamt.