Ordine delle regole per gli elenchi di analisi con LALR (1)

0

Quando crei la grammatica per l'analisi di un elenco (qualcosa come " ITEM* ") con un parser LALR (1), in pratica puoi farlo in due modi:

list
    : list ITEM
    |
    ;

o

list
    : ITEM list
    |
    ;

Quali sono i pro e i contro di queste due possibilità? In generale, può essere dato un consiglio quale scegliere o dipende dalla grammatica completa?

Che dire del caso " ITEM+ ", cioè.

list
    : list ITEM
    | ITEM
    ;

e

list
    : ITEM list
    | ITEM
    ;

Gli stessi pro e contro si applicano qui, o altri?

    
posta Martin 04.08.2014 - 11:12
fonte

1 risposta

3

Qui è una bella spiegazione. In breve:

For LALR(1) the opposite is true: left recursion is good, right recursion is bad.

Questo deve fare sia distinguendo gli elementi ITEM dai separatori, sia con l'efficienza in fase di esecuzione.

    
risposta data 04.08.2014 - 11:25
fonte

Leggi altre domande sui tag