aboutsummaryrefslogtreecommitdiff
path: root/vendor/github.com/tdewolff/parse/v2/js/table.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/tdewolff/parse/v2/js/table.go')
-rw-r--r--vendor/github.com/tdewolff/parse/v2/js/table.go142
1 files changed, 142 insertions, 0 deletions
diff --git a/vendor/github.com/tdewolff/parse/v2/js/table.go b/vendor/github.com/tdewolff/parse/v2/js/table.go
new file mode 100644
index 0000000..2533091
--- /dev/null
+++ b/vendor/github.com/tdewolff/parse/v2/js/table.go
@@ -0,0 +1,142 @@
1package js
2
3import "strconv"
4
5// OpPrec is the operator precedence
6type OpPrec int
7
8// OpPrec values.
9const (
10 OpExpr OpPrec = iota // a,b
11 OpAssign // a?b:c, yield x, ()=>x, async ()=>x, a=b, a+=b, ...
12 OpCoalesce // a??b
13 OpOr // a||b
14 OpAnd // a&&b
15 OpBitOr // a|b
16 OpBitXor // a^b
17 OpBitAnd // a&b
18 OpEquals // a==b, a!=b, a===b, a!==b
19 OpCompare // a<b, a>b, a<=b, a>=b, a instanceof b, a in b
20 OpShift // a<<b, a>>b, a>>>b
21 OpAdd // a+b, a-b
22 OpMul // a*b, a/b, a%b
23 OpExp // a**b
24 OpUnary // ++x, --x, delete x, void x, typeof x, +x, -x, ~x, !x, await x
25 OpUpdate // x++, x--
26 OpLHS // CallExpr/OptChainExpr or NewExpr
27 OpCall // a?.b, a(b), super(a), import(a)
28 OpNew // new a
29 OpMember // a[b], a.b, a`b`, super[x], super.x, new.target, import.meta, new a(b)
30 OpPrimary // literal, function, class, parenthesized
31)
32
33func (prec OpPrec) String() string {
34 switch prec {
35 case OpExpr:
36 return "OpExpr"
37 case OpAssign:
38 return "OpAssign"
39 case OpCoalesce:
40 return "OpCoalesce"
41 case OpOr:
42 return "OpOr"
43 case OpAnd:
44 return "OpAnd"
45 case OpBitOr:
46 return "OpBitOr"
47 case OpBitXor:
48 return "OpBitXor"
49 case OpBitAnd:
50 return "OpBitAnd"
51 case OpEquals:
52 return "OpEquals"
53 case OpCompare:
54 return "OpCompare"
55 case OpShift:
56 return "OpShift"
57 case OpAdd:
58 return "OAdd"
59 case OpMul:
60 return "OpMul"
61 case OpExp:
62 return "OpExp"
63 case OpUnary:
64 return "OpUnary"
65 case OpUpdate:
66 return "OpUpdate"
67 case OpLHS:
68 return "OpLHS"
69 case OpCall:
70 return "OpCall"
71 case OpNew:
72 return "OpNew"
73 case OpMember:
74 return "OpMember"
75 case OpPrimary:
76 return "OpPrimary"
77 }
78 return "Invalid(" + strconv.Itoa(int(prec)) + ")"
79}
80
81// Keywords is a map of reserved, strict, and other keywords
82var Keywords = map[string]TokenType{
83 // reserved
84 "await": AwaitToken,
85 "break": BreakToken,
86 "case": CaseToken,
87 "catch": CatchToken,
88 "class": ClassToken,
89 "const": ConstToken,
90 "continue": ContinueToken,
91 "debugger": DebuggerToken,
92 "default": DefaultToken,
93 "delete": DeleteToken,
94 "do": DoToken,
95 "else": ElseToken,
96 "enum": EnumToken,
97 "export": ExportToken,
98 "extends": ExtendsToken,
99 "false": FalseToken,
100 "finally": FinallyToken,
101 "for": ForToken,
102 "function": FunctionToken,
103 "if": IfToken,
104 "import": ImportToken,
105 "in": InToken,
106 "instanceof": InstanceofToken,
107 "new": NewToken,
108 "null": NullToken,
109 "return": ReturnToken,
110 "super": SuperToken,
111 "switch": SwitchToken,
112 "this": ThisToken,
113 "throw": ThrowToken,
114 "true": TrueToken,
115 "try": TryToken,
116 "typeof": TypeofToken,
117 "var": VarToken,
118 "void": VoidToken,
119 "while": WhileToken,
120 "with": WithToken,
121 "yield": YieldToken,
122
123 // strict mode
124 "let": LetToken,
125 "static": StaticToken,
126 "implements": ImplementsToken,
127 "interface": InterfaceToken,
128 "package": PackageToken,
129 "private": PrivateToken,
130 "protected": ProtectedToken,
131 "public": PublicToken,
132
133 // extra
134 "as": AsToken,
135 "async": AsyncToken,
136 "from": FromToken,
137 "get": GetToken,
138 "meta": MetaToken,
139 "of": OfToken,
140 "set": SetToken,
141 "target": TargetToken,
142}