module volta.parser.intir
Code Map
module volta.parser.intir;
class IntExp
{
public:
loc: Location;
public:
this() { }
}
class AssignExp : IntExp
{
public:
op: BinOp.Op;
left: TernaryExp;
right: AssignExp;
taggedRef: bool;
taggedOut: bool;
public:
this() { }
}
class TernaryExp : IntExp
{
public:
isTernary: bool;
condition: BinExp;
ifTrue: TernaryExp;
ifFalse: TernaryExp;
public:
this() { }
}
class BinExp : IntExp
{
public:
op: BinOp.Op;
left: UnaryExp;
right: BinExp;
public:
this() { }
}
class UnaryExp : IntExp
{
public:
op: Unary.Op;
unaryExp: UnaryExp;
postExp: PostfixExp;
newExp: NewExp;
castExp: CastExp;
dupExp: DupExp;
runExp: RunExp;
public:
this() { }
}
class NewExp : IntExp
{
public:
type: Type;
isArray: bool;
exp: TernaryExp;
hasArgumentList: bool;
argumentList: AssignExp[];
argumentLabels: string[];
public:
this() { }
}
class DupExp : IntExp
{
public:
name: PostfixExp;
beginning: AssignExp;
end: AssignExp;
shorthand: bool;
public:
this() { }
}
class CastExp : IntExp
{
public:
type: Type;
unaryExp: UnaryExp;
public:
this() { }
}
class PostfixExp : IntExp
{
public:
op: Postfix.Op;
primary: PrimaryExp;
postfix: PostfixExp;
arguments: AssignExp[];
labels: string[];
identifier: Identifier;
templateInstance: Exp;
public:
this() { }
}
class PrimaryExp : IntExp
{
public:
enum Type
{
Identifier,
DotIdentifier,
This,
Super,
Null,
True,
False,
Dollar,
IntegerLiteral,
FloatLiteral,
CharLiteral,
StringLiteral,
ArrayLiteral,
AssocArrayLiteral,
FunctionLiteral,
Assert,
Import,
Type,
Typeof,
Typeid,
Is,
ParenExp,
StructLiteral,
TemplateInstance,
FunctionName,
PrettyFunctionName,
File,
Line,
Location,
VaArg,
ComposableString,
}
public:
op: Type;
type: Type;
exp: Exp;
_string: string;
keys: AssignExp[];
arguments: AssignExp[];
tlargs: AssignExp[];
isExp: IsExp;
functionLiteral: FunctionLiteral;
vaexp: VaArgExp;
public:
this() { }
}
fn isLeftAssociative(operator: BinOp.Op) bool { }
fn getPrecedence(operator: BinOp.Op) i32 { }