Nós da árvore sintáctica

Q: Que conceitos da linguagem devem corresponder a nós da árvore sintáctica?

R: Os nós correspondem a elementos da linguagem que formam subconjuntos coerentes e autónomos (e.g., uma expressão, uma instrução) e podem ser mais ou menos simples.

Existem elementos da linguagem que servem apenas para qualificar ou caracterizar outros ("const" em C, "public" em Mayfly, etc.) e não correspondem a nós, mas sim a atributos desses nós ou de outras estruturas utilizadas para o processamento da linguagem (e.g., tipos).

ProgramNode em Mayfly

Q: O nó ProgramNode da linguagem Compact existe em Mayfly? Porquê?

R: Cada tipo de nó representa uma entidade numa linguagem. Na linguagem Compact (a linguagem de partida), o conceito de programa existe e, assim, também o de ProgramNode. Em Mayfly não existem programas, mas sim listas de declarações/definições. Deste modo, o conceito de ProgramNode em Mayfly não tem razão para existir.

Qualificador public

Q: O qualificador "public" é "parecido" aos tipos, ou seja, tal como eles, também não é um nó?

R: O qualificador é um atributos dos nós declaração, dos símbolos (representação semântica de nomes), ou de todos eles. Note-se que, tal como os tipos, não é um nó da árvore sintáctica.

Reutilização de nós da CDK

Q: Reparei que a CDK já tem nós como multiplicação (MUL), adição (ADD), etc. Devo definir esses nós de novo no meu compilador?

R: Não: se a CDK já disponibiliza nós que são aplicáveis no compilador, então eles devem ser utilizados, ou seja, não devem ser definidos outros que representam a mesma informação. Note-se que os geradores de código necessitam de ter funções de processamento para esses nós, mesmo que não sejam definidos no próprio compilador (ver exemplos no Compact).