Package org.codehaus.janino
The core of the Janino Java compiler.
The package comprises a scanner (Scanner
, a parser (Parser
) and a class file library. The parser builds a syntax tree from the "Java.*" classes
that represents the parsed code. The UnitCompiler.compileUnit(boolean, boolean,
boolean, org.codehaus.janino.UnitCompiler.ClassFileConsumer)
method compiles this syntax tree into a ClassFile
object, which can write JVM bytecode to an OutputStream
.
This package implements the org.codehaus.commons.compiler
API.
-
Interface Summary Interface Description CodeContext.FixUp A throw-in interface that marksCodeContext.Offset
s as "fix-ups": During the execution ofCodeContext.fixUp()
, all "fix-ups" are invoked and can do last touches to the code attribute.IClass.IAnnotation Representation of a Java "annotation".IClass.IMember Base for the members of anIClass
.IParameterizedType IType ITypeVariable Type bounds can either be a class or interface type, or a type variable.ITypeVariableOrIClass IWildcardType Java.Annotatable Representation of Java elements that can be annotated: Fields, constructors, methods, type declarations.Java.Annotation Representation of a Java annotation.Java.AnnotationTypeDeclaration Base for package member ("top-level") and member ("nested") annotation type declarations.Java.ArrayInitializerOrRvalue The union ofJava.ArrayInitializer
andJava.Rvalue
.Java.BlockStatement Everything that can be compiled to code, e.g. the statements occurring in the body of a method or in a block, explicit constructor invocations and instance/static initializers.Java.ClassDeclaration Base for the various class declarations (top-level class, local class, anonymous class, nested class, top-level enum, nested enum).Java.DocCommentable Representation of a Java element that can be annotated with a DOC comment ("/**
Java.ElementValue Base of the possible element values in aJava.NormalAnnotation
.Java.EnumDeclaration Base for package member (a.k.a.Java.FieldDeclarationOrInitializer Java.LambdaBody Representation of a "lambda body", see JLS9 15.27.2.Java.LambdaParameters Base for the various "lambda parameters" styles, see JLS9 15.27.1.Java.Locatable This interface is implemented by objects which are associated with a location in the source code.Java.MemberTypeDeclaration Represents a class or interface declaration where the immediately enclosing scope is another class or interface declaration.Java.Modifier Base for the various modifiers (access modifiers, annotations).Java.ModuleDirective Representation of a (Java 9+) "module directive", as explained in JLS9 7.7.Java.NamedTypeDeclaration Represents the declaration of a class or an interface that has a name.Java.PackageMemberTypeDeclaration Represents a class or interface declaration on compilation unit level.Java.Scope Representation of a Java "scope", e.g. a compilation unit, type, method or block.Java.TypeArgument Representation of a JLS7 4.5.1 type argument.Java.TypeBodyDeclaration Representation of a "ClassBodyDeclaration" or an "InterfaceMemberDeclaration".Java.TypeDeclaration Base for the various kinds of type declarations, e.g. top-level class, member interface, local class.TokenStream An interface that allows for peeking and consuming a stream ofToken
s.UnitCompiler.ClassFileConsumer Visitor.AbstractCompilationUnitVisitor<R,EX extends java.lang.Throwable> The visitor for the different kinds ofJava.AbstractCompilationUnit
s.Visitor.AnnotationVisitor<R,EX extends java.lang.Throwable> The visitor for all kinds ofJava.Annotation
s.Visitor.ArrayInitializerOrRvalueVisitor<R,EX extends java.lang.Throwable> The visitor forJava.ArrayInitializerOrRvalue
.Visitor.AtomVisitor<R,EX extends java.lang.Throwable> The visitor for all kinds ofJava.Atom
s.Visitor.BlockStatementVisitor<R,EX extends java.lang.Throwable> The visitor for all kinds ofJava.BlockStatement
s (statements that may appear with a block).Visitor.ConstructorInvocationVisitor<R,EX extends java.lang.Throwable> The visitor for all kinds ofJava.ConstructorInvocation
s.Visitor.ElementValueVisitor<R,EX extends java.lang.Throwable> Visitor.FieldDeclarationOrInitializerVisitor<R,EX extends java.lang.Throwable> The visitor for all kinds ofJava.BlockStatement
s (statements that may appear with a block).Visitor.FunctionDeclaratorVisitor<R,EX extends java.lang.Throwable> The visitor for all kinds ofJava.FunctionDeclarator
s.Visitor.ImportVisitor<R,EX extends java.lang.Throwable> The visitor for all kinds ofJava.AbstractCompilationUnit.ImportDeclaration
s.Visitor.LambdaBodyVisitor<R,EX extends java.lang.Throwable> The visitor for the different kinds ofJava.LambdaBody
s.Visitor.LambdaParametersVisitor<R,EX extends java.lang.Throwable> The visitor for the different kinds ofJava.LambdaParameters
styles.Visitor.LvalueVisitor<R,EX extends java.lang.Throwable> The visitor for all kinds ofJava.Lvalue
s.Visitor.ModifierVisitor<R,EX extends java.lang.Throwable> The visitor for the different kinds ofJava.Modifier
s.Visitor.ModuleDirectiveVisitor<R,EX extends java.lang.Throwable> The visitor for the different kinds ofJava.ModuleDirective
s.Visitor.RvalueVisitor<R,EX extends java.lang.Throwable> The visitor for all kinds ofJava.Rvalue
s.Visitor.TryStatementResourceVisitor<R,EX extends java.lang.Throwable> The visitor for all kinds ofJava.TryStatement.Resource
s.Visitor.TypeArgumentVisitor<R,EX extends java.lang.Throwable> The visitor for all kinds ofJava.TypeArgument
s.Visitor.TypeBodyDeclarationVisitor<R,EX extends java.lang.Throwable> The visitor for all kinds ofJava.TypeBodyDeclaration
s (declarations that may appear in the body of a type declaration).Visitor.TypeDeclarationVisitor<R,EX extends java.lang.Throwable> The visitor for all kinds ofJava.TypeDeclaration
s.Visitor.TypeVisitor<R,EX extends java.lang.Throwable> The visitor for all kinds ofJava.Type
s. -
Class Summary Class Description AntCompilerAdapter A simpleCompilerAdapter
for the "ant" tool that silently ignores most of the configuration parameters and attempts to compile all given source files into class files.CachingJavaSourceClassLoader AJavaSourceClassLoader
that uses a resource storage provided by the application to cache compiled classes and thus saving unnecessary recompilations.ClassBodyEvaluator ClassFileIClass ClassLoaderIClassLoader CodeContext The context of the compilation of a function (constructor or method).Compiler JANINO implementation ofICompiler
.CompilerFactory The JANINO implementation ofICompilerFactory
.Descriptor Helper class that defines useful methods for handling "field descriptors" (JVMS 4.3.2) and "method descriptors" (JVMS 4.3.3).ExpressionEvaluator ThisIExpressionEvaluator
is implemented by creating and compiling a temporary compilation unit defining one class with one static method with one RETURN statement.FilterWarningHandler Invokes a delegate iff the handle of the warning matches one or more of a set ofStringPattern
s.IClass A simplified equivalent to "java.lang.reflect".IClassLoader Loads anIClass
by type name.Java This wrapper class defines classes that represent the elements of the Java programming language.Java.AbstractAnnotation Convenience class.Java.AbstractClassDeclaration Base for the various class declaration kinds.Java.AbstractCompilationUnit Holds the result ofParser.parseAbstractCompilationUnit()
.Java.AbstractCompilationUnit.ImportDeclaration Base class for the various IMPORT declarations.Java.AbstractCompilationUnit.SingleStaticImportDeclaration Represents a single static import declaration likeJava.AbstractCompilationUnit.SingleTypeImportDeclaration Represents a "single-type import declaration" like "import java.util.Map;
".Java.AbstractCompilationUnit.StaticImportOnDemandDeclaration Represents a static-import-on-demand declaration likeJava.AbstractCompilationUnit.TypeImportOnDemandDeclaration Represents a type-import-on-demand declaration likeimport java.util.*;
.Java.AbstractTypeBodyDeclaration Abstract implementation ofJava.TypeBodyDeclaration
.Java.AbstractTypeDeclaration Abstract implementation ofJava.TypeDeclaration
.Java.AccessModifier Representation of the modifier flags and annotations that are associated with a declaration.Java.AlternateConstructorInvocation Representation of a JLS7 8.8.7.1.Java.AmbiguousName Representation of a JLS7 6.5.2 "ambiguous name".Java.AnonymousClassDeclaration Representation of a JLS7 15.9.5 "anonymous class declaration".Java.ArrayAccessExpression Representation of a JLS7 15.13 (JLS8: 15.10.3) "array access expression".Java.ArrayCreationReference Representation of a "method reference expression", as described in JLS9 15.13, with the form "<var>arrayType</var>::new
".Java.ArrayInitializer Representation of a JLS7 10.6 "array initializer".Java.ArrayLength Representation of the JLS7 10.7 array type "length" pseudo-member.Java.ArrayType Representation of a JLS7 10.1 "array type".Java.AssertStatement Representation of the JLS7 14.10 ASSERT statement.Java.Assignment Representation of all JLS7 15.26 assignments.Java.Atom Java.BinaryOperation Representation of all non-operand-modifying binary operations.Java.Block Representation of a Java "block" (JLS7 14.2).Java.BlockLambdaBody Representation of a "lambda body" that is a block; see JLS9 15.27.2.Java.BooleanLiteral Representation of a "boolean literal" (JLS7 3.10.3) (typeboolean
).Java.BooleanRvalue Base class forJava.Rvalue
s that compile better as conditional branches.Java.BreakableStatement Base class for statements that can be terminated abnormally with abreak
statement.Java.BreakStatement Representation of the JLS7 14.15 BREAK statement.Java.Cast Representation of a JLS7 15.16 "cast expression".Java.CatchClause Representation of a JLS7 14.20.1 CATCH clause.Java.CatchParameter Representation of a "catch" parameter.Java.CharacterLiteral Representation of a "character literal" (JLS7 3.10.4) (typechar
).Java.ClassInstanceCreationReference Representation of a "method reference expression", as described in JLS9 15.13, with the form "<var>classType</var>::new
".Java.ClassLiteral Representation of a JLS7 15.8.2 "class literal".Java.CompilationUnit Representation of an "ordinary compilation unit" as explained in JLS9 7.3 (before Java 9 known as "compilation unit" and described in JLS8 7.3).Java.ConditionalExpression Representation of a JLS7 15.25 "conditional operation".Java.ConstructorDeclarator Representation of a constructor declarator.Java.ConstructorInvocation Abstract bas class forJava.SuperConstructorInvocation
andJava.AlternateConstructorInvocation
.Java.ContinuableStatement Base class for statements that support the "continue" statement.Java.ContinueStatement Representation of the JLS7 14.16 CONTINUE statement.Java.Crement Representation of a JLS7 15.14.2 "postfix increment operation", a JLS7 15.14.3 "postfix decrement operation", a JLS7 15.15.1 "prefix increment operation" or a JLS7 15.15.2 "prefix decrement operation".Java.DoStatement Representation of a JLS7 14.13 DO statement.Java.ElementValueArrayInitializer An element value in the form of an array initializer, e.gJava.ElementValuePair Representation of a "name = value" element in aJava.NormalAnnotation
.Java.EmptyStatement Representation of the "empty statement", i.e. the blank semicolon.Java.EnclosingScopeOfTypeDeclaration Lazily determines and returns the enclosingJava.Scope
of the givenJava.TypeDeclaration
.Java.EnumConstant Representation of an "enum constant", see JLS7 8.9.1.Java.ExportsModuleDirective Representation of a (Java 9+) "exports directive", as explained in JLS9 7.7.2.Java.ExpressionLambdaBody Representation of a "lambda body" that is an expression; see JLS9 15.27.2.Java.ExpressionStatement Representation of the JLS7 14.8 "expression statement".Java.FieldAccess Representation of an access to a field of a class or an interface.Java.FieldAccessExpression Representation of a JLS7 15.11 "field access expression", including the "array length" pseudo field access.Java.FieldDeclaration This class is derived from "Statement", because it provides for the initialization of the field.Java.FloatingPointLiteral Representation of a "floating-point literal" (JLS7 3.10.2) (typesfloat
anddouble
).Java.ForEachStatement Representation of a JLS7 14.14.2 "enhanced FOR statement".Java.FormalLambdaParameters Representation of "lamba parameters" that include a formal parameter list; see JLS9 15.27.1.Java.ForStatement Representation of a JLS7 14.14.1 "basic FOR statement".Java.FunctionDeclarator Abstract base class forJava.ConstructorDeclarator
andJava.MethodDeclarator
.Java.FunctionDeclarator.FormalParameter Representation of a (formal) function parameter.Java.FunctionDeclarator.FormalParameters Representation of the (formal) function parameters.Java.IdentifierLambdaParameters Representation of "lamba parameters" that consist of a single identifier; see JLS9 15.27.1Java.IfStatement Representation of a JLS7 14.9 IF statement.Java.InferredLambdaParameters Representation of "lamba parameters" that include an inferred formal parameter list; see JLS9 15.27.1.Java.Initializer Representation of an "instance initializer" (JLS7 8.6) or "static initializer" (JLS7 8.7).Java.Instanceof Representation of a JLS7 15.20.2 "type comparison operation".Java.IntegerLiteral Representation of an "integer literal" (JLS7 3.10.1) (typesint
andlong
).Java.InterfaceDeclaration Base for the various interface declaration kinds.Java.Invocation Abstract base class forJava.MethodInvocation
andJava.SuperclassMethodInvocation
.Java.LabeledStatement Representation of a JLS7 14.7 "labeled statement".Java.LambdaExpression Representation of a (Java 8+) "lambda expression", see JLS9 15.27.Java.Literal Abstract base class for the various Java literals; see JLS7 3.10.Java.LocalClassDeclaration Representation of a "local class declaration" i.e. a class declaration that appears inside a method body.Java.LocalClassDeclarationStatement Representation of the JLS7 14.3 "local class declaration statement".Java.LocalVariable Representation of a local variable while it is in scope during compilation.Java.LocalVariableAccess Representation of a local variable access -- used during compilation.Java.LocalVariableDeclarationStatement Representation of a JLS7 14.4 "local variable declaration statement".Java.LocalVariableSlot All local variables have a slot number; local variables that get written into the "local variable table" also have a start and end offset that defines the variable's extent in the bytecode.Java.Located Abstract implementation ofJava.Locatable
.Java.Lvalue Representation of an "lvalue", i.e. an expression that has a type and a value, and can be assigned to: An expression that can be the left-hand-side of an assignment.Java.MarkerAnnotation Representation of a "marker annotation", i.e. an annotation without any elements in parentheses.Java.MemberAnnotationTypeDeclaration Representation of a member annotation type declaration, a.k.a.Java.MemberClassDeclaration Representation of a "member class declaration", i.e. a class declaration that appears inside another class or interface declaration.Java.MemberEnumDeclaration Representation of a "member enum declaration", i.e. an enum declaration that appears inside another class or interface declaration.Java.MemberInterfaceDeclaration Representation of a "member interface declaration", i.e. an interface declaration that appears inside another class or interface declaration.Java.MethodDeclarator Representation of a method declarator.Java.MethodInvocation Representation of a JLS7 15.12 "method invocation expression".Java.MethodReference Representation of a "method reference expression", as described in JLS9 15.13, with the form "<var>referenceType</var>::identifier
.Java.Modifiers Deprecated. Many methods that previously accepted a parameter of this type now take aJava.Modifier
[]
(incompatible API change in JANINO version 3.0.13)Java.ModularCompilationUnit Represents aModularCompilationUnit
as specified in JLS11 7.3.Java.ModuleDeclaration Representation of a "module declaration", as described in JLS9 7.7.Java.NamedClassDeclaration Base for the various named class declarations.Java.NewAnonymousClassInstance Representation of a JLS7 15.9 "anonymous class instance creation expression".Java.NewArray Representation of a JLS7 15.10 "array creation expression".Java.NewClassInstance Representation of a JLS7 "class instance creation expression".Java.NewInitializedArray Representation of a JLS7 15.10 "array creation expression".Java.NormalAnnotation A "normal annotation", i.e. an annotation with multiple elements in parentheses and curly braces.Java.NullLiteral Representation of a "null literal" (JLS7 3.10.7).Java.OpensModuleDirective Representation of a (Java 9+) "opens directive", as explained in JLS9 7.7.2.Java.Package Representation of a JLS7 6.5.2.1.5 "package name".Java.PackageDeclaration Representation of a package declaration likepackage com.acme.tools;
.Java.PackageMemberAnnotationTypeDeclaration Representation of a package member annotation type declaration, a.k.a.Java.PackageMemberClassDeclaration Implementation of a "package member class declaration", a.k.a.Java.PackageMemberEnumDeclaration Implementation of a "package member enum declaration", a.k.a.Java.PackageMemberInterfaceDeclaration Representation of a "package member interface declaration", a.k.a.Java.ParameterAccess "Artificial" operation for accessing the parameters of the synthetic constructor of an anonymous class.Java.ParenthesizedExpression Representation of a JLS7 15.8.5 "parenthesized expression".Java.PrimitiveType Representation of a JLS7 4.2 "primitive type", i.e a primitive type "usage", which has a location.Java.ProvidesModuleDirective Representation of a (Java 9+) "provides directive", as explained in JLS9 7.7.4.Java.QualifiedThisReference Representation of an JLS7 15.8.4 access to the current object or an enclosing instance.Java.ReferenceType Representation of a JLS7 4.3 reference type.Java.RequiresModuleDirective Representation of a (Java 9+) "requires directive", as explained in JLS9 7.7.1.Java.ReturnStatement Representation of the JLS7 14.17 RETURN statement.Java.Rvalue Representation of an "rvalue", i.e. an expression that has a type and a value, but cannot be assigned to: An expression that can be the right-hand-side of an assignment.Java.RvalueMemberType Representation of the first part of a JLS7 15.9 "Qualified class instance creation expression": The "a.new MyClass
" part of "a.new MyClass(...)
" expression.Java.SimpleConstant This class is not used when code is parsed; it is intended for "programmatic" literals.Java.SimpleType This class is not used when code is parsed; it is intended for "programmatic" types.Java.SingleElementAnnotation Representation of a "single-element annotation", i.e. an annotation followed by a single element in parentheses.Java.Statement Everything that can occur in the body of a method or in a block.Java.StringLiteral Representation of a "string literal" (JLS7 3.10.5) (typeString
).Java.SuperclassFieldAccessExpression Representation of an JLS7 "superclass field access expression", e.gJava.SuperclassMethodInvocation Representation of a JLS7 15.12.1.1.3 "superclass method invocation".Java.SuperConstructorInvocation Representation of a JLS7 8.8.7.1.Java.SwitchStatement The JLS7 14.10switch
Statement.Java.SwitchStatement.SwitchBlockStatementGroup Representation of a "switch block statement group" as defined in JLS7 14.11.Java.SynchronizedStatement Representation of a JLS7 14.9 SYNCHRONIZED statement.Java.TextBlock Representation of a "text block" (JLS17 3.10.6 Text Blocks) (typeString
).Java.ThisReference Representation of an JLS7 15.8.3 access to the innermost enclosing instance.Java.ThrowStatement Representation of a JLS7 14.18 THROW statement.Java.TryStatement Representation of a JLS7 14.20 TRY statement.Java.TryStatement.LocalVariableDeclaratorResource Representation of a JLS9 14.20.2 "local-variable-declarator resource" in a TRY-with-resources statement.Java.TryStatement.Resource Representation of a JLS9 14.20.2 "resource" in a TRY-with-resources statement.Java.TryStatement.VariableAccessResource Representation of a JLS9 14.20.2 "variable-access resource" in a TRY-with-resources statement.Java.Type Representation of a Java type.Java.TypeParameter Representation of a type parameter (which declares a type variable).Java.UnaryOperation Representation of a JLS7 15.15.3 "unary plus operator", a JLS7 15.15.4 "unary minus operator", a JLS7 15.15.5 "bitwise complement operator" or a JLS7 15.15.6 "logical complement operator".Java.UsesModuleDirective Representation of a (Java 9+) "uses directive", as explained in JLS9 7.7.3.Java.VariableDeclarator Used by FieldDeclaration and LocalVariableDeclarationStatement.Java.WhileStatement Representation of the JLS7 14.2 WHILE statement.Java.Wildcard Representation of a JLS7 4.5.1 "wildcard".JavaSourceClassLoader AClassLoader
that, unlike usualClassLoader
s, does not load byte code, but reads Java source code and then scans, parses, compiles and loads it into the virtual machine.JavaSourceIClassLoader ThisIClassLoader
finds, scans and parses compilation units.MethodDescriptor Representation of a "method descriptor" (JVMS 4.3.3).Mod This class defines constants and convenience methods for the handling of modifiers as defined by the JVM.Parser A parser for the Java programming language.ResourceFinderIClassLoader Scanner Splits up a character stream into tokens and returns them asString
objects.ScriptEvaluator An implementation ofIScriptEvaluator
that utilizes the JANINO Java compiler.SimpleCompiler To set up aSimpleCompiler
object, proceed as described forISimpleCompiler
.Token Immutable representation of a Java token.TokenStreamImpl Standard implementation for theTokenStream
.UnicodeUnescapeReader AFilterReader
that unescapes the "Unicode Escapes" as described in JLS7 3.10.6.UnitCompiler This class actually implements the Java compiler.UnitCompiler.SimpleIField Short-hand implementation ofIClass.IField
that implements a non-constant, non-static, package-accessible field.Unparser Unparses (un-compiles) an AST to aWriter
.Visitor The basis for the "visitor" pattern as described in "Gamma, Helm, Johnson, Vlissides: Design Patterns". -
Enum Summary Enum Description Access Return value forIClass.IMember.getAccess()
.JaninoOption The compilation ofCompiler
,JavaSourceIClassLoader
,SimpleCompiler
and their subclasses can be configured with these options.Java.Primitive Java's primitive types.Parser.ClassDeclarationContext The kinds of context where a class declaration can occur.Parser.InterfaceDeclarationContext The kinds of context where an interface declaration can occur.Parser.MethodDeclarationContext The kinds of context where a method declaration can occur.TokenType -
Exception Summary Exception Description UnicodeUnescapeException Represents a problem that occurred while unescaping a unicode escape sequence through aUnicodeUnescapeReader
.