Packages

p

inox

ast

package ast

Provides AST definitions for Inox.

The core language supported by Inox is defined in inox.ast.Expressions, inox.ast.Definitions and inox.ast.Types. The trait inox.ast.Trees provides all these definitions and one of the integral parts of a Program.

Linear Supertypes
AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. ast
  2. AnyRef
  3. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Type Members

  1. trait CallGraph extends AnyRef
  2. trait Constructors extends AnyRef

    Provides constructors for Expressions.

    Provides constructors for Expressions.

    The constructors implement some logic to simplify the tree and potentially use a different expression node if one is more suited.

  3. trait DSL extends AnyRef

    This trait provides a DSL to create Inox trees.

    This trait provides a DSL to create Inox trees.

    The two following principles are followed (hopefully with some consistency): 1) When a fresh identifier needs to be introduced, the API provides constructors which are passed the fresh identifiers in the form of ValDefs (construct them with TypeToValDef), and then a context (in the form of a function) to which the newly created identifiers will be passed. 2) No implicit conversions are provided where there would be ambiguity. This refers mainly to Identifiers, which can be transformed to ADTType or FunctionInvocation or ... . Instead one-letter constructors are provided.

  4. trait Definitions extends AnyRef

    Provides types that describe Inox definitions.

  5. trait ExprOps extends GenTreeOps

    Provides functions to manipulate Expressions.Expr.

    Provides functions to manipulate Expressions.Expr.

    This object provides a few generic operations on Inox expressions, as well as some common operations.

    The generic operations lets you apply operations on a whole tree expression. You can look at:

    These operations usually take a higher order function that gets applied to the expression tree in some strategy. They provide an expressive way to build complex operations on Inox expressions.

  6. trait Expressions extends AnyRef

    Expression definitions for Pure Scala.

    Expression definitions for Pure Scala.

    Every expression in Inox inherits from Expressions.Expr. Expressions can be manipulated with functions in Constructors and ExprOps.

    If you are looking for things such as function or class definitions, please have a look in inox.ast.Definitions.

  7. trait Extractors extends AnyRef

    Provides extraction capabilities to Trees based on a TreeDeconstructor instance.

  8. trait GenTreeOps extends AnyRef

    Generic tree traversals based on a deconstructor of a specific tree type

  9. class Identifier extends Ordered[Identifier] with Positioned

    Represents a unique symbol in Inox.

    Represents a unique symbol in Inox.

    The name is stored in the decoded (source code) form rather than encoded (JVM) form. The type may be left blank (Untyped) for Identifiers that are not variables.

  10. trait Paths extends AnyRef
  11. trait Printer extends AnyRef
  12. trait Printers extends AnyRef
  13. trait ProgramEncoder extends ProgramTransformer
  14. trait ProgramTransformer extends AnyRef
  15. trait SimpleSymbolTransformer extends SymbolTransformer
  16. trait SimpleSymbols extends AnyRef
  17. trait SymbolOps extends AnyRef

    Provides functions to manipulate Expressions.Expr in cases where a symbol table is available (and required: see ExprOps for simpler tree manipulations).

  18. trait SymbolTransformer extends AnyRef

    Symbol table transformer base type

  19. trait TreeDeconstructor extends AnyRef

    Meat and bones of tree deconstruction/reconstruction.

    Meat and bones of tree deconstruction/reconstruction.

    Implementations provide methods to extract all useful subtrees from a given tree (Expressions.Expr, Types.Type, ...) as well as a closure that can reconstruct the initial tree based on appropriate arguments.

    Instances of Trees must provide a TreeDeconstructor as a means of applying generic transformations to arbitrary extensions of the Trees.Tree interface.

    See also

    Extractors for some interesting use cases

  20. trait TreeExtractor extends AnyRef

    A type that pattern matches agains a type of Sources and extracts its components, and a builder that given a set of Target components, reconstructs a Target tree that corresponds to the initially deconstructed tree.

  21. trait TreeOps extends AnyRef
  22. trait TreeTransformer extends AnyRef
  23. trait Trees extends Expressions with Constructors with Extractors with Types with Definitions with Printers with TreeOps
  24. trait TypeOps extends AnyRef
  25. trait Types extends AnyRef

Inherited from AnyRef

Inherited from Any

Ungrouped