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:2.9:methodt [2011/01/11 15:36]
127.0.0.1 external edit
research:jtransformer:api:java:pefs:2.9:methodt [2018/05/09 01:59] (current)
Line 1: Line 1:
 +{{page>​prologast_bodypef_index&​fullpage&​nofooter}}
 +----
  
 +=== methodT(#​id,​ #class, '​name',​ [#​param_1,​...],​ TYPE, [#​exception_1,​...],​ #​body) ​ ===
 +
 +Represents the declaration of a method. Static methods have an additional fact "​[[modifiert|modifierT]](ID,​ '​static'​)",​ where ID is the #id value of the method. Note that (since JT 2.8) constructors are represented separately by [[constructort|constructorT]] facts and static initializers are represented by [[classinitializert|classInitializerT]] ​ facts (see [[..:​..:​migration:​start|migration]] tips).
 +
 +=== Arguments ===
 +== ==
 +**#id:** id\\ 
 +the unique ID of this method.
 +
 +**#class:** [[classt|classT]]\\ ​
 +the ID of the class containing this method. ​
 +
 +**'​name':​** atom\\ ​
 +the name of the declared method
 +
 +**[#​param_1,​...]:​** [[paramt|paramT]]\\ ​
 +the list of IDs of the method parameters. ​
 +
 +**TYPE:** a [[typeterm|typeterm]]\\ ​
 +the return type of the method
 +
 +**[#​exception_1,​...]:​** [[classt|classT]]\\ ​
 +list of IDs of checked exceptions thrown by this method.
 +
 +**#body:** [[blockt|blockT]] or '​null'​\\ ​
 +ID of the block containing the method body
 +
 +=== Sample Java Source ===
 +== ==
 +<Code lang-java>​
 +class HelloWorld ​ {                        // -> classT below
 +  public static void main(String[] args)   // -> methodT and modifierT below
 +  {                                        // -> blockT below
 +    System.out.println("​Hello World!"​); ​   // omitted below
 +  }
 +}
 +</​Code>​
 +
 +
 +=== Its PEF Representation ===
 +==  ==
 +<Code lang-prolog>​
 +classT(#​class,​ #​compilationUnit,​ '​HelloWorld',​ [..., #​meth]). ​
 +methodT(#​meth,​ #class, '​main',​ [#param], type(basic, void, 0), [], #body).
 +modifierT(#​meth,'​static'​).
 +paramT(#​param,​ ...).
 +blockT(#​body,​ #meth, #meth, [#​printStatement]).
 +...
 +
 +</​Code>​
 +
 +=== AST Specification ===
 +== ==
 +<​Code>​
 +ast_node_def('​Java',​methodT,​[
 +     ​ast_arg(id, ​     mult(1,1,no ), id,  [methodT]), % <-- convention!!!
 +     ​ast_arg(parent, ​ mult(1,1,no ), id,  [classT]), ​
 +     ​ast_arg(name, ​   mult(1,1,no ), attr,​[atom]),​
 +     ​ast_arg(params, ​ mult(0,​*,​ord),​ id,  [paramT]),
 +     ​ast_arg(type, ​   mult(1,​1,​no), ​ attr,​[typeTermType,​nullType]),​
 +     ​ast_arg(excepts,​ mult(0,​*,​ord),​ id,  [classT]), %ord, only for compatibility with current PEF represenation:​ detection of lists
 +     ​ast_arg(body, ​   mult(0,​1,​no), ​ id,  [blockT,​nullType])
 +]).
 +</​Code>​
research/jtransformer/api/java/pefs/2.9/methodt.txt · Last modified: 2018/05/09 01:59 (external edit)

SEWiki, © 2019