FAQ: Linguagem "Zu"

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, 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 Zu

Q: O nó ProgramNode da linguagem Simple existe em Zu? Porquê?

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

Qualificador "público" em Zu (símbolo pós-fixado "!" em declarações)

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

R: O qualificador é um atributo 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 Simple).