diff options
Diffstat (limited to 'vendor/github.com/tdewolff/parse/v2/js/table.go')
| -rw-r--r-- | vendor/github.com/tdewolff/parse/v2/js/table.go | 142 |
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 @@ | |||
| 1 | package js | ||
| 2 | |||
| 3 | import "strconv" | ||
| 4 | |||
| 5 | // OpPrec is the operator precedence | ||
| 6 | type OpPrec int | ||
| 7 | |||
| 8 | // OpPrec values. | ||
| 9 | const ( | ||
| 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 | |||
| 33 | func (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 | ||
| 82 | var 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 | } | ||
