-
Notifications
You must be signed in to change notification settings - Fork 1.2k
/
Copy pathptlist.h
162 lines (154 loc) · 16.8 KB
/
ptlist.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
//-------------------------------------------------------------------------------------------------------
// Copyright (C) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
//-------------------------------------------------------------------------------------------------------
/*****************************************************************************/
#ifndef PTNODE
#error Define PTNODE before including this file.
#endif
/*****************************************************************************/
//
// Node oper
// , "Node name"
// , pcode
// , parse node kind
// , flags
// , JSON Name
//
PTNODE(knopNone , "<none>" , Nop , None , fnopNone , "" )
/***************************************************************************
Leaf nodes.
***************************************************************************/
PTNODE(knopName , "name" , Nop , Name , fnopLeaf|fnopAllowDefer, "NameExpr" )
PTNODE(knopInt , "int const" , Nop , Int , fnopLeaf|fnopConst , "NumberLit" )
PTNODE(knopBigInt , "bigint const" , Nop , BigInt , fnopLeaf|fnopConst , "BigIntLit" )
PTNODE(knopImport , "import" , Nop , None , fnopLeaf , "ImportExpr" )
PTNODE(knopFlt , "flt const" , Nop , Float , fnopLeaf|fnopConst , "NumberLit" )
PTNODE(knopStr , "str const" , Nop , Str , fnopLeaf|fnopConst , "StringLit" )
PTNODE(knopRegExp , "reg expr" , Nop , RegExp , fnopLeaf|fnopConst , "RegExprLit" )
PTNODE(knopNull , "null" , Nop , None , fnopLeaf , "NullLit" )
PTNODE(knopFalse , "false" , Nop , None , fnopLeaf , "FalseLit" )
PTNODE(knopTrue , "true" , Nop , None , fnopLeaf , "TrueLit" )
PTNODE(knopEmpty , "empty" , Nop , None , fnopLeaf , "EmptStmt" )
PTNODE(knopYieldLeaf , "yield leaf" , Nop , None , fnopLeaf , "YieldLeafExpr" )
/***************************************************************************
Unary operators.
***************************************************************************/
PTNODE(knopNot , "~" , Nop , Uni , fnopUni , "BitNotOper" )
PTNODE(knopNeg , "unary -" , Nop , Uni , fnopUni , "NegOper" )
PTNODE(knopPos , "unary +" , Nop , Uni , fnopUni , "PosOper" )
PTNODE(knopLogNot , "!" , Nop , Uni , fnopUni , "LogNotOper" )
PTNODE(knopEllipsis , "..." , Nop , Uni , fnopUni , "Spread" )
// ___compact range : do not add or remove in this range.
// Gen code of OP_LclIncPost,.. depends on parallel tables with this range
PTNODE(knopIncPost , "++ post" , Nop , Uni , fnopUni|fnopAsg , "PostIncExpr" )
PTNODE(knopDecPost , "-- post" , Nop , Uni , fnopUni|fnopAsg , "PostDecExpr" )
PTNODE(knopIncPre , "++ pre" , Nop , Uni , fnopUni|fnopAsg , "PreIncExpr" )
PTNODE(knopDecPre , "-- pre" , Nop , Uni , fnopUni|fnopAsg , "PreDecExpr" )
//___end range
PTNODE(knopTypeof , "typeof" , Nop , Uni , fnopUni , "TypeOfExpr" )
PTNODE(knopVoid , "void" , Nop , Uni , fnopUni , "VoidExpr" )
PTNODE(knopDelete , "delete" , Nop , Uni , fnopUni , "DeleteStmt" )
PTNODE(knopArray , "arr cnst" , Nop , ArrLit , fnopUni , "ArrayExpr" )
PTNODE(knopObject , "obj cnst" , Nop , Uni , fnopUni , "ObjectExpr" )
PTNODE(knopTempRef , "temp ref" , Nop , Uni , fnopUni , "TempRef" )
PTNODE(knopComputedName,"[name]" , Nop , Uni , fnopUni , "ComputedNameExpr" )
PTNODE(knopYield , "yield" , Nop , Uni , fnopUni|fnopAsg , "YieldExpr" )
PTNODE(knopYieldStar , "yield *" , Nop , Uni , fnopUni|fnopAsg , "YieldStarExpr" )
PTNODE(knopAwait , "await" , Nop , Uni , fnopUni , "AwaitExpr" )
/***************************************************************************
Binary and ternary operators.
***************************************************************************/
PTNODE(knopAdd , "+" , Add_A , Bin , fnopBin , "AddOper" )
PTNODE(knopSub , "-" , Sub_A , Bin , fnopBin , "SubOper" )
PTNODE(knopMul , "*" , Mul_A , Bin , fnopBin , "MulOper" )
PTNODE(knopDiv , "/" , Div_A , Bin , fnopBin , "DivOper" )
PTNODE(knopExpo , "**" , Expo_A , Bin , fnopBin , "ExpoOper" )
PTNODE(knopMod , "%" , Rem_A , Bin , fnopBin , "ModOper" )
PTNODE(knopOr , "|" , Or_A , Bin , fnopBin , "BitOrOper" )
PTNODE(knopXor , "^" , Xor_A , Bin , fnopBin , "BitXorOper" )
PTNODE(knopAnd , "&" , And_A , Bin , fnopBin , "BitAndOper" )
PTNODE(knopEq , "==" , OP(Eq) , Bin , fnopBin|fnopRel , "EqualOper" )
PTNODE(knopNe , "!=" , OP(Neq) , Bin , fnopBin|fnopRel , "NotEqualOper" )
PTNODE(knopLt , "<" , OP(Lt) , Bin , fnopBin|fnopRel , "LessThanOper" )
PTNODE(knopLe , "<=" , OP(Le) , Bin , fnopBin|fnopRel , "LessThanEqualOper" )
PTNODE(knopGe , ">=" , OP(Ge) , Bin , fnopBin|fnopRel , "GreaterThanEqualOper" )
PTNODE(knopGt , ">" , OP(Gt) , Bin , fnopBin|fnopRel , "GreaterThanOper" )
PTNODE(knopCall , "()" , Nop , Call , fnopNone , "CallExpr" )
PTNODE(knopDot , "." , Nop , Bin , fnopBin , "DotOper" )
PTNODE(knopAsg , "=" , Nop , Bin , fnopBin|fnopAsg , "AssignmentOper" )
PTNODE(knopInstOf , "instanceof" , IsInst , Bin , fnopBin|fnopRel , "InstanceOfExpr" )
PTNODE(knopIn , "in" , IsIn , Bin , fnopBin|fnopRel , "InOper" )
PTNODE(knopEqv , "===" , OP(SrEq) , Bin , fnopBin|fnopRel , "StrictEqualOper" )
PTNODE(knopNEqv , "!==" , OP(SrNeq), Bin , fnopBin|fnopRel , "NotStrictEqualOper" )
PTNODE(knopComma , "," , Nop , Bin , fnopBin , "CommaOper" )
PTNODE(knopLogOr , "||" , Nop , Bin , fnopBin , "LogOrOper" )
PTNODE(knopLogAnd , "&&" , Nop , Bin , fnopBin , "LogAndOper" )
PTNODE(knopCoalesce , "??" , Nop , Bin , fnopBin , "NullishCoalescingOper" )
PTNODE(knopLsh , "<<" , Shl_A , Bin , fnopBin , "LeftShiftOper" )
PTNODE(knopRsh , ">>" , Shr_A , Bin , fnopBin , "RightShiftOper" )
PTNODE(knopRs2 , ">>>" , ShrU_A , Bin , fnopBin , "UnsignedRightShiftOper" )
PTNODE(knopNew , "new" , Nop , Call , fnopNone , "NewExpr" )
PTNODE(knopIndex , "[]" , Nop , Bin , fnopBin , "IndexOper" )
PTNODE(knopQmark , "?" , Nop , Tri , fnopNone , "IfExpr" )
// ___compact range : do not add or remove in this range.
// Gen code of OP_LclAsg*,.. depends on parallel tables with this range
PTNODE(knopAsgAdd , "+=" , Add_A , Bin , fnopBin|fnopAsg , "AddAssignExpr" )
PTNODE(knopAsgSub , "-=" , Sub_A , Bin , fnopBin|fnopAsg , "SubAssignExpr" )
PTNODE(knopAsgMul , "*=" , Mul_A , Bin , fnopBin|fnopAsg , "MulAssignExpr" )
PTNODE(knopAsgDiv , "/=" , Div_A , Bin , fnopBin|fnopAsg , "DivAssignExpr" )
PTNODE(knopAsgExpo , "**=" , Expo_A , Bin , fnopBin|fnopAsg , "ExpoAssignExpr" )
PTNODE(knopAsgMod , "%=" , Rem_A , Bin , fnopBin|fnopAsg , "ModAssignExpr" )
PTNODE(knopAsgAnd , "&=" , And_A , Bin , fnopBin|fnopAsg , "BitAndAssignExpr" )
PTNODE(knopAsgXor , "^=" , Xor_A , Bin , fnopBin|fnopAsg , "BitXorAssignExpr" )
PTNODE(knopAsgOr , "|=" , Or_A , Bin , fnopBin|fnopAsg , "BitOrAssignExpr" )
PTNODE(knopAsgLsh , "<<=" , Shl_A , Bin , fnopBin|fnopAsg , "LeftShiftAssignExpr" )
PTNODE(knopAsgRsh , ">>=" , Shr_A , Bin , fnopBin|fnopAsg , "RightShiftAssignExpr" )
PTNODE(knopAsgRs2 , ">>>=" , ShrU_A , Bin , fnopBin|fnopAsg , "UnsignedRightShiftAssignExpr" )
//___end range
PTNODE(knopMember , ":" , Nop , Bin , fnopNotExprStmt|fnopBin, "MemberOper" )
PTNODE(knopMemberShort, "membShort" , Nop , Bin , fnopNotExprStmt|fnopBin, "ShorthandMember" )
PTNODE(knopSetMember , "set" , Nop , Bin , fnopBin , "SetDecl" )
PTNODE(knopGetMember , "get" , Nop , Bin , fnopBin , "GetDecl" )
/***************************************************************************
General nodes.
***************************************************************************/
PTNODE(knopList , "<list>" , Nop , Bin , fnopBinList|fnopNotExprStmt, "" )
PTNODE(knopVarDecl , "varDcl" , Nop , Var , fnopNotExprStmt|fnopAllowDefer, "VarDecl" )
PTNODE(knopConstDecl , "constDcl" , Nop , Var , fnopNotExprStmt|fnopAllowDefer, "ConstDecl" )
PTNODE(knopLetDecl , "letDcl" , Nop , Var , fnopNotExprStmt|fnopAllowDefer, "LetDecl" )
PTNODE(knopTemp , "temp" , Nop , Var , fnopNone , "Temp" )
PTNODE(knopFncDecl , "fncDcl" , Nop , Fnc , fnopLeaf|fnopAllowDefer, "FuncDecl" )
PTNODE(knopClassDecl , "classDecl" , Nop , Class , fnopLeaf , "ClassDecl" )
PTNODE(knopProg , "program" , Nop , Prog , fnopNotExprStmt , "Unit" )
PTNODE(knopModule , "module" , Nop , Module , fnopNotExprStmt , "Module")
PTNODE(knopEndCode , "<endcode>" , Nop , None , fnopNotExprStmt , "" )
PTNODE(knopDebugger , "debugger" , Nop , None , fnopNotExprStmt , "DebuggerStmt" )
PTNODE(knopFor , "for" , Nop , For , fnopNotExprStmt|fnopCleanup|fnopBreak|fnopContinue , "ForStmtm" )
PTNODE(knopIf , "if" , Nop , If , fnopNotExprStmt , "IfStmt" )
PTNODE(knopWhile , "while" , Nop , While , fnopNotExprStmt|fnopCleanup|fnopBreak|fnopContinue , "WhileStmt" )
PTNODE(knopDoWhile , "do-while" , Nop , While , fnopNotExprStmt|fnopCleanup|fnopBreak|fnopContinue , "DoWhileStmt" )
PTNODE(knopForIn , "for in" , Nop , ForInOrForOf, fnopNotExprStmt|fnopCleanup|fnopBreak|fnopContinue , "ForInStmt" )
PTNODE(knopForOf , "for of" , Nop , ForInOrForOf, fnopNotExprStmt|fnopCleanup|fnopBreak|fnopContinue , "ForOfStmt" )
PTNODE(knopForAwaitOf , "for await of" , Nop , ForInOrForOf, fnopNotExprStmt|fnopCleanup|fnopBreak|fnopContinue , "ForAwaitOfStmt" )
PTNODE(knopBlock , "{}" , Nop , Block , fnopNotExprStmt|fnopAllowDefer, "Block" )
PTNODE(knopStrTemplate, "``" , Nop , StrTemplate , fnopNone , "StringTemplateDecl" )
PTNODE(knopWith , "with" , Nop , With , fnopNotExprStmt , "WithStmt" )
PTNODE(knopBreak , "break" , Nop , Jump , fnopNotExprStmt , "BreakStmt" )
PTNODE(knopContinue , "continue" , Nop , Jump , fnopNotExprStmt , "ContinueStmt" )
PTNODE(knopSwitch , "switch" , Nop , Switch , fnopNotExprStmt|fnopBreak, "SwitchStmt" )
PTNODE(knopCase , "case" , Nop , Case , fnopNotExprStmt , "CaseStmt" )
PTNODE(knopTryCatch , "try-catch" , Nop , TryCatch , fnopNotExprStmt , "TryCatchStmt" )
PTNODE(knopCatch , "catch" , Nop , Catch , fnopNotExprStmt|fnopCleanup, "CatchClause" )
PTNODE(knopReturn , "return" , Nop , Return , fnopNotExprStmt , "ReturnStmt" )
PTNODE(knopTry , "try" , Nop , Try , fnopNotExprStmt|fnopCleanup, "TryStmt" )
PTNODE(knopThrow , "throw" , Nop , Uni , fnopNotExprStmt , "ThrowStmt" )
PTNODE(knopFinally , "finally" , Nop , Finally , fnopNotExprStmt|fnopCleanup, "FinallyStmt" )
PTNODE(knopTryFinally , "try-finally" , Nop , TryFinally , fnopNotExprStmt , "TryFinallyStmt" )
PTNODE(knopObjectPattern, "{} = " , Nop , ObjLit , fnopUni , "ObjectAssignmentPattern" )
PTNODE(knopObjectPatternMember, "{:} = " , Nop , Bin , fnopBin , "ObjectAssignmentPatternMember" )
PTNODE(knopArrayPattern, "[] = " , Nop , ArrLit , fnopUni , "ArrayAssignmentPattern" )
PTNODE(knopParamPattern, "({[]})" , Nop , ParamPattern, fnopUni , "DestructurePattern" )
PTNODE(knopExportDefault, "export default" , Nop , ExportDefault,fnopNone , "ExportDefault" )
#undef PTNODE
#undef OP