SDA SE Wiki

Software Engineering for Smart Data Analytics & Smart Data Analytics for Software Engineering

User Tools

Site Tools


Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
research:jtransformer:api:java:pefs:3.0:typeparaminstst [2013/07/04 20:29]
127.0.0.1 external edit
research:jtransformer:api:java:pefs:3.0:typeparaminstst [2018/05/09 01:59] (current)
Line 1: Line 1:
 +{{page>​prologast_bodypef_index&​fullpage&​nofooter}}
 +
 +----
 +
 +=== typeParamInstsT(#​id,​ [#​paramRef_1,​ ...]) === 
 +
 +This fact is created for explicitly instantiated type parameters.
 +
 +Supported since JTransformer 3.0.
 +
 +=== Arguments ===
 +== == 
 +**#id:** [[callT|callT]],​ [[newClassT|newClassT]]\\ ​
 +the ID of the method call or constructor invocation.
 +
 +**[#​paramRef_1,​ ...]:** [[typeRefT|typeRefT]],​ [[parameterizedTypeT|parameterizedTypeT]]\\
 +list of IDs of the explicitly instantiated type parameters.
 +
 +=== Sample Java Source ===
 +
 +==  ==
 +<Code lang-java>​
 +<T> void m(){
 +    ...
 +}
 +
 +this.<​String>​m();​
 +
 +</​Code>​
 +
 +
 +=== Its PEF Representation ===
 +
 +==  ==
 +<Code lang-prolog>​
 +% method invocation
 +callT(#​call,​ ..., ..., ..., m, [], #meth).
 +typeParamInsts(#​call,​ [#​typeref1]).
 +typeRefT(#​typeref1,​ #call, #call, #string).
 +classT(#​string,​ ..., '​String',​ ...).
 +
 +% method declaration
 +methodT(#​meth,​ ..., '​m',​ [], ..., [], ...).
 +typeParamT(#​typeparam,​ #meth, '​T',​ [#​typeref]).
 +typeRefT(#​typeref,​ #typeparam, #meth, #object).
 +classT(#​object,​ ..., '​Object',​ ...).
 +typeParamsT(#​meth,​ [#​typeparam]).
 +
 +</​Code>​
 +
 +=== AST Specification ===
 +== ==
 +<​Code>​
 +ast_relation('​Java',​typeParamInstsT,​[
 +   ​ast_arg(id, ​      ​mult(1,​1,​no ), id,   ​[callT,​ newClassT]), ​
 +   ​ast_arg(paramRef,​ mult(1,​*,​ord ),id,   ​[typeRefT,​parameterizedTypeT])
 +</​Code>​
 +
 +
  
research/jtransformer/api/java/pefs/3.0/typeparaminstst.txt · Last modified: 2018/05/09 01:59 (external edit)

SEWiki, © 2019