Parece ke no se adjunto esto es lo ke tenia el fichero:
%{
/****************************************************************************
myparser.y
ParserWizard generated YACC file.
Date: jueves, 01 de junio de 2006
****************************************************************************/
#include "mylexer.h"
%}
%union
{
struct { int type;} type_exp;
struct { int entry;} symbol;
}
/////////////////////////////////////////////////////////////////////////////
// declarations section
// attribute type
%include {
#ifndef YYSTYPE
#define YYSTYPE int
#endif
}
// place any declarations here
// tokens
//%type <type_exp> atributos
/*tag_ap_decl //tag de apertura de declaracion del xml
tag_ci_decl //tag de cierre de declaracion del xml
tag_ap //tag de apertura de xml
tag_ci //tag de cierre de xml
tag_ap_com //tag de apertura de comentarios
tag_ci_com //tag de cierre de comentarios
*/
%token <symbol> ID
// NUM
LITERAL
%token XML
%token ENCODING
%token VERSION
%token COMI
%token COMF
%token XMLI
%token XMLF
//%right '=' // operador relacional derecho
//%left '/' // operadores relacionales izquierdos
// parser name
%name myparser
// class definition
{
private:
Lexer* lexer;
Programa programa;
int j;
TableSymbols ts;
Errors errors;
int type;
public:
void Init(Lexer* lexer,Program& , TableSymbols& ts, Errors&);
void yyerror(char* text);
void yysyntaxerror();
}
%%
/////////////////////////////////////////////////////////////////////////////
// rules section
// place your YACC rules here (there must be at least one)
//Grammar
documento: declaracion_xml cuerpo
;
declaracion_xml: XMLI XML atribXML XMLF
;
atribXML: VERSION '=' ver | ENCODING '=' code | VERSION '=' ver ENCODING '=' code
;
ver: "1.0"|"1.1"
;
code: "ISO-8859-1" | "US-ASCII" | "UTF-8" | "UCS-2" | "EUC-JP"|"ISO-8859-2"
|"ISO-8859-3"|"ISO-8859-4"|"ISO-8859-5"|"ISO-8859-6"|"ISO-8859-7"|"UTF-7"
;
cuerpo: etiqueta
|;
etiqueta: comentario etiqueta comentario '<' reservada '>' comentario etiqueta comentario LITERAL comentario'<''/' reservada '>'
|'<' reservada '/''>'
;
reservada: ID atributos
;
atributos: atributos ID '=' '\"' LITERAL '\"'
|;
comentario: COMI LITERAL COMF|;
%%
/////////////////////////////////////////////////////////////////////////////
// programs section
void Parser::Init(Lexer* lexer, Program& programa, TableSymbols& ts, Errors& errors)
{
this->programa = programa;
this->ts = ts;
this->lexer = lexer;
this->errors = errors;
j = 0;
yycreate(lexer);
}
void Parser::yyerror(char* text)
{
errors.AddSemanticError(lexer->yylineno,text, lexer->yytext);
}
void Parser::yysyntaxerror()
{
errors.AddSyntaxError(lexer->yylineno,lexer->yytext);
}