[antlr-interest] Grammer wont compile, any pointers?
rhalin
rhalin at yahoo.com
Mon Aug 2 15:57:48 PDT 2004
I'm having almost this exact same problem. Antlr 2.7.2 on Slackware
Linux running KDevelop. Grammer compiles and links fine in Visual
Studio 6 in Windows (antlr 2.7.1). The examples also compile fine.
I'm linking against the antlr.a library. Since the examples compile,
I'm thinking I'm missing a compiler flag somewhere, any ideas? Any
help would be appreciated.
-Rhalin
--- In antlr-interest at yahoogroups.com, "Oliver Haines"
error : 'CharScanner.hpp:114: undefined reference' ... ??? msg 11897
<xlrg2002 at y...> wrote:
> Hi,
>
> I try to test antlr for c++. If I compile my simple app I get this
errors:
>
> cd "/home/graemer/Projekte/antlr/debug" && WANT_AUTOCONF_2_5="1"
> WANT_AUTOMAKE_1_6="1" make -k -j1
> *make all-recursive
> *Making all in src
> *g++ -DHAVE_CONFIG_H -I. -I/home/graemer/Projekte/antlr/src -I..
> -I/usr/local/include -O0 -g3 -c
> /home/graemer/Projekte/antlr/src/antlr.cpp
> */bin/sh ../libtool --mode=link g++ -O0 -g3 -L/usr/local/lib -lantlr
> -o antlr antlr.o
> *g++ -O0 -g3 -o antlr antlr.o -L/usr/local/lib -lantlr
> *antlr.o(.text+0x24): In function `main':
> */usr/local/include/antlr/CharScanner.hpp:114: undefined reference
to
> `CalcLexer::CalcLexer[in-charge](std::basic_istream<char,
> std::char_traits<char> >&)'
> *antlr.o(.text+0x36):/usr/local/include/antlr/CharScanner.hpp:233:
> undefined reference to
> `CalcParser::CalcParser[in-charge](antlr::TokenStream&)'
> *antlr.o(.text+0x41):/usr/local/include/antlr/CharScanner.hpp:309:
> undefined reference to `CalcParser::expr()'
> *antlr.o(.gnu.linkonce.t._ZN9CalcLexerD1Ev+0xb): In function
> `CalcLexer::~CalcLexer [in-charge]()':
> */usr/local/include/antlr/CharScanner.hpp:241: undefined reference
to
> `vtable for CalcLexer'
> *antlr.o(.gnu.linkonce.t._ZNK10CalcParser12getTokenNameEi+0x2c): In
> function `CalcParser::getTokenName(int) const':
> */usr/local/include/antlr/CharScanner.hpp:163: undefined reference
to
> `CalcParser::tokenNames'
> *antlr.o(.gnu.linkonce.t._ZNK10CalcParser13getTokenNamesEv+0x4): In
> function `CalcParser::getTokenNames() const':
> */usr/local/include/antlr/CharScanner.hpp:240: undefined reference
to
> `CalcParser::tokenNames'
> *collect2: ld returned 1 exit status
> *make[2]: *** [antlr] Error 1
> *make[2]: Target `all' not remade because of errors.
> *make[1]: *** [all-recursive] Error 1
> *make: *** [all-recursive-am] Error 2
> *make: Target `all' not remade because of errors.
> **** Exited with status: 2 ***
>
>
> I'm using kdevelop 3 and linux.
>
> the simple grammar:
>
> options
> {
> language="Cpp";
> }
>
> // Lexer
> class CalcLexer extends Lexer;
>
> options {
> k=2; // needed for newline junk
> charVocabulary='\u0000'..'\u007F'; // allow ascii
> }
>
> LPAREN: '(' ;
> RPAREN: ')' ;
> PLUS : '+' ;
> MINUS : '-' ;
> STAR : '*' ;
> INT : ('0'..'9')+ ;
> WS : ( ' '
> | '\r' '\n'
> | '\n'
> | '\t'
> )
> {$setType(antlr::Token.SKIP);}
> ;
>
> // Parser
> class CalcParser extends Parser;
>
> options {
> buildAST=true;
> }
>
> expr: mexpr ((PLUS^|MINUS^) mexpr)*
> ;
>
> mexpr
> : atom (STAR^ atom)*
> ;
>
> atom: INT
> | LPAREN! expr RPAREN!
> ;
>
> // AST-Walker
> class CalcTreeWalker extends TreeParser;
>
> options {
> importVocab=CalcLexer;
> }
>
> expr returns [int r=0]
> { int a,b; }
> : #(PLUS a=expr b=expr) {r = a+b;}
> | #(MINUS a=expr b=expr) {r = a-b;}
> | #(STAR a=expr b=expr) {r = a*b;}
> | i:INT {r = atof(i->getText().c_str());}
> ;
>
> Please help!
> thx,
> Oliver
Yahoo! Groups Links
<*> To visit your group on the web, go to:
http://groups.yahoo.com/group/antlr-interest/
<*> To unsubscribe from this group, send an email to:
antlr-interest-unsubscribe at yahoogroups.com
<*> Your use of Yahoo! Groups is subject to:
http://docs.yahoo.com/info/terms/
More information about the antlr-interest
mailing list