You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by jd...@apache.org on 2007/08/30 11:15:05 UTC
svn commit: r571083 - in /geronimo/sandbox/gshell/trunk/gshell-parser/src:
main/antlr/CommandLine.g main/antlr/CommandLineWalker.g
test/java/org/apache/geronimo/gshell/parser/CommandLineParserTest.java
Author: jdillon
Date: Thu Aug 30 02:15:04 2007
New Revision: 571083
URL: http://svn.apache.org/viewvc?rev=571083&view=rev
Log:
Add a walker grammar... antlr is still making my head spin :-(
Added:
geronimo/sandbox/gshell/trunk/gshell-parser/src/main/antlr/CommandLineWalker.g
- copied, changed from r571074, geronimo/sandbox/gshell/trunk/gshell-parser/src/main/antlr/CommandLine.g
Modified:
geronimo/sandbox/gshell/trunk/gshell-parser/src/main/antlr/CommandLine.g
geronimo/sandbox/gshell/trunk/gshell-parser/src/test/java/org/apache/geronimo/gshell/parser/CommandLineParserTest.java
Modified: geronimo/sandbox/gshell/trunk/gshell-parser/src/main/antlr/CommandLine.g
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gshell/trunk/gshell-parser/src/main/antlr/CommandLine.g?rev=571083&r1=571082&r2=571083&view=diff
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-parser/src/main/antlr/CommandLine.g (original)
+++ geronimo/sandbox/gshell/trunk/gshell-parser/src/main/antlr/CommandLine.g Thu Aug 30 02:15:04 2007
@@ -24,7 +24,7 @@
grammar CommandLine;
options {
- language=Java;
+ language=Java;
output=AST;
// k=2;
// backtrack=true;
@@ -43,11 +43,11 @@
//
compilationUnit
- : ( expression^ ( ';' | NewLine | EOF ) )*
+ : ( expression ( ';' | NewLine | EOF ) )*
;
expression
- : ( WhiteSpace )* ( argument^ ( WhiteSpace )* )+
+ : ( WhiteSpace )* ( argument ( WhiteSpace )* )+
;
argument
Copied: geronimo/sandbox/gshell/trunk/gshell-parser/src/main/antlr/CommandLineWalker.g (from r571074, geronimo/sandbox/gshell/trunk/gshell-parser/src/main/antlr/CommandLine.g)
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gshell/trunk/gshell-parser/src/main/antlr/CommandLineWalker.g?p2=geronimo/sandbox/gshell/trunk/gshell-parser/src/main/antlr/CommandLineWalker.g&p1=geronimo/sandbox/gshell/trunk/gshell-parser/src/main/antlr/CommandLine.g&r1=571074&r2=571083&rev=571083&view=diff
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-parser/src/main/antlr/CommandLine.g (original)
+++ geronimo/sandbox/gshell/trunk/gshell-parser/src/main/antlr/CommandLineWalker.g Thu Aug 30 02:15:04 2007
@@ -21,78 +21,29 @@
// $Rev$ $Id$
//
-grammar CommandLine;
+tree grammar CommandLineWalker;
options {
- language=Java;
- output=AST;
- // k=2;
- // backtrack=true;
- // memoize=true;
+ language=Java;
+ tokenVocab=CommandLine;
+ ASTLabelType=CommonTree;
}
@header {
package org.apache.geronimo.gshell.parser;
}
-@lexer::header {
- package org.apache.geronimo.gshell.parser;
-}
-
-//
-// FIXME: Still need to work out whitespace muck, this isn't always happy... :-(
-//
-compilationUnit
- : ( expression^ ( ';' | NewLine | EOF ) )*
+commandLine
+ : expression*
;
expression
- : ( WhiteSpace )* ( argument^ ( WhiteSpace )* )+
+ : argument*
;
argument
- : literal
- ;
-
-literal
: OpaqueStringLiteral
| StringLiteral
| PlainStringLiteral
- ;
-
-//
-// Lexer
-//
-
-//
-// FIXME: Need to figure out how to handle \r\n too
-//
-
-NewLine
- : ( '\n' )
- ;
-
-WhiteSpace
- : ( ' ' | '\t' | '\r' ) // { $channel=HIDDEN; }
- ;
-
-PlainStringLiteral
- : ( ~( ';' | '\'' | '"' | WhiteSpace ) )+
- ;
-
-OpaqueStringLiteral
- : '\'' ( EscapeSequence | ~( '\\' | '\'' ) )* '\''
- ;
-
-//
-// TODO: Figure out how to parse out ${foo.bar} and "$foo bar", for variable expansion
-//
-
-StringLiteral
- : '"' ( EscapeSequence | ~( '\\' | '"' ) )* '"'
- ;
-
-fragment
-EscapeSequence
- : '\\' ('b'|'t'|'n'|'f'|'r'|'\"'|'\''|'\\')
;
+
Modified: geronimo/sandbox/gshell/trunk/gshell-parser/src/test/java/org/apache/geronimo/gshell/parser/CommandLineParserTest.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gshell/trunk/gshell-parser/src/test/java/org/apache/geronimo/gshell/parser/CommandLineParserTest.java?rev=571083&r1=571082&r2=571083&view=diff
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-parser/src/test/java/org/apache/geronimo/gshell/parser/CommandLineParserTest.java (original)
+++ geronimo/sandbox/gshell/trunk/gshell-parser/src/test/java/org/apache/geronimo/gshell/parser/CommandLineParserTest.java Thu Aug 30 02:15:04 2007
@@ -23,6 +23,7 @@
import org.antlr.runtime.ANTLRStringStream;
import org.antlr.runtime.CharStream;
import org.antlr.runtime.CommonTokenStream;
+import org.antlr.runtime.tree.CommonTreeNodeStream;
import org.antlr.runtime.tree.Tree;
/**
@@ -38,7 +39,7 @@
CharStream stream = new ANTLRStringStream(input);
CommandLineLexer lex = new CommandLineLexer(stream);
- CommonTokenStream tokens = new CommonTokenStream(lex);
+ CommonTokenStream ts = new CommonTokenStream(lex);
/*
CommonTreeNodeStream nodes = new CommonTreeNodeStream((Tree)r.tree);
@@ -47,8 +48,14 @@
walker.program();
*/
- CommandLineParser parser = new CommandLineParser(tokens);
+ CommandLineParser parser = new CommandLineParser(ts);
CommandLineParser.compilationUnit_return r = parser.compilationUnit();
System.out.println("tree="+((Tree)r.tree).toStringTree());
+
+
+ CommonTreeNodeStream nodes = new CommonTreeNodeStream((Tree)r.tree);
+ nodes.setTokenStream(ts);
+ CommandLineWalker walker = new CommandLineWalker(nodes);
+ walker.commandLine();
}
}