• Viernes 8 de Noviembre de 2024, 18:53

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - yonicm

Páginas: [1]
1
C/C++ / analizador lexico
« en: Viernes 11 de Junio de 2010, 19:26 »
estoy realizando un proyecto con flex y bison en debian, quisiera saber si me pueden dar una ayudita, el caso es el siguiente: tengo mi analizador lexico que debe verificar una direccion web que está guardada en un archivo de texto, el problema es que no se que me falta por escribirle a mi analizador para que funcione, espero me den una ayudita. colocaré el codigo de lex y el codigo de bison.

CODIGO DE LEX
%option noyywrap

%{
#include
#include
#include
%}

/******************************DEFINICION DE TOKENS******************************************/

HTTP (http)
FTP (ftp)
HTTPS (https)
LDAP (ldap)
DIAG ("/")
DOSPUNTOS (":")
PUNTO (".")
LETRA [A-Za-z]
DIGITO [0-9]
INTERROGA ("?")
IGUAL ("=")
GUION_MAY ("_")
GUION_MEN ("-")
PAREN_ABIERTO ("(")
PAREN_CERRADO (")")
AMPERSON ("&")
ASTERISCO ("*")
MAS ("+")
CADENA ({LETRA}|{DIGITO}|{GUION_MAY}|{GUION_MEN})+
DOMINIO {CADENA}({PUNTO}{CADENA})*({DOSPUNTOS}{DIGITO}+)*(({DIAG}({CADENA}|{DIGITO}|{PUNTO}|{INTERROGA}|{IGUAL}|{GUION_MAY}|{GUION_MEN}|{PAREN_ABIERTO}|{PAREN_CERRADO}|{AMPERSON}|{ASTERISCO}|{MAS})*)*
PROTOCOLO {HTTP}|{FTP}|{HTTPS}|{LDAP}
URL {PROTOCOLO}{DOSPUNTOS}{DIAG}{DIAG}{DOMINIO}

%%

URL {printf("%s es una url valida",yytext);}
. {printf("%s no es una url valida",yytext);}

%%

int main(int argc, char *argv[])
{
system("clear");
yyin = fopen(argv[1],"r");
yylex();
fclose(yyin);
return 0;
}

CODIGO DE BISON

%{
#include
void yyerror(char *s); //Metodo sobrecargado para muestra de errores
%}

//DECLARACION DE TOKENS
%token HTTP
%token FTP
%token HTTPS
%token LDAP
%token DIAG
%token DOSPUNTOS
%token PUNTO
%token INTERROGA
%token IGUAL
%token PAREN_ABIERTO
%token PAREN_CERRADO
%token AMPERSON
%token ASTERISCO
%token MAS
%token CADENA

%start URL

%%

URL: PROTOCOLO DOSPUNTOS DIAG DIAG DOMINIO
;

PROTOCOLO: HTTP
| FTP
| HTTPS
| LDAP
;

DOMINIO: CADENA EXTENSION SUBURL
;

EXTENSION: EXTENSION PUNTO CADENA
| PUNTO CADENA
;

SUBURL: SUBURL DIAG EXPRESION
| DIAG EXPRESION
;

EXPRESION: CADENA
| ASTERISCO
| AMPERSON
| INTERROGA
| PAREN_ABIERTO
| PAREN_CERRADO
| IGUAL
| MAS
;

%%

void yyerror(char *s)
{
}

Páginas: [1]