Return-Path: Delivered-To: apmail-geronimo-scm-archive@www.apache.org Received: (qmail 73313 invoked from network); 30 Aug 2007 09:15:30 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 30 Aug 2007 09:15:30 -0000 Received: (qmail 52840 invoked by uid 500); 30 Aug 2007 09:15:25 -0000 Delivered-To: apmail-geronimo-scm-archive@geronimo.apache.org Received: (qmail 52807 invoked by uid 500); 30 Aug 2007 09:15:25 -0000 Mailing-List: contact scm-help@geronimo.apache.org; run by ezmlm Precedence: bulk list-help: list-unsubscribe: List-Post: Reply-To: dev@geronimo.apache.org List-Id: Delivered-To: mailing list scm@geronimo.apache.org Received: (qmail 52791 invoked by uid 99); 30 Aug 2007 09:15:25 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 30 Aug 2007 02:15:25 -0700 X-ASF-Spam-Status: No, hits=-100.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO eris.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 30 Aug 2007 09:16:27 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id F18BB1A9842; Thu, 30 Aug 2007 02:15:05 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: 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 Date: Thu, 30 Aug 2007 09:15:05 -0000 To: scm@geronimo.apache.org From: jdillon@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20070830091505.F18BB1A9842@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org 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(); } }