Domanda

Ho sviluppato un linguaggio di programmazione interpretato. È fortemente basato su C. Il problema è che voglio aggiungere una direttiva foreach e non ho idea di come.

Sto usando Bison e Flex come generatore di parser e lexer.

È stato utile?

Soluzione

Nella tua grammatica, vorresti un'espressione simile al seguente:

foreach := foreach ( name in name ) { statements }

Quando lo analizzi, dovresti essere in grado di tradurlo direttamente in un ciclo while nel tuo AST con un'istruzione aggiuntiva che assegna una variabile all'inizio.

Questo mi sembra il modo più semplice per farlo, ma probabilmente avrà limitazioni con più tipi di dati iterabili (ad esempio un elenco contro un array). In questo caso, potresti voler considerare il consolidamento di tutti gli iterabili in modo che abbiano un metodo coerente per ottenere l'elemento successivo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top