Dear *,

generating the C lexer and parser for the Sparql grammar using the options 
below produces huge files:

options {
        language = C;
        output = AST;
        ASTLabelType = pANTLR3_BASE_TREE;
}

2.4K Sparql.tokens
85M SparqlLexer.c <---
30K SparqlLexer.h
1.5M SparqlParser.c <---
69K SparqlParser.h

In addition, the files cannot be compiled as it seems that the generators have 
not been updated to reflect the API changes in the latest C runtime (or maybe 
it is the other way round :)). In particular, I see errors like these:

SparqlLexer.c:1214276:48: error: member reference type 'pANTLR3_STRING' (aka 
'struct ANTLR3_STRING_struct *') is a
      pointer; maybe you meant to use '->'?
                     setText(LEXER->getText(LEXER).substring(1, 
LEXER->getText(LEXER).length()-1)); 
                             ~~~~~~~~~~~~~~~~~~~~~^
                                                  ->
SparqlLexer.c:1214276:49: error: no member named 'substring' in 'struct 
ANTLR3_STRING_struct'; did you mean 'subString'?
                     setText(LEXER->getText(LEXER).substring(1, 
LEXER->getText(LEXER).length()-1)); 
                                                   ^~~~~~~~~
                                                   subString
./antlr3string.h:179:8: note: 'subString' declared here
                                        (*subString)    (struct 
ANTLR3_STRING_struct * string, ANTLR3_UINT32 ...
                                          ^
SparqlLexer.c:1214276:83: error: member reference type 'pANTLR3_STRING' (aka 
'struct ANTLR3_STRING_struct *') is a
      pointer; maybe you meant to use '->'?
                     setText(LEXER->getText(LEXER).substring(1, 
LEXER->getText(LEXER).length()-1)); 
                                                                
~~~~~~~~~~~~~~~~~~~~~^
                                                                                
     ->
SparqlLexer.c:1214276:84: error: no member named 'length' in 'struct 
ANTLR3_STRING_struct'
                     setText(LEXER->getText(LEXER).substring(1, 
LEXER->getText(LEXER).length()-1)); 


I'm using antlr 3.4, but I have also tested this with antlr 3.3. Generating the 
Java lexer and parser works as expected and the files are much smaller:

2.4K Sparql.tokens
582K SparqlLexer.java
876K SparqlParser.java

Any suggestions and help are highly appreciated.

Thanks in advance,

Todor



List: http://www.antlr.org/mailman/listinfo/antlr-interest
Unsubscribe: 
http://www.antlr.org/mailman/options/antlr-interest/your-email-address

-- 
You received this message because you are subscribed to the Google Groups 
"il-antlr-interest" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/il-antlr-interest?hl=en.

Reply via email to