[RESOLVIDO]Lex: dá erro e não sei resolver

PHP, Java, JavaScript, XML, XHTML, HTML, CSS, ASP, Delphi, Assembly, LaTeX, C, UML, Flash, Perl, SQL, Python, Zope, Pascal, WML. Se conhece mais de 3 siglas referidas, este é o forum para si.

Moderadores: Administradores, Moderadores

[RESOLVIDO]Lex: dá erro e não sei resolver

Mensagempor Gocho » Quarta Jun 07, 2006 17:21

Boas! Depois de compilar o seguite ficheiro..

%{
#include <string.h>
%}

digito [0-9]
letra [a-zA-Z]

%%
{digito}+ {strcpy(yylval.s, yytext);return NUM;}

(INSERIR|inserir) return INSERIR;

(SUBSTITUIR|substituir) return (SUBSTITUIR);

(SUBSTITUIRTODAS|subtituirtodas) return (SUBSTITUIRTODAS);

(APAGAR|apagar) return (APAGAR);

(APAGARTODAS|apagartodas) return (APAGARTODAS);

(APAGARLINHA|apagarlinha) return (APAGARLINHA);

{letra}+[-]?{letra}+ {strcpy(yylval.s,yytext);return (TEXTO);}

\; return(';');

[ \t\n] ;

. printf("Erro Lexico\n");
%%

yywrap(){return 1;}


Obtenho os seguintes erros....

lex.l: In function `yylex':
lex.l:9: error: `yylval' undeclared (first use in this function)
lex.l:9: error: (Each undeclared identifier is reported only once
lex.l:9: error: for each function it appears in.)
lex.l:9: error: `NUM' undeclared (first use in this function)
lex.l:11: error: `INSERIR' undeclared (first use in this function)
lex.l:13: error: `SUBSTITUIR' undeclared (first use in this function)
lex.l:15: error: `SUBSTITUIRTODAS' undeclared (first use in this function)
lex.l:17: error: `APAGAR' undeclared (first use in this function)
lex.l:19: error: `APAGARTODAS' undeclared (first use in this function)
lex.l:21: error: `APAGARLINHA' undeclared (first use in this function)
lex.l:23: error: `TEXTO' undeclared (first use in this function)

Alguem me pode dar uma ajuda no erro da linha 9? Não percebo pk dá erro!!
Editado pela última vez por Gocho em Sábado Jun 10, 2006 12:49, num total de 1 vez.
Avatar do Utilizador
Gocho
Membro de Prata
Membro de Prata
 
Mensagens: 238
Registado: Sexta Set 10, 2004 0:37
Localização: Marte

Mensagempor n3oNx » Sábado Jun 10, 2006 12:42

precisas de ter um ficheiro .y que te contenha a union yylval com os campos que utilizas e onde estejam declarados esses tokens todos que tens nos returns.
n3oNx
Membro de Prata
Membro de Prata
 
Mensagens: 318
Registado: Sábado Jul 09, 2005 2:39

Mensagempor Gocho » Sábado Jun 10, 2006 12:49

Sim.. eu sei... mas era o da linha 9 que me tava a preocupar! Já descobri, tinha o #include "lex.yy.c" declarado no local errado! :)
Avatar do Utilizador
Gocho
Membro de Prata
Membro de Prata
 
Mensagens: 238
Registado: Sexta Set 10, 2004 0:37
Localização: Marte


Voltar para Programação

Quem está ligado:

Utilizadores a ver este Fórum: Nenhum utilizador registado e 2 visitantes

cron