Analizador lexical, preprocesador, "scanner".
Genera una unidad sintáctica o un vector de unidades sintácticas.
Realiza la primera fase de la reducción al axioma de la gramática.
Elimina espacios en blanco y comentarios.
Lenguaje regular.
Unidades sintácticas:
Axioma: <US> (Unidad Sintáctica).
<US> ::= <Id> | <PR> | <Numero> | <Literal> | <Caracter> | <SS> | <SM> <Id> ::= <Letra> | <Letra> <IdC> <IdC> ::= <Letra> <IdC> | <Cifra> <IdC> | <Letra> | <Cifra> <Numero> ::= <Entero> | <Real> <Entero> ::= <EnteroSS> | - <EnteroSS> <EnteroSS> ::= <Cifra> | <Cifra> <EnteroSS> <Real> ::= <PFijo> | <PFijo> <Exponente> <PFijo> ::= <Entero> . <EnteroSS> | . <EnteroSS> | <Entero> . <Exponente> ::= E <Entero> <Literal> ::= "" | " <Cadena> " <Cadena> ::= <Simbolo> | <Simbolo> <Cadena> <Caracter> ::= ' <Simbolo> ' <SS> ::= + | - | * | / | = | < | > | ( | ) <SM> ::= =+ | != | <= | >= | ++ | -- <Simbolo> ::= <Letra> | <Cifra> | <SS> | ! | . | , | b | \' | \" | \n <Letra> ::= A | B | ... | Z | a | b | ... | z <Cifra> ::= 0 | 1 | ... | 9
Puede hacerse mediante una rutina semántica o mediante reglas sintácticas:
<US> ::= b <US> <IdC> ::= b <IdC> etc.
Puede hacerse mediante una rutina semántica o mediante reglas sintácticas:
<Comentario> ::= /**/ | /* <Cadena> */
Añadir análisis de comentarios.
Extraer la gramática tipo 3 del autómata.
A cada regla de la gramática se le asocia una acción semántica, si hace falta.
Ejemplos:
<Id> ::= f0 <Letra> f1 f2 <IdC> f3 <IdC> ::= <Letra> f1 f2 <IdC> | <Cifra> f1 f2 <IdC> | ^donde
<Entero> ::= g0 <EnteroSS> | g0 - <EnteroSS> g2 <EnteroSS> ::= <Cifra> g1 | <Cifra> g1 <EnteroSS>donde
Resultado: N.
Funciones semánticas típicas:
Construir un programa en C.