Hi Daniel, Thanks for your answer. When your work with parser will be available, please ping me and I will try to consume it and give you feedback.
Regard's Angelo Le sam. 25 août 2018 à 09:44, Daniel Dekany <[email protected]> a écrit : > Any progress? (I understand if not, with a newborn and all, I'm just > curious.) > > Note my answer to Angelo. As I said there, maybe we should settle with > only expression parsing done by the parser library, and the others are > done "manually". While that removes most of the tricky requirements > from the parser library, it brings in a new one, that doing many > independent expression parsings should have minimal overhead. > > > Sunday, August 5, 2018, 6:58:11 PM, Stephan Müller wrote: > > > Am 04.07.2018 um 19:28 schrieb Daniel Dekany: > >> I wonder what parser libraries could help us, in FM3, to separate the > >> expression language parsing from the top-level language (like > >> `<#foo>`, `${...}`, etc.) parsing. Or if a hand written parsers is an > >> acceptable compromise. It would be good if we can change the top-level > >> syntax and still reuse the expression syntax. (Or, replace the > >> expression syntax, and reuse the top-level one.) Like, somebody wants > >> a syntax like `#foo(exp)` instead of `<#foo exp>`, but still reuse the > >> expression syntax. (For me it was always part of the FM3 agenda, > >> though might will be proven to be too much...) > >> [..] > > > > During the last days I had a high-level look at different parser > > generators, and as one might imagine, there are a lot of parser > > generators, with different licenses, different maturities, different > > states of maintenance and so on. > > > > Due to https://www.apache.org/legal/resolved.html I ignored all parser > > generators which may not be included in Apache projects because of their > > license, especially GNU GPL etc. > > > > IMHO this leaves us with: > > > > * LL(k) parsers: ANTLR, JavaCC and Grammatica > > * LALR parsers: CookCC > > * PEG parsers: Mouse > > * parser combinators: jparsec, parboiled and PetitParser > > > > This list is not exhaustive, so I probably forget some interesting > > projects. If so, please share, I'd like to have a look into these, too. > > > > My idea for the next step: define a really small subset of FTL and try > > to implement PoCs for this subset with the candidates which I mentioned > > above. > > > > The subset might be something like > > > > * interpolations: ${..} > > * directives: if, assign > > * expressions: numbers, variables, + > > * variants of the parsers with different delimiters > > * split into two parsers (interpolations/directives vs. expression > language) > > > > What do you think? > > > > > > Stephan. > > > > P.S.: my more detailed list of parser generators can be found here: > > https://gist.github.com/chaquotay/8041096bad36f6f3f0d4166d6f8623b5 > > > > -- > Thanks, > Daniel Dekany > >
