dextool.plugin.mutate.backend.analyze.ast

Members

Aliases

ExpressionKind
alias ExpressionKind = AliasSeq!(Kind.BinaryOp, Kind.Call, Kind.Condition, Kind.Constructor, Kind.Expr, Kind.OpAdd, Kind.OpAnd, Kind.OpAndBitwise, Kind.OpAssign, Kind.OpDiv, Kind.OpEqual, Kind.OpGreater, Kind.OpGreaterEq, Kind.OpLess, Kind.OpLessEq, Kind.OpMod, Kind.OpMul, Kind.OpNegate, Kind.OpNotEqual, Kind.OpOr, Kind.OpOrBitwise, Kind.OpSub, Kind.Return, Kind.UnaryOp, Kind.VarDecl, Kind.VarRef)
Undocumented in source.
Interval
alias Interval = dextool.plugin.mutate.backend.type.Offset

The interval in bytes that the node occupy. It is a closed->open set.

Nodes
alias Nodes = AliasSeq!(BinaryOp, Block, Branch, BranchBundle, Call, Condition, Constructor, Expr, Function, Loop, Node, OpAdd, OpAnd, OpAndBitwise, OpAssign, OpAssignAdd, OpAssignAndBitwise, OpAssignDiv, OpAssignMod, OpAssignMul, OpAssignOrBitwise, OpAssignSub, OpDiv, OpEqual, OpGreater, OpGreaterEq, OpLess, OpLessEq, OpMod, OpMul, OpNegate, OpNotEqual, OpOr, OpOrBitwise, OpSub, Operator, Poision, Return, Statement, TranslationUnit, UnaryOp, VarDecl, VarRef)

All nodes that a visitor must be able to handle.

SourceLoc
alias SourceLoc = dextool.plugin.mutate.backend.type.SourceLoc
Undocumented in source.
SourceLocRange
alias SourceLocRange = dextool.plugin.mutate.backend.type.SourceLocRange
Undocumented in source.

Classes

AstPrintVisitor
class AstPrintVisitor
Undocumented in source.
BinaryOp
class BinaryOp
Undocumented in source.
Block
class Block

A block of code such such as a local scope enclosed by brackets, {}.

BooleanSymbol
class BooleanSymbol
Undocumented in source.
BooleanType
class BooleanType
Undocumented in source.
Branch
class Branch

The code for one of the branches resulting from a condition.

BranchBundle
class BranchBundle

Multiple branches are contained in the bundle that can be e.g. deleted.

Call
class Call

A function call.

Condition
class Condition

A condition wraps "something" which always evaluates to a boolean.

Constructor
class Constructor

A constructor for a variable.

ContinuesSymbol
class ContinuesSymbol
Undocumented in source.
ContinuesType
class ContinuesType
Undocumented in source.
DepthFirstVisitor
class DepthFirstVisitor
Undocumented in source.
DiscretSymbol
class DiscretSymbol
Undocumented in source.
DiscreteType
class DiscreteType
Undocumented in source.
Expr
class Expr
Undocumented in source.
Function
class Function

A function definition.

Loop
class Loop
Undocumented in source.
Node
class Node
Undocumented in source.
OpAdd
class OpAdd
Undocumented in source.
OpAnd
class OpAnd
Undocumented in source.
OpAndBitwise
class OpAndBitwise
Undocumented in source.
OpAssign
class OpAssign
Undocumented in source.
OpAssignAdd
class OpAssignAdd
Undocumented in source.
OpAssignAndBitwise
class OpAssignAndBitwise
Undocumented in source.
OpAssignDiv
class OpAssignDiv
Undocumented in source.
OpAssignMod
class OpAssignMod
Undocumented in source.
OpAssignMul
class OpAssignMul
Undocumented in source.
OpAssignOrBitwise
class OpAssignOrBitwise
Undocumented in source.
OpAssignSub
class OpAssignSub
Undocumented in source.
OpDiv
class OpDiv
Undocumented in source.
OpEqual
class OpEqual
Undocumented in source.
OpGreater
class OpGreater
Undocumented in source.
OpGreaterEq
class OpGreaterEq
Undocumented in source.
OpLess
class OpLess
Undocumented in source.
OpLessEq
class OpLessEq
Undocumented in source.
OpMod
class OpMod
Undocumented in source.
OpMul
class OpMul
Undocumented in source.
OpNegate
class OpNegate
Undocumented in source.
OpNotEqual
class OpNotEqual
Undocumented in source.
OpOr
class OpOr
Undocumented in source.
OpOrBitwise
class OpOrBitwise
Undocumented in source.
OpSub
class OpSub
Undocumented in source.
Operator
class Operator

The operator itself in a binary operator expression.

Poision
class Poision

A phantom node that carry semantic information about its children. It "poisons" all children.

Return
class Return

Results in the bottom type or up.

Statement
class Statement
Undocumented in source.
Symbol
class Symbol
Undocumented in source.
TranslationUnit
class TranslationUnit
Undocumented in source.
Type
class Type
Undocumented in source.
UnaryOp
class UnaryOp
Undocumented in source.
UnorderedType
class UnorderedType
Undocumented in source.
VarDecl
class VarDecl
Undocumented in source.
VarRef
class VarRef
Undocumented in source.
VoidType
class VoidType
Undocumented in source.

Enums

Kind
enum Kind
Undocumented in source.
SymbolKind
enum SymbolKind
Undocumented in source.
TypeKind
enum TypeKind
Undocumented in source.

Functions

accept
void accept(Node n, VisitorT v)

It is optional to add the members visitPush/visitPop to push/pop the nodes that are visited. The parent will always have been the last pushed.

isExpression
bool isExpression(Kind k)
Undocumented in source. Be warned that the author may not have intended to support it.
makeId
RetT makeId(T data)
Undocumented in source. Be warned that the author may not have intended to support it.
makeSymbolId
SymbolId makeSymbolId(T data)
Undocumented in source. Be warned that the author may not have intended to support it.
makeTypeId
TypeId makeTypeId(T data)
Undocumented in source. Be warned that the author may not have intended to support it.
makeUniqueId
RetT makeUniqueId()
Undocumented in source. Be warned that the author may not have intended to support it.
makeUniqueSymbolId
SymbolId makeUniqueSymbolId()
Undocumented in source. Be warned that the author may not have intended to support it.
makeUniqueTypeId
TypeId makeUniqueTypeId()
Undocumented in source. Be warned that the author may not have intended to support it.

Interfaces

Visitor
interface Visitor
Undocumented in source.

Structs

Ast
struct Ast
Undocumented in source.
BreathFirstRange
struct BreathFirstRange

Breath first visit of nodes.

Location
struct Location
Undocumented in source.
Range
struct Range
Undocumented in source.
SymbolId
struct SymbolId
Undocumented in source.
Symbols
struct Symbols
Undocumented in source.
TypeId
struct TypeId
Undocumented in source.
Types
struct Types
Undocumented in source.
Value
struct Value
Undocumented in source.

Meta

License

MPL-2

Authors

Joakim Brännström (joakim.brannstrom@gmx.com)

This Source Code Form is subject to the terms of the Mozilla Public License, v.2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.

A language independent AST specific for generating mutants both via the plain source code manipulation but also mutant schematas.