Virtual Meetup: "A Deep Dive into Lookahead Algorithms"

Hi Community,

I am happy to announce that this Thursday (the 9th of June), Mark Sujew will hold the discussion about "A Deep Dive into Lookahead Algorithms ".

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

When working with LL parsers, the limiting factor to represent more complex parts of your grammar is determined by the amount of lookahead provided by your parsing library. Wouldn’t it be great, if we were able to completely remove this limitation, while still enjoying the benefits of LL parsers such as great error recovery and ease of debugging? This is exactly what ANTLR4’s adaptive LL() algorithm aims to accomplish. In this presentation, I will try to explain how the adaptive LL() strategy works in detail and how well it compares to common LL(k) parsers. For that, we will take a closer look at the Chevrotain LL(k) parsing library and empirically compare it to a version of itself with LL(*) lookahead.

Mark is a young passionate software engineer, who’s especially interested in designing solutions for other software engineers. After joining TypeFox in early 2021, he helped to design the language engineering framework Langium and also holds a stewardship for the Theia Cloud IDE project. Besides working on open source software, he helps businesses employ these frameworks in his role as a consultant.

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.


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: Dateful Time Zone Converter).


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 content of the chat:

17:46:08 From K Kabi Khanganba to Everyone:
	i am unable to hear.
17:47:07 From Federico Tomassetti to Everyone:
	Sorry Kabi, unsure why this is the case
17:47:47 From K Kabi Khanganba to Everyone:
	yeah now I can.
17:50:12 From Rene to Everyone:
	Great to be here, hello!
18:01:56 From Rene to Everyone:
	This sounds like an interesting topic
18:27:56 From Rene to Everyone:
	Instead of a loookup table, there is a tree search to notice duplicates....
18:30:52 From Paul Spencer to Everyone:
	this may sound dumb, is this swapping time for space/memory? if so is there a size of code base at which the memory usage gets out of hand?
18:34:42 From Mike Cargal to Everyone:
	Doesn't memory util tend to settle in over time? (unless you're continuously encountering new structures?)
18:40:21 From Gregg Irwin to Everyone:
	"Here is the specification. DO NOT USE IT!" :^)
18:40:27 From Federico Tomassetti to Everyone:
	We run into that memory issue while parsing PL/SQL
18:40:56 From Federico Tomassetti to Everyone:
	@Gregg eh eh, they should put that disclaimer on top of the page
18:41:49 From Mike Cargal to Everyone:
	There are definitely some “painfully literal” grammars in the ANTLR repo (literal in the sense of converting the spec toa grammar)
18:43:30 From Mark Sujew to Everyone:
18:45:02 From Matteo Mortari to Everyone:
	Curiosity Q: can I create a NON-context free Parsers with Chevrotain?
18:45:51 From Mike Cargal to Everyone:
	was your "fix" to the All(*) related to the semantic prdicate evaluation, or something more than that?
18:46:15 From Denis Kuniß to Everyone:
	Just curious: Where the name Chevrotain comes from?
18:51:00 From Matteo Mortari to Everyone:
	oh wow like Eiffel65 😄
18:55:29 From Paul Spencer to Everyone:
18:57:52 From Alessio Stalla to Everyone:
	I have to go, thanks for the great presentation!
18:59:27 From Denis Kuniß to Everyone:
	I'm a little bit confused when looking on that code example: Does follows Chevrotain an approach of "interpreting" grammars or is there a generator phase?
19:01:15 From Gregg Irwin to Everyone:
	We never think about designing in best practices in the grammar. We Lint later, but we *could* impose limitations in the language itself.
19:02:20 From Benjamin Wilson to Everyone:
	Great talk thanks mark!
19:02:34 From Rene to Everyone:
	good presentation