Pergunta

Eu desenvolvi uma linguagem de programação interpretada. É fortemente baseado em C. O problema é que eu quero adicionar uma directiva foreach e não têm idéia de como.

Eu estou usando Bison e Flex como o gerador de analisador e lexer.

Foi útil?

Solução

Em sua gramática, você iria querer uma expressão que é algo como o seguinte:

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

Quando você analisar isso, você deve ser capaz de traduzi-lo diretamente em um loop while em sua AST com uma declaração adicional que atribui uma variável no início.

Esta me parece a maneira mais simples de fazê-lo, mas provavelmente terá limitações com dados múltiplos tipos iteráveis ??(por exemplo, uma lista vs. um array). Neste caso, você pode querer considerar a consolidação de todos os iterables para que eles tenham um método consistente para obter o próximo elemento.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top