diff options
| author | Mitja Felicijan <mitja.felicijan@gmail.com> | 2024-10-25 00:47:47 +0200 |
|---|---|---|
| committer | Mitja Felicijan <mitja.felicijan@gmail.com> | 2024-10-25 00:47:47 +0200 |
| commit | c6cc0108ca7738023b45e0eeac0fa2390532dd93 (patch) | |
| tree | 36890e6cd3091bbab8efbe686cc56f467f645bfd /vendor/github.com/tdewolff/parse/v2/js/table.go | |
| parent | 0130404a1dc663d4aa68d780c9bcb23a4243e68d (diff) | |
| download | jbmafp-master.tar.gz | |
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 @@ +package js + +import "strconv" + +// OpPrec is the operator precedence +type OpPrec int + +// OpPrec values. +const ( + OpExpr OpPrec = iota // a,b + OpAssign // a?b:c, yield x, ()=>x, async ()=>x, a=b, a+=b, ... + OpCoalesce // a??b + OpOr // a||b + OpAnd // a&&b + OpBitOr // a|b + OpBitXor // a^b + OpBitAnd // a&b + OpEquals // a==b, a!=b, a===b, a!==b + OpCompare // a<b, a>b, a<=b, a>=b, a instanceof b, a in b + OpShift // a<<b, a>>b, a>>>b + OpAdd // a+b, a-b + OpMul // a*b, a/b, a%b + OpExp // a**b + OpUnary // ++x, --x, delete x, void x, typeof x, +x, -x, ~x, !x, await x + OpUpdate // x++, x-- + OpLHS // CallExpr/OptChainExpr or NewExpr + OpCall // a?.b, a(b), super(a), import(a) + OpNew // new a + OpMember // a[b], a.b, a`b`, super[x], super.x, new.target, import.meta, new a(b) + OpPrimary // literal, function, class, parenthesized +) + +func (prec OpPrec) String() string { + switch prec { + case OpExpr: + return "OpExpr" + case OpAssign: + return "OpAssign" + case OpCoalesce: + return "OpCoalesce" + case OpOr: + return "OpOr" + case OpAnd: + return "OpAnd" + case OpBitOr: + return "OpBitOr" + case OpBitXor: + return "OpBitXor" + case OpBitAnd: + return "OpBitAnd" + case OpEquals: + return "OpEquals" + case OpCompare: + return "OpCompare" + case OpShift: + return "OpShift" + case OpAdd: + return "OAdd" + case OpMul: + return "OpMul" + case OpExp: + return "OpExp" + case OpUnary: + return "OpUnary" + case OpUpdate: + return "OpUpdate" + case OpLHS: + return "OpLHS" + case OpCall: + return "OpCall" + case OpNew: + return "OpNew" + case OpMember: + return "OpMember" + case OpPrimary: + return "OpPrimary" + } + return "Invalid(" + strconv.Itoa(int(prec)) + ")" +} + +// Keywords is a map of reserved, strict, and other keywords +var Keywords = map[string]TokenType{ + // reserved + "await": AwaitToken, + "break": BreakToken, + "case": CaseToken, + "catch": CatchToken, + "class": ClassToken, + "const": ConstToken, + "continue": ContinueToken, + "debugger": DebuggerToken, + "default": DefaultToken, + "delete": DeleteToken, + "do": DoToken, + "else": ElseToken, + "enum": EnumToken, + "export": ExportToken, + "extends": ExtendsToken, + "false": FalseToken, + "finally": FinallyToken, + "for": ForToken, + "function": FunctionToken, + "if": IfToken, + "import": ImportToken, + "in": InToken, + "instanceof": InstanceofToken, + "new": NewToken, + "null": NullToken, + "return": ReturnToken, + "super": SuperToken, + "switch": SwitchToken, + "this": ThisToken, + "throw": ThrowToken, + "true": TrueToken, + "try": TryToken, + "typeof": TypeofToken, + "var": VarToken, + "void": VoidToken, + "while": WhileToken, + "with": WithToken, + "yield": YieldToken, + + // strict mode + "let": LetToken, + "static": StaticToken, + "implements": ImplementsToken, + "interface": InterfaceToken, + "package": PackageToken, + "private": PrivateToken, + "protected": ProtectedToken, + "public": PublicToken, + + // extra + "as": AsToken, + "async": AsyncToken, + "from": FromToken, + "get": GetToken, + "meta": MetaToken, + "of": OfToken, + "set": SetToken, + "target": TargetToken, +} |
