A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

JavaCC e JJTree Geração de compiladores implementados em Java fonte (texto) ações árvore sintática Parser.

Apresentações semelhantes


Apresentação em tema: "JavaCC e JJTree Geração de compiladores implementados em Java fonte (texto) ações árvore sintática Parser."— Transcrição da apresentação:

1 JavaCC e JJTree Geração de compiladores implementados em Java fonte (texto) ações árvore sintática Parser

2 JavaCC e JJTree JJTree é um pré-processador para o JavaCC Auxilia a definição da árvore sintática JJTreeJavaCCJava Esquema de tradução

3 Estrutura do arquivo JavaCC options { STATIC = false; //Não criar métodos estáticos OUTPUT_DIRECTORY = "c:/temp"; //Diretório de saída dos arquivos gerados } PARSER_BEGIN(ParserExemplo)... public class ParserExemplo {... } PARSER_END(ParserExemplo)... //PRODUÇÕES BNF QUE FORMAM A GRAMÁTICA DO PARSER

4 Produções TOKEN : /* OPERAÇÕES */ { } TOKEN : /* OPERADORES */ { )+ > | } void termo() : { } { } void soma() : { } { termo() termo() } Parser reconhece: 1 + 1, 2 + 1, ,...

5 Produções Símbolos não-terminais da gramática são escritos exatamente como métodos em Java tipo_retorno_java identificador_java "(" lista_parametros_java ")" ":" bloco_java "{" escolhas_expansão "} Símbolos não terminais são traduzidos como chamadas de métodos

6 Produções void expressao() : { } { soma() | termo() } Parser reconhece: 7, 1 + 1, ,... void soma() : { } { termo() expressao() }

7 Produções + Ações int termo() : { Token t; } { t = { return (new Integer(t.image) ).intValue(); } int soma() : {int a, b;} { a = termo() b = expressao() {return a + b;} } int expressao() : {int result;} { ( result = soma() | result = termo() ) {return result;} } Parser retorna o resultado da operação.

8 Tokens TOKEN : { )+ > | }. TOKEN –Tokens da gramática SPECIAL_TOKEN –Tokens que não têm significado durante o parsing, entretanto ainda é acessível SKIP –Tokens simplesmente descartados MORE –Armazena em um buffer até: encontrar um TOKEN/SPECIAL_TOKEN –Concatena em um só TOKEN/ SPECIAL_TOKEN encontrar um SKIP –Descarta

9 JJTree void Termo() : {} { t = } void Soma() : {} { termo() expressao() } void Expressao() : {} { soma() | termo() }

10 JJTree void Termo() : { Token t; } { t = { jjtThis.setValor ( (new Integer(t.image) ).intValue() ); } void Soma() : {} { termo() expressao() } Expressao Expressao() : {} { ( soma() | termo() ) {return jjtThis;} }

11 Referências


Carregar ppt "JavaCC e JJTree Geração de compiladores implementados em Java fonte (texto) ações árvore sintática Parser."

Apresentações semelhantes


Anúncios Google