Cnorm AST¶
This module provide all AST nodes.
-
class
cnorm.nodes.Func(call_expr: cnorm.nodes.Expr, params: list)[source]¶ Bases:
cnorm.nodes.ExprFor almost everything
-
to_c(self)¶
-
-
class
cnorm.nodes.BlockInit(body: [<class 'cnorm.nodes.Expr'>])[source]¶ Bases:
cnorm.nodes.ExprInitializer Block Expression
-
to_c(self)¶
-
-
class
cnorm.nodes.BlockExpr(body: [<class 'cnorm.nodes.Expr'>])[source]¶ Bases:
cnorm.nodes.ExprCompound Block Expression
-
to_c(self)¶
-
-
class
cnorm.nodes.Unary(call_expr: cnorm.nodes.Expr, params: list)[source]¶ Bases:
cnorm.nodes.FuncFor unary operator
-
to_c(self)¶
-
-
class
cnorm.nodes.Paren(call_expr: cnorm.nodes.Expr, params: list)[source]¶ Bases:
cnorm.nodes.UnaryFor () expression
-
to_c(self)¶
-
-
class
cnorm.nodes.Array(call_expr: cnorm.nodes.Expr, params: list)[source]¶ Bases:
cnorm.nodes.UnaryFor [] expression
-
to_c(self)¶
-
-
class
cnorm.nodes.Dot(call_expr: cnorm.nodes.Expr, params: list)[source]¶ Bases:
cnorm.nodes.UnaryFor . expression
-
to_c(self)¶
-
-
class
cnorm.nodes.Arrow(call_expr: cnorm.nodes.Expr, params: list)[source]¶ Bases:
cnorm.nodes.UnaryFor -> expression
-
to_c(self)¶
-
-
class
cnorm.nodes.Post(call_expr: cnorm.nodes.Expr, params: list)[source]¶ Bases:
cnorm.nodes.UnaryFor post{inc,dec} expression
-
to_c(self)¶
-
-
class
cnorm.nodes.Sizeof(call_expr: cnorm.nodes.Expr, params: list)[source]¶ Bases:
cnorm.nodes.UnaryFor sizeof expr/type expression
-
to_c(self)¶
-
-
class
cnorm.nodes.Binary(call_expr: cnorm.nodes.Expr, params: list)[source]¶ Bases:
cnorm.nodes.FuncFor binary operator
-
to_c(self)¶
-
-
class
cnorm.nodes.Cast(call_expr: cnorm.nodes.Expr, params: list)[source]¶ Bases:
cnorm.nodes.BinaryFor cast operator
-
to_c(self)¶
-
-
class
cnorm.nodes.Range(call_expr: cnorm.nodes.Expr, params: list)[source]¶ Bases:
cnorm.nodes.BinaryFor range expression
-
class
cnorm.nodes.Ternary(call_expr: cnorm.nodes.Expr, params: list)[source]¶ Bases:
cnorm.nodes.FuncFor ternary operator
-
to_c(self)¶
-
-
class
cnorm.nodes.Terminal(value: str)[source]¶ Bases:
cnorm.nodes.ExprFor Terminal expression
-
to_c(self)¶
-
-
class
cnorm.nodes.Id(value: str)[source]¶ Bases:
cnorm.nodes.TerminalTerminal Id
-
class
cnorm.nodes.Literal(value: str)[source]¶ Bases:
cnorm.nodes.TerminalTerminal Literal
-
class
cnorm.nodes.Raw(value: str)[source]¶ Bases:
cnorm.nodes.TerminalTerminal Raw
-
class
cnorm.nodes.Enumerator(ident: str, expr: cnorm.nodes.Expr)[source]¶ Bases:
pyrser.parsing.node.NodeEnumerator A=x in enums
-
class
cnorm.nodes.PointerType[source]¶ Bases:
cnorm.nodes.DeclTypeFor pointer in declaration
-
class
cnorm.nodes.ArrayType(expr=None)[source]¶ Bases:
cnorm.nodes.DeclTypeFor array in declaration
-
expr¶
-
-
class
cnorm.nodes.ParenType(params=None)[source]¶ Bases:
cnorm.nodes.DeclTypeFor parenthesis in declaration
-
params¶
-
-
class
cnorm.nodes.QualType(qualifier: pyrser.meta.Enum=0)[source]¶ Bases:
cnorm.nodes.DeclTypeFor qualifier in declaration
-
class
cnorm.nodes.AttrType(raw: str)[source]¶ Bases:
cnorm.nodes.DeclTypeFor attribute specifier in declaration
-
class
cnorm.nodes.CType[source]¶ Bases:
pyrser.parsing.node.NodeBase for primary/func
-
ctype_to_c(self, func_var_name= '')¶
-
-
class
cnorm.nodes.PrimaryType(identifier: str)[source]¶ Bases:
cnorm.nodes.CTypeFor primary type in declaration
-
identifier¶
-
-
class
cnorm.nodes.ComposedType(identifier: str)[source]¶ Bases:
cnorm.nodes.CTypeFor composed type in declaration
-
identifier¶
-
-
class
cnorm.nodes.FuncType(identifier: str, params=[], decltype=None)[source]¶ Bases:
cnorm.nodes.PrimaryTypeFor function in declaration
-
params¶
-
-
class
cnorm.nodes.Decl(name: str, ct=None)[source]¶ Bases:
cnorm.nodes.ExprFor basic declaration
A declaration contains the following attributes:
- _name: name of the declaration
- _ctype: the CType describing the type of the declaration
- _assign_expr: when the declaration have a value
- _colon_expr: When it’s a bitfield
- body: when it’s function definition
-
ctype¶
-
to_c(self)¶
-
class
cnorm.nodes.ExprStmt(expr: cnorm.nodes.Expr)[source]¶ Bases:
cnorm.nodes.StmtExpression statement
-
to_c(self)¶
-
-
class
cnorm.nodes.BlockStmt(body: [<class 'cnorm.nodes.ExprStmt'>])[source]¶ Bases:
cnorm.nodes.StmtBlock statement
-
to_c(self)¶
-
-
class
cnorm.nodes.RootBlockStmt(body: [<class 'cnorm.nodes.ExprStmt'>])[source]¶ Bases:
cnorm.nodes.BlockStmtRoot Block statement
-
to_c(self)¶
-
-
class
cnorm.nodes.Label(value: str)[source]¶ Bases:
cnorm.nodes.StmtLabel statement
-
to_c(self)¶
-
-
class
cnorm.nodes.Branch(value: str, expr: cnorm.nodes.Expr)[source]¶ Bases:
cnorm.nodes.Labelbranch statement
-
to_c(self)¶
-
-
class
cnorm.nodes.Case(expr: cnorm.nodes.Expr)[source]¶ Bases:
cnorm.nodes.BranchCase statement
-
to_c(self)¶
-
-
class
cnorm.nodes.Return(expr: cnorm.nodes.Expr)[source]¶ Bases:
cnorm.nodes.BranchReturn statement
-
class
cnorm.nodes.Goto(expr: cnorm.nodes.Expr)[source]¶ Bases:
cnorm.nodes.BranchGoto statement
-
class
cnorm.nodes.LoopControl(value: str)[source]¶ Bases:
cnorm.nodes.Labelloop control statement
-
to_c(self)¶
-
-
class
cnorm.nodes.Break[source]¶ Bases:
cnorm.nodes.LoopControlbreak statement
-
class
cnorm.nodes.Continue[source]¶ Bases:
cnorm.nodes.LoopControlcontinue statement
-
class
cnorm.nodes.Conditional(condition: cnorm.nodes.Expr)[source]¶ Bases:
cnorm.nodes.StmtConditional statement
-
class
cnorm.nodes.If(condition: cnorm.nodes.Expr, thencond: cnorm.nodes.Stmt, elsecond: cnorm.nodes.Stmt=None)[source]¶ Bases:
cnorm.nodes.ConditionalIf statement
-
to_c(self)¶
-
-
class
cnorm.nodes.While(condition: cnorm.nodes.Expr, body: cnorm.nodes.Stmt)[source]¶ Bases:
cnorm.nodes.ConditionalWhile statement
-
to_c(self)¶
-
-
class
cnorm.nodes.Switch(condition: cnorm.nodes.Expr, body: cnorm.nodes.Stmt)[source]¶ Bases:
cnorm.nodes.ConditionalSwitch statement
-
to_c(self)¶
-
-
class
cnorm.nodes.Do(condition: cnorm.nodes.Expr, body: cnorm.nodes.Stmt)[source]¶ Bases:
cnorm.nodes.ConditionalDo statement
-
to_c(self)¶
-