-
Notifications
You must be signed in to change notification settings - Fork 4
Intermediate Language (IL)
The IL is split into logical function blocks. i.e. MethodeCall, VariableAccess, TypeContainer.
Explanation of important IL classes:
The ClassContainer has three container-types: Normally-Loaded, System and Unknown. Normally-Loaded ClassContainer's contain the Information about one class. This is independent of the loaded files, so one file can result in multiple ClassContainer's. Unknown ClassContainer's are Types that are found missing during the static type linking. System ClassContainer's contain the meta information about method calls and fields from Java.
Holds a list of ICodeEntry. Mostly to hold logical code blocks together. All code inside a method is one CodeBlock. And every If/Try/for has the code inside as one CodeBlock.
Contains information about the runtime Type usage of anything that has a type. I.e. variables, parameter, fields or the method return type. A TypeContainer contains something like this: "List<string[]>". It means some Type names "List" with a Generic Type names "string", who is also an Array.
Is most of the time inside a TypeContainer and links the real class or type to the usage of the type. The TypeContainer can be something like "List<string[]>", while the BaseType would be a link to the System type "List" and another one for the Generic Type "string" who would link to the System type "String".
Definition of a class field with everything such a field can bring.
Contains the required informations for statements such as: if, for, foreach, try-catch, ?: and while. This includes the CodeBlock's for the statement line and a Code-Block for everything inside the Statement.
Definition of a method that has been called inside a CodeBlock. This contains a link to a ClassContainer and the specific method that should be called.