views:

295

answers:

1

Hi/lo. I've succesfully installed ANTLR3 on my Windows and bound it to Visual Studio, but...

Could anybody show me a working example of calculator in C++/ANTLR? The same as from distrib, which is written in Java.

I have a trouble making it. I use std::map<std::string, double> for nametable, but one cannot load C++ headers from @header, because all generated files are totally in C (with implicit extern "C" for C++ compiler) and even cstdlib can't compile. When I've coded wrapper functions in main.cpp and loaded them from lexer/parser, I got a strange error message. Finally, I've got the following one and I don't give an idea on what it is.

Antlr3c.lib(antlr3lexer.obj) : MSIL .netmodule or module compiled with /GL found; restarting link with /LTCG; add /LTCG to the link command line to improve linker performance
LINK : warning LNK4075: ignoring '/INCREMENTAL' due to '/LTCG' specification
Creating library D:\antlr_usage\Debug\antlr_usage.lib and object D:\antlr_usage\Debug\antlr_usage.exp
LINK : warning LNK4098: defaultlib 'MSVCRT' conflicts with use of other libs; use /NODEFAULTLIB:library
A: 

Unfortunately there isn't a release C++ target yet for Antlr 3. Antlr v2 however does have a great C++ target as well as a sample Calc program.

Antlr v3 does have a C target. If you want to look through it's samples you can find them on this page:

http://www.antlr.org/api/C/index.html

Or right here for the impatient:) http://www.antlr.org/download/examples-v3.tar.gz

If you want to see the Antlr V2 C++ Calc example and try to adapt it to use C in Antlr v3, you can download it here: http://www.antlr.org/api/C/index.html

chollida
Yeah, thx.But I have a tradition to use Google before asking a question, so you didn't tell me anything new.Currently I found boost::spirit, made a grammar for C++ (approx. 180 rules). During compilation it ate 2.4GiB of memory and died.Currently I'm trying to find some info on LEX/YACC installation.
Anthrax Gamma
@Anthrax Gamma `But I have a tradition to use Google before asking a question, so you didn't tell me anything new.` Then you should put that in the question so people will know what you've already tried. Asking good questions is a tough art to learn:)
chollida