You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by dh...@apache.org on 2008/11/11 02:50:18 UTC
svn commit: r712905 [36/38] - in /hadoop/core/trunk: ./ src/contrib/hive/
src/contrib/hive/cli/src/java/org/apache/hadoop/hive/cli/
src/contrib/hive/common/src/java/org/apache/hadoop/hive/conf/
src/contrib/hive/conf/ src/contrib/hive/data/files/ src/co...
Added: hadoop/core/trunk/src/contrib/hive/serde/src/java/org/apache/hadoop/hive/serde2/dynamic_type/thrift_grammar.jj
URL: http://svn.apache.org/viewvc/hadoop/core/trunk/src/contrib/hive/serde/src/java/org/apache/hadoop/hive/serde2/dynamic_type/thrift_grammar.jj?rev=712905&view=auto
==============================================================================
--- hadoop/core/trunk/src/contrib/hive/serde/src/java/org/apache/hadoop/hive/serde2/dynamic_type/thrift_grammar.jj (added)
+++ hadoop/core/trunk/src/contrib/hive/serde/src/java/org/apache/hadoop/hive/serde2/dynamic_type/thrift_grammar.jj Mon Nov 10 17:50:06 2008
@@ -0,0 +1,2365 @@
+/*@bgen(jjtree) Generated By:JJTree: Do not edit this line. /home/pwyckoff/projects/hadoop/trunk/VENDOR/hadoop-0.17/src/contrib/hive/serde/src/java/org/apache/hadoop/hive/serde2/dynamic_type/thrift_grammar.jj */
+/*@egen*/options {
+ STATIC = false;
+}
+
+
+PARSER_BEGIN(thrift_grammar)
+
+package org.apache.hadoop.hive.serde2.dynamic_type;
+
+import java.util.*;
+import java.io.*;
+import java.net.*;
+import com.facebook.thrift.protocol.*;
+import com.facebook.thrift.transport.*;
+import org.apache.hadoop.hive.serde2.dynamic_type.*;
+
+public class thrift_grammar/*@bgen(jjtree)*/implements thrift_grammarTreeConstants/*@egen*/ {/*@bgen(jjtree)*/
+ protected JJTthrift_grammarState jjtree = new JJTthrift_grammarState();
+
+/*@egen*/
+
+ private List<String> include_path = null;
+
+ // for computing the autogenerated field ids in thrift
+ private int field_val;
+
+ // store types and tables
+ // separately because one cannot use a table (ie service.method) as a Struct like type.
+ protected Map<String,DynamicSerDeSimpleNode> types;
+ protected Map<String,DynamicSerDeSimpleNode> tables;
+
+ // system include path
+ final private static String default_include_path[] = { "/usr/local/include","/usr/include","/usr/local/include/thrift/if","/usr/local/include/fb303/if" };
+
+ // need three params to differentiate between this and 2 param method auto generated since
+ // some calls in the autogenerated code use null param for 2nd param and thus ambiguous.
+ protected thrift_grammar(InputStream is, List<String> include_path, boolean junk) {
+ this(is,null);
+ this.types = new HashMap<String,DynamicSerDeSimpleNode> () ;
+ this.tables = new HashMap<String,DynamicSerDeSimpleNode> () ;
+ this.include_path = include_path;
+ this.field_val = -1;
+ }
+
+ // find the file on the include path
+ private static File findFile(String fname, List<String> include_path) {
+ for(String path: include_path) {
+ final String full = path + "/" + fname;
+ File f = new File(full);
+ if(f.exists()) {
+ return f;
+ }
+ }
+ return null;
+ }
+
+ public static void main(String args[]) {
+ String filename = null;
+ List<String> include_path = new ArrayList<String>();
+
+ for(String path: default_include_path) {
+ include_path.add(path);
+ }
+ for(int i = 0; i < args.length; i++) {
+ String arg = args[i];
+ if(arg.equals("--include") && i + 1 < args.length) {
+ include_path.add(args[++i]);
+ }
+ if(arg.equals("--file") && i + 1 < args.length) {
+ filename = args[++i];
+ }
+ }
+
+ InputStream is = System.in;
+ if(filename != null) {
+ try {
+ is = new FileInputStream(findFile(filename, include_path));
+ } catch(IOException e) {
+ }
+ }
+ thrift_grammar t = new thrift_grammar(is,include_path,false);
+
+ try {
+ t.Start();
+ } catch (Exception e) {
+ System.out.println("Parse error.");
+ System.out.println(e.getMessage());
+ e.printStackTrace();
+ }
+ }
+}
+
+PARSER_END(thrift_grammar)
+
+
+
+SKIP :
+{
+ " "
+| "\t"
+| "\n"
+| "\r"
+| <"#"(~["\n"])* ("\n"|"\r"|"\r\n")>
+| <"//" (~["\n","\r"])* ("\n"|"\r"|"\r\n")>
+| <"/*" (~["*"])* "*" (~["/"] (~["*"])* "*")* "/">
+}
+
+
+/**
+ * HELPER DEFINITIONS, COMMENTS, CONSTANTS, AND WHATNOT
+ */
+
+TOKEN:
+{
+<tok_const: "const">|
+<tok_namespace : "namespace"> |
+<tok_cpp_namespace: "cpp_namespace">|
+<tok_cpp_include : "cpp_include">|
+<tok_cpp_type: "cpp_type">|
+<tok_java_package : "java_package">|
+<tok_cocoa_prefix: "cocoa_prefix">|
+<tok_csharp_namespace: "csharp_namespace">|
+<tok_php_namespace: "php_namespace">|
+<tok_py_module: "py_module">|
+<tok_perl_package: "perl_package">|
+<tok_ruby_namespace: "ruby_namespace">|
+<tok_smalltalk_category: "smalltalk_category">|
+<tok_smalltalk_prefix: "smalltalk_prefix">|
+<tok_xsd_all: "xsd_all">|
+<tok_xsd_optional: "xsd_optional">|
+<tok_xsd_nillable: "xsd_nillable">|
+<tok_xsd_namespace: "xsd_namespace">|
+<tok_xsd_attrs: "xsd_attrs">|
+<tok_include : "include">|
+<tok_void : "void">|
+<tok_bool : "bool">|
+<tok_byte: "byte">|
+<tok_i16: "i16">|
+<tok_i32: "i32">|
+<tok_i64: "i64">|
+<tok_double: "double">|
+<tok_string: "string">|
+<tok_slist : "slist">|
+<tok_senum: "senum">|
+<tok_map: "map"> |
+<tok_list: "list"> |
+<tok_set: "set"> |
+<tok_async: "async"> |
+<tok_typedef: "typedef"> |
+<tok_struct: "struct"> |
+<tok_exception: "exception"> |
+<tok_extends: "extends"> |
+<tok_throws: "throws"> |
+<tok_service: "service"> |
+<tok_enum: "enum"> |
+<tok_required: "required"> |
+<tok_optional: "optional"> |
+<tok_skip: "skip">
+}
+
+TOKEN: {
+
+<tok_int_constant : (["+","-"])?(["0"-"9"])+>
+|
+<tok_double_constant: ["+","-"](<DIGIT>)*"."(<DIGIT>)+(["e","E"](["+","-"])?(<DIGIT>)+)?>
+|
+<IDENTIFIER: <LETTER>(<LETTER>|<DIGIT>|"."|"_")*>
+|
+<#LETTER: (["a"-"z", "A"-"Z" ]) >
+|
+<#DIGIT: ["0"-"9"] >
+|
+<tok_literal: "\""(~["\""])*"\""|"'"(~["'"])*"'">
+|
+<tok_st_identifier: ["a"-"z","A"-"Z","-"]([".","a"-"z","A"-"Z","_","0"-"9","-"])*>
+}
+
+
+SimpleNode Start() : {/*@bgen(jjtree) Start */
+ DynamicSerDeStart jjtn000 = new DynamicSerDeStart(JJTSTART);
+ boolean jjtc000 = true;
+ jjtree.openNodeScope(jjtn000);
+/*@egen*/}
+{/*@bgen(jjtree) Start */
+ try {
+/*@egen*/
+ HeaderList() ([CommaOrSemicolon()] Definition())+/*@bgen(jjtree)*/
+ {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+ }
+/*@egen*/
+ {
+ return jjtn000;
+ }/*@bgen(jjtree)*/
+ } catch (Throwable jjte000) {
+ if (jjtc000) {
+ jjtree.clearNodeScope(jjtn000);
+ jjtc000 = false;
+ } else {
+ jjtree.popNode();
+ }
+ if (jjte000 instanceof RuntimeException) {
+ throw (RuntimeException)jjte000;
+ }
+ if (jjte000 instanceof ParseException) {
+ throw (ParseException)jjte000;
+ }
+ throw (Error)jjte000;
+ } finally {
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ }
+ }
+/*@egen*/
+}
+
+SimpleNode HeaderList() : {/*@bgen(jjtree) HeaderList */
+ DynamicSerDeHeaderList jjtn000 = new DynamicSerDeHeaderList(JJTHEADERLIST);
+ boolean jjtc000 = true;
+ jjtree.openNodeScope(jjtn000);
+/*@egen*/}
+{/*@bgen(jjtree) HeaderList */
+ try {
+/*@egen*/
+ (Header())*/*@bgen(jjtree)*/
+ {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+ }
+/*@egen*/
+ {
+ return jjtn000;
+ }/*@bgen(jjtree)*/
+ } catch (Throwable jjte000) {
+ if (jjtc000) {
+ jjtree.clearNodeScope(jjtn000);
+ jjtc000 = false;
+ } else {
+ jjtree.popNode();
+ }
+ if (jjte000 instanceof RuntimeException) {
+ throw (RuntimeException)jjte000;
+ }
+ if (jjte000 instanceof ParseException) {
+ throw (ParseException)jjte000;
+ }
+ throw (Error)jjte000;
+ } finally {
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ }
+ }
+/*@egen*/
+
+}
+
+SimpleNode Header() : {/*@bgen(jjtree) Header */
+ DynamicSerDeHeader jjtn000 = new DynamicSerDeHeader(JJTHEADER);
+ boolean jjtc000 = true;
+ jjtree.openNodeScope(jjtn000);
+/*@egen*/}
+{/*@bgen(jjtree) Header */
+ try {
+/*@egen*/
+ Include()/*@bgen(jjtree)*/
+ {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+ }
+/*@egen*/
+ {
+ return jjtn000;
+ }
+| Namespace()/*@bgen(jjtree)*/
+ {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+ }
+/*@egen*/
+ {
+ return jjtn000;
+ }/*@bgen(jjtree)*/
+ } catch (Throwable jjte000) {
+ if (jjtc000) {
+ jjtree.clearNodeScope(jjtn000);
+ jjtc000 = false;
+ } else {
+ jjtree.popNode();
+ }
+ if (jjte000 instanceof RuntimeException) {
+ throw (RuntimeException)jjte000;
+ }
+ if (jjte000 instanceof ParseException) {
+ throw (ParseException)jjte000;
+ }
+ throw (Error)jjte000;
+ } finally {
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ }
+ }
+/*@egen*/
+}
+
+SimpleNode Namespace() : {/*@bgen(jjtree) Namespace */
+ DynamicSerDeNamespace jjtn000 = new DynamicSerDeNamespace(JJTNAMESPACE);
+ boolean jjtc000 = true;
+ jjtree.openNodeScope(jjtn000);
+/*@egen*/}
+{/*@bgen(jjtree) Namespace */
+ try {
+/*@egen*/
+ <tok_namespace> <IDENTIFIER> <IDENTIFIER>/*@bgen(jjtree)*/
+{
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+}
+/*@egen*/
+{
+ return jjtn000;
+}
+|
+<tok_cpp_namespace> <IDENTIFIER>/*@bgen(jjtree)*/
+{
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+}
+/*@egen*/
+{
+ return jjtn000;
+}
+|
+<tok_cpp_include> <tok_literal>/*@bgen(jjtree)*/
+{
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+}
+/*@egen*/
+{
+ return jjtn000;
+}
+|
+<tok_php_namespace> <IDENTIFIER>/*@bgen(jjtree)*/
+{
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+}
+/*@egen*/
+{
+ return jjtn000;
+}
+|
+<tok_py_module> <IDENTIFIER>/*@bgen(jjtree)*/
+{
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+}
+/*@egen*/
+{
+ return jjtn000;
+}
+|
+<tok_perl_package> <IDENTIFIER>/*@bgen(jjtree)*/
+{
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+}
+/*@egen*/
+{
+ return jjtn000;
+}
+|
+<tok_ruby_namespace> <IDENTIFIER>/*@bgen(jjtree)*/
+{
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+}
+/*@egen*/
+{
+ return jjtn000;
+}
+|
+<tok_smalltalk_category> <tok_st_identifier>/*@bgen(jjtree)*/
+{
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+}
+/*@egen*/
+{
+ return jjtn000;
+}
+|
+<tok_smalltalk_prefix> <IDENTIFIER>/*@bgen(jjtree)*/
+{
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+}
+/*@egen*/
+{
+ return jjtn000;
+}
+|
+<tok_java_package> <IDENTIFIER>/*@bgen(jjtree)*/
+{
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+}
+/*@egen*/
+{
+ return jjtn000;
+}
+|
+<tok_cocoa_prefix> <IDENTIFIER>/*@bgen(jjtree)*/
+{
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+}
+/*@egen*/
+{
+ return jjtn000;
+}
+|
+<tok_xsd_namespace> <tok_literal>/*@bgen(jjtree)*/
+{
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+}
+/*@egen*/
+{
+ return jjtn000;
+}
+|
+<tok_csharp_namespace> <IDENTIFIER>/*@bgen(jjtree)*/
+{
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+}
+/*@egen*/
+{
+ return jjtn000;
+}/*@bgen(jjtree)*/
+ } finally {
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ }
+ }
+/*@egen*/
+}
+
+
+SimpleNode Include() : {/*@bgen(jjtree) Include */
+ DynamicSerDeInclude jjtn000 = new DynamicSerDeInclude(JJTINCLUDE);
+ boolean jjtc000 = true;
+ jjtree.openNodeScope(jjtn000);
+/*@egen*/
+ String fname;
+ boolean found = false;
+}
+{/*@bgen(jjtree) Include */
+ try {
+/*@egen*/
+ <tok_include>
+ fname=<tok_literal>.image/*@bgen(jjtree)*/
+{
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+}
+/*@egen*/
+{
+ // bugbug somewhat fragile below substring expression
+ fname = fname.substring(1,fname.length() - 1);
+
+ // try to find the file on the include path
+ File f = thrift_grammar.findFile(fname, this.include_path);
+ if(f != null) {
+ found = true;
+ try {
+ FileInputStream fis = new FileInputStream(f);
+ thrift_grammar t = new thrift_grammar(fis,this.include_path, false);
+ t.Start();
+ fis.close();
+ found = true;
+ // add in what we found to our type and table tables.
+ this.tables.putAll(t.tables);
+ this.types.putAll(t.types);
+ } catch (Exception e) {
+ System.out.println("File: " + fname + " - Oops.");
+ System.out.println(e.getMessage());
+ e.printStackTrace();
+ }
+ }
+ if(!found) {
+ throw new RuntimeException("include file not found: " + fname);
+ }
+ return jjtn000;
+}/*@bgen(jjtree)*/
+ } finally {
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ }
+ }
+/*@egen*/
+}
+
+
+SimpleNode Definition() : {/*@bgen(jjtree) Definition */
+ DynamicSerDeDefinition jjtn000 = new DynamicSerDeDefinition(JJTDEFINITION);
+ boolean jjtc000 = true;
+ jjtree.openNodeScope(jjtn000);
+/*@egen*/}
+{/*@bgen(jjtree) Definition */
+ try {
+/*@egen*/
+ Const()/*@bgen(jjtree)*/
+ {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+ }
+/*@egen*/
+ {
+ return jjtn000;
+ }
+| Service()/*@bgen(jjtree)*/
+ {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+ }
+/*@egen*/
+ {
+ return jjtn000;
+ }
+| TypeDefinition()/*@bgen(jjtree)*/
+ {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+ }
+/*@egen*/
+ {
+ return jjtn000;
+ }/*@bgen(jjtree)*/
+ } catch (Throwable jjte000) {
+ if (jjtc000) {
+ jjtree.clearNodeScope(jjtn000);
+ jjtc000 = false;
+ } else {
+ jjtree.popNode();
+ }
+ if (jjte000 instanceof RuntimeException) {
+ throw (RuntimeException)jjte000;
+ }
+ if (jjte000 instanceof ParseException) {
+ throw (ParseException)jjte000;
+ }
+ throw (Error)jjte000;
+ } finally {
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ }
+ }
+/*@egen*/
+}
+
+SimpleNode TypeDefinition() : {/*@bgen(jjtree) TypeDefinition */
+ DynamicSerDeTypeDefinition jjtn000 = new DynamicSerDeTypeDefinition(JJTTYPEDEFINITION);
+ boolean jjtc000 = true;
+ jjtree.openNodeScope(jjtn000);
+/*@egen*/}
+{/*@bgen(jjtree) TypeDefinition */
+ try {
+/*@egen*/
+ Typedef()/*@bgen(jjtree)*/
+ {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+ }
+/*@egen*/
+ {
+ return jjtn000;
+ }
+| Enum()/*@bgen(jjtree)*/
+ {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+ }
+/*@egen*/
+ {
+ return jjtn000;
+ }
+| Senum()/*@bgen(jjtree)*/
+ {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+ }
+/*@egen*/
+ {
+ return jjtn000;
+ }
+| Struct()/*@bgen(jjtree)*/
+ {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+ }
+/*@egen*/
+ {
+ return jjtn000;
+ }
+| Xception()/*@bgen(jjtree)*/
+ {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+ }
+/*@egen*/
+ {
+ return jjtn000;
+ }/*@bgen(jjtree)*/
+ } catch (Throwable jjte000) {
+ if (jjtc000) {
+ jjtree.clearNodeScope(jjtn000);
+ jjtc000 = false;
+ } else {
+ jjtree.popNode();
+ }
+ if (jjte000 instanceof RuntimeException) {
+ throw (RuntimeException)jjte000;
+ }
+ if (jjte000 instanceof ParseException) {
+ throw (ParseException)jjte000;
+ }
+ throw (Error)jjte000;
+ } finally {
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ }
+ }
+/*@egen*/
+
+}
+
+DynamicSerDeTypedef Typedef() : {/*@bgen(jjtree) Typedef */
+ DynamicSerDeTypedef jjtn000 = new DynamicSerDeTypedef(JJTTYPEDEF);
+ boolean jjtc000 = true;
+ jjtree.openNodeScope(jjtn000);
+/*@egen*/}
+{/*@bgen(jjtree) Typedef */
+ try {
+/*@egen*/
+ <tok_typedef>
+ DefinitionType()
+ jjtn000.name = <IDENTIFIER>.image/*@bgen(jjtree)*/
+ {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+ }
+/*@egen*/
+ {
+ // store the type for later retrieval
+ this.types.put(jjtn000.name, jjtn000);
+ return jjtn000;
+ }/*@bgen(jjtree)*/
+ } catch (Throwable jjte000) {
+ if (jjtc000) {
+ jjtree.clearNodeScope(jjtn000);
+ jjtc000 = false;
+ } else {
+ jjtree.popNode();
+ }
+ if (jjte000 instanceof RuntimeException) {
+ throw (RuntimeException)jjte000;
+ }
+ if (jjte000 instanceof ParseException) {
+ throw (ParseException)jjte000;
+ }
+ throw (Error)jjte000;
+ } finally {
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ }
+ }
+/*@egen*/
+}
+
+
+// returning void because we ignore this production.
+void CommaOrSemicolon() : {/*@bgen(jjtree) CommaOrSemicolon */
+ DynamicSerDeCommaOrSemicolon jjtn000 = new DynamicSerDeCommaOrSemicolon(JJTCOMMAORSEMICOLON);
+ boolean jjtc000 = true;
+ jjtree.openNodeScope(jjtn000);
+/*@egen*/}
+{/*@bgen(jjtree) CommaOrSemicolon */
+ try {
+/*@egen*/
+ ","
+|
+ ";"/*@bgen(jjtree)*/
+{
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+}
+/*@egen*/
+{
+}/*@bgen(jjtree)*/
+ } finally {
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ }
+ }
+/*@egen*/
+}
+
+SimpleNode Enum() : {/*@bgen(jjtree) Enum */
+ DynamicSerDeEnum jjtn000 = new DynamicSerDeEnum(JJTENUM);
+ boolean jjtc000 = true;
+ jjtree.openNodeScope(jjtn000);
+/*@egen*/}
+{/*@bgen(jjtree) Enum */
+ try {
+/*@egen*/
+ <tok_enum> <IDENTIFIER> "{" EnumDefList() "}"/*@bgen(jjtree)*/
+ {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+ }
+/*@egen*/
+ {
+ return jjtn000;
+ }/*@bgen(jjtree)*/
+ } catch (Throwable jjte000) {
+ if (jjtc000) {
+ jjtree.clearNodeScope(jjtn000);
+ jjtc000 = false;
+ } else {
+ jjtree.popNode();
+ }
+ if (jjte000 instanceof RuntimeException) {
+ throw (RuntimeException)jjte000;
+ }
+ if (jjte000 instanceof ParseException) {
+ throw (ParseException)jjte000;
+ }
+ throw (Error)jjte000;
+ } finally {
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ }
+ }
+/*@egen*/
+}
+
+SimpleNode EnumDefList() : {/*@bgen(jjtree) EnumDefList */
+ DynamicSerDeEnumDefList jjtn000 = new DynamicSerDeEnumDefList(JJTENUMDEFLIST);
+ boolean jjtc000 = true;
+ jjtree.openNodeScope(jjtn000);
+/*@egen*/}
+{/*@bgen(jjtree) EnumDefList */
+ try {
+/*@egen*/
+ (EnumDef())+/*@bgen(jjtree)*/
+ {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+ }
+/*@egen*/
+ {
+ return jjtn000;
+ }/*@bgen(jjtree)*/
+ } catch (Throwable jjte000) {
+ if (jjtc000) {
+ jjtree.clearNodeScope(jjtn000);
+ jjtc000 = false;
+ } else {
+ jjtree.popNode();
+ }
+ if (jjte000 instanceof RuntimeException) {
+ throw (RuntimeException)jjte000;
+ }
+ if (jjte000 instanceof ParseException) {
+ throw (ParseException)jjte000;
+ }
+ throw (Error)jjte000;
+ } finally {
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ }
+ }
+/*@egen*/
+}
+
+SimpleNode EnumDef() : {/*@bgen(jjtree) EnumDef */
+ DynamicSerDeEnumDef jjtn000 = new DynamicSerDeEnumDef(JJTENUMDEF);
+ boolean jjtc000 = true;
+ jjtree.openNodeScope(jjtn000);
+/*@egen*/}
+{/*@bgen(jjtree) EnumDef */
+ try {
+/*@egen*/
+ <IDENTIFIER> ["=" <tok_int_constant>] [CommaOrSemicolon()]/*@bgen(jjtree)*/
+ {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+ }
+/*@egen*/
+ {
+ return jjtn000;
+ }/*@bgen(jjtree)*/
+ } catch (Throwable jjte000) {
+ if (jjtc000) {
+ jjtree.clearNodeScope(jjtn000);
+ jjtc000 = false;
+ } else {
+ jjtree.popNode();
+ }
+ if (jjte000 instanceof RuntimeException) {
+ throw (RuntimeException)jjte000;
+ }
+ if (jjte000 instanceof ParseException) {
+ throw (ParseException)jjte000;
+ }
+ throw (Error)jjte000;
+ } finally {
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ }
+ }
+/*@egen*/
+}
+
+SimpleNode Senum() : {/*@bgen(jjtree) Senum */
+ DynamicSerDeSenum jjtn000 = new DynamicSerDeSenum(JJTSENUM);
+ boolean jjtc000 = true;
+ jjtree.openNodeScope(jjtn000);
+/*@egen*/}
+{/*@bgen(jjtree) Senum */
+ try {
+/*@egen*/
+ <tok_senum> <IDENTIFIER> "{" SenumDefList() "}"/*@bgen(jjtree)*/
+ {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+ }
+/*@egen*/
+ {
+ return jjtn000;
+ }/*@bgen(jjtree)*/
+ } catch (Throwable jjte000) {
+ if (jjtc000) {
+ jjtree.clearNodeScope(jjtn000);
+ jjtc000 = false;
+ } else {
+ jjtree.popNode();
+ }
+ if (jjte000 instanceof RuntimeException) {
+ throw (RuntimeException)jjte000;
+ }
+ if (jjte000 instanceof ParseException) {
+ throw (ParseException)jjte000;
+ }
+ throw (Error)jjte000;
+ } finally {
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ }
+ }
+/*@egen*/
+}
+
+SimpleNode SenumDefList() : {/*@bgen(jjtree) SenumDefList */
+ DynamicSerDeSenumDefList jjtn000 = new DynamicSerDeSenumDefList(JJTSENUMDEFLIST);
+ boolean jjtc000 = true;
+ jjtree.openNodeScope(jjtn000);
+/*@egen*/}
+{/*@bgen(jjtree) SenumDefList */
+ try {
+/*@egen*/
+ (SenumDef())+/*@bgen(jjtree)*/
+ {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+ }
+/*@egen*/
+ {
+ return jjtn000;
+ }/*@bgen(jjtree)*/
+ } catch (Throwable jjte000) {
+ if (jjtc000) {
+ jjtree.clearNodeScope(jjtn000);
+ jjtc000 = false;
+ } else {
+ jjtree.popNode();
+ }
+ if (jjte000 instanceof RuntimeException) {
+ throw (RuntimeException)jjte000;
+ }
+ if (jjte000 instanceof ParseException) {
+ throw (ParseException)jjte000;
+ }
+ throw (Error)jjte000;
+ } finally {
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ }
+ }
+/*@egen*/
+}
+
+SimpleNode SenumDef() : {/*@bgen(jjtree) SenumDef */
+ DynamicSerDeSenumDef jjtn000 = new DynamicSerDeSenumDef(JJTSENUMDEF);
+ boolean jjtc000 = true;
+ jjtree.openNodeScope(jjtn000);
+/*@egen*/}
+{/*@bgen(jjtree) SenumDef */
+ try {
+/*@egen*/
+ <tok_literal> [CommaOrSemicolon()]/*@bgen(jjtree)*/
+ {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+ }
+/*@egen*/
+ {
+ return jjtn000;
+ }/*@bgen(jjtree)*/
+ } catch (Throwable jjte000) {
+ if (jjtc000) {
+ jjtree.clearNodeScope(jjtn000);
+ jjtc000 = false;
+ } else {
+ jjtree.popNode();
+ }
+ if (jjte000 instanceof RuntimeException) {
+ throw (RuntimeException)jjte000;
+ }
+ if (jjte000 instanceof ParseException) {
+ throw (ParseException)jjte000;
+ }
+ throw (Error)jjte000;
+ } finally {
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ }
+ }
+/*@egen*/
+}
+
+
+SimpleNode Const() : {/*@bgen(jjtree) Const */
+ DynamicSerDeConst jjtn000 = new DynamicSerDeConst(JJTCONST);
+ boolean jjtc000 = true;
+ jjtree.openNodeScope(jjtn000);
+/*@egen*/}
+{/*@bgen(jjtree) Const */
+ try {
+/*@egen*/
+ <tok_const> FieldType() <IDENTIFIER> "=" ConstValue() [CommaOrSemicolon()]/*@bgen(jjtree)*/
+ {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+ }
+/*@egen*/
+ {
+ return jjtn000;
+ }/*@bgen(jjtree)*/
+ } catch (Throwable jjte000) {
+ if (jjtc000) {
+ jjtree.clearNodeScope(jjtn000);
+ jjtc000 = false;
+ } else {
+ jjtree.popNode();
+ }
+ if (jjte000 instanceof RuntimeException) {
+ throw (RuntimeException)jjte000;
+ }
+ if (jjte000 instanceof ParseException) {
+ throw (ParseException)jjte000;
+ }
+ throw (Error)jjte000;
+ } finally {
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ }
+ }
+/*@egen*/
+}
+
+SimpleNode ConstValue() : {/*@bgen(jjtree) ConstValue */
+ DynamicSerDeConstValue jjtn000 = new DynamicSerDeConstValue(JJTCONSTVALUE);
+ boolean jjtc000 = true;
+ jjtree.openNodeScope(jjtn000);
+/*@egen*/}
+{/*@bgen(jjtree) ConstValue */
+ try {
+/*@egen*/
+ <tok_int_constant>/*@bgen(jjtree)*/
+ {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+ }
+/*@egen*/
+ {
+ }
+| <tok_double_constant>/*@bgen(jjtree)*/
+ {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+ }
+/*@egen*/
+ {
+ }
+| <tok_literal>/*@bgen(jjtree)*/
+ {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+ }
+/*@egen*/
+ {
+ }
+| <IDENTIFIER>/*@bgen(jjtree)*/
+ {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+ }
+/*@egen*/
+ {
+ }
+| ConstList()/*@bgen(jjtree)*/
+ {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+ }
+/*@egen*/
+ {
+ }
+| ConstMap()/*@bgen(jjtree)*/
+ {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+ }
+/*@egen*/
+ {
+ return jjtn000;
+ }/*@bgen(jjtree)*/
+ } catch (Throwable jjte000) {
+ if (jjtc000) {
+ jjtree.clearNodeScope(jjtn000);
+ jjtc000 = false;
+ } else {
+ jjtree.popNode();
+ }
+ if (jjte000 instanceof RuntimeException) {
+ throw (RuntimeException)jjte000;
+ }
+ if (jjte000 instanceof ParseException) {
+ throw (ParseException)jjte000;
+ }
+ throw (Error)jjte000;
+ } finally {
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ }
+ }
+/*@egen*/
+}
+
+SimpleNode ConstList() : {/*@bgen(jjtree) ConstList */
+ DynamicSerDeConstList jjtn000 = new DynamicSerDeConstList(JJTCONSTLIST);
+ boolean jjtc000 = true;
+ jjtree.openNodeScope(jjtn000);
+/*@egen*/}
+{/*@bgen(jjtree) ConstList */
+ try {
+/*@egen*/
+ "[" ConstListContents() "]"/*@bgen(jjtree)*/
+ {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+ }
+/*@egen*/
+ {
+ return jjtn000;
+ }/*@bgen(jjtree)*/
+ } catch (Throwable jjte000) {
+ if (jjtc000) {
+ jjtree.clearNodeScope(jjtn000);
+ jjtc000 = false;
+ } else {
+ jjtree.popNode();
+ }
+ if (jjte000 instanceof RuntimeException) {
+ throw (RuntimeException)jjte000;
+ }
+ if (jjte000 instanceof ParseException) {
+ throw (ParseException)jjte000;
+ }
+ throw (Error)jjte000;
+ } finally {
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ }
+ }
+/*@egen*/
+}
+
+SimpleNode ConstListContents() : {/*@bgen(jjtree) ConstListContents */
+ DynamicSerDeConstListContents jjtn000 = new DynamicSerDeConstListContents(JJTCONSTLISTCONTENTS);
+ boolean jjtc000 = true;
+ jjtree.openNodeScope(jjtn000);
+/*@egen*/}
+{/*@bgen(jjtree) ConstListContents */
+ try {
+/*@egen*/
+ (ConstValue() [CommaOrSemicolon()])+/*@bgen(jjtree)*/
+ {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+ }
+/*@egen*/
+ {
+ return jjtn000;
+ }/*@bgen(jjtree)*/
+ } catch (Throwable jjte000) {
+ if (jjtc000) {
+ jjtree.clearNodeScope(jjtn000);
+ jjtc000 = false;
+ } else {
+ jjtree.popNode();
+ }
+ if (jjte000 instanceof RuntimeException) {
+ throw (RuntimeException)jjte000;
+ }
+ if (jjte000 instanceof ParseException) {
+ throw (ParseException)jjte000;
+ }
+ throw (Error)jjte000;
+ } finally {
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ }
+ }
+/*@egen*/
+}
+
+SimpleNode ConstMap() : {/*@bgen(jjtree) ConstMap */
+ DynamicSerDeConstMap jjtn000 = new DynamicSerDeConstMap(JJTCONSTMAP);
+ boolean jjtc000 = true;
+ jjtree.openNodeScope(jjtn000);
+/*@egen*/}
+{/*@bgen(jjtree) ConstMap */
+ try {
+/*@egen*/
+ "{" ConstMapContents() "}"/*@bgen(jjtree)*/
+ {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+ }
+/*@egen*/
+ {
+ return jjtn000;
+ }/*@bgen(jjtree)*/
+ } catch (Throwable jjte000) {
+ if (jjtc000) {
+ jjtree.clearNodeScope(jjtn000);
+ jjtc000 = false;
+ } else {
+ jjtree.popNode();
+ }
+ if (jjte000 instanceof RuntimeException) {
+ throw (RuntimeException)jjte000;
+ }
+ if (jjte000 instanceof ParseException) {
+ throw (ParseException)jjte000;
+ }
+ throw (Error)jjte000;
+ } finally {
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ }
+ }
+/*@egen*/
+}
+
+SimpleNode ConstMapContents() : {/*@bgen(jjtree) ConstMapContents */
+ DynamicSerDeConstMapContents jjtn000 = new DynamicSerDeConstMapContents(JJTCONSTMAPCONTENTS);
+ boolean jjtc000 = true;
+ jjtree.openNodeScope(jjtn000);
+/*@egen*/}
+{/*@bgen(jjtree) ConstMapContents */
+ try {
+/*@egen*/
+ (ConstValue() ":" ConstValue() [CommaOrSemicolon()])+/*@bgen(jjtree)*/
+ {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+ }
+/*@egen*/
+ {
+ }
+|/*@bgen(jjtree)*/
+ {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+ }
+/*@egen*/
+ {
+ return jjtn000;
+ }/*@bgen(jjtree)*/
+ } catch (Throwable jjte000) {
+ if (jjtc000) {
+ jjtree.clearNodeScope(jjtn000);
+ jjtc000 = false;
+ } else {
+ jjtree.popNode();
+ }
+ if (jjte000 instanceof RuntimeException) {
+ throw (RuntimeException)jjte000;
+ }
+ if (jjte000 instanceof ParseException) {
+ throw (ParseException)jjte000;
+ }
+ throw (Error)jjte000;
+ } finally {
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ }
+ }
+/*@egen*/
+}
+
+DynamicSerDeStruct Struct() : {/*@bgen(jjtree) Struct */
+ DynamicSerDeStruct jjtn000 = new DynamicSerDeStruct(JJTSTRUCT);
+ boolean jjtc000 = true;
+ jjtree.openNodeScope(jjtn000);
+/*@egen*/
+
+}
+{/*@bgen(jjtree) Struct */
+ try {
+/*@egen*/
+ <tok_struct>
+ jjtn000.name = <IDENTIFIER>.image
+ "{"
+ FieldList()
+ "}"/*@bgen(jjtree)*/
+ {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+ }
+/*@egen*/
+ {
+ this.types.put(jjtn000.name,jjtn000);
+ return jjtn000;
+ }/*@bgen(jjtree)*/
+ } catch (Throwable jjte000) {
+ if (jjtc000) {
+ jjtree.clearNodeScope(jjtn000);
+ jjtc000 = false;
+ } else {
+ jjtree.popNode();
+ }
+ if (jjte000 instanceof RuntimeException) {
+ throw (RuntimeException)jjte000;
+ }
+ if (jjte000 instanceof ParseException) {
+ throw (ParseException)jjte000;
+ }
+ throw (Error)jjte000;
+ } finally {
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ }
+ }
+/*@egen*/
+}
+
+
+SimpleNode Xception() : {/*@bgen(jjtree) Xception */
+ DynamicSerDeXception jjtn000 = new DynamicSerDeXception(JJTXCEPTION);
+ boolean jjtc000 = true;
+ jjtree.openNodeScope(jjtn000);
+/*@egen*/}
+{/*@bgen(jjtree) Xception */
+ try {
+/*@egen*/
+ <tok_exception> <IDENTIFIER> "{" FieldList() "}"/*@bgen(jjtree)*/
+ {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+ }
+/*@egen*/
+ {
+ return jjtn000;
+ }/*@bgen(jjtree)*/
+ } catch (Throwable jjte000) {
+ if (jjtc000) {
+ jjtree.clearNodeScope(jjtn000);
+ jjtc000 = false;
+ } else {
+ jjtree.popNode();
+ }
+ if (jjte000 instanceof RuntimeException) {
+ throw (RuntimeException)jjte000;
+ }
+ if (jjte000 instanceof ParseException) {
+ throw (ParseException)jjte000;
+ }
+ throw (Error)jjte000;
+ } finally {
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ }
+ }
+/*@egen*/
+}
+
+
+SimpleNode Service() : {/*@bgen(jjtree) Service */
+ DynamicSerDeService jjtn000 = new DynamicSerDeService(JJTSERVICE);
+ boolean jjtc000 = true;
+ jjtree.openNodeScope(jjtn000);
+/*@egen*/}
+{/*@bgen(jjtree) Service */
+ try {
+/*@egen*/
+ <tok_service>
+ <IDENTIFIER>
+ Extends()
+ "{"
+ FlagArgs()
+ (Function())+
+ UnflagArgs()
+ "}"/*@bgen(jjtree)*/
+ {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+ }
+/*@egen*/
+ {
+ // at some point, these should be inserted as a "db"
+ return jjtn000;
+ }/*@bgen(jjtree)*/
+ } catch (Throwable jjte000) {
+ if (jjtc000) {
+ jjtree.clearNodeScope(jjtn000);
+ jjtc000 = false;
+ } else {
+ jjtree.popNode();
+ }
+ if (jjte000 instanceof RuntimeException) {
+ throw (RuntimeException)jjte000;
+ }
+ if (jjte000 instanceof ParseException) {
+ throw (ParseException)jjte000;
+ }
+ throw (Error)jjte000;
+ } finally {
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ }
+ }
+/*@egen*/
+}
+
+SimpleNode FlagArgs() : {/*@bgen(jjtree) FlagArgs */
+ DynamicSerDeFlagArgs jjtn000 = new DynamicSerDeFlagArgs(JJTFLAGARGS);
+ boolean jjtc000 = true;
+ jjtree.openNodeScope(jjtn000);
+/*@egen*/}
+{/*@bgen(jjtree) FlagArgs */
+ try {
+/*@egen*//*@bgen(jjtree)*/
+ {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+ }
+/*@egen*/
+ {
+ return jjtn000;
+ }/*@bgen(jjtree)*/
+ } finally {
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ }
+ }
+/*@egen*/
+}
+
+SimpleNode UnflagArgs() : {/*@bgen(jjtree) UnflagArgs */
+ DynamicSerDeUnflagArgs jjtn000 = new DynamicSerDeUnflagArgs(JJTUNFLAGARGS);
+ boolean jjtc000 = true;
+ jjtree.openNodeScope(jjtn000);
+/*@egen*/}
+{/*@bgen(jjtree) UnflagArgs */
+ try {
+/*@egen*//*@bgen(jjtree)*/
+ {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+ }
+/*@egen*/
+ {
+ return jjtn000;
+ }/*@bgen(jjtree)*/
+ } finally {
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ }
+ }
+/*@egen*/
+}
+
+SimpleNode Extends() : {/*@bgen(jjtree) Extends */
+ DynamicSerDeExtends jjtn000 = new DynamicSerDeExtends(JJTEXTENDS);
+ boolean jjtc000 = true;
+ jjtree.openNodeScope(jjtn000);
+/*@egen*/}
+{/*@bgen(jjtree) Extends */
+ try {
+/*@egen*/
+ <tok_extends> <IDENTIFIER>/*@bgen(jjtree)*/
+ {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+ }
+/*@egen*/
+ {
+ return jjtn000;
+ }
+|/*@bgen(jjtree)*/
+ {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+ }
+/*@egen*/
+ {
+ return jjtn000;
+ }/*@bgen(jjtree)*/
+ } finally {
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ }
+ }
+/*@egen*/
+}
+
+
+DynamicSerDeFunction Function() : {/*@bgen(jjtree) Function */
+ DynamicSerDeFunction jjtn000 = new DynamicSerDeFunction(JJTFUNCTION);
+ boolean jjtc000 = true;
+ jjtree.openNodeScope(jjtn000);
+/*@egen*/}
+{/*@bgen(jjtree) Function */
+ try {
+/*@egen*/
+ // metastore ignores async and type
+ Async()
+ FunctionType()
+
+ // the name of the function/table
+ jjtn000.name = <IDENTIFIER>.image
+ "("
+ FieldList()
+ ")"
+ Throws()
+ [CommaOrSemicolon()]/*@bgen(jjtree)*/
+ {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+ }
+/*@egen*/
+
+ {
+ this.tables.put(jjtn000.name, jjtn000);
+ return jjtn000;
+ }/*@bgen(jjtree)*/
+ } catch (Throwable jjte000) {
+ if (jjtc000) {
+ jjtree.clearNodeScope(jjtn000);
+ jjtc000 = false;
+ } else {
+ jjtree.popNode();
+ }
+ if (jjte000 instanceof RuntimeException) {
+ throw (RuntimeException)jjte000;
+ }
+ if (jjte000 instanceof ParseException) {
+ throw (ParseException)jjte000;
+ }
+ throw (Error)jjte000;
+ } finally {
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ }
+ }
+/*@egen*/
+}
+
+void Async() : {/*@bgen(jjtree) Async */
+ DynamicSerDeAsync jjtn000 = new DynamicSerDeAsync(JJTASYNC);
+ boolean jjtc000 = true;
+ jjtree.openNodeScope(jjtn000);
+/*@egen*/}
+{/*@bgen(jjtree) Async */
+ try {
+/*@egen*/
+ <tok_async>
+|/*@bgen(jjtree)*/
+{
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+}
+/*@egen*/
+{}/*@bgen(jjtree)*/
+ } finally {
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ }
+ }
+/*@egen*/
+}
+
+void Throws() : {/*@bgen(jjtree) Throws */
+ DynamicSerDeThrows jjtn000 = new DynamicSerDeThrows(JJTTHROWS);
+ boolean jjtc000 = true;
+ jjtree.openNodeScope(jjtn000);
+/*@egen*/}
+{/*@bgen(jjtree) Throws */
+ try {
+/*@egen*/
+ <tok_throws> "(" FieldList() ")"
+|/*@bgen(jjtree)*/
+{
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+}
+/*@egen*/
+{}/*@bgen(jjtree)*/
+ } catch (Throwable jjte000) {
+ if (jjtc000) {
+ jjtree.clearNodeScope(jjtn000);
+ jjtc000 = false;
+ } else {
+ jjtree.popNode();
+ }
+ if (jjte000 instanceof RuntimeException) {
+ throw (RuntimeException)jjte000;
+ }
+ if (jjte000 instanceof ParseException) {
+ throw (ParseException)jjte000;
+ }
+ throw (Error)jjte000;
+ } finally {
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ }
+ }
+/*@egen*/
+}
+
+
+// nothing special - just use the DynamicSerDeFieldList's children methods to access the fields
+DynamicSerDeFieldList FieldList() : {/*@bgen(jjtree) FieldList */
+ DynamicSerDeFieldList jjtn000 = new DynamicSerDeFieldList(JJTFIELDLIST);
+ boolean jjtc000 = true;
+ jjtree.openNodeScope(jjtn000);
+/*@egen*/
+ this.field_val = -1;
+}
+{/*@bgen(jjtree) FieldList */
+ try {
+/*@egen*/
+ (Field())*/*@bgen(jjtree)*/
+ {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+ }
+/*@egen*/ {
+ return jjtn000;
+ }/*@bgen(jjtree)*/
+ } catch (Throwable jjte000) {
+ if (jjtc000) {
+ jjtree.clearNodeScope(jjtn000);
+ jjtc000 = false;
+ } else {
+ jjtree.popNode();
+ }
+ if (jjte000 instanceof RuntimeException) {
+ throw (RuntimeException)jjte000;
+ }
+ if (jjte000 instanceof ParseException) {
+ throw (ParseException)jjte000;
+ }
+ throw (Error)jjte000;
+ } finally {
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ }
+ }
+/*@egen*/
+}
+
+
+DynamicSerDeField Field() : {/*@bgen(jjtree) Field */
+ DynamicSerDeField jjtn000 = new DynamicSerDeField(JJTFIELD);
+ boolean jjtc000 = true;
+ jjtree.openNodeScope(jjtn000);
+/*@egen*/
+
+ String fidnum = "";
+ String fid;
+}
+{/*@bgen(jjtree) Field */
+ try {
+/*@egen*/
+
+ // parse the field id which is optional
+ [fidnum=<tok_int_constant>.image ":"]
+
+ // is this field required or optional? default is optional
+ FieldRequiredness()
+
+ // field type - obviously not optional
+ FieldType()
+
+ // the name of the field - not optional
+ jjtn000.name = <IDENTIFIER>.image
+
+ // does it have = some value?
+ FieldValue()
+
+ // take it or leave it
+ [CommaOrSemicolon()]/*@bgen(jjtree)*/
+ {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+ }
+/*@egen*/
+
+ {
+ if(fidnum.length() > 0) {
+ int fidInt = Integer.valueOf(fidnum);
+ jjtn000.fieldid = fidInt;
+ } else {
+ jjtn000.fieldid = this.field_val--;
+ }
+ return jjtn000;
+ }/*@bgen(jjtree)*/
+ } catch (Throwable jjte000) {
+ if (jjtc000) {
+ jjtree.clearNodeScope(jjtn000);
+ jjtc000 = false;
+ } else {
+ jjtree.popNode();
+ }
+ if (jjte000 instanceof RuntimeException) {
+ throw (RuntimeException)jjte000;
+ }
+ if (jjte000 instanceof ParseException) {
+ throw (ParseException)jjte000;
+ }
+ throw (Error)jjte000;
+ } finally {
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ }
+ }
+/*@egen*/
+}
+
+
+
+DynamicSerDeFieldRequiredness FieldRequiredness() : {/*@bgen(jjtree) FieldRequiredness */
+ DynamicSerDeFieldRequiredness jjtn000 = new DynamicSerDeFieldRequiredness(JJTFIELDREQUIREDNESS);
+ boolean jjtc000 = true;
+ jjtree.openNodeScope(jjtn000);
+/*@egen*/}
+{/*@bgen(jjtree) FieldRequiredness */
+ try {
+/*@egen*/
+ <tok_required>/*@bgen(jjtree)*/
+ {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+ }
+/*@egen*/
+ {
+ jjtn000.requiredness = DynamicSerDeFieldRequiredness.RequirednessTypes.Required;
+ return jjtn000;
+ }
+| <tok_optional>/*@bgen(jjtree)*/
+ {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+ }
+/*@egen*/
+ {
+ jjtn000.requiredness = DynamicSerDeFieldRequiredness.RequirednessTypes.Optional;
+ return jjtn000;
+ }
+| <tok_skip>/*@bgen(jjtree)*/
+ {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+ }
+/*@egen*/
+ {
+ jjtn000.requiredness = DynamicSerDeFieldRequiredness.RequirednessTypes.Skippable;
+ return jjtn000;
+ }
+|/*@bgen(jjtree)*/
+ {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+ }
+/*@egen*/
+ {
+ return jjtn000;
+ }/*@bgen(jjtree)*/
+ } finally {
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ }
+ }
+/*@egen*/
+}
+
+SimpleNode FieldValue() : {/*@bgen(jjtree) FieldValue */
+ DynamicSerDeFieldValue jjtn000 = new DynamicSerDeFieldValue(JJTFIELDVALUE);
+ boolean jjtc000 = true;
+ jjtree.openNodeScope(jjtn000);
+/*@egen*/}
+{/*@bgen(jjtree) FieldValue */
+ try {
+/*@egen*/
+ "="
+ ConstValue()/*@bgen(jjtree)*/
+ {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+ }
+/*@egen*/
+ {
+ return jjtn000;
+ }
+|/*@bgen(jjtree)*/
+{
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+}
+/*@egen*/
+{
+ return jjtn000;
+}/*@bgen(jjtree)*/
+ } catch (Throwable jjte000) {
+ if (jjtc000) {
+ jjtree.clearNodeScope(jjtn000);
+ jjtc000 = false;
+ } else {
+ jjtree.popNode();
+ }
+ if (jjte000 instanceof RuntimeException) {
+ throw (RuntimeException)jjte000;
+ }
+ if (jjte000 instanceof ParseException) {
+ throw (ParseException)jjte000;
+ }
+ throw (Error)jjte000;
+ } finally {
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ }
+ }
+/*@egen*/
+}
+
+SimpleNode DefinitionType() : {/*@bgen(jjtree) DefinitionType */
+ DynamicSerDeDefinitionType jjtn000 = new DynamicSerDeDefinitionType(JJTDEFINITIONTYPE);
+ boolean jjtc000 = true;
+ jjtree.openNodeScope(jjtn000);
+/*@egen*/}
+{/*@bgen(jjtree) DefinitionType */
+ try {
+/*@egen*/
+// BaseType() xxx
+ TypeString()/*@bgen(jjtree)*/
+ {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+ }
+/*@egen*/
+ {
+ return jjtn000;
+ }
+| TypeBool()/*@bgen(jjtree)*/
+ {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+ }
+/*@egen*/
+ {
+ return jjtn000;
+ }
+| Typei16()/*@bgen(jjtree)*/
+ {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+ }
+/*@egen*/
+ {
+ return jjtn000;
+ }
+| Typei32()/*@bgen(jjtree)*/
+ {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+ }
+/*@egen*/
+ {
+ return jjtn000;
+ }
+| Typei64()/*@bgen(jjtree)*/
+ {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+ }
+/*@egen*/
+ {
+ return jjtn000;
+ }
+| TypeDouble()/*@bgen(jjtree)*/
+ {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+ }
+/*@egen*/
+ {
+ return jjtn000;
+ }
+| TypeMap()/*@bgen(jjtree)*/
+ {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+ }
+/*@egen*/
+ {
+ return jjtn000;
+ }
+| TypeSet()/*@bgen(jjtree)*/
+ {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+ }
+/*@egen*/
+ {
+ return jjtn000;
+ }
+| TypeList()/*@bgen(jjtree)*/
+ {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+ }
+/*@egen*/
+ {
+ return jjtn000;
+ }/*@bgen(jjtree)*/
+ } catch (Throwable jjte000) {
+ if (jjtc000) {
+ jjtree.clearNodeScope(jjtn000);
+ jjtc000 = false;
+ } else {
+ jjtree.popNode();
+ }
+ if (jjte000 instanceof RuntimeException) {
+ throw (RuntimeException)jjte000;
+ }
+ if (jjte000 instanceof ParseException) {
+ throw (ParseException)jjte000;
+ }
+ throw (Error)jjte000;
+ } finally {
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ }
+ }
+/*@egen*/
+}
+
+void FunctionType() : {/*@bgen(jjtree) FunctionType */
+ DynamicSerDeFunctionType jjtn000 = new DynamicSerDeFunctionType(JJTFUNCTIONTYPE);
+ boolean jjtc000 = true;
+ jjtree.openNodeScope(jjtn000);
+/*@egen*/}
+{/*@bgen(jjtree) FunctionType */
+ try {
+/*@egen*/
+ FieldType()
+| <tok_void>/*@bgen(jjtree)*/
+{
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+}
+/*@egen*/
+{}/*@bgen(jjtree)*/
+ } catch (Throwable jjte000) {
+ if (jjtc000) {
+ jjtree.clearNodeScope(jjtn000);
+ jjtc000 = false;
+ } else {
+ jjtree.popNode();
+ }
+ if (jjte000 instanceof RuntimeException) {
+ throw (RuntimeException)jjte000;
+ }
+ if (jjte000 instanceof ParseException) {
+ throw (ParseException)jjte000;
+ }
+ throw (Error)jjte000;
+ } finally {
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ }
+ }
+/*@egen*/
+}
+
+DynamicSerDeFieldType FieldType() : {/*@bgen(jjtree) FieldType */
+ DynamicSerDeFieldType jjtn000 = new DynamicSerDeFieldType(JJTFIELDTYPE);
+ boolean jjtc000 = true;
+ jjtree.openNodeScope(jjtn000);
+/*@egen*/
+}
+
+{/*@bgen(jjtree) FieldType */
+ try {
+/*@egen*/
+ TypeString()/*@bgen(jjtree)*/
+ {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+ }
+/*@egen*/
+ {
+ return jjtn000;
+ }
+| TypeBool()/*@bgen(jjtree)*/
+ {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+ }
+/*@egen*/
+ {
+ return jjtn000;
+ }
+| Typei16()/*@bgen(jjtree)*/
+ {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+ }
+/*@egen*/
+ {
+ return jjtn000;
+ }
+| Typei32()/*@bgen(jjtree)*/
+ {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+ }
+/*@egen*/
+ {
+ return jjtn000;
+ }
+| Typei64()/*@bgen(jjtree)*/
+ {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+ }
+/*@egen*/
+ {
+ return jjtn000;
+ }
+| TypeDouble()/*@bgen(jjtree)*/
+ {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+ }
+/*@egen*/
+ {
+ return jjtn000;
+ }
+|
+ TypeMap()/*@bgen(jjtree)*/
+ {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+ }
+/*@egen*/
+ {
+ return jjtn000;
+ }
+|
+ TypeSet()/*@bgen(jjtree)*/
+ {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+ }
+/*@egen*/
+ {
+ return jjtn000;
+ }
+|
+ TypeList()/*@bgen(jjtree)*/
+ {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+ }
+/*@egen*/
+ {
+ return jjtn000;
+ }
+|
+ jjtn000.name = <IDENTIFIER>.image/*@bgen(jjtree)*/
+ {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+ }
+/*@egen*/
+ {
+
+ if (this.types.get(jjtn000.name) == null) {
+ System.err.println("ERROR: DDL specifying type " + jjtn000.name + " which has not been defined");
+ throw new RuntimeException("specifying type " + jjtn000.name + " which has not been defined");
+ }
+ // lookup the specified type and set this nodes type to it. Precludes forward and self references for now.
+ jjtn000.jjtAddChild(this.types.get(jjtn000.name),0);
+ return jjtn000;
+ }/*@bgen(jjtree)*/
+ } catch (Throwable jjte000) {
+ if (jjtc000) {
+ jjtree.clearNodeScope(jjtn000);
+ jjtc000 = false;
+ } else {
+ jjtree.popNode();
+ }
+ if (jjte000 instanceof RuntimeException) {
+ throw (RuntimeException)jjte000;
+ }
+ if (jjte000 instanceof ParseException) {
+ throw (ParseException)jjte000;
+ }
+ throw (Error)jjte000;
+ } finally {
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ }
+ }
+/*@egen*/
+}
+
+DynamicSerDeTypeString TypeString() : {/*@bgen(jjtree) TypeString */
+ DynamicSerDeTypeString jjtn000 = new DynamicSerDeTypeString(JJTTYPESTRING);
+ boolean jjtc000 = true;
+ jjtree.openNodeScope(jjtn000);
+/*@egen*/}
+{/*@bgen(jjtree) TypeString */
+ try {
+/*@egen*/
+ <tok_string>/*@bgen(jjtree)*/
+ {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+ }
+/*@egen*/
+ {
+ return jjtn000;
+ }/*@bgen(jjtree)*/
+ } finally {
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ }
+ }
+/*@egen*/
+}
+
+DynamicSerDeTypeByte TypeByte() : {/*@bgen(jjtree) TypeByte */
+ DynamicSerDeTypeByte jjtn000 = new DynamicSerDeTypeByte(JJTTYPEBYTE);
+ boolean jjtc000 = true;
+ jjtree.openNodeScope(jjtn000);
+/*@egen*/
+}
+{/*@bgen(jjtree) TypeByte */
+ try {
+/*@egen*/
+ <tok_byte>/*@bgen(jjtree)*/
+ {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+ }
+/*@egen*/
+ {
+ return jjtn000;
+ }/*@bgen(jjtree)*/
+ } finally {
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ }
+ }
+/*@egen*/
+}
+
+DynamicSerDeTypei16 Typei16() : {/*@bgen(jjtree) Typei16 */
+ DynamicSerDeTypei16 jjtn000 = new DynamicSerDeTypei16(JJTTYPEI16);
+ boolean jjtc000 = true;
+ jjtree.openNodeScope(jjtn000);
+/*@egen*/
+}
+{/*@bgen(jjtree) Typei16 */
+ try {
+/*@egen*/
+ <tok_i16>/*@bgen(jjtree)*/
+ {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+ }
+/*@egen*/
+ {
+ return jjtn000;
+ }/*@bgen(jjtree)*/
+ } finally {
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ }
+ }
+/*@egen*/
+}
+
+DynamicSerDeTypei32 Typei32() : {/*@bgen(jjtree) Typei32 */
+ DynamicSerDeTypei32 jjtn000 = new DynamicSerDeTypei32(JJTTYPEI32);
+ boolean jjtc000 = true;
+ jjtree.openNodeScope(jjtn000);
+/*@egen*/}
+{/*@bgen(jjtree) Typei32 */
+ try {
+/*@egen*/
+ <tok_i32>/*@bgen(jjtree)*/
+ {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+ }
+/*@egen*/
+ {
+ return jjtn000;
+ }/*@bgen(jjtree)*/
+ } finally {
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ }
+ }
+/*@egen*/
+}
+
+DynamicSerDeTypei64 Typei64() : {/*@bgen(jjtree) Typei64 */
+ DynamicSerDeTypei64 jjtn000 = new DynamicSerDeTypei64(JJTTYPEI64);
+ boolean jjtc000 = true;
+ jjtree.openNodeScope(jjtn000);
+/*@egen*/}
+{/*@bgen(jjtree) Typei64 */
+ try {
+/*@egen*/
+ <tok_i64>/*@bgen(jjtree)*/
+ {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+ }
+/*@egen*/
+ {
+ return jjtn000;
+ }/*@bgen(jjtree)*/
+ } finally {
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ }
+ }
+/*@egen*/
+}
+
+DynamicSerDeTypeDouble TypeDouble() : {/*@bgen(jjtree) TypeDouble */
+ DynamicSerDeTypeDouble jjtn000 = new DynamicSerDeTypeDouble(JJTTYPEDOUBLE);
+ boolean jjtc000 = true;
+ jjtree.openNodeScope(jjtn000);
+/*@egen*/}
+{/*@bgen(jjtree) TypeDouble */
+ try {
+/*@egen*/
+ <tok_double>/*@bgen(jjtree)*/
+ {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+ }
+/*@egen*/
+ {
+ return jjtn000;
+ }/*@bgen(jjtree)*/
+ } finally {
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ }
+ }
+/*@egen*/
+}
+
+DynamicSerDeTypeBool TypeBool() : {/*@bgen(jjtree) TypeBool */
+ DynamicSerDeTypeBool jjtn000 = new DynamicSerDeTypeBool(JJTTYPEBOOL);
+ boolean jjtc000 = true;
+ jjtree.openNodeScope(jjtn000);
+/*@egen*/}
+{/*@bgen(jjtree) TypeBool */
+ try {
+/*@egen*/
+ <tok_bool>/*@bgen(jjtree)*/
+ {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+ }
+/*@egen*/
+ {
+ return jjtn000;
+ }/*@bgen(jjtree)*/
+ } finally {
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ }
+ }
+/*@egen*/
+}
+
+DynamicSerDeTypeMap TypeMap() : {/*@bgen(jjtree) TypeMap */
+ DynamicSerDeTypeMap jjtn000 = new DynamicSerDeTypeMap(JJTTYPEMAP);
+ boolean jjtc000 = true;
+ jjtree.openNodeScope(jjtn000);
+/*@egen*/}
+{/*@bgen(jjtree) TypeMap */
+ try {
+/*@egen*/
+ <tok_map>
+ "<"
+ FieldType()
+ ","
+ FieldType()
+ ">"/*@bgen(jjtree)*/
+ {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+ }
+/*@egen*/
+ {
+ return jjtn000;
+ }/*@bgen(jjtree)*/
+ } catch (Throwable jjte000) {
+ if (jjtc000) {
+ jjtree.clearNodeScope(jjtn000);
+ jjtc000 = false;
+ } else {
+ jjtree.popNode();
+ }
+ if (jjte000 instanceof RuntimeException) {
+ throw (RuntimeException)jjte000;
+ }
+ if (jjte000 instanceof ParseException) {
+ throw (ParseException)jjte000;
+ }
+ throw (Error)jjte000;
+ } finally {
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ }
+ }
+/*@egen*/
+}
+
+DynamicSerDeTypeSet TypeSet() : {/*@bgen(jjtree) TypeSet */
+ DynamicSerDeTypeSet jjtn000 = new DynamicSerDeTypeSet(JJTTYPESET);
+ boolean jjtc000 = true;
+ jjtree.openNodeScope(jjtn000);
+/*@egen*/}
+{/*@bgen(jjtree) TypeSet */
+ try {
+/*@egen*/
+ <tok_set>
+ "<"
+
+ FieldType()
+
+ ">"/*@bgen(jjtree)*/
+ {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+ }
+/*@egen*/
+ {
+ return jjtn000;
+ }/*@bgen(jjtree)*/
+ } catch (Throwable jjte000) {
+ if (jjtc000) {
+ jjtree.clearNodeScope(jjtn000);
+ jjtc000 = false;
+ } else {
+ jjtree.popNode();
+ }
+ if (jjte000 instanceof RuntimeException) {
+ throw (RuntimeException)jjte000;
+ }
+ if (jjte000 instanceof ParseException) {
+ throw (ParseException)jjte000;
+ }
+ throw (Error)jjte000;
+ } finally {
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ }
+ }
+/*@egen*/
+}
+
+DynamicSerDeTypeList TypeList() : {/*@bgen(jjtree) TypeList */
+ DynamicSerDeTypeList jjtn000 = new DynamicSerDeTypeList(JJTTYPELIST);
+ boolean jjtc000 = true;
+ jjtree.openNodeScope(jjtn000);
+/*@egen*/}
+{/*@bgen(jjtree) TypeList */
+ try {
+/*@egen*/
+ <tok_list>
+ "<"
+
+ FieldType()
+
+ ">"/*@bgen(jjtree)*/
+ {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+ }
+/*@egen*/
+ {
+ return jjtn000;
+ }/*@bgen(jjtree)*/
+ } catch (Throwable jjte000) {
+ if (jjtc000) {
+ jjtree.clearNodeScope(jjtn000);
+ jjtc000 = false;
+ } else {
+ jjtree.popNode();
+ }
+ if (jjte000 instanceof RuntimeException) {
+ throw (RuntimeException)jjte000;
+ }
+ if (jjte000 instanceof ParseException) {
+ throw (ParseException)jjte000;
+ }
+ throw (Error)jjte000;
+ } finally {
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ }
+ }
+/*@egen*/
+}
Modified: hadoop/core/trunk/src/contrib/hive/serde/src/java/org/apache/hadoop/hive/serde2/dynamic_type/thrift_grammar.jjt
URL: http://svn.apache.org/viewvc/hadoop/core/trunk/src/contrib/hive/serde/src/java/org/apache/hadoop/hive/serde2/dynamic_type/thrift_grammar.jjt?rev=712905&r1=712904&r2=712905&view=diff
==============================================================================
--- hadoop/core/trunk/src/contrib/hive/serde/src/java/org/apache/hadoop/hive/serde2/dynamic_type/thrift_grammar.jjt (original)
+++ hadoop/core/trunk/src/contrib/hive/serde/src/java/org/apache/hadoop/hive/serde2/dynamic_type/thrift_grammar.jjt Mon Nov 10 17:50:06 2008
@@ -153,7 +153,8 @@
<tok_service: "service"> |
<tok_enum: "enum"> |
<tok_required: "required"> |
-<tok_optional: "optional">
+<tok_optional: "optional"> |
+<tok_skip: "skip">
}
TOKEN: {
@@ -176,7 +177,7 @@
SimpleNode Start() : {}
{
- HeaderList() (Definition())+
+ HeaderList() ([CommaOrSemicolon()] Definition())+
{
return jjtThis;
}
@@ -641,14 +642,21 @@
-SimpleNode FieldRequiredness() : {}
+DynamicSerDeFieldRequiredness FieldRequiredness() : {}
{
<tok_required>
{
- return jjtThis;
+ jjtThis.requiredness = DynamicSerDeFieldRequiredness.RequirednessTypes.Required;
+ return jjtThis;
}
| <tok_optional>
{
+ jjtThis.requiredness = DynamicSerDeFieldRequiredness.RequirednessTypes.Optional;
+ return jjtThis;
+ }
+| <tok_skip>
+ {
+ jjtThis.requiredness = DynamicSerDeFieldRequiredness.RequirednessTypes.Skippable;
return jjtThis;
}
|
@@ -724,7 +732,7 @@
{
TypeString()
{
- return jjtThis;
+ return jjtThis;
}
| TypeBool()
{
@@ -764,6 +772,13 @@
|
jjtThis.name = <IDENTIFIER>.image
{
+
+ if (this.types.get(jjtThis.name) == null) {
+ System.err.println("ERROR: DDL specifying type " + jjtThis.name + " which has not been defined");
+ throw new RuntimeException("specifying type " + jjtThis.name + " which has not been defined");
+ }
+ // lookup the specified type and set this nodes type to it. Precludes forward and self references for now.
+ jjtThis.jjtAddChild(this.types.get(jjtThis.name),0);
return jjtThis;
}
}
Added: hadoop/core/trunk/src/contrib/hive/serde/src/java/org/apache/hadoop/hive/serde2/dynamic_type/thrift_grammarConstants.java
URL: http://svn.apache.org/viewvc/hadoop/core/trunk/src/contrib/hive/serde/src/java/org/apache/hadoop/hive/serde2/dynamic_type/thrift_grammarConstants.java?rev=712905&view=auto
==============================================================================
--- hadoop/core/trunk/src/contrib/hive/serde/src/java/org/apache/hadoop/hive/serde2/dynamic_type/thrift_grammarConstants.java (added)
+++ hadoop/core/trunk/src/contrib/hive/serde/src/java/org/apache/hadoop/hive/serde2/dynamic_type/thrift_grammarConstants.java Mon Nov 10 17:50:06 2008
@@ -0,0 +1,135 @@
+/* Generated By:JJTree&JavaCC: Do not edit this line. thrift_grammarConstants.java */
+package org.apache.hadoop.hive.serde2.dynamic_type;
+
+public interface thrift_grammarConstants {
+
+ int EOF = 0;
+ int tok_const = 8;
+ int tok_namespace = 9;
+ int tok_cpp_namespace = 10;
+ int tok_cpp_include = 11;
+ int tok_cpp_type = 12;
+ int tok_java_package = 13;
+ int tok_cocoa_prefix = 14;
+ int tok_csharp_namespace = 15;
+ int tok_php_namespace = 16;
+ int tok_py_module = 17;
+ int tok_perl_package = 18;
+ int tok_ruby_namespace = 19;
+ int tok_smalltalk_category = 20;
+ int tok_smalltalk_prefix = 21;
+ int tok_xsd_all = 22;
+ int tok_xsd_optional = 23;
+ int tok_xsd_nillable = 24;
+ int tok_xsd_namespace = 25;
+ int tok_xsd_attrs = 26;
+ int tok_include = 27;
+ int tok_void = 28;
+ int tok_bool = 29;
+ int tok_byte = 30;
+ int tok_i16 = 31;
+ int tok_i32 = 32;
+ int tok_i64 = 33;
+ int tok_double = 34;
+ int tok_string = 35;
+ int tok_slist = 36;
+ int tok_senum = 37;
+ int tok_map = 38;
+ int tok_list = 39;
+ int tok_set = 40;
+ int tok_async = 41;
+ int tok_typedef = 42;
+ int tok_struct = 43;
+ int tok_exception = 44;
+ int tok_extends = 45;
+ int tok_throws = 46;
+ int tok_service = 47;
+ int tok_enum = 48;
+ int tok_required = 49;
+ int tok_optional = 50;
+ int tok_skip = 51;
+ int tok_int_constant = 52;
+ int tok_double_constant = 53;
+ int IDENTIFIER = 54;
+ int LETTER = 55;
+ int DIGIT = 56;
+ int tok_literal = 57;
+ int tok_st_identifier = 58;
+
+ int DEFAULT = 0;
+
+ String[] tokenImage = {
+ "<EOF>",
+ "\" \"",
+ "\"\\t\"",
+ "\"\\n\"",
+ "\"\\r\"",
+ "<token of kind 5>",
+ "<token of kind 6>",
+ "<token of kind 7>",
+ "\"const\"",
+ "\"namespace\"",
+ "\"cpp_namespace\"",
+ "\"cpp_include\"",
+ "\"cpp_type\"",
+ "\"java_package\"",
+ "\"cocoa_prefix\"",
+ "\"csharp_namespace\"",
+ "\"php_namespace\"",
+ "\"py_module\"",
+ "\"perl_package\"",
+ "\"ruby_namespace\"",
+ "\"smalltalk_category\"",
+ "\"smalltalk_prefix\"",
+ "\"xsd_all\"",
+ "\"xsd_optional\"",
+ "\"xsd_nillable\"",
+ "\"xsd_namespace\"",
+ "\"xsd_attrs\"",
+ "\"include\"",
+ "\"void\"",
+ "\"bool\"",
+ "\"byte\"",
+ "\"i16\"",
+ "\"i32\"",
+ "\"i64\"",
+ "\"double\"",
+ "\"string\"",
+ "\"slist\"",
+ "\"senum\"",
+ "\"map\"",
+ "\"list\"",
+ "\"set\"",
+ "\"async\"",
+ "\"typedef\"",
+ "\"struct\"",
+ "\"exception\"",
+ "\"extends\"",
+ "\"throws\"",
+ "\"service\"",
+ "\"enum\"",
+ "\"required\"",
+ "\"optional\"",
+ "\"skip\"",
+ "<tok_int_constant>",
+ "<tok_double_constant>",
+ "<IDENTIFIER>",
+ "<LETTER>",
+ "<DIGIT>",
+ "<tok_literal>",
+ "<tok_st_identifier>",
+ "\",\"",
+ "\";\"",
+ "\"{\"",
+ "\"}\"",
+ "\"=\"",
+ "\"[\"",
+ "\"]\"",
+ "\":\"",
+ "\"(\"",
+ "\")\"",
+ "\"<\"",
+ "\">\"",
+ };
+
+}