Package iota
package iota
This package contains the scanner, parser, AST representations, JVM and HMMM code emitter, the driver class, and
other supporting programs for the iota compiler.
-
ClassDescriptionA class loader to be able to load a class from a byte stream.A buffered character reader, which abstracts out differences between platforms, mapping all new lines to '\n', and also keeps track of line numbers.Representation of annotation structure.Representation of AnnotationDefault_attribute structure.Representation for ARITHMETIC1 and ARITHMETIC2 instructions.Representation for ARRAY1, ARRAY2 and ARRAY3 instructions.The abstract base class for the representation of attribute_info structure.Representation for BIT instructions.This class is used for control flow analysis to compute maximum depth of operand stack for a method.Instances of this class form the elements of the CLBranchStack which is used for control flow analysis to compute maximum depth of operand stack for a method.Representation of Code_attribute structure.Representation for COMPARISON instructions.Representation of CONSTANT_Class_info structure.Representation of CONSTANT_Double_info structure.Representation of CONSTANT_Fieldref_info structure.Representation of CONSTANT_Float_info structure.Representation of CONSTANT_Integer_info structure.Representation of CONSTANT_InterfaceMethodref_info structure.Representation of CONSTANT_Long_info structure.Abstract super class of CONSTANT_Fieldref_info, CONSTANT_Methodref_info, CONSTANT_InterfaceMethodref_info structures.Representation of CONSTANT_Methodref_info structure.Representation of CONSTANT_NameAndType_info structure.Representation of a class' constant pool.This class defines constants related to the JVM bytecode.We classify the JVM instructions into the following categories.Representation of CONSTANT_String_info structure.Representation of CONSTANT_Utf8_info structure.Representation of ConstantValue_attribute structure.Representation for CONVERSION instructions.Representation of cp_info structure.Representation of Deprecated_attribute structure.Representation of element_value union.Representation of the element_value_pairs table entry.This class provides a high level interface for creating (in-memory and file based) representation of Java classes.Representation of EnclosingMethod_attribute structure.Representation of an exception handler.Representation of exception_table entry structure.Representation of Exceptions_attribute structure.This class represents the field_info structure.Representation for FIELD instructions.This class provides a representation of the ClassFile structure.Representation for FLOW_CONTROL1, FLOW_CONTROL2, FLOW_CONTROL3 and FLOW_CONTROL4 instructions.Representation of InnerClasses_attribute structure.Representation of classes table entry structure.This class stores static information about a JVM instruction.Representation of a JVM instruction.Representation of line_number_table entry structure.Representation of LineNumberTable_attribute structure.Representation for LOAD_STORE1, LOAD_STORE2, LOAD_STORE3 and LOAD_STORE4 instructions.Representation of local_variable_table entry structure.Representation of LocalVariableTable_attribute structure.Representation of local_variable_type_table entry structure.Representation of LocalVariableTypeTable_attribute structure.This abstract base class represents the member_info structure.This class represents the method_info structure.Representation for METHOD1 and METHOD2 instructions.Representation for MISC instructions.Representation for OBJECT instructions.Inherits from java.out.DataOutputStream and provides an extra function for writing unsigned int to the output stream, which is required for writing Java class files.Representation of parameter_annotations_table entry structure.Representation of RuntimeInvisibleAnnotations_attribute structure.Representation of RuntimeInvisibleParameterAnnotations_attribute structure.Representation of RuntimeVisibleAnnotations_attribute structure.Representation of RuntimeVisibleParameterAnnotations_attribute structure.Representation of Signature_attribute structure.Representation of SourceDebugExtension_attribute structure.Representation of SourceFile_attribute structure.Representation for STACK instructions.Representation of Synthetic_attribute structure.The compilation unit context is always the outermost context and is where methods are declared.A Context encapsulates the environment in which an AST is analyzed.The Defn type is used to implement definitions of things (local variables, formal parameters, and types) that are named in some context (aka scope).The AST node for an assignment (=) operation.IAST is the abstract superclass of all nodes in the abstract syntax tree (AST).This abstract base class is the AST node for a binary expression --- an expression with a binary operator and two operands: lhs and rhs.The AST node for a block, which delimits a nested level of scope.This abstract base class is the AST node for binary expressions that return booleans.This abstract base class is the AST node for a comparison expression.The abstract syntax tree (AST) node representing a compilation unit, and so the root of the AST.The AST node for a division (/) expression.The AST node for an equality (==) expression.The AST node for an expression.The AST node for a formal parameter declaration.The AST node for a greater-than-or-equal-to (>=) expression.The AST node for a greater-than (>) expression.The AST node for an if-statement.The AST node for a less-than-or-equal-to (<=) expression.The AST node for a less-than (<) expression.The AST node for a boolean literal.The AST node for an int literal.The AST node for a logical-and (&&) expression.The AST node for a logical NOT (!) expression.The AST node for a logical-or (||) expression.The AST node for a message expression that has a target (the type corresponding to the compilation unit in which the message is invoked), a message name, and zero or more actual arguments.The AST node for a method declaration.The AST node for a multiplication (*) expression.The AST node for a unary negation (-) expression.The AST node for a not-equal-to (!=) expression.The AST node for a plus (+) expression.The AST node for a remainder (%) expression.The AST node for a return-statement.This abstract base class is the AST node for a statement (includes expressions).The AST node for an expression that appears as a statement.The AST node for a subtraction (-) expression.This abstract base class is the AST node for a unary expression --- an expression with a single operand.The AST node for an identifier used as a primary expression.The AST node for a local variable declaration.The AST node for a while-statement.The AST node for a "wild" expression.Representation of an element with a JSON document.A local context is a context (scope) in which local variables (including formal parameters) can be declared.The definition for a local variable (including formal parameters).A lexical analyzer for iota that interfaces with the hand-written parser (Parser).This is the main entry point for the iota compiler.This class provides a wrapper for a method.A method context is where formal parameters are declared.Representation of a basic block within a control-flow graph (cfg).Representation of a branch instruction.Representation of a control flow graph (cfg) for a method.A class for generating Marvin code.A register allocator that uses the graph coloring algorithm to allocate physical registers to virtual registers.Representation of an arithmetic instruction.Representation of a method call instruction.Representation of an instruction for loading an integer.An abstract high-level intermediate representation (HIR) of a JVM instruction.Representation of a jump (conditional or unconditional) jump instruction.Representation of an instruction for loading a formal parameter value.Representation of a phi function.Representation of a return instruction.Representation of an instruction for loading an integer constant.Representation of a liveness interval.Representation of an instruction for calling static methods.Representation of an arithmetic instruction.Representation of a method call instruction.Representation of an instruction for copying one register into another register.Representation of an instruction for loading an integer.Representation of an instruction for incrementing (or decrementing) a register by a constant value.An abstract low-level intermediate representation (LIR) of an HIR instruction.Representation of a jump (conditional or unconditional) jump instruction.Representation of a load (from memory to register) instruction.Representation of a phi function.Representation of an instruction for reading an integer from standard input into a register.Representation of a store (from register to memory) instruction.Representation of an instruction for writing an integer in a register to standard output.Representation of a load-store instruction.Representation of an arithmetic instruction of the form "x = y operation z".Representation of an instruction for calling a method.Representation of an instruction for copying one register (source) into another (target) register.Representation of an instruction for assigning an integer to a register (target).Representation of an instruction for incrementing (or decrementing) a register (target) by a constant value.An abstract representation of a Marvin instruction.Representation of a jump (conditional or unconditional) instruction.Representation of an instruction for loading a value from memory into a register.Representation of an instruction for reading an integer from standard input into a register (target).Representation of an instruction for storing a value from register into memory.Representation of an instruction for writing an integer in a register (source) to standard output.A register allocator that uses a naive round-robin approach to allocate physical registers to virtual registers.Representation of a no-argument instruction.Representation of a physical register in Marvin.Representation of a range within an interval.Abstract representation of a register.An abstract representation of a register allocator.Abstract representation of a JVM instruction as a tuple.Representation of a virtual register.A recursive descent parser that, given a lexical analyzer (a LookaheadScanner), parses an iota compilation unit (program file), taking tokens from the LookaheadScanner, and produces an abstract syntax tree (AST) for it.A utility class that allows pretty (indented) printing to standard output.A lexical analyzer for iota, that has no backtracking mechanism.A representation of tokens returned by the Scanner method getNextToken().An enum of token kinds.A class for representing iota types.A definition of a type name.Used to mark how an LIR instruction affects the register bound to a liveness interval.