Hi all.

I just signed up on this list after contacting Mr. Niemann about the antlr 
Python binding. He suggested checking here for a little help.

To transform a large bunch of java interface files to classes and stubs for a 
(broad) Java-to-C interface, I would like to generate all of the wrapper code 
and tables needed for JNI using a code-generator written in Python (I have more 
experience in python and think it es better suited for creating text outputs).

When I launch ANTLR 3.1.1 with the Python output option on the Java 1.5 grammar 
file (from the antlr website), I am experiencing some problems.

First of all, antlr outputs an internal error and some warnings. Then, the 
generated python files contain a few lines of code, which are more java than 
python and won't compile without some manual fixing. And when I'm done with 
that, the generated parser won't work... :-(

Am I missing something here?



The output of antlr when taking the Java 1.5 grammer and just adding the 
'language=Python' option:


C:\MIB\ANTLR>java -classpath ./antlrworks-1.2.1.jar org.antlr.Tool 
grammar\Java.g

ANTLR Parser Generator  Version 3.1.1
error(10):  internal error: eval tree parse error : <AST>:0:0: unexpected AST 
node:

org.antlr.stringtemplate.language.ActionEvaluator.expr(Unknown Source)
org.antlr.stringtemplate.language.ActionEvaluator.action(Unknown Source)
org.antlr.stringtemplate.language.ASTExpr.evaluateExpression(Unknown Source)
org.antlr.stringtemplate.language.ASTExpr.handleExprOptions(Unknown Source)
org.antlr.stringtemplate.language.ASTExpr.write(Unknown Source)
org.antlr.stringtemplate.StringTemplate.write(Unknown Source)
org.antlr.stringtemplate.language.ConditionalExpr.writeSubTemplate(Unknown Sourc
e)
org.antlr.stringtemplate.language.ConditionalExpr.write(Unknown Source)
org.antlr.stringtemplate.StringTemplate.write(Unknown Source)
org.antlr.stringtemplate.language.ASTExpr.write(Unknown Source)
org.antlr.stringtemplate.language.ASTExpr.writeAttribute(Unknown Source)
org.antlr.stringtemplate.language.ActionEvaluator.action(Unknown Source)
org.antlr.stringtemplate.language.ASTExpr.write(Unknown Source)
org.antlr.stringtemplate.StringTemplate.write(Unknown Source)
org.antlr.stringtemplate.language.ASTExpr.write(Unknown Source)
org.antlr.stringtemplate.language.ASTExpr.writeAttribute(Unknown Source)
org.antlr.stringtemplate.language.ActionEvaluator.action(Unknown Source)
org.antlr.stringtemplate.language.ASTExpr.write(Unknown Source)
org.antlr.stringtemplate.StringTemplate.write(Unknown Source)
org.antlr.codegen.CodeGenerator.write(CodeGenerator.java:1275)
org.antlr.codegen.Target.genRecognizerFile(Target.java:94)
org.antlr.codegen.CodeGenerator.genRecognizer(CodeGenerator.java:460)
org.antlr.Tool.generateRecognizer(Tool.java:420)
org.antlr.Tool.process(Tool.java:287)
org.antlr.Tool.main(Tool.java:72)



Then, the python interpreter stumbles over this:

   if not ((t1.getLine() == t2.getLine() && .....

(python requires 'and', not '&&'.)

or this:

   protected boolean enumIsKeyword = true;

that looks like java. Python wood need something like    enumIsKeyword=True
Finally this:

   if (!enumIsKeyword) _type=Identifier;

Here, the ! operator instead of 'not' is used, and the colon is missing.
It should be:     if not enumIsKeyword: _type=Identifier


When I fix these little bugs manually in the antlr output and try to feed it 
with a sample java file, the parser fails:

 Traceback (most recent call last):
   File "testprog.py", line 59, in ?
     main(sys.argv[1:])
   File "testprog.py", line 35, in main
     parser.compilationUnit()
   File "grammar\JavaParser.py", line 361, in compilationUnit
     alt8 = self.dfa8.predict(self.input)
   File "C:\Dahlhoff\MIB\ANTLRtest\antlr3\dfa.py", line 92, in predict
     c = input.LA(1)
   File "C:\Dahlhoff\MIB\ANTLRtest\antlr3\streams.py", line 859, in LA
     return self.LT(i).type
   File "C:\Dahlhoff\MIB\ANTLRtest\antlr3\streams.py", line 801, in LT
     self.fillBuffer()
   File "C:\Dahlhoff\MIB\ANTLRtest\antlr3\streams.py", line 669, in fillBuffer
     t = self.tokenSource.nextToken()
   File "C:\Dahlhoff\MIB\ANTLRtest\antlr3\recognizers.py", line 1133, in 
nextToken
     self._state.tokenStartCharIndex = self.input.index()
 TypeError: find/rfind/index/rindex() takes at least 1 argument (0 given)



Thanks for any help with this.

Achim.
____________________________________

. (CM-AI/PJ-VW37)

Blaupunkt GmbH
Robert-Bosch-Straße 200
31139 Hildesheim
www.blaupunkt.com

Tel. 5395
Fax -
PC-Fax -
Mobil -
achim.dahlh...@de.bosch.com

Sitz: Hildesheim, Registergericht: Amtsgericht Hildesheim HRB 120
Aufsichtsratsvorsitzender: Volkmar Denner; Geschäftsführung: Uwe Thomas,
Egbert Hellwig, Dirk Hoheisel, Michael Klemm
Blaupunkt GmbH - Ein Unternehmen der Bosch Gruppe


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 il-antlr-interest@googlegroups.com
To unsubscribe from this group, send email to 
il-antlr-interest+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/il-antlr-interest?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to