diff --git a/src/compiler.h b/src/compiler.h index e5370c34..739303ba 100644 --- a/src/compiler.h +++ b/src/compiler.h @@ -24,7 +24,7 @@ class Compiler { int lexing_count = 0; bool used = false; VM* vm; - emhash8::HashMap<_TokenType, GrammarRule> rules; + emhash8::HashMap rules; _Code co() const{ return codes.top(); } CompileMode mode() const{ return parser->src->mode; } @@ -39,7 +39,7 @@ public: // http://journal.stuffwithstuff.com/2011/03/19/pratt-parsers-expression-parsing-made-easy/ #define METHOD(name) &Compiler::name #define NO_INFIX nullptr, PREC_NONE - for(_TokenType i=0; i<__TOKENS_LEN; i++) rules[i] = { nullptr, NO_INFIX }; + for(TokenIndex i=0; isrc->mode == SINGLE_MODE){ + if(quote3 && parser->src->mode == REPL_MODE){ throw NeedMoreLines(false); } SyntaxError("EOL while scanning string literal"); @@ -301,23 +301,23 @@ private: parser->set_next_token(TK("@eof")); } - inline _TokenType peek() { + inline TokenIndex peek() { return parser->curr.type; } // not sure this will work - _TokenType peek_next() { + TokenIndex peek_next() { if(parser->nexts.empty()) return TK("@eof"); return parser->nexts.front().type; } - bool match(_TokenType expected) { + bool match(TokenIndex expected) { if (peek() != expected) return false; lex_token(); return true; } - void consume(_TokenType expected) { + void consume(TokenIndex expected) { if (!match(expected)){ _StrStream ss; ss << "expected '" << TK_STR(expected) << "', but got '" << TK_STR(peek()) << "'"; @@ -400,7 +400,7 @@ private: } void exprAssign() { - _TokenType op = parser->prev.type; + TokenIndex op = parser->prev.type; if(op == TK("=")) { // a = (expr) EXPR_TUPLE(); emit(OP_STORE_REF); @@ -455,7 +455,7 @@ private: } void exprBinaryOp() { - _TokenType op = parser->prev.type; + TokenIndex op = parser->prev.type; parse_expression((Precedence)(rules[op].precedence + 1)); switch (op) { @@ -488,7 +488,7 @@ private: } void exprUnaryOp() { - _TokenType op = parser->prev.type; + TokenIndex op = parser->prev.type; parse_expression((Precedence)(PREC_UNARY + 1)); switch (op) { case TK("-"): emit(OP_UNARY_NEGATIVE); break; @@ -499,9 +499,9 @@ private: } void exprGrouping() { - match_newlines(mode()==SINGLE_MODE); + match_newlines(mode()==REPL_MODE); EXPR_TUPLE(); - match_newlines(mode()==SINGLE_MODE); + match_newlines(mode()==REPL_MODE); consume(TK(")")); } @@ -510,13 +510,13 @@ private: int _body_start = co()->co_code.size(); int ARGC = 0; do { - match_newlines(mode()==SINGLE_MODE); + match_newlines(mode()==REPL_MODE); if (peek() == TK("]")) break; EXPR(); ARGC++; - match_newlines(mode()==SINGLE_MODE); + match_newlines(mode()==REPL_MODE); if(ARGC == 1 && match(TK("for"))) goto __LISTCOMP; } while (match(TK(","))); - match_newlines(mode()==SINGLE_MODE); + match_newlines(mode()==REPL_MODE); consume(TK("]")); emit(OP_BUILD_LIST, ARGC); return; @@ -528,7 +528,7 @@ __LISTCOMP: co()->co_code[_patch].arg = _body_end; emit(OP_BUILD_LIST, 0); EXPR_FOR_VARS();consume(TK("in"));EXPR_TUPLE(); - match_newlines(mode()==SINGLE_MODE); + match_newlines(mode()==REPL_MODE); int _skipPatch = emit(OP_JUMP_ABSOLUTE); int _cond_start = co()->co_code.size(); @@ -559,7 +559,7 @@ __LISTCOMP: emit(OP_LOOP_CONTINUE, -1, true); co()->_exit_block(); - match_newlines(mode()==SINGLE_MODE); + match_newlines(mode()==REPL_MODE); consume(TK("]")); } @@ -567,7 +567,7 @@ __LISTCOMP: bool parsing_dict = false; int size = 0; do { - match_newlines(mode()==SINGLE_MODE); + match_newlines(mode()==REPL_MODE); if (peek() == TK("}")) break; EXPR(); if(peek() == TK(":")) parsing_dict = true; @@ -576,7 +576,7 @@ __LISTCOMP: EXPR(); } size++; - match_newlines(mode()==SINGLE_MODE); + match_newlines(mode()==REPL_MODE); } while (match(TK(","))); consume(TK("}")); @@ -588,7 +588,7 @@ __LISTCOMP: int ARGC = 0; int KWARGC = 0; do { - match_newlines(mode()==SINGLE_MODE); + match_newlines(mode()==REPL_MODE); if (peek() == TK(")")) break; if(peek() == TK("@id") && peek_next() == TK("=")) { consume(TK("@id")); @@ -602,7 +602,7 @@ __LISTCOMP: EXPR(); ARGC++; } - match_newlines(mode()==SINGLE_MODE); + match_newlines(mode()==REPL_MODE); } while (match(TK(","))); consume(TK(")")); emit(OP_CALL, (KWARGC << 16) | ARGC); @@ -654,7 +654,7 @@ __LISTCOMP: } void exprValue() { - _TokenType op = parser->prev.type; + TokenIndex op = parser->prev.type; switch (op) { case TK("None"): emit(OP_LOAD_NONE); break; case TK("True"): emit(OP_LOAD_TRUE); break; @@ -682,7 +682,7 @@ __LISTCOMP: void compile_block_body(CompilerAction action=nullptr) { if(action == nullptr) action = &Compiler::compile_stmt; consume(TK(":")); - if(!match_newlines(mode()==SINGLE_MODE)){ + if(!match_newlines(mode()==REPL_MODE)){ SyntaxError("expected a new line after ':'"); } consume(TK("@indent")); @@ -744,7 +744,7 @@ __LISTCOMP: (this->*prefix)(); while (rules[peek()].precedence >= precedence) { lex_token(); - _TokenType op = parser->prev.type; + TokenIndex op = parser->prev.type; GrammarFn infix = rules[op].infix; if(infix == nullptr) throw std::runtime_error("(infix == nullptr) is true"); (this->*infix)(); @@ -914,7 +914,7 @@ __LISTCOMP: // If last op is not an assignment, pop the result. uint8_t last_op = co()->co_code.back().op; if( last_op!=OP_STORE_NAME && last_op!=OP_STORE_REF){ - if(mode()==SINGLE_MODE && parser->indents.top()==0) emit(OP_PRINT_EXPR, -1, true); + if(mode()==REPL_MODE && parser->indents.top()==0) emit(OP_PRINT_EXPR, -1, true); emit(OP_POP_TOP, -1, true); } } diff --git a/src/error.h b/src/error.h index 91369578..d17f295e 100644 --- a/src/error.h +++ b/src/error.h @@ -3,8 +3,8 @@ #include "safestl.h" struct NeedMoreLines { - NeedMoreLines(bool isClassDef) : isClassDef(isClassDef) {} - bool isClassDef; + NeedMoreLines(bool is_compiling_class) : is_compiling_class(is_compiling_class) {} + bool is_compiling_class; }; struct HandledException {}; @@ -14,21 +14,21 @@ struct ToBeRaisedException {}; enum CompileMode { EXEC_MODE, EVAL_MODE, - SINGLE_MODE, // for REPL + REPL_MODE, JSON_MODE, }; struct SourceData { const char* source; _Str filename; - std::vector lineStarts; + std::vector line_starts; CompileMode mode; - std::pair getLine(int lineno) const { + std::pair get_line(int lineno) const { if(lineno == -1) return {nullptr, nullptr}; lineno -= 1; if(lineno < 0) lineno = 0; - const char* _start = lineStarts.at(lineno); + const char* _start = line_starts.at(lineno); const char* i = _start; while(*i != '\n' && *i != '\0') i++; return {_start, i}; @@ -40,32 +40,30 @@ struct SourceData { if (strncmp(source, "\xEF\xBB\xBF", 3) == 0) source += 3; this->filename = filename; this->source = source; - lineStarts.push_back(source); + line_starts.push_back(source); this->mode = mode; } _Str snapshot(int lineno, const char* cursor=nullptr){ _StrStream ss; ss << " " << "File \"" << filename << "\", line " << lineno << '\n'; - std::pair pair = getLine(lineno); + std::pair pair = get_line(lineno); _Str line = ""; - int removedSpaces = 0; + int removed_spaces = 0; if(pair.first && pair.second){ line = _Str(pair.first, pair.second-pair.first).lstrip(); - removedSpaces = pair.second - pair.first - line.size(); + removed_spaces = pair.second - pair.first - line.size(); if(line.empty()) line = ""; } ss << " " << line; if(cursor && line != "" && cursor >= pair.first && cursor <= pair.second){ - auto column = cursor - pair.first - removedSpaces; + auto column = cursor - pair.first - removed_spaces; if(column >= 0) ss << "\n " << std::string(column, ' ') << "^"; } return ss.str(); } - ~SourceData(){ - free((void*)source); - } + ~SourceData() { free((void*)source); } }; class _Exception { diff --git a/src/parser.h b/src/parser.h index 9f67a891..67df2059 100644 --- a/src/parser.h +++ b/src/parser.h @@ -2,9 +2,9 @@ #include "obj.h" -typedef uint8_t _TokenType; +typedef uint8_t TokenIndex; -constexpr const char* __TOKENS[] = { +constexpr const char* kTokens[] = { "@error", "@eof", "@eol", "@sof", ".", ",", ":", ";", "#", "(", ")", "[", "]", "{", "}", "%", "+", "-", "*", "/", "//", "**", "=", ">", "<", "...", "->", @@ -22,11 +22,11 @@ constexpr const char* __TOKENS[] = { "@indent", "@dedent" }; -const _TokenType __TOKENS_LEN = sizeof(__TOKENS) / sizeof(__TOKENS[0]); +const TokenIndex kTokenCount = sizeof(kTokens) / sizeof(kTokens[0]); -constexpr _TokenType TK(const char* const token) { - for(int k=0; k<__TOKENS_LEN; k++){ - const char* i = __TOKENS[k]; +constexpr TokenIndex TK(const char* const token) { + for(int k=0; k __KW_MAP = [](){ - emhash8::HashMap map; - for(int k=__KW_BEGIN; k<=__KW_END; k++) map[__TOKENS[k]] = k; +const emhash8::HashMap __KW_MAP = [](){ + emhash8::HashMap map; + for(int k=kTokenKwBegin; k<=kTokenKwEnd; k++) map[kTokens[k]] = k; return map; }(); struct Token{ - _TokenType type; + TokenIndex type; const char* start; //< Begining of the token in the source. int length; //< Number of chars of the token. @@ -173,7 +173,7 @@ struct Parser { curr_char++; if (c == '\n'){ current_line++; - src->lineStarts.push_back(curr_char); + src->line_starts.push_back(curr_char); } return c; } @@ -266,7 +266,7 @@ struct Parser { return true; } - void set_next_token(_TokenType type, PyVar value=nullptr) { + void set_next_token(TokenIndex type, PyVar value=nullptr) { switch(type){ case TK("{"): case TK("["): case TK("("): brackets_level++; break; case TK(")"): case TK("]"): case TK("}"): brackets_level--; break; @@ -280,7 +280,7 @@ struct Parser { }); } - void set_next_token_2(char c, _TokenType one, _TokenType two) { + void set_next_token_2(char c, TokenIndex one, TokenIndex two) { if (matchchar(c)) set_next_token(two); else set_next_token(one); } diff --git a/src/pocketpy.h b/src/pocketpy.h index 4cd4d90d..71a7d9b5 100644 --- a/src/pocketpy.h +++ b/src/pocketpy.h @@ -82,7 +82,7 @@ void init_builtins(VM* _vm) { _vm->bind_builtin_func<1>("repr", CPP_LAMBDA(vm->asRepr(args[0]))); _vm->bind_builtin_func<1>("hash", CPP_LAMBDA(vm->PyInt(vm->hash(args[0])))); - _vm->bind_builtin_func<1>("len", CPP_LAMBDA(vm->call(args[0], __len__, pkpy::noArg()))); + _vm->bind_builtin_func<1>("len", CPP_LAMBDA(vm->call(args[0], __len__, pkpy::no_arg()))); _vm->bind_builtin_func<1>("chr", [](VM* vm, const pkpy::Args& args) { i64 i = vm->PyInt_AS_C(args[0]); diff --git a/src/repl.h b/src/repl.h index baca490f..85c1354b 100644 --- a/src/repl.h +++ b/src/repl.h @@ -16,21 +16,21 @@ public: } bool input(std::string line){ - CompileMode mode = SINGLE_MODE; + CompileMode mode = REPL_MODE; if(need_more_lines){ buffer += line; buffer += '\n'; int n = buffer.size(); if(n>=need_more_lines){ for(int i=buffer.size()-need_more_lines; i PyVarDict; namespace pkpy { const int kMaxPoolSize = 10; - static thread_local std::vector* _poolArgs = new std::vector[kMaxPoolSize]; + static thread_local std::vector* _args_pool = new std::vector[kMaxPoolSize]; class Args { PyVar* _args; int _size; - void __tryAlloc(size_t n){ + void _alloc(int n){ if(n == 0){ this->_args = nullptr; this->_size = 0; return; } - if(n >= kMaxPoolSize || _poolArgs[n].empty()){ + if(n >= kMaxPoolSize || _args_pool[n].empty()){ this->_args = new PyVar[n]; this->_size = n; }else{ - this->_args = _poolArgs[n].back(); + this->_args = _args_pool[n].back(); this->_size = n; - _poolArgs[n].pop_back(); + _args_pool[n].pop_back(); } } - void __tryRelease(){ + void _release(){ if(_size == 0 || _args == nullptr) return; - if(_size >= kMaxPoolSize || _poolArgs[_size].size() > 32){ + if(_size >= kMaxPoolSize || _args_pool[_size].size() > 32){ delete[] _args; }else{ for(int i = 0; i < _size; i++) _args[i].reset(); - _poolArgs[_size].push_back(_args); + _args_pool[_size].push_back(_args); } } public: - Args(size_t n){ __tryAlloc(n); } + Args(int n){ _alloc(n); } Args(const Args& other){ - __tryAlloc(other._size); + _alloc(other._size); for(int i=0; i<_size; i++) _args[i] = other._args[i]; } @@ -84,7 +84,7 @@ namespace pkpy { } Args(PyVarList&& other) noexcept { - __tryAlloc(other.size()); + _alloc(other.size()); for(int i=0; i<_size; i++) _args[i] = std::move(other[i]); other.clear(); } @@ -93,7 +93,7 @@ namespace pkpy { const PyVar& operator[](int i) const { return _args[i]; } Args& operator=(Args&& other) noexcept { - __tryRelease(); + _release(); this->_args = other._args; this->_size = other._size; other._args = nullptr; @@ -103,7 +103,7 @@ namespace pkpy { inline int size() const { return _size; } - PyVarList toList() const { + PyVarList to_list() const { PyVarList ret(_size); for(int i=0; i<_size; i++) ret[i] = _args[i]; return ret; @@ -113,36 +113,36 @@ namespace pkpy { static_assert(std::is_standard_layout_v); PyVar* old_args = _args; int old_size = _size; - __tryAlloc(old_size+1); + _alloc(old_size+1); _args[0] = self; if(old_size == 0) return; memcpy((void*)(_args+1), (void*)old_args, sizeof(PyVar)*old_size); memset((void*)old_args, 0, sizeof(PyVar)*old_size); - if(old_size >= kMaxPoolSize || _poolArgs[old_size].size() > 32){ + if(old_size >= kMaxPoolSize || _args_pool[old_size].size() > 32){ delete[] old_args; }else{ - _poolArgs[old_size].push_back(old_args); + _args_pool[old_size].push_back(old_args); } } - ~Args(){ __tryRelease(); } + ~Args(){ _release(); } }; - const Args& noArg(){ + const Args& no_arg(){ static const Args ret(0); return ret; } template - Args oneArg(T&& a) { + Args one_arg(T&& a) { Args ret(1); ret[0] = std::forward(a); return ret; } template - Args twoArgs(T1&& a, T2&& b) { + Args two_args(T1&& a, T2&& b) { Args ret(2); ret[0] = std::forward(a); ret[1] = std::forward(b); diff --git a/src/str.h b/src/str.h index 66077dd3..0efdd119 100644 --- a/src/str.h +++ b/src/str.h @@ -181,13 +181,13 @@ const _Str BITWISE_SPECIAL_METHODS[] = { "__lshift__", "__rshift__", "__and__", "__or__", "__xor__" }; -const uint32_t __LoRangeA[] = {170,186,443,448,660,1488,1519,1568,1601,1646,1649,1749,1774,1786,1791,1808,1810,1869,1969,1994,2048,2112,2144,2208,2230,2308,2365,2384,2392,2418,2437,2447,2451,2474,2482,2486,2493,2510,2524,2527,2544,2556,2565,2575,2579,2602,2610,2613,2616,2649,2654,2674,2693,2703,2707,2730,2738,2741,2749,2768,2784,2809,2821,2831,2835,2858,2866,2869,2877,2908,2911,2929,2947,2949,2958,2962,2969,2972,2974,2979,2984,2990,3024,3077,3086,3090,3114,3133,3160,3168,3200,3205,3214,3218,3242,3253,3261,3294,3296,3313,3333,3342,3346,3389,3406,3412,3423,3450,3461,3482,3507,3517,3520,3585,3634,3648,3713,3716,3718,3724,3749,3751,3762,3773,3776,3804,3840,3904,3913,3976,4096,4159,4176,4186,4193,4197,4206,4213,4238,4352,4682,4688,4696,4698,4704,4746,4752,4786,4792,4800,4802,4808,4824,4882,4888,4992,5121,5743,5761,5792,5873,5888,5902,5920,5952,5984,5998,6016,6108,6176,6212,6272,6279,6314,6320,6400,6480,6512,6528,6576,6656,6688,6917,6981,7043,7086,7098,7168,7245,7258,7401,7406,7413,7418,8501,11568,11648,11680,11688,11696,11704,11712,11720,11728,11736,12294,12348,12353,12447,12449,12543,12549,12593,12704,12784,13312,19968,40960,40982,42192,42240,42512,42538,42606,42656,42895,42999,43003,43011,43015,43020,43072,43138,43250,43259,43261,43274,43312,43360,43396,43488,43495,43514,43520,43584,43588,43616,43633,43642,43646,43697,43701,43705,43712,43714,43739,43744,43762,43777,43785,43793,43808,43816,43968,44032,55216,55243,63744,64112,64285,64287,64298,64312,64318,64320,64323,64326,64467,64848,64914,65008,65136,65142,65382,65393,65440,65474,65482,65490,65498,65536,65549,65576,65596,65599,65616,65664,66176,66208,66304,66349,66370,66384,66432,66464,66504,66640,66816,66864,67072,67392,67424,67584,67592,67594,67639,67644,67647,67680,67712,67808,67828,67840,67872,67968,68030,68096,68112,68117,68121,68192,68224,68288,68297,68352,68416,68448,68480,68608,68864,69376,69415,69424,69600,69635,69763,69840,69891,69956,69968,70006,70019,70081,70106,70108,70144,70163,70272,70280,70282,70287,70303,70320,70405,70415,70419,70442,70450,70453,70461,70480,70493,70656,70727,70751,70784,70852,70855,71040,71128,71168,71236,71296,71352,71424,71680,71935,72096,72106,72161,72163,72192,72203,72250,72272,72284,72349,72384,72704,72714,72768,72818,72960,72968,72971,73030,73056,73063,73066,73112,73440,73728,74880,77824,82944,92160,92736,92880,92928,93027,93053,93952,94032,94208,100352,110592,110928,110948,110960,113664,113776,113792,113808,123136,123214,123584,124928,126464,126469,126497,126500,126503,126505,126516,126521,126523,126530,126535,126537,126539,126541,126545,126548,126551,126553,126555,126557,126559,126561,126564,126567,126572,126580,126585,126590,126592,126603,126625,126629,126635,131072,173824,177984,178208,183984,194560}; -const uint32_t __LoRangeB[] = {170,186,443,451,660,1514,1522,1599,1610,1647,1747,1749,1775,1788,1791,1808,1839,1957,1969,2026,2069,2136,2154,2228,2237,2361,2365,2384,2401,2432,2444,2448,2472,2480,2482,2489,2493,2510,2525,2529,2545,2556,2570,2576,2600,2608,2611,2614,2617,2652,2654,2676,2701,2705,2728,2736,2739,2745,2749,2768,2785,2809,2828,2832,2856,2864,2867,2873,2877,2909,2913,2929,2947,2954,2960,2965,2970,2972,2975,2980,2986,3001,3024,3084,3088,3112,3129,3133,3162,3169,3200,3212,3216,3240,3251,3257,3261,3294,3297,3314,3340,3344,3386,3389,3406,3414,3425,3455,3478,3505,3515,3517,3526,3632,3635,3653,3714,3716,3722,3747,3749,3760,3763,3773,3780,3807,3840,3911,3948,3980,4138,4159,4181,4189,4193,4198,4208,4225,4238,4680,4685,4694,4696,4701,4744,4749,4784,4789,4798,4800,4805,4822,4880,4885,4954,5007,5740,5759,5786,5866,5880,5900,5905,5937,5969,5996,6000,6067,6108,6210,6264,6276,6312,6314,6389,6430,6509,6516,6571,6601,6678,6740,6963,6987,7072,7087,7141,7203,7247,7287,7404,7411,7414,7418,8504,11623,11670,11686,11694,11702,11710,11718,11726,11734,11742,12294,12348,12438,12447,12538,12543,12591,12686,12730,12799,19893,40943,40980,42124,42231,42507,42527,42539,42606,42725,42895,42999,43009,43013,43018,43042,43123,43187,43255,43259,43262,43301,43334,43388,43442,43492,43503,43518,43560,43586,43595,43631,43638,43642,43695,43697,43702,43709,43712,43714,43740,43754,43762,43782,43790,43798,43814,43822,44002,55203,55238,55291,64109,64217,64285,64296,64310,64316,64318,64321,64324,64433,64829,64911,64967,65019,65140,65276,65391,65437,65470,65479,65487,65495,65500,65547,65574,65594,65597,65613,65629,65786,66204,66256,66335,66368,66377,66421,66461,66499,66511,66717,66855,66915,67382,67413,67431,67589,67592,67637,67640,67644,67669,67702,67742,67826,67829,67861,67897,68023,68031,68096,68115,68119,68149,68220,68252,68295,68324,68405,68437,68466,68497,68680,68899,69404,69415,69445,69622,69687,69807,69864,69926,69956,70002,70006,70066,70084,70106,70108,70161,70187,70278,70280,70285,70301,70312,70366,70412,70416,70440,70448,70451,70457,70461,70480,70497,70708,70730,70751,70831,70853,70855,71086,71131,71215,71236,71338,71352,71450,71723,71935,72103,72144,72161,72163,72192,72242,72250,72272,72329,72349,72440,72712,72750,72768,72847,72966,72969,73008,73030,73061,73064,73097,73112,73458,74649,75075,78894,83526,92728,92766,92909,92975,93047,93071,94026,94032,100343,101106,110878,110930,110951,111355,113770,113788,113800,113817,123180,123214,123627,125124,126467,126495,126498,126500,126503,126514,126519,126521,126523,126530,126535,126537,126539,126543,126546,126548,126551,126553,126555,126557,126559,126562,126564,126570,126578,126583,126588,126590,126601,126619,126627,126633,126651,173782,177972,178205,183969,191456,195101}; +const uint32_t kLoRangeA[] = {170,186,443,448,660,1488,1519,1568,1601,1646,1649,1749,1774,1786,1791,1808,1810,1869,1969,1994,2048,2112,2144,2208,2230,2308,2365,2384,2392,2418,2437,2447,2451,2474,2482,2486,2493,2510,2524,2527,2544,2556,2565,2575,2579,2602,2610,2613,2616,2649,2654,2674,2693,2703,2707,2730,2738,2741,2749,2768,2784,2809,2821,2831,2835,2858,2866,2869,2877,2908,2911,2929,2947,2949,2958,2962,2969,2972,2974,2979,2984,2990,3024,3077,3086,3090,3114,3133,3160,3168,3200,3205,3214,3218,3242,3253,3261,3294,3296,3313,3333,3342,3346,3389,3406,3412,3423,3450,3461,3482,3507,3517,3520,3585,3634,3648,3713,3716,3718,3724,3749,3751,3762,3773,3776,3804,3840,3904,3913,3976,4096,4159,4176,4186,4193,4197,4206,4213,4238,4352,4682,4688,4696,4698,4704,4746,4752,4786,4792,4800,4802,4808,4824,4882,4888,4992,5121,5743,5761,5792,5873,5888,5902,5920,5952,5984,5998,6016,6108,6176,6212,6272,6279,6314,6320,6400,6480,6512,6528,6576,6656,6688,6917,6981,7043,7086,7098,7168,7245,7258,7401,7406,7413,7418,8501,11568,11648,11680,11688,11696,11704,11712,11720,11728,11736,12294,12348,12353,12447,12449,12543,12549,12593,12704,12784,13312,19968,40960,40982,42192,42240,42512,42538,42606,42656,42895,42999,43003,43011,43015,43020,43072,43138,43250,43259,43261,43274,43312,43360,43396,43488,43495,43514,43520,43584,43588,43616,43633,43642,43646,43697,43701,43705,43712,43714,43739,43744,43762,43777,43785,43793,43808,43816,43968,44032,55216,55243,63744,64112,64285,64287,64298,64312,64318,64320,64323,64326,64467,64848,64914,65008,65136,65142,65382,65393,65440,65474,65482,65490,65498,65536,65549,65576,65596,65599,65616,65664,66176,66208,66304,66349,66370,66384,66432,66464,66504,66640,66816,66864,67072,67392,67424,67584,67592,67594,67639,67644,67647,67680,67712,67808,67828,67840,67872,67968,68030,68096,68112,68117,68121,68192,68224,68288,68297,68352,68416,68448,68480,68608,68864,69376,69415,69424,69600,69635,69763,69840,69891,69956,69968,70006,70019,70081,70106,70108,70144,70163,70272,70280,70282,70287,70303,70320,70405,70415,70419,70442,70450,70453,70461,70480,70493,70656,70727,70751,70784,70852,70855,71040,71128,71168,71236,71296,71352,71424,71680,71935,72096,72106,72161,72163,72192,72203,72250,72272,72284,72349,72384,72704,72714,72768,72818,72960,72968,72971,73030,73056,73063,73066,73112,73440,73728,74880,77824,82944,92160,92736,92880,92928,93027,93053,93952,94032,94208,100352,110592,110928,110948,110960,113664,113776,113792,113808,123136,123214,123584,124928,126464,126469,126497,126500,126503,126505,126516,126521,126523,126530,126535,126537,126539,126541,126545,126548,126551,126553,126555,126557,126559,126561,126564,126567,126572,126580,126585,126590,126592,126603,126625,126629,126635,131072,173824,177984,178208,183984,194560}; +const uint32_t kLoRangeB[] = {170,186,443,451,660,1514,1522,1599,1610,1647,1747,1749,1775,1788,1791,1808,1839,1957,1969,2026,2069,2136,2154,2228,2237,2361,2365,2384,2401,2432,2444,2448,2472,2480,2482,2489,2493,2510,2525,2529,2545,2556,2570,2576,2600,2608,2611,2614,2617,2652,2654,2676,2701,2705,2728,2736,2739,2745,2749,2768,2785,2809,2828,2832,2856,2864,2867,2873,2877,2909,2913,2929,2947,2954,2960,2965,2970,2972,2975,2980,2986,3001,3024,3084,3088,3112,3129,3133,3162,3169,3200,3212,3216,3240,3251,3257,3261,3294,3297,3314,3340,3344,3386,3389,3406,3414,3425,3455,3478,3505,3515,3517,3526,3632,3635,3653,3714,3716,3722,3747,3749,3760,3763,3773,3780,3807,3840,3911,3948,3980,4138,4159,4181,4189,4193,4198,4208,4225,4238,4680,4685,4694,4696,4701,4744,4749,4784,4789,4798,4800,4805,4822,4880,4885,4954,5007,5740,5759,5786,5866,5880,5900,5905,5937,5969,5996,6000,6067,6108,6210,6264,6276,6312,6314,6389,6430,6509,6516,6571,6601,6678,6740,6963,6987,7072,7087,7141,7203,7247,7287,7404,7411,7414,7418,8504,11623,11670,11686,11694,11702,11710,11718,11726,11734,11742,12294,12348,12438,12447,12538,12543,12591,12686,12730,12799,19893,40943,40980,42124,42231,42507,42527,42539,42606,42725,42895,42999,43009,43013,43018,43042,43123,43187,43255,43259,43262,43301,43334,43388,43442,43492,43503,43518,43560,43586,43595,43631,43638,43642,43695,43697,43702,43709,43712,43714,43740,43754,43762,43782,43790,43798,43814,43822,44002,55203,55238,55291,64109,64217,64285,64296,64310,64316,64318,64321,64324,64433,64829,64911,64967,65019,65140,65276,65391,65437,65470,65479,65487,65495,65500,65547,65574,65594,65597,65613,65629,65786,66204,66256,66335,66368,66377,66421,66461,66499,66511,66717,66855,66915,67382,67413,67431,67589,67592,67637,67640,67644,67669,67702,67742,67826,67829,67861,67897,68023,68031,68096,68115,68119,68149,68220,68252,68295,68324,68405,68437,68466,68497,68680,68899,69404,69415,69445,69622,69687,69807,69864,69926,69956,70002,70006,70066,70084,70106,70108,70161,70187,70278,70280,70285,70301,70312,70366,70412,70416,70440,70448,70451,70457,70461,70480,70497,70708,70730,70751,70831,70853,70855,71086,71131,71215,71236,71338,71352,71450,71723,71935,72103,72144,72161,72163,72192,72242,72250,72272,72329,72349,72440,72712,72750,72768,72847,72966,72969,73008,73030,73061,73064,73097,73112,73458,74649,75075,78894,83526,92728,92766,92909,92975,93047,93071,94026,94032,100343,101106,110878,110930,110951,111355,113770,113788,113800,113817,123180,123214,123627,125124,126467,126495,126498,126500,126503,126514,126519,126521,126523,126530,126535,126537,126539,126543,126546,126548,126551,126553,126555,126557,126559,126562,126564,126570,126578,126583,126588,126590,126601,126619,126627,126633,126651,173782,177972,178205,183969,191456,195101}; bool is_unicode_Lo_char(uint32_t c) { - auto index = std::lower_bound(__LoRangeA, __LoRangeA + 476, c) - __LoRangeA; - if(c == __LoRangeA[index]) return true; + auto index = std::lower_bound(kLoRangeA, kLoRangeA + 476, c) - kLoRangeA; + if(c == kLoRangeA[index]) return true; index -= 1; if(index < 0) return false; - return c >= __LoRangeA[index] && c <= __LoRangeB[index]; + return c >= kLoRangeA[index] && c <= kLoRangeB[index]; } diff --git a/src/vm.h b/src/vm.h index 62719647..d16614b7 100644 --- a/src/vm.h +++ b/src/vm.h @@ -75,14 +75,14 @@ class VM { for(int i=0; iis_type(_tp_ref)) { done = true; - PyVarList values = items.toList(); + PyVarList values = items.to_list(); for(int j=i; jtry_deref(this, values[j]); frame->push(PyTuple(values)); break; } } if(done) break; - frame->push(PyRef(TupleRef(items.toList()))); + frame->push(PyRef(TupleRef(items.to_list()))); } break; case OP_BUILD_STRING: { @@ -161,7 +161,7 @@ class VM { case OP_CONTAINS_OP: { PyVar rhs = frame->pop_value(this); - bool ret_c = PyBool_AS_C(call(rhs, __contains__, pkpy::oneArg(frame->pop_value(this)))); + bool ret_c = PyBool_AS_C(call(rhs, __contains__, pkpy::one_arg(frame->pop_value(this)))); if(byte.arg == 1) ret_c = !ret_c; frame->push(PyBool(ret_c)); } break; @@ -202,23 +202,23 @@ class VM { case OP_RE_RAISE: _raise(); break; case OP_BUILD_LIST: frame->push(PyList( - frame->pop_n_values_reversed(this, byte.arg).toList())); + frame->pop_n_values_reversed(this, byte.arg).to_list())); break; case OP_BUILD_MAP: { pkpy::Args items = frame->pop_n_values_reversed(this, byte.arg*2); PyVar obj = call(builtins->attribs["dict"]); for(int i=0; ipush(obj); } break; case OP_BUILD_SET: { PyVar list = PyList( - frame->pop_n_values_reversed(this, byte.arg).toList() + frame->pop_n_values_reversed(this, byte.arg).to_list() ); - PyVar obj = call(builtins->attribs["set"], pkpy::oneArg(list)); + PyVar obj = call(builtins->attribs["set"], pkpy::one_arg(list)); frame->push(obj); } break; case OP_DUP_TOP: frame->push(frame->top_value(this)); break; @@ -411,23 +411,23 @@ public: } inline PyVar call(const PyVar& _callable){ - return call(_callable, pkpy::noArg(), pkpy::noArg(), false); + return call(_callable, pkpy::no_arg(), pkpy::no_arg(), false); } template inline std::enable_if_t>, pkpy::Args>, PyVar> call(const PyVar& _callable, ArgT&& args){ - return call(_callable, std::forward(args), pkpy::noArg(), false); + return call(_callable, std::forward(args), pkpy::no_arg(), false); } template inline std::enable_if_t>, pkpy::Args>, PyVar> call(const PyVar& obj, const _Str& func, ArgT&& args){ - return call(getattr(obj, func), std::forward(args), pkpy::noArg(), false); + return call(getattr(obj, func), std::forward(args), pkpy::no_arg(), false); } inline PyVar call(const PyVar& obj, const _Str& func){ - return call(getattr(obj, func), pkpy::noArg(), pkpy::noArg(), false); + return call(getattr(obj, func), pkpy::no_arg(), pkpy::no_arg(), false); } PyVar call(const PyVar& _callable, pkpy::Args args, const pkpy::Args& kwargs, bool opCall){ @@ -1028,15 +1028,15 @@ void AttrRef::del(VM* vm, Frame* frame) const{ } PyVar IndexRef::get(VM* vm, Frame* frame) const{ - return vm->call(obj, __getitem__, pkpy::oneArg(index)); + return vm->call(obj, __getitem__, pkpy::one_arg(index)); } void IndexRef::set(VM* vm, Frame* frame, PyVar val) const{ - vm->call(obj, __setitem__, pkpy::twoArgs(index, val)); + vm->call(obj, __setitem__, pkpy::two_args(index, val)); } void IndexRef::del(VM* vm, Frame* frame) const{ - vm->call(obj, __delitem__, pkpy::oneArg(index)); + vm->call(obj, __delitem__, pkpy::one_arg(index)); } PyVar TupleRef::get(VM* vm, Frame* frame) const{