contrib/jwrapper grammar: unify all lists of things that look like a type
authorAlexis Laferrière <alexis.laf@xymus.net>
Wed, 29 Jul 2015 18:08:12 +0000 (14:08 -0400)
committerAlexis Laferrière <alexis.laf@xymus.net>
Wed, 5 Aug 2015 01:37:52 +0000 (21:37 -0400)
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

contrib/jwrapper/grammar/javap.sablecc
contrib/jwrapper/src/javap_visitor.nit

index 718a446..ead17fd 100644 (file)
@@ -27,7 +27,7 @@ class_or_interface = 'class'|'interface';
 modifier
        = 'public'|'private'|'protected'|'static'|'final'|'native'|'synchronized'|'abstract'|'threadsafe'|'transient'|'volatile'|'strictfp';
 
-type = base_type brackets*;
+type = base_type brackets* dots?;
 
 base_type
        = {primitive:} primitive_base_type
@@ -52,27 +52,19 @@ full_class_name
        | {head:} class_name;
 class_name = identifier generic_parameters?;
 
-generic_parameters = '<' parameters '>';
+generic_parameters = '<' types '>';
 
-parameter = type dots?;
-parameters
-       = {tail:} parameters ',' parameter
-       | {head:} parameter;
+types
+       = {tail:} types ',' type
+       | {head:} type;
 
 property_declaration
-       = {method:} modifier* generic_parameters? type identifier '(' parameters? ')' throws_declaration? ';'
-       | {constructor:} modifier* generic_parameters? full_class_name '(' parameters? ')' throws_declaration? ';'
+       = {method:} modifier* generic_parameters? type identifier '(' types? ')' throws_declaration? ';'
+       | {constructor:} modifier* generic_parameters? full_class_name '(' types? ')' throws_declaration? ';'
        | {attribute:} modifier* type identifier brackets* throws_declaration? ';'
        | {static:} modifier* '{' '}' ';'
        | ';';
 
-implements_declaration = 'implements' interface_list;
-extends_declaration = 'extends' interface_list;
-interface_list
-       = {tail:} interface_list ',' full_class_name
-       | {head:} full_class_name;
-
-throws_declaration = 'throws' exception_list?;
-exception_list
-       = {tail:} exception_list ',' type
-       | {head:} type;
+implements_declaration = 'implements' types;
+extends_declaration = 'extends' types;
+throws_declaration = 'throws' types?;
index fe81c88..8ce2ef8 100644 (file)
@@ -91,14 +91,14 @@ redef class Nproperty_declaration_method
                var n_params = n_generic_parameters
                var generic_params
                if n_params != null then
-                       generic_params = n_params.n_parameters.to_a
+                       generic_params = n_params.n_types.to_a
                else generic_params = new Array[JavaType]
 
                # Collect parameters
-               var n_parameters = n_parameters
+               var n_types = n_types
                var params
-               if n_parameters != null then
-                       params = n_parameters.to_a
+               if n_types != null then
+                       params = n_types.to_a
                else params = new Array[JavaType]
 
                var method = new JavaMethod(is_static, return_jtype, params, generic_params)
@@ -111,17 +111,17 @@ redef class Nproperty_declaration_constructor
        redef fun accept_visitor(v)
        do
                # Collect parameters
-               var n_parameters = n_parameters
+               var n_types = n_types
                var params
-               if n_parameters != null then
-                       params = n_parameters.to_a
+               if n_types != null then
+                       params = n_types.to_a
                else params = new Array[JavaType]
 
                # Generic parameters
                var n_params = n_generic_parameters
                var generic_params
                if n_params != null then
-                       generic_params = n_params.n_parameters.to_a
+                       generic_params = n_params.n_types.to_a
                else generic_params = new Array[JavaType]
 
                var method = new JavaConstructor(params, generic_params)
@@ -167,6 +167,9 @@ redef class Ntype
                var brackets = n_brackets
                if brackets != null then jtype.array_dimension += brackets.children.length
 
+               var dots = n_dots
+               if dots != null then jtype.is_vararg = true
+
                return jtype
        end
 end
@@ -259,7 +262,7 @@ redef class Nfull_class_name
 
                # Generic parameters
                var n_params = n_class_name_common.n_generic_parameters
-               if n_params != null then jtype.generic_params = n_params.n_parameters.to_a
+               if n_params != null then jtype.generic_params = n_params.n_types.to_a
 
                return jtype
        end
@@ -282,38 +285,26 @@ redef class Nfull_class_name_tail
        end
 end
 
-redef class Nparameters
+redef class Ntypes
        # Get the types composing this list of parameters
        #
        # This is used both on methods signatures and type parameters.
        private fun to_a: Array[JavaType] is abstract
 end
 
-redef class Nparameters_head
-       redef fun to_a do return [n_parameter.to_java_type]
+redef class Ntypes_head
+       redef fun to_a do return [n_type.to_java_type]
 end
 
-redef class Nparameters_tail
+redef class Ntypes_tail
        redef fun to_a
        do
-               var a = n_parameters.to_a
-               a.add n_parameter.to_java_type
+               var a = n_types.to_a
+               a.add n_type.to_java_type
                return a
        end
 end
 
-redef class Nparameter
-       private fun to_java_type: JavaType
-       do
-               var jtype = n_type.to_java_type
-
-               var dots = n_dots
-               if dots != null then jtype.is_vararg = true
-
-               return jtype
-       end
-end
-
 redef class Nodes
        private fun has_static: Bool
        do