0% encontró este documento útil (0 votos)
7 vistas18 páginas

Introducción a JavaCC en Compiladores

El documento describe JavaCC, un generador de analizadores léxicos y sintácticos que permite construir herramientas de análisis de lenguajes fácilmente.

Cargado por

andresgalvis15
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
7 vistas18 páginas

Introducción a JavaCC en Compiladores

El documento describe JavaCC, un generador de analizadores léxicos y sintácticos que permite construir herramientas de análisis de lenguajes fácilmente.

Cargado por

andresgalvis15
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Generadores de Compiladores

JavaCC
Fases en el proceso de
[Link]

análisis de lenguajes

caracteres tokens respuesta


Lexer Parser
[Link]

Generadores de Compiladores

 Generadores de analizadores léxicos


 Generadores de analizadores sintácticos
[Link]

JavaCC

 Genera el lexer
 Genera el parser
 Permite construir una herramienta de
análisis de lenguajes fácilmente
[Link]

¿ Qué hace javaCC ?

[Link]
[Link]
[Link]
JAVACC
[Link]
[Link]
[Link]
ASCII_CharStream.java
[Link]
[Link]

JavaCC
[Link]
[Link]
[Link]
[Link]

javac
[Link]
ASCII_CharStream.java [Link]
[Link]
[Link]

JavaCC

Java Transform
Archivo de Entrada

Archivo(s)
Resultantes
Sintaxis de los archivos para
[Link]

JavaCC
javacc_input ::=
[javacc_options]
"PARSER_BEGIN" "(" <IDENTIFIER> ")"
java_compilation_unit
"PARSER_END" "(" <IDENTIFIER> ")"
productions
<EOF>
Sintaxis de los archivos para
[Link]

JavaCC
javacc_options ::=
”options" ”{" (option_binding)* ”}" ]

option_binding ::=
“IGNORE_CASE” “=“ java_boolean_literal “;”
| “OUTPUT_DIRECTORY” “=“ java_string_literal “;”
Sintaxis de los archivos para
[Link]

JavaCC
productions ::=
(production)* [tok_mng_decls]
(production)*

production ::=
javacode_production
| regular_exp_production
| bnf_production
Sintaxis de los archivos para
[Link]

JavaCC
Regular_expr_production ::=
[ lexical_state_list ]
regexp_kind [ “[“ “IGNORE_CASE” “]” ]
“{“regexp_spec (“|” regexp_spec )*“}”
Sintaxis de los archivos para
[Link]

JavaCC

regexpr_kind ::= "TOKEN"


| "SPECIAL_TOKEN"
| "SKIP"
| "MORE“
regexpr_spec ::=
regular_expression [ java_block ] [ ":" java_identifier ]
Sintaxis de los archivos para
[Link]

JavaCC

regular_expression ::=
java_string_literal
| “<" [ [ "#" ] java_identifier ":" ]
complex_reg_exp_choices
">"
| "<" java_identifier ">"
|"<" "EOF" ">"
Sintaxis de los archivos para
[Link]

JavaCC

complex_reg_exp_choices ::=
complex_regular_expression
( “|" complex_regular_expression )*

complex_regular_expression::=
(complex_regular_expression_unit )*
Sintaxis de los archivos para
[Link]

JavaCC
Ojo: note que al agregar
complex_regular_expression_unit ::=
el símbolo +, * o ? . La
expresión al la que se
java_string_literal aplica debe estar entre
paréntesis!
| "<" java_identifier ">"
| character_list
| "(" complex_reg_exp_choices ")" [ "+" | "*" | "?" ]
Sintaxis de los archivos para
[Link]

JavaCC

character_list ::=
[ "~" ] "[" [ char_descriptor ( "," character_descriptor )* ] “]"

char_descriptor ::=
java_string_literal [ "-" java_string_literal ]
Sintaxis de los archivos para
[Link]

JavaCC
bnf_production ::=
java_return_type
java_identifier "(" java_parameter_list ")" ":"
java_block
"{" expansion_choices "}“

expansion_choices ::= expansion ( "|" expansion )*

expansion ::= ( expansion_unit )*


Sintaxis de los archivos para
[Link]

JavaCC Ojo: note que al agregar


el símbolo +, * o ? . La
expresión al la que se
expansion_unit ::=
aplica debe estar entre
java_block paréntesis!
| "(" expansion_choices ")" [ "+" | "*" | "?" ]
| "[" expansion_choices "]"
| [ java_assignment_lhs "=" ] regular_expression
| [java_assignment_lhs "=" ] java_method_invocation

También podría gustarte