Como uma tabela de símbolos é útil para traduzir um idioma para outro
-
20-09-2019 - |
Pergunta
Na classe Compiler, criamos um analisador para uma linguagem inventada que é uma versão simplificada de C. Tudo o que o analisador faz é fazer uma tabela de símbolos com base na entrada e saída com uma mensagem de erro se a sintaxe estiver incorreta. Agora, precisamos pegar um arquivo de entrada escrito nesse idioma e convertê -lo em código MIPS (na verdade, o código SPIM que é MIPS for Linux.) Por que uma tabela de símbolos é necessária para isso? Pode ser feito sem a tabela de símbolos?
Solução
Uma tabela de símbolos informará outros passes do seu compilador se um determinado nome é (por exemplo) o nome de um tipo, o nome de uma função, o nome de uma variável e assim por diante. Como você traduziria C em código de montagem (ou qualquer outra manipulação substancial) sem saber este?! Considere, por exemplo, X * Y;
- Isso é multiplicador x vezes y, ou declarando y como um ponteiro para um x? Você precisa saber se X nomeia um tipo, para desambiguar isso - o que mais, exceto uma tabela de símbolos, poderia lhe dizer?