mirror of
https://github.com/pocketpy/pocketpy
synced 2025-10-20 11:30:18 +00:00
...
This commit is contained in:
parent
8079b82813
commit
19b2eda72a
@ -92,10 +92,8 @@ enum Precedence {
|
||||
PREC_FACTOR, // * / % // @
|
||||
PREC_UNARY, // - not ~
|
||||
PREC_EXPONENT, // **
|
||||
PREC_CALL, // ()
|
||||
PREC_SUBSCRIPT, // []
|
||||
PREC_ATTRIB, // .index
|
||||
PREC_PRIMARY,
|
||||
PREC_PRIMARY, // f() x[] a.b 1:2
|
||||
PREC_HIGHEST,pyth
|
||||
};
|
||||
|
||||
enum StringType { NORMAL_STRING, RAW_STRING, F_STRING, NORMAL_BYTES };
|
||||
|
@ -74,9 +74,9 @@ namespace pkpy{
|
||||
#define PK_METHOD(name) &Compiler::name
|
||||
#define PK_NO_INFIX nullptr, PREC_NONE
|
||||
for(TokenIndex i=0; i<kTokenCount; i++) rules[i] = { nullptr, PK_NO_INFIX };
|
||||
rules[TK(".")] = { nullptr, PK_METHOD(exprAttrib), PREC_ATTRIB };
|
||||
rules[TK("(")] = { PK_METHOD(exprGroup), PK_METHOD(exprCall), PREC_CALL };
|
||||
rules[TK("[")] = { PK_METHOD(exprList), PK_METHOD(exprSubscr), PREC_SUBSCRIPT };
|
||||
rules[TK(".")] = { nullptr, PK_METHOD(exprAttrib), PREC_PRIMARY };
|
||||
rules[TK("(")] = { PK_METHOD(exprGroup), PK_METHOD(exprCall), PREC_PRIMARY };
|
||||
rules[TK("[")] = { PK_METHOD(exprList), PK_METHOD(exprSubscr), PREC_PRIMARY };
|
||||
rules[TK("{")] = { PK_METHOD(exprMap), PK_NO_INFIX };
|
||||
rules[TK("%")] = { nullptr, PK_METHOD(exprBinaryOp), PREC_FACTOR };
|
||||
rules[TK("+")] = { nullptr, PK_METHOD(exprBinaryOp), PREC_TERM };
|
||||
@ -421,7 +421,7 @@ namespace pkpy{
|
||||
|
||||
void Compiler::exprSubscr() {
|
||||
auto e = make_expr<SubscrExpr>();
|
||||
e->a = ctx()->s_expr.popx();
|
||||
e->a = ctx()->s_expr.popx(); // a[...]
|
||||
auto slice = make_expr<SliceExpr>();
|
||||
bool is_slice = false;
|
||||
// a[<0> <state:1> : state<3> : state<5>]
|
||||
|
Loading…
x
Reference in New Issue
Block a user