Wat is de efficiëntste implementatie van een LALR1-parser in C++?
Ik heb al gevonden dat ik de tekst eerst moet splitsen in tokens met een DFA en dan parsen met de LALR1-parser.
Ik weet dat je een DFA kunt programmeren met een switch, maar dat het sneller gaat als je voor elke staat een array maakt met voor elk karakter de volgende staat, maar dat kan dan veel geheugen gaan gebruiken.
Hoe het zit met een LALR1-parser weet ik ook niet zo. Ik schreef vroeger altijd een functie voor elke uitdrukking maar naar het schijnt gebruiken ze tabellen met tokens.
De snelheid is voor mij belangrijker dan het geheugengebruik, maar ik had al gezien bij de reguliere expressies dat dat zoveel geheugen kan gebruiken dat je het programma niet meer kunt starten.