Font size
WorksheetsCompiladores U2 S3
Total questions: 9
Worksheet time: 9mins
"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?
analisador sintático - analisador semântico
analisador léxico - analisador sintático
analisador semântico - analisador sintático
analisador léxico - analisador semântico
analisador sintático - analisador léxico
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.
1-2-3-4-5
2-3-1-5-4
4-3-2-1-5
2-1-5-4-3
4-1-3-5-2
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:
arrumar os erros cometidos pelos programadores como se fosse um corretor automático
relatar a presença de erros com clareza e precisão
ser capaz de se recuperar do erro a fim de conseguir identificar os próximos, se houver
não ser lento, no caso de programas corretos
avaliar o programador com uma nota de desempenho baseado na quantidade de erros que este cometeu
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. "
Modalidade do desespero
Nível de frase
Produções de erros
Correção global
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."
Modalidade do desespero
Nível de frase
Produções de erros
Correção global
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. "
Modalidade do desespero
Nível de frase
Produções de erros
Correção global
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 "
Modalidade do desespero
Nível de frase
Produções de erros
Correção global
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:
<digito> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
<variável> ::= <letra> { <letra> | <digito> }
<com_if> ::= ‘if’ <condição> ‘then’ <comando>
<palavraReservada> ::= ‘if’ | ‘the’ | ‘begin’ | ‘end’ | ‘else’
<numero> ::= <digito> {<digito>} [ ‘.’ {<digito>}]
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:
<email> ::= <partelocal>’@’<domínio>[‘.’<tipo>][‘.’<pais>]
<digito> ::= ‘0’ | ‘1’ | ’2’ | ‘3’ | ... | ‘9’
<letra> ::= ‘a’ | ‘b’ | ‘c’ | ... | ‘z’ | ‘A’ | ‘B’ | ‘C’ | ... | ‘Z’
<domínio> ::= <letra>{<letra> | <digito> | ’-‘<letra> | ’-‘<digito>}
<pais> ::= <letra><letra>
