You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pig.apache.org by th...@apache.org on 2010/12/02 02:29:17 UTC

svn commit: r1041245 - in /pig/trunk: build.xml src/org/apache/pig/parser/QueryParser.g test/org/apache/pig/parser/TestQueryParser.java

Author: thejas
Date: Thu Dec  2 01:29:16 2010
New Revision: 1041245

URL: http://svn.apache.org/viewvc?rev=1041245&view=rev
Log:
PIG-1618: Switch to new parser generator technology - NewParser-5.patch

Modified:
    pig/trunk/build.xml
    pig/trunk/src/org/apache/pig/parser/QueryParser.g
    pig/trunk/test/org/apache/pig/parser/TestQueryParser.java

Modified: pig/trunk/build.xml
URL: http://svn.apache.org/viewvc/pig/trunk/build.xml?rev=1041245&r1=1041244&r2=1041245&view=diff
==============================================================================
--- pig/trunk/build.xml (original)
+++ pig/trunk/build.xml Thu Dec  2 01:29:16 2010
@@ -123,7 +123,7 @@
     <property name="rat.reporting.classname" value="rat.Report"/>
 
     <!-- javadoc properties  -->
-    <property name="javadoc.link.java" value="http://java.sun.com/j2se/1.5.0/docs/api/" />
+    <property name="javadoc.link.java" value="http://download.oracle.com/javase/1.5.0/docs/api/" />
 
     <!-- test patch properties -->
     <property name="scratch.dir" value="${user.home}/tmp"/>
@@ -300,7 +300,7 @@
         <javacc target="${src.gen.dot.parser.dir}/DOTParser.jj" outputdirectory="${src.gen.dot.parser.dir}" javacchome="${javacc.home}" />
     </target>
 	
-	  <target name="gen" depends="genParser"
+	  <target name="gen" depends="genTreeParser"
 	    description="generates lexer and parser code from an ANTLR grammar">
 	    <!-- Move generated Java code to the correct package directory. -->
 	    <move todir="${src.gen.dir}${grammar.package.dir}">
@@ -330,17 +330,14 @@
 	    </java>
 	  </target>
 	
-<!--
-
 	  <target name="genTreeParser" depends="genParser"
 	    unless="treeGrammarProcessed"
 	    description="generates tree parser class from an ANTLR grammar">
 	    <java classname="org.antlr.Tool"
 	      classpathref="classpath" fork="true">
-	      <arg line="${tool.options} ${grammar.name}Tree.g"/>
+	      <arg line="-o ${src.gen.dir}/${grammar.package.dir} ${src.dir}/${grammar.package.dir}/DefaultDataTypeInserter.g"/>
 	    </java>
 	  </target>
--->	
 
 	  <target name="prepare">
 	    <uptodate property="lexerGrammarProcessed" srcfile="${grammar.src.dir}/${grammar.name}Lexer.g">

Modified: pig/trunk/src/org/apache/pig/parser/QueryParser.g
URL: http://svn.apache.org/viewvc/pig/trunk/src/org/apache/pig/parser/QueryParser.g?rev=1041245&r1=1041244&r2=1041245&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/parser/QueryParser.g (original)
+++ pig/trunk/src/org/apache/pig/parser/QueryParser.g Thu Dec  2 01:29:16 2010
@@ -18,6 +18,10 @@
  
 /**
  * Parser file for Pig Parser
+ *
+ * NOTE: THIS FILE IS THE BASE FOR A FEW TREE PARSER FILES, such as DefaultDataTypeInserter.g, 
+ *       SO IF YOU CHANGE THIS FILE, YOU WILL PROBABLY NEED TO MAKE CORRESPONDING CHANGES TO 
+ *       THOSE FILES AS WELL.
  */
 
 parser grammar QueryParser;
@@ -32,6 +36,7 @@ tokens {
     QUERY;
     STATEMENT;
     FUNC;
+    FUNC_EVAL;
     CAST_EXPR;
     BIN_EXPR;
     TUPLE_VAL;
@@ -44,6 +49,9 @@ tokens {
     NESTED_PROJ;
     SPLIT_BRANCH;
     NESTED_PLAN;
+    MAP_TYPE;
+    TUPLE_TYPE;
+    BAG_TYPE;
 }
 
 @header {
@@ -176,7 +184,7 @@ load_clause : LOAD^ filename ( USING! fu
 filename : QUOTEDSTRING
 ;
 
-as_clause: AS! tuple_def
+as_clause: AS^ tuple_def
 ;
 
 tuple_def : tuple_def_full | tuple_def_simple
@@ -201,13 +209,15 @@ simple_type : INT | LONG | FLOAT | DOUBL
 ;
 
 tuple_type : TUPLE? tuple_def_full
-          -> tuple_def_full
+          -> ^( TUPLE_TYPE tuple_def_full )
 ;
 
-bag_type : BAG? LEFT_CURLY! tuple_def? RIGHT_CURLY!
+bag_type : BAG? LEFT_CURLY tuple_def? RIGHT_CURLY
+        -> ^( BAG_TYPE tuple_def? )
 ;
 
-map_type : MAP! LEFT_BRACKET! RIGHT_BRACKET!
+map_type : MAP LEFT_BRACKET RIGHT_BRACKET
+        -> MAP_TYPE
 ;
 
 func_clause : func_name LEFT_PAREN func_args? RIGHT_PAREN
@@ -267,20 +277,17 @@ and_cond : unary_cond ( AND^ unary_cond 
 ;
 
 unary_cond : LEFT_PAREN! cond RIGHT_PAREN!
-           |
-             expr FILTEROP^ expr
-           |
-             func_eval
-           |
-             null_check_cond
-           |
-             not_cond
+           | expr FILTEROP^ expr
+           | func_eval
+           | null_check_cond
+           | not_cond
 ;
 
 not_cond : NOT^ unary_cond
 ;
 
-func_eval: func_name LEFT_PAREN! real_arg_list? RIGHT_PAREN!
+func_eval : func_name LEFT_PAREN real_arg_list? RIGHT_PAREN
+          -> ^( FUNC_EVAL func_name real_arg_list? )
 ;
 
 real_arg_list : real_arg ( COMMA real_arg )*

Modified: pig/trunk/test/org/apache/pig/parser/TestQueryParser.java
URL: http://svn.apache.org/viewvc/pig/trunk/test/org/apache/pig/parser/TestQueryParser.java?rev=1041245&r1=1041244&r2=1041245&view=diff
==============================================================================
--- pig/trunk/test/org/apache/pig/parser/TestQueryParser.java (original)
+++ pig/trunk/test/org/apache/pig/parser/TestQueryParser.java Thu Dec  2 01:29:16 2010
@@ -43,7 +43,7 @@ public class TestQueryParser {
         Tree ast = (Tree)result.getTree();
 
         System.out.println( ast.toStringTree() );
-        printTree( (CommonTree)ast, 0 );
+        TreePrinter.printTree( (CommonTree)ast, 0 );
         Assert.assertEquals( 0, lexer.getNumberOfSyntaxErrors() );
         Assert.assertEquals( 0, parser.getNumberOfSyntaxErrors() );
     }
@@ -102,7 +102,7 @@ public class TestQueryParser {
         Tree ast = (Tree)result.getTree();
 
         System.out.println( ast.toStringTree() );
-        printTree( (CommonTree)ast, 0 );
+        TreePrinter.printTree( (CommonTree)ast, 0 );
         Assert.assertEquals( 0, lexer.getNumberOfSyntaxErrors() );
         Assert.assertEquals( 0, parser.getNumberOfSyntaxErrors() );
    
@@ -145,23 +145,9 @@ public class TestQueryParser {
         Tree ast = (Tree)result.getTree();
 
         System.out.println( ast.toStringTree() );
-        printTree( (CommonTree)ast, 0 );
+        TreePrinter.printTree( (CommonTree)ast, 0 );
         Assert.assertEquals( 0, lexer.getNumberOfSyntaxErrors() );
         return parser.getNumberOfSyntaxErrors();
     }
 
-    public static void printTree(CommonTree tree, int indent) {
-        if( tree != null ) {
-            StringBuilder sb = new StringBuilder();
-            for ( int i = 0; i < indent; i++ )
-                sb = sb.append( "   " );
-
-            System.out.println( sb + tree.getText() );
-
-            for ( int i = 0; i < tree.getChildCount(); i++ ) {
-                printTree( (CommonTree)tree.getChild( i ), indent + 1 );
-            }
-        }
-    }
-
 }