libqasm
library for handling cQASM files
Classes | Typedefs | Enumerations | Functions
cqasm::v1::ast Namespace Reference

Detailed Description

Namespace for the abstract syntax tree node classes.

dot_inline_dotgraph_1.png

Classes

class  Add
 Addition operator. More...
 
class  Annotated
 Represents a node that carries annotation data. More...
 
class  AnnotationData
 Represents an annotation. More...
 
class  ArithOp
 Arithmetic operators. More...
 
class  Assignment
 An assignment statement within a loop definition. More...
 
class  BinaryOp
 Any binary operator. More...
 
class  BitwiseAnd
 Bitwise AND operator. More...
 
class  BitwiseNot
 Bitwise NOT (one's complement). More...
 
class  BitwiseOp
 Bitwise operators. More...
 
class  BitwiseOr
 Bitwise OR operator. More...
 
class  BitwiseXor
 Bitwise XOR operator. More...
 
class  BreakStatement
 A break statement. More...
 
class  Bundle
 A list of parallel instructions. More...
 
class  CmpEq
 Equality operator. More...
 
class  CmpGe
 Greater-than-or-equal operator. More...
 
class  CmpGt
 Greater-than operator. More...
 
class  CmpLe
 Less-than-or-equal operator. More...
 
class  CmpLt
 Less-than operator. More...
 
class  CmpNe
 Inequality operator. More...
 
class  CmpOp
 Comparison operators. More...
 
class  ContinueStatement
 A continue statement. More...
 
class  Divide
 True division operator. More...
 
class  Dumper
 Visitor class that debug-dumps a tree to a stream. More...
 
class  ErroneousExpression
 Placeholder for an expression with a parse error. More...
 
class  ErroneousProgram
 Placeholder for a program with a parse error. More...
 
class  ErroneousStatement
 Placeholder for a statement with a parse error. More...
 
class  Expression
 Any kind of expression. More...
 
class  ExpressionList
 Represents a comma-separated list of expressions. More...
 
class  FloatLiteral
 A floating point literal. More...
 
class  ForeachLoop
 A foreach loop. More...
 
class  ForLoop
 A C-style for loop. More...
 
class  FunctionCall
 A function call. More...
 
class  Identifier
 An identifier. More...
 
class  IfElse
 An if-else chain. More...
 
class  IfElseBranch
 A single condition + block for use in an if-else chain. More...
 
class  Index
 Indexation operator. More...
 
class  IndexEntry
 An entry in an index list. More...
 
class  IndexItem
 A single index in an index list. More...
 
class  IndexList
 A list of one or more indices. More...
 
class  IndexRange
 An inclusive range of indices in an index list. More...
 
class  Instruction
 Any kind of instruction. More...
 
class  IntDivide
 Integer division operator. More...
 
class  IntegerLiteral
 An integer literal. More...
 
class  JsonLiteral
 Represents a JSON literal. More...
 
class  LogicalAnd
 Logical AND operator. More...
 
class  LogicalNot
 Logical/boolean NOT. More...
 
class  LogicalOp
 Logical operators. More...
 
class  LogicalOr
 Logical OR operator. More...
 
class  LogicalXor
 Logical XOR operator. More...
 
class  Mapping
 A mapping (alias) for an expression. More...
 
class  MatrixLiteral
 Represents a matrix literal. More...
 
class  Modulo
 Modulo operator. More...
 
class  Multiply
 Multiplication operator. More...
 
class  Negate
 Negation operator (two's complement). More...
 
class  Node
 Main class for all nodes. More...
 
class  Power
 Exponentiation operator. More...
 
class  Program
 A complete program. More...
 
class  RecursiveVisitor
 Visitor base class defaulting to DFS pre-order traversal. More...
 
class  RepeatUntilLoop
 A repeat-until loop. More...
 
class  Root
 Any root node for the AST. More...
 
class  ShiftLeft
 Shift-left operator. More...
 
class  ShiftOp
 Shift operators. More...
 
class  ShiftRightArith
 Arithmetic/signed shift-right operator (shifts in sign). More...
 
class  ShiftRightLogic
 Logical/unsigned shift-right operator (shifts in zero). More...
 
class  Statement
 Any kind of statement. More...
 
class  StatementList
 A list of statements. More...
 
class  StringBuilder
 Special/temporary string builder node, used to build strings from fragments and escape sequences while parsing. More...
 
class  StringLiteral
 Represents a string literal. More...
 
class  Structured
 Any version 1.2+ structured control-flow statement. More...
 
class  Subcircuit
 A subcircuit header. More...
 
class  Subtract
 Subtraction operator. More...
 
class  TernaryCond
 Ternary conditional operator. More...
 
class  UnaryOp
 Any unary operator. More...
 
class  Variables
 One or more variable declaration for some type. More...
 
class  Version
 The file version identifier. More...
 
class  Visitor
 Base class for the visitor pattern for the tree. More...
 
class  VisitorBase
 Internal class for implementing the visitor pattern. More...
 
class  WhileLoop
 A while loop. More...
 

Typedefs

using Base = cqasm::tree::Base
 
template<class T >
using Maybe = cqasm::tree::Maybe< T >
 
template<class T >
using One = cqasm::tree::One< T >
 
template<class T >
using Any = cqasm::tree::Any< T >
 
template<class T >
using Many = cqasm::tree::Many< T >
 
template<class T >
using OptLink = cqasm::tree::OptLink< T >
 
template<class T >
using Link = cqasm::tree::Link< T >
 

Enumerations

enum  NodeType {
  NodeType::Add, NodeType::AnnotationData, NodeType::Assignment, NodeType::BitwiseAnd,
  NodeType::BitwiseNot, NodeType::BitwiseOr, NodeType::BitwiseXor, NodeType::BreakStatement,
  NodeType::Bundle, NodeType::CmpEq, NodeType::CmpGe, NodeType::CmpGt,
  NodeType::CmpLe, NodeType::CmpLt, NodeType::CmpNe, NodeType::ContinueStatement,
  NodeType::Divide, NodeType::ErroneousExpression, NodeType::ErroneousProgram, NodeType::ErroneousStatement,
  NodeType::ExpressionList, NodeType::FloatLiteral, NodeType::ForLoop, NodeType::ForeachLoop,
  NodeType::FunctionCall, NodeType::Identifier, NodeType::IfElse, NodeType::IfElseBranch,
  NodeType::Index, NodeType::IndexItem, NodeType::IndexList, NodeType::IndexRange,
  NodeType::Instruction, NodeType::IntDivide, NodeType::IntegerLiteral, NodeType::JsonLiteral,
  NodeType::LogicalAnd, NodeType::LogicalNot, NodeType::LogicalOr, NodeType::LogicalXor,
  NodeType::Mapping, NodeType::MatrixLiteral, NodeType::Modulo, NodeType::Multiply,
  NodeType::Negate, NodeType::Power, NodeType::Program, NodeType::RepeatUntilLoop,
  NodeType::ShiftLeft, NodeType::ShiftRightArith, NodeType::ShiftRightLogic, NodeType::StatementList,
  NodeType::StringLiteral, NodeType::Subcircuit, NodeType::Subtract, NodeType::TernaryCond,
  NodeType::Variables, NodeType::Version, NodeType::WhileLoop
}
 Enumeration of all node types. More...
 

Functions

std::ostream & operator<< (std::ostream &os, const Node &object)
 Stream << overload for tree nodes (writes debug dump). More...
 

Typedef Documentation

◆ Base

Definition at line 224 of file cqasm-v1-ast-gen.hpp.

◆ Maybe

template<class T >
using cqasm::v1::ast::Maybe = typedef cqasm::tree::Maybe<T>

Definition at line 225 of file cqasm-v1-ast-gen.hpp.

◆ One

template<class T >
using cqasm::v1::ast::One = typedef cqasm::tree::One<T>

Definition at line 226 of file cqasm-v1-ast-gen.hpp.

◆ Any

template<class T >
using cqasm::v1::ast::Any = typedef cqasm::tree::Any<T>

Definition at line 227 of file cqasm-v1-ast-gen.hpp.

◆ Many

template<class T >
using cqasm::v1::ast::Many = typedef cqasm::tree::Many<T>

Definition at line 228 of file cqasm-v1-ast-gen.hpp.

◆ OptLink

template<class T >
using cqasm::v1::ast::OptLink = typedef cqasm::tree::OptLink<T>

Definition at line 229 of file cqasm-v1-ast-gen.hpp.

◆ Link

template<class T >
using cqasm::v1::ast::Link = typedef cqasm::tree::Link<T>

Definition at line 230 of file cqasm-v1-ast-gen.hpp.

Enumeration Type Documentation

◆ NodeType

Enumeration of all node types.

Enumerator
Add 
AnnotationData 
Assignment 
BitwiseAnd 
BitwiseNot 
BitwiseOr 
BitwiseXor 
BreakStatement 
Bundle 
CmpEq 
CmpGe 
CmpGt 
CmpLe 
CmpLt 
CmpNe 
ContinueStatement 
Divide 
ErroneousExpression 
ErroneousProgram 
ErroneousStatement 
ExpressionList 
FloatLiteral 
ForLoop 
ForeachLoop 
FunctionCall 
Identifier 
IfElse 
IfElseBranch 
Index 
IndexItem 
IndexList 
IndexRange 
Instruction 
IntDivide 
IntegerLiteral 
JsonLiteral 
LogicalAnd 
LogicalNot 
LogicalOr 
LogicalXor 
Mapping 
MatrixLiteral 
Modulo 
Multiply 
Negate 
Power 
Program 
RepeatUntilLoop 
ShiftLeft 
ShiftRightArith 
ShiftRightLogic 
StatementList 
StringLiteral 
Subcircuit 
Subtract 
TernaryCond 
Variables 
Version 
WhileLoop 

Definition at line 315 of file cqasm-v1-ast-gen.hpp.

Function Documentation

◆ operator<<()

std::ostream & cqasm::v1::ast::operator<< ( std::ostream &  os,
const Node object 
)

Stream << overload for tree nodes (writes debug dump).

Definition at line 13758 of file cqasm-v1-ast-gen.cpp.