package ast
- Alphabetic
- Public
- All
Type Members
- case class AAlloc(exp: AExpr, loc: Loc) extends AstNode with AExpr with AAtomicExpr with Product with Serializable
- case class AAssignStmt(left: Assignable, right: AExpr, loc: Loc) extends AstNode with AStmtInNestedBlock with Product with Serializable
- sealed trait AAtomicExpr extends AstNode with AExpr
- case class ABinaryOp(operator: BinaryOperator, left: AExpr, right: AExpr, loc: Loc) extends AstNode with AExpr with Product with Serializable
- sealed trait ABlock extends AstNode with AStmt
- case class ACallFuncExpr(targetFun: AExpr, args: List[AExpr], loc: Loc) extends AstNode with AExpr with Product with Serializable
- sealed trait ADeclaration extends AstNode
- case class ADerefWrite(exp: AExpr, loc: Loc) extends ReferenceAssignable with Product with Serializable
- case class ADirectFieldWrite(id: AIdentifier, field: String, loc: Loc) extends FieldAssignable with Product with Serializable
- case class AErrorStmt(exp: AExpr, loc: Loc) extends AstNode with AStmtInNestedBlock with Product with Serializable
- sealed trait AExpr extends AstNode with AExprOrIdentifierDeclaration
- sealed trait AExprOrIdentifierDeclaration extends AstNode
- case class AFieldAccess(record: AExpr, field: String, loc: Loc) extends AstNode with AExpr with AAtomicExpr with Product with Serializable
- case class AFunBlockStmt(declarations: List[AVarStmt], others: List[AStmtInNestedBlock], ret: AReturnStmt, loc: Loc) extends AstNode with ABlock with Product with Serializable
- case class AFunDeclaration(name: String, params: List[AIdentifierDeclaration], stmts: AFunBlockStmt, loc: Loc) extends AstNode with ADeclaration with Product with Serializable
- case class AIdentifier(name: String, loc: Loc) extends AstNode with AExpr with AAtomicExpr with ReferenceAssignable with Product with Serializable
- case class AIdentifierDeclaration(name: String, loc: Loc) extends AstNode with ADeclaration with AExprOrIdentifierDeclaration with Product with Serializable
- case class AIfStmt(guard: AExpr, ifBranch: AStmtInNestedBlock, elseBranch: Option[AStmtInNestedBlock], loc: Loc) extends AstNode with AStmtInNestedBlock with Product with Serializable
- case class AIndirectFieldWrite(exp: AExpr, field: String, loc: Loc) extends FieldAssignable with Product with Serializable
- case class AInput(loc: Loc) extends AstNode with AExpr with AAtomicExpr with Product with Serializable
- case class ANestedBlockStmt(body: List[AStmtInNestedBlock], loc: Loc) extends AstNode with ABlock with AStmtInNestedBlock with Product with Serializable
- case class ANull(loc: Loc) extends AstNode with AExpr with AAtomicExpr with Product with Serializable
- case class ANumber(value: Int, loc: Loc) extends AstNode with AExpr with AAtomicExpr with Product with Serializable
- case class AOutputStmt(exp: AExpr, loc: Loc) extends AstNode with AStmtInNestedBlock with Product with Serializable
- case class AProgram(funs: List[AFunDeclaration], loc: Loc) extends AstNode with Product with Serializable
- case class ARecord(fields: List[ARecordField], loc: Loc) extends AstNode with AExpr with Product with Serializable
- case class ARecordField(field: String, exp: AExpr, loc: Loc) extends Product with Serializable
- case class AReturnStmt(exp: AExpr, loc: Loc) extends AstNode with AStmt with Product with Serializable
- sealed trait AStmt extends AstNode
-
sealed
trait
AStmtInNestedBlock extends AstNode with AStmt
A statement in the body of a nested block (cannot be a declaration or a return).
- case class AUnaryOp(operator: UnaryOperator, subexp: AExpr, loc: Loc) extends AstNode with AExpr with Product with Serializable
- case class AVarRef(id: AIdentifier, loc: Loc) extends AstNode with AExpr with AAtomicExpr with Product with Serializable
- case class AVarStmt(declIds: List[AIdentifierDeclaration], loc: Loc) extends AstNode with AStmt with Product with Serializable
- case class AWhileStmt(guard: AExpr, innerBlock: AStmtInNestedBlock, loc: Loc) extends AstNode with AStmtInNestedBlock with Product with Serializable
- sealed trait Assignable extends AnyRef
-
sealed abstract
class
AstNode extends Product
AST node.
AST node.
(The class extends
Product
to enable functionality used by AstOps.UnlabelledNode.) - sealed trait BinaryOperator extends AnyRef
-
class
CombineNormalizers extends Normalizer
Combines two normalizers, running
normalizer1
followed bynormalizer2
on the input program. -
trait
DepthFirstAstVisitor[A] extends AnyRef
A depth-first visitor for ASTs.
A depth-first visitor for ASTs.
- A
argument type
- sealed trait FieldAssignable extends Assignable
-
case class
Loc(line: Int, col: Int) extends Product with Serializable
Source code location.
-
class
NoFunctionPointers extends TipSublanguages
In this sub-language, function identifiers can only be used in direct calls, and indirect calls are prohibited.
-
class
NormalizedCalls extends TipSublanguages
In this sub-language, all calls are normalized, i.e.
In this sub-language, all calls are normalized, i.e. they only appear in statements of the form
x = f(e1, ..., en)
where
f
is a function identifier,x
is a variable identifier and the parameterse_i
are atomic expressions. - class Normalizer extends AnyRef
- sealed trait Operator extends AnyRef
- sealed trait ReferenceAssignable extends Assignable
-
trait
TipSublanguages extends DepthFirstAstVisitor[Unit]
Defines restrictions of TIP for the different analyses.
- sealed trait UnaryOperator extends AnyRef
Value Members
- object AstNodeData
-
object
AstOps
Convenience operations related to ASTs.
- object AstPrinters
-
object
CallsNormalizer extends Normalizer
Normalizes function calls to fit into the NormalizedCalls sub-language, in which all function calls should have the form
id = id(id1, id2, ...)
. - object DerefOp extends Operator with UnaryOperator with Product with Serializable
- object Divide extends Operator with BinaryOperator with Product with Serializable
- object Eqq extends Operator with BinaryOperator with Product with Serializable
- object GreatThan extends Operator with BinaryOperator with Product with Serializable
- object Minus extends Operator with BinaryOperator with Product with Serializable
-
object
NoCalls extends TipSublanguages
In this sub-language, no calls are allowed.
-
object
NoNormalizer extends Normalizer
A normalizer that does nothing.
-
object
NoPointers extends TipSublanguages
In this sub-language, no pointers are allowed.
-
object
NoRecords extends TipSublanguages
This sub-language has no records and record accesses.
-
object
NormalizedForPointsToAnalysis extends TipSublanguages
In this sub-language, the only allowed statements are the following:
In this sub-language, the only allowed statements are the following:
id = alloc P where P is null or an integer constant id1 = &id2 id1 = id2 id1 = *id2 *id1 = id2 id = null
- object Plus extends Operator with BinaryOperator with Product with Serializable
-
object
PointersNormalizer extends Normalizer
Normalize pointers to fit in the NormalizedForPointsToAnalysis sub-language.
Normalize pointers to fit in the NormalizedForPointsToAnalysis sub-language. In that sub-language, the only allowed pointer statements are the following: id = alloc P where P is null or an integer constant id1 = &id2 id1 = id2 id1 = *id2 *id1 = id2 id = null
-
object
ReturnsNormalizer extends Normalizer
Normalizes return statements so that we only have returns of the form
return id
where id is an identifier. - object Times extends Operator with BinaryOperator with Product with Serializable