Código em C de um analisador léxico
1064 palavras
5 páginas
/*Variáveis: programa, bloco, const-decl, const-decl', var-decl, proc-decl, statement, condição, relação, expressão, operador-adição termo, operador-multiplicação, fator, identificador, número Gramática: Programa -> Bloco. Bloco -> Const-decl Var-decl Proc-decl Statment Const-decl -> const Identificador = Numero Const-decl';| lambda Const-decl' -> ,Identificador = Numero Const-decl' | lambda Var-decl -> var Identificador Var-decl';|lambda Var-decl' -> ,Identificador Var-decl'| lambda Proc-decl -> procedure Identificador; Bloco; Proc-decl| lambda Statement -> Identificador := Expressao | call Identificador | begin Statement Statement' end | if Condicao then Statement | while Condicao do Statement Statement' -> ; Statement | lambda Condicao -> Expressao Relacao Expressao Relacao -> = | | < | > | = Operador-adicao -> + | - Termo -> Fator Termo' Termo' -> Operador-mult Fator Termo' | lambda Operador-mult -> * | / Fator -> Identificador | Numero | (Expressao) Digito -> 0 | 1 ... | 9 Numero -> Digito Numero| lambda Letra -> a | b ... | z | A | B ... | Z Identificador -> Letra Combinacao Combinacao -> Letra Combinacao | Digito Combinacao | lambda TOKENS: Identificador; Numero; AbreParentese; FechaParentese; Operador-mult; Operador-adicao; Operador-relacao; PontoEVirgula; Atribuicao; Ponto; Virgula; PalavraReservada (const, var, procedura, call, begin, end, if, then, while, do)
*/ #define _GNU_SOURCE
#include
#include int ehLetra(char caracter); int ehDigito(char caracter); int ehPalavraReservada(int posicaoInicial, int posicaoFinal, char