Comments (4)
That is really weird. I'll have to investigate more and see what is wrong.
from mpc.
I found the problem. The issue is that you are declaring your grammar as predictive: MPCA_LANG_PREDICTIVE
.
Predictive means that no backtracking is required and that the first character any of the cases of an or clause always informs how the whole clause is going to be parsed. This is good for performance reasons but can't always be ensured for every grammar.
When you added repeat
and rand
it meant your grammar was no longer predictive because because both of them start with r
. So the parser first tries to parse repeat
and gets the first r
and fails - at this point it needs to backtrack if it wants to parse rand
but it doesn't bother because it is delcared as predictive
and carries on blindly trying to parse the next a
.
Probably I should remove the MPCA_LANG_PREDICTIVE
clause from the maths example to give people a better starting point - and also consider throwing some sort of error when a predictive grammar is asked to backtrack.
Hope that helps,
- Dan
from mpc.
Yes, changing it to MPCA_LANG_DEFAULT
makes it work as expected. I assume this is the one I should be using? In any case, thank you very much for your help. :)
from mpc.
Yup, MPCA_LANG_DEFAULT
is correct. No problem, and good luck with your project.
from mpc.
Related Issues (20)
- Implementation of `mpcf_all_free` not seen in mpc.c HOT 1
- In theory: Can MPC parse C? HOT 2
- scan coverity findings HOT 1
- Add support for arm64 architecture. HOT 4
- CMakeLists.txt suggestion HOT 6
- Release: GNU Guix
- Segmentation fault and timeout occur at mpca_lang_st() HOT 1
- Does the order of definitions matter in languages? HOT 2
- Mix parsers and AST HOT 3
- Greedy matching causes token matching issue HOT 2
- What about MPC now? HOT 1
- "-static" does not work on newer MacOS due to crt0
- make install does not work on newer MacOS (install command/folders)
- dependency errors issue HOT 9
- shared state and multi-threaded use HOT 2
- parser for """long string""" ? HOT 2
- Make include guards unique
- Completion of error handling
- memory leak in mpca_lang function
- Unicode and regexs etc 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 mpc.