[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bison++ problem
From: |
Grzegorz_Szostak |
Subject: |
bison++ problem |
Date: |
Thu, 4 Jul 2002 11:20:44 +0200 |
Hello,
I know that this is GNU bison mailling list but bison++ is based on bison ;
-)
So, please help me:
I'm developing script parser and I've got problem with message: parse
error, expecting `$'
It looks like my parser doesn't work - it waits for "dollarsign" which - i
think means - that he expect "end of input (line?)"
How can I make my parser work?
Below is my .yy file:
%define ERROR_VERBOSE
%define VERBOSE
%define DEBUG 1
%define MEMBERS \
yyFlexLexer lexer;
%define LEX_BODY { return lexer.yylex(); }
%define ERROR_BODY { cerr << "error: " << msg << endl; lexer.yyrestart
(&cin); }
%define LSP_NEEDED
%union {
string *str;
char c;
}
%token<str> NUMBER
%token<str> VAR
%token<str> VAR_NAME
%token<str> PLUS
%token<str> EQU
%left EQU PLUS
%type<str> expression line def_decl assig operation root
%%
root: expression { (*$$) = "t"; }
;
expression: line
;
line: def_decl
| assig
| operation
;
def_decl: VAR VAR_NAME EQU NUMBER ';' {
pVars->Define((*$2), (*$1), (void*) $4->c_str() );
$$ = &((*pVars)[(*$2)].getString());
delete $1;
delete $2;
delete $3;
delete $4;
} /* deklaracja i inicjacja */
assig: VAR_NAME EQU NUMBER ';' {
(*pVars)[(*$1)] = (*$3);
delete $1;
delete $3;
} /* przypisanie */
;
operation: VAR_NAME PLUS VAR_NAME ';' {
(*pVars)[(*$1)] + (*pVars)[(*$3)];
//$$ = &Vars[string($1)].getString();
delete $1;
delete $2;
delete $3;
} /* suma na symbolach */
| VAR_NAME ';' {
cout << (*pVars)[(*$1)];
delete $1;
} /* wypisanie wartosci */
;
%%
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- bison++ problem,
Grzegorz_Szostak <=