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?

Foi útil?

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?

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