|
| PrintC (Architecture *g, const string &nm="c-language") |
| Constructor. More...
|
|
virtual void | resetDefaults (void) |
| Set printing options to their default value.
|
|
virtual void | adjustTypeOperators (void) |
| Set basic data-type information for p-code operators.
|
|
virtual void | setCommentStyle (const string &nm) |
| Set the way comments are displayed in decompiler output. More...
|
|
virtual void | docTypeDefinitions (const TypeFactory *typegrp) |
| Emit definitions of data-types. More...
|
|
virtual void | docAllGlobals (void) |
| Emit declarations of global variables.
|
|
virtual void | docSingleGlobal (const Symbol *sym) |
| Emit the declaration for a single (global) Symbol. More...
|
|
virtual void | docFunction (const Funcdata *fd) |
| Emit the declaration (and body) of a function. More...
|
|
virtual void | emitBlockBasic (const BlockBasic *bb) |
| Emit statements in a basic block.
|
|
virtual void | emitBlockGraph (const BlockGraph *bl) |
| Emit (an unspecified) list of blocks.
|
|
virtual void | emitBlockCopy (const BlockCopy *bl) |
| Emit a basic block (with any labels)
|
|
virtual void | emitBlockGoto (const BlockGoto *bl) |
| Emit a block ending with a goto statement.
|
|
virtual void | emitBlockLs (const BlockList *bl) |
| Emit a sequence of blocks.
|
|
virtual void | emitBlockCondition (const BlockCondition *bl) |
| Emit a conditional statement.
|
|
virtual void | emitBlockIf (const BlockIf *bl) |
| Emit an if/else style construct.
|
|
virtual void | emitBlockWhileDo (const BlockWhileDo *bl) |
| Emit a loop structure, check at top.
|
|
virtual void | emitBlockDoWhile (const BlockDoWhile *bl) |
| Emit a loop structure, check at bottom.
|
|
virtual void | emitBlockInfLoop (const BlockInfLoop *bl) |
| Emit an infinite loop structure.
|
|
virtual void | emitBlockSwitch (const BlockSwitch *bl) |
| Emit a switch structure.
|
|
virtual void | opCopy (const PcodeOp *op) |
| Emit a COPY operator.
|
|
virtual void | opLoad (const PcodeOp *op) |
| Emit a LOAD operator.
|
|
virtual void | opStore (const PcodeOp *op) |
| Emit a STORE operator.
|
|
virtual void | opBranch (const PcodeOp *op) |
| Emit a BRANCH operator.
|
|
virtual void | opCbranch (const PcodeOp *op) |
|
virtual void | opBranchind (const PcodeOp *op) |
| Emit a BRANCHIND operator.
|
|
virtual void | opCall (const PcodeOp *op) |
| Emit a CALL operator.
|
|
virtual void | opCallind (const PcodeOp *op) |
| Emit a CALLIND operator.
|
|
virtual void | opCallother (const PcodeOp *op) |
| Emit a CALLOTHER operator.
|
|
virtual void | opConstructor (const PcodeOp *op, bool withNew) |
| Emit an operator constructing an object.
|
|
virtual void | opReturn (const PcodeOp *op) |
| Emit a RETURN operator.
|
|
virtual void | opIntEqual (const PcodeOp *op) |
| Emit a INT_EQUAL operator.
|
|
virtual void | opIntNotEqual (const PcodeOp *op) |
| Emit a INT_NOTEQUAL operator.
|
|
virtual void | opIntSless (const PcodeOp *op) |
| Emit a INT_SLESS operator.
|
|
virtual void | opIntSlessEqual (const PcodeOp *op) |
| Emit a INT_SLESSEQUAL operator.
|
|
virtual void | opIntLess (const PcodeOp *op) |
| Emit a INT_LESS operator.
|
|
virtual void | opIntLessEqual (const PcodeOp *op) |
| Emit a INT_LESSEQUAL operator.
|
|
virtual void | opIntZext (const PcodeOp *op, const PcodeOp *readOp) |
| Emit a INT_ZEXT operator.
|
|
virtual void | opIntSext (const PcodeOp *op, const PcodeOp *readOp) |
| Emit a INT_SEXT operator.
|
|
virtual void | opIntAdd (const PcodeOp *op) |
| Emit a INT_ADD operator.
|
|
virtual void | opIntSub (const PcodeOp *op) |
| Emit a INT_SUB operator.
|
|
virtual void | opIntCarry (const PcodeOp *op) |
| Emit a INT_CARRY operator.
|
|
virtual void | opIntScarry (const PcodeOp *op) |
| Emit a INT_SCARRY operator.
|
|
virtual void | opIntSborrow (const PcodeOp *op) |
| Emit a INT_SBORROW operator.
|
|
virtual void | opInt2Comp (const PcodeOp *op) |
| Emit a INT_2COMP operator.
|
|
virtual void | opIntNegate (const PcodeOp *op) |
| Emit a INT_NEGATE operator.
|
|
virtual void | opIntXor (const PcodeOp *op) |
| Emit a INT_XOR operator.
|
|
virtual void | opIntAnd (const PcodeOp *op) |
| Emit a INT_AND operator.
|
|
virtual void | opIntOr (const PcodeOp *op) |
| Emit a INT_OR operator.
|
|
virtual void | opIntLeft (const PcodeOp *op) |
| Emit a INT_LEFT operator.
|
|
virtual void | opIntRight (const PcodeOp *op) |
| Emit a INT_RIGHT operator.
|
|
virtual void | opIntSright (const PcodeOp *op) |
| Emit a INT_SRIGHT operator.
|
|
virtual void | opIntMult (const PcodeOp *op) |
| Emit a INT_MULT operator.
|
|
virtual void | opIntDiv (const PcodeOp *op) |
| Emit a INT_DIV operator.
|
|
virtual void | opIntSdiv (const PcodeOp *op) |
| Emit a INT_SDIV operator.
|
|
virtual void | opIntRem (const PcodeOp *op) |
| Emit a INT_REM operator.
|
|
virtual void | opIntSrem (const PcodeOp *op) |
| Emit a INT_SREM operator.
|
|
virtual void | opBoolNegate (const PcodeOp *op) |
|
virtual void | opBoolXor (const PcodeOp *op) |
| Emit a BOOL_XOR operator.
|
|
virtual void | opBoolAnd (const PcodeOp *op) |
| Emit a BOOL_AND operator.
|
|
virtual void | opBoolOr (const PcodeOp *op) |
| Emit a BOOL_OR operator.
|
|
virtual void | opFloatEqual (const PcodeOp *op) |
| Emit a FLOAT_EQUAL operator.
|
|
virtual void | opFloatNotEqual (const PcodeOp *op) |
| Emit a FLOAT_NOTEQUAL operator.
|
|
virtual void | opFloatLess (const PcodeOp *op) |
| Emit a FLOAT_LESS operator.
|
|
virtual void | opFloatLessEqual (const PcodeOp *op) |
| Emit a FLOAT_LESSEQUAL operator.
|
|
virtual void | opFloatNan (const PcodeOp *op) |
| Emit a FLOAT_NAN operator.
|
|
virtual void | opFloatAdd (const PcodeOp *op) |
| Emit a FLOAT_ADD operator.
|
|
virtual void | opFloatDiv (const PcodeOp *op) |
| Emit a FLOAT_DIV operator.
|
|
virtual void | opFloatMult (const PcodeOp *op) |
| Emit a FLOAT_MULT operator.
|
|
virtual void | opFloatSub (const PcodeOp *op) |
| Emit a FLOAT_SUB operator.
|
|
virtual void | opFloatNeg (const PcodeOp *op) |
| Emit a FLOAT_NEG operator.
|
|
virtual void | opFloatAbs (const PcodeOp *op) |
| Emit a FLOAT_ABS operator.
|
|
virtual void | opFloatSqrt (const PcodeOp *op) |
| Emit a FLOAT_SQRT operator.
|
|
virtual void | opFloatInt2Float (const PcodeOp *op) |
| Emit a FLOAT_INT2FLOAT operator.
|
|
virtual void | opFloatFloat2Float (const PcodeOp *op) |
| Emit a FLOAT_FLOAT2FLOAT operator.
|
|
virtual void | opFloatTrunc (const PcodeOp *op) |
| Emit a FLOAT_TRUNC operator.
|
|
virtual void | opFloatCeil (const PcodeOp *op) |
| Emit a FLOAT_CEIL operator.
|
|
virtual void | opFloatFloor (const PcodeOp *op) |
| Emit a FLOAT_FLOOR operator.
|
|
virtual void | opFloatRound (const PcodeOp *op) |
| Emit a FLOAT_ROUND operator.
|
|
virtual void | opMultiequal (const PcodeOp *op) |
| Emit a MULTIEQUAL operator.
|
|
virtual void | opIndirect (const PcodeOp *op) |
| Emit a INDIRECT operator.
|
|
virtual void | opPiece (const PcodeOp *op) |
| Emit a PIECE operator.
|
|
virtual void | opSubpiece (const PcodeOp *op) |
| Emit a SUBPIECE operator.
|
|
virtual void | opCast (const PcodeOp *op) |
| Emit a CAST operator.
|
|
virtual void | opPtradd (const PcodeOp *op) |
| Emit a PTRADD operator.
|
|
virtual void | opPtrsub (const PcodeOp *op) |
|
virtual void | opSegmentOp (const PcodeOp *op) |
|
virtual void | opCpoolRefOp (const PcodeOp *op) |
| Emit a CPOOLREF operator.
|
|
virtual void | opNewOp (const PcodeOp *op) |
| Emit a NEW operator.
|
|
virtual void | opInsertOp (const PcodeOp *op) |
| Emit an INSERT operator.
|
|
virtual void | opExtractOp (const PcodeOp *op) |
| Emit an EXTRACT operator.
|
|
virtual void | opPopcountOp (const PcodeOp *op) |
| Emit a POPCOUNT operator.
|
|
| PrintLanguage (Architecture *g, const string &nm) |
| Constructor. More...
|
|
virtual | ~PrintLanguage (void) |
| Destructor.
|
|
void | setLineCommentIndent (int4 val) |
| Set the number of characters to indent comment lines. More...
|
|
void | setCommentDelimeter (const string &start, const string &stop, bool usecommentfill) |
| Establish comment delimiters for the language. More...
|
|
void | setXML (bool val) |
| Set whether the low-level emitter, emits XML markup. More...
|
|
void | setFlat (bool val) |
| Set whether nesting code structure should be emitted. More...
|
|
virtual void | clear (void) |
| Clear the RPN stack and the low-level emitter.
|
|
virtual void | setIntegerFormat (const string &nm) |
| Set the default integer format. More...
|
|
|
void | buildTypeStack (const Datatype *ct, vector< const Datatype * > &typestack) |
| Prepare to push components of a data-type declaration. More...
|
|
void | pushPrototypeInputs (const FuncProto *proto) |
| Push input parameters. More...
|
|
void | pushSymbolScope (const Symbol *symbol) |
| Push tokens resolving a symbol's scope. More...
|
|
void | emitSymbolScope (const Symbol *symbol) |
| Emit tokens resolving a symbol's scope. More...
|
|
virtual void | pushTypeStart (const Datatype *ct, bool noident) |
| Push part of a data-type declaration onto the RPN stack, up to the identifier. More...
|
|
virtual void | pushTypeEnd (const Datatype *ct) |
| Push the tail ends of a data-type declaration onto the RPN stack. More...
|
|
void | pushBoolConstant (uintb val, const TypeBase *ct, const Varnode *vn, const PcodeOp *op) |
| Push a true or false token to the RPN stack. More...
|
|
void | pushCharConstant (uintb val, const TypeChar *ct, const Varnode *vn, const PcodeOp *op) |
| Push a single character constant to the RPN stack. More...
|
|
void | pushEnumConstant (uintb val, const TypeEnum *ct, const Varnode *vn, const PcodeOp *op) |
| Push an enumerated value to the RPN stack. More...
|
|
virtual bool | pushPtrCharConstant (uintb val, const TypePointer *ct, const Varnode *vn, const PcodeOp *op) |
| Attempt to push a quoted string representing a given constant pointer onto the RPN stack. More...
|
|
bool | pushPtrCodeConstant (uintb val, const TypePointer *ct, const Varnode *vn, const PcodeOp *op) |
| Attempt to push a function name representing a constant pointer onto the RPN stack. More...
|
|
virtual bool | doEmitWideCharPrefix (void) const |
| Return true if this language requires a prefix when expressing wide characters. More...
|
|
bool | checkArrayDeref (const Varnode *vn) const |
| Determine whether a LOAD/STORE expression requires pointer '*' syntax. More...
|
|
void | emitStructDefinition (const TypeStruct *ct) |
| Emit the definition of a structure data-type. More...
|
|
void | emitEnumDefinition (const TypeEnum *ct) |
| Emit the definition of an enumeration data-type. More...
|
|
void | emitPrototypeOutput (const FuncProto *proto, const Funcdata *fd) |
| Emit the output data-type of a function prototype. More...
|
|
void | emitPrototypeInputs (const FuncProto *proto) |
| Emit the input data-types of a function prototype. More...
|
|
void | emitGlobalVarDeclsRecursive (Scope *scope) |
| Emit variable declarations for all global symbols under given scope. More...
|
|
void | emitLocalVarDecls (const Funcdata *fd) |
| Emit variable declarations for a function. More...
|
|
void | emitStatement (const PcodeOp *inst) |
| Emit a statement in the body of a function. More...
|
|
bool | emitInplaceOp (const PcodeOp *op) |
| Attempt to emit an expression rooted at an in-place operator. More...
|
|
void | emitGotoStatement (const FlowBlock *bl, const FlowBlock *exp_bl, uint4 type) |
| Emit a statement representing an unstructured branch. More...
|
|
void | emitSwitchCase (int4 casenum, const BlockSwitch *switchbl) |
| Emit labels for a case block. More...
|
|
void | emitLabel (const FlowBlock *bl) |
| Emit a formal label for a given control-flow block. More...
|
|
void | emitLabelStatement (const FlowBlock *bl) |
| Emit any required label statement for a given basic block. More...
|
|
void | emitAnyLabelStatement (const FlowBlock *bl) |
| Emit any required label statement for a given control-flow block. More...
|
|
void | emitCommentGroup (const PcodeOp *inst) |
| Emit comments associated with a given statement. More...
|
|
void | emitCommentBlockTree (const FlowBlock *bl) |
| Emit any comments under the given control-flow subtree. More...
|
|
void | emitCommentFuncHeader (const Funcdata *fd) |
| Emit comments in the given function's header. More...
|
|
void | emitForLoop (const BlockWhileDo *bl) |
| Emit block as a for loop. More...
|
|
void | opFunc (const PcodeOp *op) |
| Push a functional expression based on the given p-code op to the RPN stack. More...
|
|
void | opTypeCast (const PcodeOp *op) |
| Push the given p-code op using type-cast syntax to the RPN stack. More...
|
|
void | opHiddenFunc (const PcodeOp *op) |
| Push the given p-code op as a hidden token. More...
|
|
bool | printCharacterConstant (ostream &s, const Address &addr, Datatype *charType) const |
| Print a quoted (unicode) string at the given address. More...
|
|
int4 | getHiddenThisSlot (const PcodeOp *op, FuncProto *fc) |
| Get position of "this" pointer needing to be hidden. More...
|
|
void | resetDefaultsPrintC (void) |
| Set default values for options specific to PrintC.
|
|
virtual void | pushConstant (uintb val, const Datatype *ct, const Varnode *vn, const PcodeOp *op) |
| Push a constant onto the RPN stack. More...
|
|
virtual bool | pushEquate (uintb val, int4 sz, const EquateSymbol *sym, const Varnode *vn, const PcodeOp *op) |
| Push a constant marked up by and EquateSymbol onto the RPN stack. More...
|
|
virtual void | pushAnnotation (const Varnode *vn, const PcodeOp *op) |
| Push an address which is not in the normal data-flow. More...
|
|
virtual void | pushSymbol (const Symbol *sym, const Varnode *vn, const PcodeOp *op) |
| Push a specific Symbol onto the RPN stack. More...
|
|
virtual void | pushUnnamedLocation (const Address &addr, const Varnode *vn, const PcodeOp *op) |
| Push an address as a substitute for a Symbol onto the RPN stack. More...
|
|
virtual void | pushPartialSymbol (const Symbol *sym, int4 off, int4 sz, const Varnode *vn, const PcodeOp *op, Datatype *outtype) |
| Push a variable that represents only part of a symbol onto the RPN stack. More...
|
|
virtual void | pushMismatchSymbol (const Symbol *sym, int4 off, int4 sz, const Varnode *vn, const PcodeOp *op) |
| Push an identifier for a variable that mismatches with its Symbol. More...
|
|
virtual void | push_integer (uintb val, int4 sz, bool sign, const Varnode *vn, const PcodeOp *op) |
| Push a constant with an integer data-type to the RPN stack. More...
|
|
virtual void | push_float (uintb val, int4 sz, const Varnode *vn, const PcodeOp *op) |
| Push a constant with a floating-point data-type to the RPN stack. More...
|
|
virtual void | printUnicode (ostream &s, int4 onechar) const |
| Print a single unicode character as a character constant for the high-level language. More...
|
|
virtual void | pushType (const Datatype *ct) |
| Push a data-type name onto the RPN expression stack. More...
|
|
virtual string | genericFunctionName (const Address &addr) |
| Create a generic function name base on the entry point address. More...
|
|
virtual string | genericTypeName (const Datatype *ct) |
| Generate a generic name for an unnamed data-type. More...
|
|
virtual void | emitExpression (const PcodeOp *op) |
| Emit a full expression. More...
|
|
virtual void | emitVarDecl (const Symbol *sym) |
| Emit a variable declaration. More...
|
|
virtual void | emitVarDeclStatement (const Symbol *sym) |
| Emit a variable declaration statement. More...
|
|
virtual bool | emitScopeVarDecls (const Scope *scope, int4 cat) |
| Emit all the variable declarations for a given scope. More...
|
|
virtual void | emitFunctionDeclaration (const Funcdata *fd) |
| Emit a function declaration. More...
|
|
virtual void | emitTypeDefinition (const Datatype *ct) |
| Emit the definition of the given data-type. More...
|
|
virtual bool | checkPrintNegation (const Varnode *vn) |
| Check whether a given boolean Varnode can be printed in negated form. More...
|
|
void | popScope (void) |
| Pop to the previous symbol scope.
|
|
void | pushOp (const OpToken *tok, const PcodeOp *op) |
| Push an operator token onto the RPN stack. More...
|
|
void | pushAtom (const Atom &atom) |
| Push a variable token onto the RPN stack. More...
|
|
void | pushVnImplied (const Varnode *vn, const PcodeOp *op, uint4 m) |
| Push an implied variable onto the RPN stack. More...
|
|
void | pushVnExplicit (const Varnode *vn, const PcodeOp *op) |
| Push an explicit variable onto the RPN stack. More...
|
|
void | pushVnLHS (const Varnode *vn, const PcodeOp *op) |
| Push a variable as the left-hand side of an expression. More...
|
|
bool | parentheses (const OpToken *op2) |
| Determine if the given token should be emitted in its own parenthetic expression. More...
|
|
void | emitOp (const ReversePolish &entry) |
| Send an operator token from the RPN to the emitter. More...
|
|
void | emitAtom (const Atom &atom) |
| Send an variable token from the RPN to the emitter. More...
|
|
bool | escapeCharacterData (ostream &s, const uint1 *buf, int4 count, int4 charsize, bool bigend) const |
| Emit a byte buffer to the stream as unicode characters. More...
|
|
void | recurse (void) |
| Emit from the RPN stack as much as possible. More...
|
|
void | opBinary (const OpToken *tok, const PcodeOp *op) |
| Push a binary operator onto the RPN stack. More...
|
|
void | opUnary (const OpToken *tok, const PcodeOp *op) |
| Push a unary operator onto the RPN stack. More...
|
|
void | resetDefaultsInternal (void) |
| Reset options to default for PrintLanguage.
|
|
virtual void | emitLineComment (int4 indent, const Comment *comm) |
| Emit a comment line. More...
|
|
|
static OpToken | hidden = { "", 1, 70, false, OpToken::hiddenfunction, 0, 0, (OpToken *)0 } |
| Hidden functional (that may force parentheses)
|
|
static OpToken | scope = { "::", 2, 70, true, OpToken::binary, 0, 0, (OpToken *)0 } |
| The sub-scope/namespace operator.
|
|
static OpToken | object_member = { ".", 2, 66, true, OpToken::binary, 0, 0, (OpToken *)0 } |
| The member operator.
|
|
static OpToken | pointer_member = { "->", 2, 66, true, OpToken::binary, 0, 0, (OpToken *)0 } |
| The points to member operator.
|
|
static OpToken | subscript = { "[]", 2, 66, false, OpToken::postsurround, 0, 0, (OpToken *)0 } |
| The array subscript operator.
|
|
static OpToken | function_call = { "()", 2, 66, false, OpToken::postsurround, 0, 10, (OpToken *)0 } |
| The function call operator.
|
|
static OpToken | bitwise_not = { "~", 1, 62, false, OpToken::unary_prefix, 0, 0, (OpToken *)0 } |
| The bitwise negate operator.
|
|
static OpToken | boolean_not = { "!", 1, 62, false, OpToken::unary_prefix, 0, 0, (OpToken *)0 } |
| The boolean not operator.
|
|
static OpToken | unary_minus = { "-", 1, 62, false, OpToken::unary_prefix, 0, 0, (OpToken *)0 } |
| The unary minus operator.
|
|
static OpToken | unary_plus = { "+", 1, 62, false, OpToken::unary_prefix, 0, 0, (OpToken *)0 } |
| The unary plus operator.
|
|
static OpToken | addressof = { "&", 1, 62, false, OpToken::unary_prefix, 0, 0, (OpToken *)0 } |
| The address of operator.
|
|
static OpToken | dereference = { "*", 1, 62, false, OpToken::unary_prefix, 0, 0, (OpToken *)0 } |
| The pointer dereference operator.
|
|
static OpToken | typecast = { "()", 2, 62, false, OpToken::presurround, 0, 0, (OpToken *)0 } |
| The type cast operator.
|
|
static OpToken | multiply = { "*", 2, 54, true, OpToken::binary, 1, 0, (OpToken *)0 } |
| The multiplication operator.
|
|
static OpToken | divide = { "/", 2, 54, false, OpToken::binary, 1, 0, (OpToken *)0 } |
| The division operator.
|
|
static OpToken | modulo = { "%", 2, 54, false, OpToken::binary, 1, 0, (OpToken *)0 } |
| The modulo operator.
|
|
static OpToken | binary_plus = { "+", 2, 50, true, OpToken::binary, 1, 0, (OpToken *)0 } |
| The binary addition operator.
|
|
static OpToken | binary_minus = { "-", 2, 50, false, OpToken::binary, 1, 0, (OpToken *)0 } |
| The binary subtraction operator.
|
|
static OpToken | shift_left = { "<<", 2, 46, false, OpToken::binary, 1, 0, (OpToken *)0 } |
| The left shift operator.
|
|
static OpToken | shift_right = { ">>", 2, 46, false, OpToken::binary, 1, 0, (OpToken *)0 } |
| The right shift operator.
|
|
static OpToken | shift_sright = { ">>", 2, 46, false, OpToken::binary, 1, 0, (OpToken *)0 } |
| The signed right shift operator.
|
|
static OpToken | less_than = { "<", 2, 42, false, OpToken::binary, 1, 0, (OpToken *)0 } |
| The less than operator.
|
|
static OpToken | less_equal = { "<=", 2, 42, false, OpToken::binary, 1, 0, (OpToken *)0 } |
| The less than or equal operator.
|
|
static OpToken | greater_than = { ">", 2, 42, false, OpToken::binary, 1, 0, (OpToken *)0 } |
| The greater than operator.
|
|
static OpToken | greater_equal = { ">=", 2, 42, false, OpToken::binary, 1, 0, (OpToken *)0 } |
| The greater than or equal operator.
|
|
static OpToken | equal = { "==", 2, 38, false, OpToken::binary, 1, 0, (OpToken *)0 } |
| The equal operator.
|
|
static OpToken | not_equal = { "!=", 2, 38, false, OpToken::binary, 1, 0, (OpToken *)0 } |
| The not equal operator.
|
|
static OpToken | bitwise_and = { "&", 2, 34, true, OpToken::binary, 1, 0, (OpToken *)0 } |
| The logical and operator.
|
|
static OpToken | bitwise_xor = { "^", 2, 30, true, OpToken::binary, 1, 0, (OpToken *)0 } |
| The logical xor operator.
|
|
static OpToken | bitwise_or = { "|", 2, 26, true, OpToken::binary, 1, 0, (OpToken *)0 } |
| The logical or operator.
|
|
static OpToken | boolean_and = { "&&", 2, 22, false, OpToken::binary, 1, 0, (OpToken *)0 } |
| The boolean and operator.
|
|
static OpToken | boolean_or = { "||", 2, 18, false, OpToken::binary, 1, 0, (OpToken *)0 } |
| The boolean or operator.
|
|
static OpToken | boolean_xor = { "^^", 2, 20, false, OpToken::binary, 1, 0, (OpToken *)0 } |
| The boolean xor operator.
|
|
static OpToken | assignment = { "=", 2, 14, false, OpToken::binary, 1, 5, (OpToken *)0 } |
| The assignment operator.
|
|
static OpToken | comma = { ",", 2, 2, true, OpToken::binary, 0, 0, (OpToken *)0 } |
| The comma operator (for parameter lists)
|
|
static OpToken | new_op = { "", 2, 62, false, OpToken::space, 1, 0, (OpToken *)0 } |
| The new operator.
|
|
static OpToken | multequal = { "*=", 2, 14, false, OpToken::binary, 1, 5, (OpToken *)0 } |
| The in-place multiplication operator.
|
|
static OpToken | divequal = { "/=", 2, 14, false, OpToken::binary, 1, 5, (OpToken *)0 } |
| The in-place division operator.
|
|
static OpToken | remequal = { "%=", 2, 14, false, OpToken::binary, 1, 5, (OpToken *)0 } |
| The in-place modulo operator.
|
|
static OpToken | plusequal = { "+=", 2, 14, false, OpToken::binary, 1, 5, (OpToken *)0 } |
| The in-place addition operator.
|
|
static OpToken | minusequal = { "-=", 2, 14, false, OpToken::binary, 1, 5, (OpToken *)0 } |
| The in-place subtraction operator.
|
|
static OpToken | leftequal = { "<<=", 2, 14, false, OpToken::binary, 1, 5, (OpToken *)0 } |
| The in-place left shift operator.
|
|
static OpToken | rightequal = { ">>=", 2, 14, false, OpToken::binary, 1, 5, (OpToken *)0 } |
| The in-place right shift operator.
|
|
static OpToken | andequal = { "&=", 2, 14, false, OpToken::binary, 1, 5, (OpToken *)0 } |
| The in-place logical and operator.
|
|
static OpToken | orequal = { "|=", 2, 14, false, OpToken::binary, 1, 5, (OpToken *)0 } |
| The in-place logical or operator.
|
|
static OpToken | xorequal = { "^=", 2, 14, false, OpToken::binary, 1, 5, (OpToken *)0 } |
| The in-place logical xor operator.
|
|
static OpToken | type_expr_space = { "", 2, 10, false, OpToken::space, 1, 0, (OpToken *)0 } |
| Type declaration involving a space (identifier or adornment)
|
|
static OpToken | type_expr_nospace = { "", 2, 10, false, OpToken::space, 0, 0, (OpToken *)0 } |
| Type declaration with no space.
|
|
static OpToken | ptr_expr = { "*", 1, 62, false, OpToken::unary_prefix, 0, 0, (OpToken *)0 } |
| Pointer adornment for a type declaration.
|
|
static OpToken | array_expr = { "[]", 2, 66, false, OpToken::postsurround, 1, 0, (OpToken *)0 } |
| Array adornment for a type declaration.
|
|
static OpToken | enum_cat = { "|", 2, 26, true, OpToken::binary, 0, 0, (OpToken *)0 } |
| The concatenation operator for enumerated values.
|
|