[antlr-interest] crash burn on C runtime

Carter, Nathan NCARTER at bentley.edu
Thu Dec 15 14:50:28 PST 2011


Aha!  I found what seems to be some more reliable documentation, here:

	http://www.antlr.org/wiki/display/ANTLR3/Five+minute+introduction+to+ANTLR+3

It contains a much simpler and less buggy main() for a C program.  Using that one (with my language in place of the one from that example) builds almost perfectly, only one error remaining, shown below.

But again, I'm a little boggled, because it's complaining about antlr3AsciiFileStreamNew, which is defined NOWHERE in any of the antlr sources, neither the runtime nor the library.  I guess I've found docs that are *more* up-to-date but not totally up-to-date???

Still searching...

Nathan


$ make
g++ -x c -c -Wall -I./include/ main.c -o main.o
main.c: In function ‘main’:
main.c:11: warning: implicit declaration of function ‘antlr3AsciiFileStreamNew’
main.c:11: warning: assignment makes pointer from integer without a cast
main.c:16: error: ‘struct LMParser_Ctx_struct’ has no member named ‘expr’
make: *** [main.o] Error 1




On Dec 15, 2011, at 5:44 PM, Carter, Nathan wrote:

> 
> I'm making some progress on my own problem (quoted below).  I've created an antlr3config.h file by hand, as I found some docs suggesting that I should do so.  I'm now trying to build a project containing the antlr C sources, my generated parser from AntlrWorks, and the main.c example on this documentation page:
> 
> 	http://www.antlr.org/api/C/buildrec.html
> 
> Actually, I have not taken that file exactly as it is on that page; I needed to make two changes:
> 1. In place of #include <treeparser.h>, I have followed the advice in the code's comments and instead included the generated files for my language, LMParser.h and LMLexer.h.
> 2. Throughout that file, it uses Lang as the language name, which I have replaced everywhere with LM, the name of my language as in the code generated from AntlrWorks.
> 
> However, my build still fails, and the errors indicate that there are some identifiers that are not declared.  So I grepped for them, but they appear nowhere in the antlr sources at all, only in that one example piece of documentation!  So is that documentation out-of-date?  Is there a correct piece of documentation I should be following?
> 
> Thanks!
> 
> Nathan
> 
> 
> $ make
> g++ -x c -c -Wall -I./include/ main.c -o main.o
> main.c: In function ‘main’:
> main.c:73: error: ‘LMParser_decl_return’ undeclared (first use in this function)
> main.c:73: error: (Each undeclared identifier is reported only once
> main.c:73: error: for each function it appears in.)
> main.c:73: error: expected ‘;’ before ‘langAST’
> main.c:87: error: ‘pLMDumpDecl’ undeclared (first use in this function)
> main.c:87: error: expected ‘;’ before ‘treePsr’
> main.c:105: warning: implicit declaration of function ‘antlr38BitFileStreamNew’
> main.c:105: warning: assignment makes pointer from integer without a cast
> main.c:141: error: ‘struct ANTLR3_LEXER_struct’ has no member named ‘tokSource’
> main.c:178: error: ‘langAST’ undeclared (first use in this function)
> main.c:178: error: ‘struct LMParser_Ctx_struct’ has no member named ‘decl’
> main.c:184: error: ‘struct ANTLR3_BASE_RECOGNIZER_struct’ has no member named ‘errorCount’
> main.c:186: error: ‘struct ANTLR3_BASE_RECOGNIZER_struct’ has no member named ‘errorCount’
> main.c:195: error: ‘treePsr’ undeclared (first use in this function)
> main.c:195: warning: implicit declaration of function ‘LMDumpDeclNew’
> make: *** [main.o] Error 1
> 
> 
> On Dec 14, 2011, at 8:42 PM, Nathan Carter wrote:
> 
>> I'm replying to a thread from awhile back, which I found on Nabble.  Hope
>> this is the right way to do it...just joined the list...pardon me if I have
>> the customs wrong here.
>> 
>> The error "antlr3config.h: No such file or directory" was the OP's problem,
>> and mine.  Jim Idle responded that the problem was that we just tried to
>> bring in the include/ and src/ folders from the source folders, and did not
>> actually install the runtime distribution.  He then pointed the OP to the
>> docs.
>> 
>> Unfortunately, doing it that way runs counter to my eventual goals.  I'm
>> trying to write code that will be incorporated into a larger project, and so
>> configuring and installing antlr on my particular machine does not solve my
>> problem.  Furthermore, my code is to be cross-platform, so I don't even want
>> to assume antlr installations/libraries exist in particular Unix-friendly
>> locations.
>> 
>> There must (?) be a way with a simple Makefile to get a C program that
>> includes antlr-generated sources to build and run.  (Perhaps I just need to
>> create a plain vanilla antlr3config.h by hand?)
>> 
>> Thank you for any help you can provide.
>> 
>> Nathan
>> 
>> 
>> --
>> View this message in context: http://antlr.1301665.n2.nabble.com/crash-burn-on-C-runtime-tp6887195p7095841.html
>> Sent from the ANTLR mailing list archive at Nabble.com.
>> 
>> List: http://www.antlr.org/mailman/listinfo/antlr-interest
>> Unsubscribe: http://www.antlr.org/mailman/options/antlr-interest/your-email-address
> 
> 
> List: http://www.antlr.org/mailman/listinfo/antlr-interest
> Unsubscribe: http://www.antlr.org/mailman/options/antlr-interest/your-email-address



More information about the antlr-interest mailing list