SE & SDA Wiki

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

User Tools

Site Tools



classT(#id, #parent, 'name', [#def_1,...])

Represents the class or interface declaration. Every interface declaration is accompanied by the additional fact: interfaceT(#id).
Every annotation declaration is accompanied by an interfaceT(#id) and an annotationT(#id) fact.
If it is an abstract class, there will be an additional modifierT(Class, 'abstract') fact.

Arguments

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

#parent: execT, compilationUnitT, classT, newClassT
ID of the element that contains this class declaration.

'name': atom
the class name, without a package. In the case of anonymous classes, a globally unique name: ANONYMOUS$<UN>, where <UN> is a unique number.

[#def_1,…]: annotationMemberT, classT, fieldT, methodT, constructorT, classInitializerT
list of IDs for other facts representing the methods or fields, and inner classes. These fields and methods are the members (not necessarily public!) of the class.

Sample Java Source

class HelloWorld  { //corresponding code line to classT

   ...
}

Its PEF Representation

classT(#id, #parentElement, 'HelloWorld', [#members ...]).

AST Specification

ast_node_def('Java',classT,[
     ast_arg(id,      mult(1,1,no ), id,  [classT]), % <-- convention!!!
     ast_arg(parent,  mult(1,1,no ), id,  [execT, compilationUnitT, classT, newClassT]), 
     ast_arg(name,    mult(1,1,no ), attr,[atom]),
     ast_arg(defs,    mult(0,*,ord), id,  [annotationMemberT, classT, fieldT, methodT, constructorT, classInitializerT])
]).
research/jtransformer/api/java/pefs/2.9/classt.txt · Last modified: 2018/05/09 01:59 (external edit)

SEWiki, © 2018