[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