Cos'è Lezer?
Lezer è un sistema di parser scritto in JavaScript. Utilizza un algoritmo chiamato analisi LR per derivare in modo efficiente alberi di sintassi da una descrizione formale di una grammatica. Le tabelle risultanti possono essere utilizzate dal generatore di parser per costruire un parser per la grammatica in fase di esecuzione, senza dover leggere tutto il codice sorgente.
Contextual Token Reading
Lezer può abbinare i token che dipendono dal contesto nell'input per determinare il loro significato. Ciò è utile per grammatiche ambigue o sotto-lingua con un concetto diverso di cosa sia un segno che il resto della lingua. Ad esempio, in una grammatica regolare simile all'espressione, può abbinare le fughe al contenuto delle stringhe, mentre le interpolazioni e le citazioni di chiusura sono trattate come token di contenuto o per un linguaggio non javascript, potrebbe abbinare lo spazio bianco (al contrario del personaggio spazio).
Dynamic Precedence
Per i rami ambigui in cui il significato di un token dipende dalla precedenza di una regola, è possibile usare la notazione della proposta per dire al generatore di parser quali regole dovrebbero essere provate in un determinato punto. Ad esempio, se la regola del marchio esclamativo ha una precedenza dinamica più elevata rispetto alla regola dei tempi, verrà data una priorità più elevata per il ramo che la contiene.
Local Token Groups
A volte, è utile definire un tipo di token che copre tutto il testo che non corrisponde a una fuga, interpolazione o una citazione di chiusura. Per fare ciò, Lezer ti consente di creare gruppi di token locali che corrispondono a una serie di token. Questi gruppi vengono consultati solo quando i token che producono si applicano nella posizione corrente nell'input.