wayground logo

Free Printable Worksheets

Font size

S
M
L
XL
Worksheets

Compiladores U2 S3

Total questions: 9

Worksheet time: 9mins

Name
Class
Date
1.

"Para analisar se um programa foi escrito corretamente, não basta apenas reconhecer os elementos básicos, os tokens, mas também se a estrutura da frase está correta, isto é, se as palavras estão de acordo com as regras gramaticais"


A quais fases da análise o texto acima se refere respectivamente?

a)

analisador sintático - analisador semântico

b)

analisador léxico - analisador sintático

c)

analisador semântico - analisador sintático

d)

analisador léxico - analisador semântico

e)

analisador sintático - analisador léxico

2.

Coloque a seguinte frase na ordem:

1 - O analisador sintático verifica se o fluxo de tokens retornado pode ser gerado pela gramática da linguagem;

2 - O analisador sintático solicita ao analisador léxico a análise do fluxo dos tokens do código fonte;

3 - O analisador léxico retorna uma lista de tokens (fluxo de tokens);

4 - O analisador sintático irá gerar uma representação hierárquica, que será uma árvore gramatical.

5- O analisador sintático aciona a tabela de símbolos para as consultas semânticas.

a)

1-2-3-4-5

b)

2-3-1-5-4

c)

4-3-2-1-5

d)

2-1-5-4-3

e)

4-1-3-5-2

3.

Segundo Aho (2007) há algumas metas simples que o tratador de erros em um analisador sintático deve buscar. Marque todas as alternativas que tenha uma destas metas:

a)

arrumar os erros cometidos pelos programadores como se fosse um corretor automático

b)

relatar a presença de erros com clareza e precisão

c)

ser capaz de se recuperar do erro a fim de conseguir identificar os próximos, se houver

d)

não ser lento, no caso de programas corretos

e)

avaliar o programador com uma nota de desempenho baseado na quantidade de erros que este cometeu

4.

O que se deseja é identificar todos os erros a cada processo de compilação. Porém há muitas estratégias, e nenhuma totalmente perfeita. Qual a estratégia descrita a seguir?

"Também conhecida como recuperação de erro sem correção é a estratégia mais simples para ser implementada. Após encontrar um erro, o compilador descarta token a token até encontrar um token de sincronização, ponto em que ele reinicia a análise. "

a)

Modalidade do desespero

b)

Nível de frase

c)

Produções de erros

d)

Correção global

5.

O que se deseja é identificar todos os erros a cada processo de compilação. Porém há muitas estratégias, e nenhuma totalmente perfeita. Qual a estratégia descrita a seguir?

"Também conhecida como recuperação de erro com correção, pois quando o analisador sintático se deparar com um erro, ele tenta realizar uma correção para poder continuar a análise do restante do programa. O projetista do compilador precisa considerem os pontos passíveis de intervenção e tomar cuidado para que o processo de compilação não entre em um loop infinito. Há a possibilidade do erro ter ocorrido antes da detecção e, nesse caso, o erro não é identificado com a acuracidade esperada."

a)

Modalidade do desespero

b)

Nível de frase

c)

Produções de erros

d)

Correção global

6.

O que se deseja é identificar todos os erros a cada processo de compilação. Porém há muitas estratégias, e nenhuma totalmente perfeita. Qual a estratégia descrita a seguir?

"Exige que o projetista incorpore na gramática da linguagem produções (regras) para tratamento de erros que os programadores comumente cometem, o que aumenta significativamente a gramática, o tempo de compilação e ainda poderão ocorrer erros não previstos. "

a)

Modalidade do desespero

b)

Nível de frase

c)

Produções de erros

d)

Correção global

7.

O que se deseja é identificar todos os erros a cada processo de compilação. Porém há muitas estratégias, e nenhuma totalmente perfeita. Qual a estratégia descrita a seguir?

" Seria o método perfeito, pois incorpora modalidade do desespero e nível de frase. Porém nos deparamos com um algoritmo com tempo de processamento muito lento, o que torna o processo de compilação vagaroso "

a)

Modalidade do desespero

b)

Nível de frase

c)

Produções de erros

d)

Correção global

8.

Ao especificamos as regras de uma linguagem, construímos sua gramática. Contundo, há regras de produções que são apenas descritas por símbolos terminais, outras descritas por expressões regulares e há, ainda, as que são expressas por um fluxo de tokens. Sabemos que as produções léxicas geram apenas símbolos terminais ou são expressas por expressões regulares, e que as sintáticas são expressas por fluxo de tokens.


Assinale a alternativa que apresenta apenas produções sintáticas:

a)

<digito> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

b)

<variável> ::= <letra> { <letra> | <digito> }

c)

<com_if> ::= ‘if’ <condição> ‘then’ <comando>

d)

<palavraReservada> ::= ‘if’ | ‘the’ | ‘begin’ | ‘end’ | ‘else’

e)

<numero> ::= <digito> {<digito>} [ ‘.’ {<digito>}]

9.

Ao especificamos as regras de uma linguagem, construímos sua gramática. Contundo, há regras de produções que são apenas descritas por símbolos terminais, outras descritas por expressões regulares e há, ainda, as que são expressas por um fluxo de tokens. Sabemos que as produções léxicas geram apenas símbolos terminais ou são expressas por expressões regulares, e que as sintáticas são expressas por fluxo de tokens.


Assinale a alternativa que apresenta apenas produções sintáticas:

a)

<email> ::= <partelocal>’@’<domínio>[‘.’<tipo>][‘.’<pais>]

b)

<digito> ::= ‘0’ | ‘1’ | ’2’ | ‘3’ | ... | ‘9’

c)

<letra> ::= ‘a’ | ‘b’ | ‘c’ | ... | ‘z’ | ‘A’ | ‘B’ | ‘C’ | ... | ‘Z’

d)

<domínio> ::= <letra>{<letra> | <digito> | ’-‘<letra> | ’-‘<digito>}

e)

<pais> ::= <letra><letra>