JavaCC – Análise Sintática

524 palavras 3 páginas
Compiladores
JavaCC – Análise Sintática

Análise Sintática com JavaCC
• Na aula anterior sobre JavaCC, estudamos como implementar um parser para avaliar apenas as regras léxicas de uma linguagem
(soma de inteiros)
• Nesta aula mudaremos o foco para estudar a implementação de regras sintáticas no
JavaCC
• Para tal, utilizaremos como objeto de estudo, uma estrutura usada na maioria das linguagens de programação: declaração de variáveis 2

Análise Sintática com JavaCC
• Veja o seguinte exemplo de declaração de variável em linguagem C: int soma;
• Como desenvolver um parser que valide a estrutura de uma declaração como esta?
• Em primeiro lugar, é necessário desenvolver uma gramática que sirva como base para a verificação de qualquer declaração de variáveis.

3

Análise Sintática com JavaCC
START ::= "int" IDENT ";"
IDENT::= (ALFA|$|_)(ALFA|DIGIT|$|_)*
ALFA ::= [a-z]|[A-Z]
DIGIT ::= [0-9]

4

Análise Sintática com JavaCC
• Modificando o Parser:
TOKEN : { < INT : "int" > }
TOKEN : { < SEMICOLON : ";" > }
TOKEN : { < IDENT : (|"$"|"_")(|
|"$"|"_")* > }
TOKEN : { < #DIGIT : ["0"-"9"] > }
TOKEN : { < #ALFA : ["a"-"z","A"-"Z"] > } void Start() :
{}
{

}
5

Análise Sintática com JavaCC
• Observe o seguinte exemplo: float total;
• Como atualizar o parser existente aceitar mais tipos de dados?

para

• É necessário atualizar a gramática para refletir a necessidade de novos tipos de dados

6

Análise Sintática com JavaCC
START ::= TIPO IDENT ";"
TIPO ::= "char"|"int"|"float"
IDENT::= (ALFA|$|_)(ALFA|DIGIT|$|_)*
ALFA ::= [a-z]|[A-Z]
DIGIT ::= [0-9]

7

Análise Sintática com JavaCC
• Atualizando o Parser:
...
TOKEN : { < CHAR : "char" > }
TOKEN : { < FLOAT : "float" > } void Start() :
{}
{ Tipo()

} void Tipo() :
{}
{ | |
}
8

Análise Sintática com JavaCC
• Observe o seguinte exemplo: float total = 10.5;
• Como atualizar o parser existente para aceitar a inicialização

Relacionados

  • infraestrutura de rede
    2405 palavras | 10 páginas
  • Analisador sintatico para frases do verbo to be do ingles
    12105 palavras | 49 páginas
  • Java
    11963 palavras | 48 páginas
  • çlskjdflkç
    2443 palavras | 10 páginas
  • ciencia da computação
    522 palavras | 3 páginas
  • Compiladores
    970 palavras | 4 páginas
  • compilação
    1798 palavras | 8 páginas
  • FLEX E LEX
    615 palavras | 3 páginas
  • COMPILADORES
    22628 palavras | 91 páginas
  • Compiladores
    3384 palavras | 14 páginas