Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Added a tree walking example.

...

To use a grammar T.g:

Code Block
 package {

	import flash.display.Sprite;

	import org.antlr.runtime.*;

	public class AntlrActionScriptTest extends Sprite {
		public function AntlrActionScriptTest ( ):void {
			var lexer:TLexer = new TLexer ( new ANTLRStringStream ( input ) );
			var tokens:CommonTokenStream = CommonTokenStream ( lexer );

			var parser:TParser = TParser ( tokens );
			parser.entry_rule ( );
 		}
	}
}

...

For grammars T.g (parser and lexer) and TWalker.g (the tree parser):

Code Block

package {

	import flash.display.Sprite;

	import org.antlr.runtime.*;

	public class AntlrActionScriptTreeWalkerTest extends Sprite {
		public function AntlrActionScriptTest ( ):void {
			var lexer:TLexer = new TLexer ( new ANTLRStringStream ( input ) );
			var tokens:CommonTokenStream = CommonTokenStream ( lexer );

			var parser:TParser = TParser ( tokens );
			var r:ParserRuleReturnScope = parser.entry_rule ( );
 
			// This is the root of the AST. 
			var root:Tree = r.tree; 
 
			var nodes:CommonTreeNodeStream = CommonTreeNodeStream ( root );
			nodes.setTokenStream ( tokens );
			var walker:TWalker = new TWalker ( nodes );
			walker.entry_rule ( ); 

 		}
	}
}
Code Block
import antlr3
import antlr3.tree
from TLexer import TLexer
from TParser import TParser
from TWalker import TWalker

char_stream = antlr3.ANTLRStringStream(...)
lexer = TLexer(char_stream)
tokens = antlr3.CommonTokenStream(lexer)
parser = TParser(tokens)
r = parser.entry_rule()

# this is the root of the AST
root = r.tree

nodes = antlr3.tree.CommonTreeNodeStream(root)
nodes.setTokenStream(tokens)
walker = TWalker(nodes)
walker.entry_rule()

...