Logo Passei Direto
Buscar

TEMA 2 - Exercícios (2)

Ferramentas de estudo

Questões resolvidas

Em algumas linguagens, brancos podem ser usados em qualquer ponto de um programa, sem nenhum significado, exceto dentro de uma cadeia de símbolos. Suponha que essa regra é acrescentada à linguagem Pascal, de forma que, por exemplo, as duas linhas a seguir são equivalentes: XR3:=XR+3; X R 3 : = X R + 3 ;
Como o analisador léxico pode tratar essa complicação adicional?
a. O analisador léxico reconhece tokens e não sentenças;
b. Defina um autômato para cada token: identificador, números, operadores, pontuação;
c. Apenas despreze os espaços em branco...
d. A ligação entre os autômatos é lógica
e. Seja criativo.

Defina uma gramática regular que gere comentários em Pascal: sequências de caracteres delimitadas por /* e */, não contendo pares do tipo */.

Defina um autômato finito que reconheça sentenças em {0,1}*, as quais não contenham sequências do tipo 101.

Construa um autômato finito e a gramática regular equivalente à seguinte expressão regular a(a | bc)*b(a | b)*

Material
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Questões resolvidas

Em algumas linguagens, brancos podem ser usados em qualquer ponto de um programa, sem nenhum significado, exceto dentro de uma cadeia de símbolos. Suponha que essa regra é acrescentada à linguagem Pascal, de forma que, por exemplo, as duas linhas a seguir são equivalentes: XR3:=XR+3; X R 3 : = X R + 3 ;
Como o analisador léxico pode tratar essa complicação adicional?
a. O analisador léxico reconhece tokens e não sentenças;
b. Defina um autômato para cada token: identificador, números, operadores, pontuação;
c. Apenas despreze os espaços em branco...
d. A ligação entre os autômatos é lógica
e. Seja criativo.

Defina uma gramática regular que gere comentários em Pascal: sequências de caracteres delimitadas por /* e */, não contendo pares do tipo */.

Defina um autômato finito que reconheça sentenças em {0,1}*, as quais não contenham sequências do tipo 101.

Construa um autômato finito e a gramática regular equivalente à seguinte expressão regular a(a | bc)*b(a | b)*

Prévia do material em texto

Atividades do Tema 2 – Análise Léxica 
 
1. Em algumas linguagens, brancos podem ser usados em qualquer ponto de um 
programa, sem nenhum significado, exceto dentro de uma cadeia de símbolos. 
Suponha que essa regra é acrescentada à linguagem Pascal, de forma que, por 
exemplo, as duas linhas a seguir são equivalentes: 
 
XR3:=XR+3; 
 
X R 3 : = X R + 3 ; 
 
Como o analisador léxico pode tratar essa complicação adicional? 
 
Dicas: 
a. O analisador léxico reconhece tokens e não sentenças; 
b. Defina um autômato para cada token: identificador, números, operadores, 
pontuação; 
c. Apenas despreze os espaços em branco... 
d. A ligação entre os autômatos é lógica 
e. Seja criativo. 
 
2. Defina um autômato finito e a gramática regular equivalente que 
reconheça/gere constantes numéricas em Pascal, cujo formato é: 
 
[ + | – ] d( d )* [ . d( d )* ] [ E [ + | – ] d( d )* ] 
 
onde: 
 d : representa um dígito {0, 1, ..., 8, 9} 
 [ x ] : significa que x é opcional 
 | : significa alternativa 
 
3. No “Report” do Pascal, Niklaus Wirth define “números” (constantes dos tipos 
integer e real), através das seguintes regras: 
 
<digit sequence>::=<digit>{<digit>} 
<unsigned integer>::=<digit sequence> 
<unsigned real>::=<unsigned integer>.<digit sequence> | 
<unsigned integer>.<digit sequence>E<scale factor> | 
<unsigned integer> E <scale factor> 
<unsigned number>::=<unsigned integer>|<unsigned real> 
<scale factor>::=<unsigned integer> | 
<sign> <unsigned integer> 
<sign> ::= + | - 
 
Explique como esta especificação pode ser usada para programar a parte 
correspondente de um analisador léxico de Pascal definindo um autômato 
finito que a reconheça. 
 
Dicas: 
a. Entenda o que está definido acima; 
b. Trata-se de uma gramática 
c. Note que ::= significa “é definido por” 
d. Os termos estão fora de ordem. Organize-os, se achar melhor 
e. Os itens não definem explicitamente os terminais. Deduza-os 
f. Já fizemos algo assim 
g. Seja criativo 
 
4. Defina uma gramática regular que gere comentários em Pascal: sequências de 
caracteres delimitadas por /* e */, não contendo pares do tipo */. 
 
5. Defina um autômato finito que reconheça sentenças em {0,1}*, as quais não 
contenham sequências do tipo 101. 
 
6. Construa um autômato finito e a gramática regular equivalente à seguinte expressão 
regular 
 
a(a | bc)*b(a | b)*

Mais conteúdos dessa disciplina