SE & SDA Wiki

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

User Tools

Site Tools


callT(#id, #parent, #encl, #expr, 'name', [#arg_1,...], #method)

Represents a method invocation. Formerly called applyT

Arguments

#id: id
the unique ID assigned to this fact.

#parent: id
the ID of the fact that represents the parent of this fact in the prolog AST.

#encl: methodT, constructorT, classInitializerT, fieldT
the ID of the fact that represents the enclosing element.

#expr: expression
the ID of the fact representing the receiver expression on which the method is invoked. If the receiver is this the value of #expr is null. In case of static method call #expr is a typeRefT.

'name': atom
the simple (i.e. not fully qualified) name of the called method set into simple quotes.

[#arg_1,…]: expression
list of IDs of other facts representing the arguments of this method invocation.

#method: methodT, constructorT, annotationMemberT
ID of the methodT, constructorT or annotationMemberT fact that represents the declaration of the invoked method in the static type of the receiver expression. Because of dynamic binding the method actually invoked at run-time might be another one.

Sample Java Source

m() {                                                             // Enclosing method
  ...
    this.f(1,2+3);                                                // Sample call
}

Its PEF Representation

methodT(#meth, ..., 'm', [], #returntype, [], ...).   // Enclosing method
...
execT(#parent, V5, #meth, V7).                                   // Parent node
callT(#call, #parent, #meth, #recv, 'f', [#first, #second], #f).  // Call
identT(#recv, #call, #meth, this).                                // Call target
literalT(#first, #call, #meth, #literaltype, '1').                // First argument
operationT(#second, #call, #meth, [..., ...], '+', 0).            // Second argument

AST Specification

ast_node_def('Java',callT,[
     ast_arg(id,      mult(1,1,no ),  id,   [callT]), % <-- convention!!!
     ast_arg(parent,  mult(1,1,no ),  id,   [id]),
     ast_arg(encl,    mult(1,1,no ),  id,   [methodT, constructorT, classInitializerT,fieldT]),
     ast_arg(expr,    mult(0,1,no),   id,   [expressionType, nullType, typeRefT]),
     ast_arg(name,    mult(1,1,no ),  attr, [atom]),
     ast_arg(args,    mult(0,*,ord ), id,   [expressionType]),
     ast_arg(ref,     mult(1,1,no ),  id,   [methodT, constructorT, annotationMemberT])
 ]). 
research/jtransformer/api/java/pefs/3.0/callt.txt · Last modified: 2018/05/09 01:59 (external edit)

SEWiki, © 2018