From 5db3a7242a160c0e026539e09e1425615e03ae40 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Alexis=20Laferri=C3=A8re?= Date: Wed, 29 Jul 2015 14:08:12 -0400 Subject: [PATCH] contrib/jwrapper grammar: unify all lists of things that look like a type MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Alexis Laferrière --- contrib/jwrapper/grammar/javap.sablecc | 28 +++++++------------- contrib/jwrapper/src/javap_visitor.nit | 45 +++++++++++++------------------- 2 files changed, 28 insertions(+), 45 deletions(-) diff --git a/contrib/jwrapper/grammar/javap.sablecc b/contrib/jwrapper/grammar/javap.sablecc index 718a446..ead17fd 100644 --- a/contrib/jwrapper/grammar/javap.sablecc +++ b/contrib/jwrapper/grammar/javap.sablecc @@ -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?; diff --git a/contrib/jwrapper/src/javap_visitor.nit b/contrib/jwrapper/src/javap_visitor.nit index fe81c88..8ce2ef8 100644 --- a/contrib/jwrapper/src/javap_visitor.nit +++ b/contrib/jwrapper/src/javap_visitor.nit @@ -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 -- 1.7.9.5