Professional Documents
Culture Documents
Variante 1 – Correção
2017
UNIVERSIDADE ZAMBEZE
FACULDADE DE CIÊNCIAS E TECNOLOGIA
CURSO: ENGENHARIA INFORMATICA
3oANO – 1oSEMESTRE DATA: 05-04-2017 DURAÇÃO: 100 MINUTOS
TESTE I DE COMPILADORES
a) (a|b)*c(f|(d|e)gh)(ij|j)
3. Completar a seguinte tabela, que tem a ver com as diferentes etapas do processo de
compilação. (5 valores)
Geração de
Análise Geração de
Etapa Análise Semántica código Análise Léxica
Sintáctica código objecto
intermedio
Etapa onde vai Etapa que tem É feita uma análise da Etapa que tem Etapa que
se determinar como resultado estrutura construida ao como resultado determina se
se o código o codigo longo das etapas um código que existem no codigo
fonte cumpre executavel que anteriores e tenta vai ser utilizado fonte alguns
Descrição com as regras é o resultado encontrar erros que tem para a caracteres que não
que descrebe do processo de a ver com o significado construção do estejan inclusos no
a estrutura da compilação. das regras que código alfabeto da
linguagem. determinam a estrutura executavel. linguagem.
da linguagem.
Teste I – Compiladores
Variante 1 – Correção
2017
5. Diga quais são as expressões do programa fonte, que definem os seguintes grupos de
tokens. Faça uso da tabela de símbolos que se especifica. (4 valores)
R:/
public static void teste(){
int atributo;
String nada;
return;
}
6. Seja a seguinte gramática linear a direita transforma-la numa gramática linear a esquerda.
Expor os passos utilizados para a conversão. (3 valores)
G=({S, A}, {a, b, c}, S, {SaS, ScA, AbA, AbE})
R:/
Logo as regras vao ser as seguintes: EbA, AbA, AcS, Ac, SaS, Sa
Invertemos a ordem da parte direita das regras e obtemos:
G’=({S, A, E}, {a, b, c}, S, {EAb, AAb, ASc, Ac, SSa, Sa} )
Teste I – Compiladores
Variante 1 – Correção
2017
Teste I – Compiladores
Variante 2 – Correção
2016
UNIVERSIDADE ZAMBEZE
FACULDADE DE CIÊNCIAS E TECNOLOGIA
CURSO: ENGENHARIA INFORMATICA
3oANO – 1oSEMESTRE DATA: 05-04-2017 DURAÇÃO: 100 MINUTOS
TESTE I DE COMPILADORES
2. Diga quais são as expressões do programa fonte, que definem os seguintes grupos de
tokens. Faça uso da tabela de símbolos que se especifica. (4 valores)
R:/
public void cria_objecto(char param_2, float param_1){
return new teste();
}
Teste I – Compiladores
Variante 2 – Correção
2016
3. Diga qual ou quais das palavras podem ser reconhecidas pelo seguinte autômato. (2 valores)
I ) aaabca
II ) bbca
III ) caababbc
IV) bbccaabbcca
R:/
As palavras reconhecidas pelo autômato são: I, II e IV.
a b
1 2 4
2 3 5
3 3 3
4 3 5
5 5 5
0 0+
1 1+
X*
6. Seja a seguinte gramática linear a direita transforma-la numa gramática linear a esquerda.
Expor os passos utilizados para a conversão. (3 valores)
R:/
UNIVERSIDADE ZAMBEZE
FACULDADE DE CIÊNCIAS E TECNOLOGIA
CURSO: ENGENHARIA INFORMATICA
3oANO – 1oSEMESTRE DATA: 05-04-2017 DURAÇÃO: 100 MINUTOS
TESTE I DE COMPILADORES
R:/
SaS SbS ScA AdB AeB AfC
BgD DhC CiE CjF EjF FØ
Nota: O resultado tambem pode ser uma gramática linear à esquerda ou qualquer outra gramática,
sempre que seja equivalente à aquela apresentada acima.
6. Diga quais são as expressões do programa fonte, que definem os seguintes grupos de
tokens. Faça uso da tabela de símbolos que se especifica. (4 valores)
Teste I – Compiladores
Variante 3 – Correção
2017
R:/
public static void teste(){
int atributo;
String nada;
return;
}
Teste I – Compiladores
Variante 4 – Correção
2017
UNIVERSIDADE ZAMBEZE
FACULDADE DE CIÊNCIAS E TECNOLOGIA
CURSO: ENGENHARIA INFORMATICA
3oANO – 1oSEMESTRE DATA: 05-04-2017 DURAÇÃO: 100 MINUTOS
TESTE I DE COMPILADORES
R:/
Não são equivalentes pois os autómatos não reconhecem a mesma linguagem.
A linguagem reconhecida pelo automato da esquerda corresponde à linguagem cujas palavras
terminam com b ou d.
O autómato da direita representa o conjunto de palavras que terminam com b, d ou e.
Logo as linguagens por eles reconhecidas reconhecidas não são iguais
a b
1 2 4
2 3 5
3 3 3
4 3 5
5 5 5
Teste I – Compiladores
Variante 4 – Correção
2017
3. Diga quais são as expressões do programa fonte, que definem os seguintes grupos de
tokens. Faça uso da tabela de símbolos que se especifica. (4 valores)
R:/
public void cria_objecto(char param_2, float param_1){
return new teste();
}
b) id=(id|num) ((+|-|*|/)(id|num))*
c) G=({S, E, F}, {id, num, =, +, -, *, /}, S, {Sid=E, EidF|numF, F+E|-E|*E|/E|ø})
o seguinte:
Escrevemos as regras representadas no autómato:
FidE|numE, E+F|-F|*F|/F|id=S, Sø
A seguir escrevemos os nao terminais do lado esquerdo das regras:
FEid|Enum, EF+|F-|F*|F/|Sid=, Sø
Teste I – Compiladores
Variante 4 – Correção
2017
6. Diga qual ou quais das palavras podem ser reconhecidas pelo seguinte autômato. (2 valores)
I ) aaabcaaab
II ) babcacbcab
III ) caababbc
IV) bbccaabbcca
R:/
As palavras reconhecidas pelo autômato são: I, II e IV.