[antlr-interest] urgent help required ...

James Ladd james_ladd at hotmail.com
Mon Jan 2 16:56:21 PST 2012


Hi Bart,

That is good suggestion.
I have not done this yet because Jim Idle said he would help, and he has some familiarity with this project.
Still waiting for Jim though.

Rgs, James.

Date: Mon, 2 Jan 2012 23:02:43 +0100
Subject: Re: [antlr-interest] urgent help required ...
From: bkiers at gmail.com
To: james_ladd at hotmail.com
CC: antlr-interest at antlr.org

Hi James,

On Tue, Dec 27, 2011 at 9:03 AM, James Ladd <james_ladd at hotmail.com> wrote:





Hi Bart and all ....

The main no viable alternative errors occur around line 25 of Smalltalk.g
in the rule:

method returns [Method n]
   
 :    o = NAME c= '_class_'? '>>'  messagePattern '[' primitive? 
temporaries? statements  ']' {$n = MethodFactory.create($o.text, 
$c.text, $messagePattern.n, $primitive.n, $temporaries.n, 
$statements.n);}
    ;

To get started with building and 
parsing you can either use Antrl works or the getting started here: 
http://www.redline.st/discover/getting-started.html
The project sources are here:  https://github.com/redline-smalltalk/redline-smalltalk


In  a nutshell there are a few binarySymbol methods that cause this rule to break with a "no viable" alternative.

If you goto the file Magnitude.st and change line 14 from 

- \> aMagnitude


to

- > aMagnitude

You will then start to get the error.

If you were to make the line

- , aMagnitude

That will cause the error as well and it should not.

The second error I get is on the same rule. Essentially I changed the file PreProcessor.g to spit out a

'_class_' rather than 'class' to overcome a no viable alternative error I was getting. Id like to make sure
the preprocessor did NOT put out _class_ and that the method pattern rule on line 25 of Smalltalk.g

was ok with 'o = NAME c= 'class'? '>>'  messagePattern'

Not it is ok for a method to look like the following:

- class
  ^ nil

You could modify Magnitude.st to have a method like this for testing.


Rgs, James.


If I strip your `Smalltalk.g` file from all custom code, copy the `Magnitude.st`, and generate a small main class to let the parser only parse the `Magnitude.st`  file:

    import org.antlr.runtime.*;
    public class Main {      public static void main(String[] args) throws Exception {        SmalltalkLexer lexer = new SmalltalkLexer(new ANTLRFileStream("Magnitude.st"));
        SmalltalkParser parser = new SmalltalkParser(new CommonTokenStream(lexer));        parser.program();      }    }
    java -cp antlr-3.3.jar org.antlr.Tool Smalltalk.g 
    javac -cp antlr-3.3.jar *.java    java -cp .:antlr-3.3.jar Main
I get the following error (without changing anything to the input file!):
    Magnitude.st line 5:2 no viable alternative at input '<'

I'm probably doing something wrong, but I don't feel much like cloning a Gith-repo, building it all with maven etc. 
If you could post a self-containable grammar file (including a main method and without any custom code, or accompanying Main class as I posted) and could clearly indicate what goes wrong, and how you think it should be parsed, your chances in getting an answer would increase greatly, I think.

Regards,
Bart. 		 	   		  


More information about the antlr-interest mailing list