Virtual Meetup - AGL: when a regular expression is not enough

Hi Community,

I am happy to announce that this Thursday (the 3rd of June), David Akehurst will hold a discussion about the AGL runtime parser generator.

Also, remember that in December, we changed the link to join the Meetup!

It would be great, would it not, if parsing a String with a context-free grammar were as easy as it is to parse a String with a regular expression? This is not normally the case because context-free grammars usually require a pre-runtime generation of the parser. Additionally, many parser generators impose limitations on the grammar rules meaning that the shape of the grammar has to be altered to fit the limitations of the parser generator. This talk presents the implementation of a very easy to use Runtime Parser Builder that is ideal for use in situations where a regular expression is just not sufficient, but you do not want to have the overhead of incorporating a Parser Generator into your build process. Typical use cases might be, embedding small text languages in a graphical language, rapid iterative development of a DSL (with no intermediate generate-compile steps between iterations), or defining a small language for use in text inputs of forms in a web application.

Dr David H. Akehurst is a highly experienced software consultant. He has worked for many years in both research and commercial organisations. David has a PhD in Computer Science, his thesis focusing on Model Transformation and Model Driven Development (MDD). He has 12 years of teaching and research experience in the areas of Software Engineering, UML, MDD, and Distributed Systems. Davids wide breadth of commercial experience, of over 16 years, covers Distributed and Embedded Systems, the Automotive industry, Web-based developments and Software tool construction. His current interests are Language-Engineering and multi-platform development with Kotlin. GitHub - dhakehurst/net.akehurst.language: Generic Language (DSL) support for kotlin multiplatform (parser, syntax-analyser, formatter, processor, etc)

And if you are thinking of proposing a talk, it is time to come forward. Just let me know by replying to this message.

How to connect

To avoid other security issues is now necessary to register for the meeting. The registration should be necessary just once and be valid for all the next meetings you will participate in. I understand it is a little extra effort, but it would avoid problems like the ones we encountered:

Registration for the Virtual Meetup

After registering, you will receive a confirmation email containing information about joining the meeting. It will also permit you to add it to your calendar.

Time

It is hosted on Zoom at 6 PM GMT+1/CEST (you can use this link to figure out which time is in your timezone: The Time Zone Converter).

Cheers,
Elisa

P.S. We get a recurring question: “Are presentations recorded?”. The answer is not, and the reasons are explained here On recording Virtual Meetups - #7 by voelter

Here there is the chat transcript:

[I removed a lot of greetings and compliments for brevity :D]

17:51:57 From Rene to Everyone : I guess I need to look into Kotlin
17:52:08 From Federico Tomassetti to Everyone : I would recommend it
18:12:48 From Federico Tomassetti to Everyone : GitHub - dhakehurst/net.akehurst.language: Generic Language (DSL) support for kotlin multiplatform (parser, syntax-analyser, formatter, processor, etc)
18:16:23 From Rene to Everyone : Very interesting
18:22:48 From Drazen Dotlic to Everyone : TreeSitter comes to mind, no?
18:24:11 From Martin Clausen to Everyone : There is instaparse GitHub - Engelberg/instaparse
18:24:30 From Drazen Dotlic to Everyone : GitHub - tree-sitter/tree-sitter: An incremental parsing system for programming tools
18:25:59 From Frans Faase to Everyone : I also developed an interpreting parser. Started in C, moved to C++, made JavaScript version for a workshop. See: https://fransfaase.github.io/ParserWorkshop/Online_inter_parser.html
18:27:59 From Matthias Wienand to Everyone : I came across Marpa some time ago, liked it and the docs around it The Marpa parser
18:32:07 From Rene to Everyone : Very impressive. This looks challenging to create.
18:35:21 From Paul spencer to Everyone : could we have a little parsing 101, what are automota in parsing?
18:36:24 From Paul spencer to Everyone : and why do they cause problems?
18:38:13 From Horacio Hoyos to Everyone : its a state machine that keeps track of the order of tokens in the input in order to construct the correct ast
18:38:25 From Horacio Hoyos to Everyone : (I think)
18:39:41 From Rene to Everyone : A state is like a node?
18:39:49 From Horacio Hoyos to Everyone : yes
18:40:02 From Rene to Everyone : I see, ok.
18:40:10 From Horacio Hoyos to Everyone : read a token, move to next state
18:40:38 From Horacio Hoyos to Everyone : (simplistically)
18:41:10 From Rene to Everyone : high-level. ok. I live there.
18:45:38 From Frans Faase to Everyone : So, you are still using a parser generator, except that it is stored in the form of an automaton that is (re)build just-in-time?
18:46:09 From Ed Seidewitz to Everyone : Java’s grammar is actually essentially ambiguous, at least in a context free sense. You need to do name resolution in order to resolve qualified name vs. expression syntax in some case.
18:47:09 From Ed Seidewitz to Everyone : Or regex-tions…
18:49:53 From Horacio Hoyos to Everyone : (sounds like it Frans)
18:50:39 From Frans Faase to Everyone : Do you parse the grammar with your parser itself?
18:52:32 From Frans Faase to Everyone : I wrote an interpreting parser, which works on the grammar, with only a small modification.
18:52:38 From Alessio Stalla to Everyone : Have you thought about saving parts of the computed automaton so that later runs can be quicker?
18:53:52 From Pedro J. Molina to Everyone : Do you have support for Semantic Actions?
18:57:32 From Drazen Dotlic to Everyone : Is parser able to re-generate the processor incrementally or is it regenerating everything on each input change?
18:59:40 From Rene to Everyone : And the query langauge can be changed more easily
19:00:58 From Majd Yafi to Everyone : I need to drop off. Thanks David for the presentation; it was great! I am open to collaboration on publications. Please reach out if you are interested or anyone else.
19:05:29 From Matthias Wienand to Everyone : Regarding coming back from errors, I think Ruby Slippers might be an interesting idea, too (pretending expected symbols were there) Parsing with Ruby Slippers
19:06:28 From Frans Faase to Everyone : I wrote an unparser.
19:07:29 From Drazen Dotlic to Everyone : Gotta go as well. Very cool demo, especially Monako integration, will look into it more on GitHub. Cheers everyone!
19:09:47 From Paul spencer to Everyone : great tool! thanks for the talk.

Hi Community,

the slides are available here:

AGL_Strumenta.pdf (708.7 KB)

Cheers,
Elisa