a lot of rename

This commit is contained in:
blueloveTH 2024-07-02 00:55:14 +08:00
parent bb2dfe61dc
commit 9c7d1c5fe1
14 changed files with 122 additions and 122 deletions

View File

@ -17,11 +17,11 @@ extern "C" {
#define SMALLMAP_T__HEADER #define SMALLMAP_T__HEADER
#define K c11_stringview #define K c11_sv
#define V uint16_t #define V uint16_t
#define NAME c11_smallmap_s2n #define NAME c11_smallmap_s2n
#define less(a, b) (c11_string__cmp((a), (b)) < 0) #define less(a, b) (c11_sv__cmp((a), (b)) < 0)
#define equal(a, b) (c11_string__cmp((a), (b)) == 0) #define equal(a, b) (c11_sv__cmp((a), (b)) == 0)
#include "pocketpy/xmacros/smallmap.h" #include "pocketpy/xmacros/smallmap.h"
#undef SMALLMAP_T__HEADER #undef SMALLMAP_T__HEADER

View File

@ -21,7 +21,7 @@ void pk_SStream__write_int(pk_SStream* self, int);
void pk_SStream__write_i64(pk_SStream* self, int64_t); void pk_SStream__write_i64(pk_SStream* self, int64_t);
void pk_SStream__write_f64(pk_SStream* self, double, int precision); void pk_SStream__write_f64(pk_SStream* self, double, int precision);
void pk_SStream__write_char(pk_SStream* self, char); void pk_SStream__write_char(pk_SStream* self, char);
void pk_SStream__write_sv(pk_SStream* self, c11_stringview); void pk_SStream__write_sv(pk_SStream* self, c11_sv);
void pk_SStream__write_cstr(pk_SStream* self, const char*); void pk_SStream__write_cstr(pk_SStream* self, const char*);
void pk_SStream__write_cstrn(pk_SStream* self, const char*, int); void pk_SStream__write_cstrn(pk_SStream* self, const char*, int);
void pk_SStream__write_hex(pk_SStream* self, unsigned char, bool non_zero); void pk_SStream__write_hex(pk_SStream* self, unsigned char, bool non_zero);

View File

@ -10,14 +10,14 @@ extern "C" {
#endif #endif
/* string_view */ /* string_view */
typedef struct c11_stringview{ typedef struct c11_sv{
const char* data; const char* data;
int size; int size;
} c11_stringview; } c11_sv;
int c11_string__cmp(c11_stringview self, c11_stringview other); int c11_sv__cmp(c11_sv self, c11_sv other);
int c11_string__cmp2(c11_stringview self, const char* other, int size); int c11_sv__cmp2(c11_sv self, const char* other, int size);
int c11_string__cmp3(c11_stringview self, const char* other); int c11_sv__cmp3(c11_sv self, const char* other);
// int size | char[] | '\0' // int size | char[] | '\0'
typedef const char c11_string; typedef const char c11_string;
@ -27,26 +27,26 @@ c11_string* c11_string__new2(const char* data, int size);
c11_string* c11_string__copy(c11_string* self); c11_string* c11_string__copy(c11_string* self);
void c11_string__delete(c11_string* self); void c11_string__delete(c11_string* self);
int c11_string__len(c11_string* self); int c11_string__len(c11_string* self);
c11_stringview c11_string__view(c11_string* self); c11_sv c11_string__view(c11_string* self);
c11_string* c11_string__replace(c11_string* self, char old, char new_); c11_string* c11_string__replace(c11_string* self, char old, char new_);
int c11_string__u8_length(const c11_string* self); int c11_string__u8_length(const c11_string* self);
c11_stringview c11_string__u8_getitem(c11_string* self, int i); c11_sv c11_string__u8_getitem(c11_string* self, int i);
c11_string* c11_string__u8_slice(c11_string* self, int start, int stop, int step); c11_string* c11_string__u8_slice(c11_string* self, int start, int stop, int step);
// general string operations // general string operations
void c11_sv__quote(c11_stringview sv, char quote, c11_vector* buf); void c11_sv__quote(c11_sv sv, char quote, c11_vector* buf);
void c11_sv__lower(c11_stringview sv, c11_vector* buf); void c11_sv__lower(c11_sv sv, c11_vector* buf);
void c11_sv__upper(c11_stringview sv, c11_vector* buf); void c11_sv__upper(c11_sv sv, c11_vector* buf);
c11_stringview c11_sv__slice(c11_stringview sv, int start); c11_sv c11_sv__slice(c11_sv sv, int start);
c11_stringview c11_sv__slice2(c11_stringview sv, int start, int stop); c11_sv c11_sv__slice2(c11_sv sv, int start, int stop);
c11_stringview c11_sv__strip(c11_stringview sv, bool left, bool right); c11_sv c11_sv__strip(c11_sv sv, bool left, bool right);
int c11_sv__index(c11_stringview self, char c); int c11_sv__index(c11_sv self, char c);
int c11_sv__index2(c11_stringview self, c11_stringview sub, int start); int c11_sv__index2(c11_sv self, c11_sv sub, int start);
int c11_sv__count(c11_stringview self, c11_stringview sub); int c11_sv__count(c11_sv self, c11_sv sub);
c11_vector/* T=c11_stringview */ c11_sv__split(c11_stringview self, char sep); c11_vector/* T=c11_sv */ c11_sv__split(c11_sv self, char sep);
c11_vector/* T=c11_stringview */ c11_sv__split2(c11_stringview self, c11_stringview sep); c11_vector/* T=c11_sv */ c11_sv__split2(c11_sv self, c11_sv sep);
// misc // misc
int c11__unicode_index_to_byte(const char* data, int i); int c11__unicode_index_to_byte(const char* data, int i);

View File

@ -11,9 +11,9 @@ extern "C" {
typedef uint16_t StrName; typedef uint16_t StrName;
uint16_t pk_StrName__map(const char*); uint16_t pk_StrName__map(const char*);
uint16_t pk_StrName__map2(c11_stringview); uint16_t pk_StrName__map2(c11_sv);
const char* pk_StrName__rmap(uint16_t index); const char* pk_StrName__rmap(uint16_t index);
c11_stringview pk_StrName__rmap2(uint16_t index); c11_sv pk_StrName__rmap2(uint16_t index);
void pk_StrName__initialize(); void pk_StrName__initialize();
void pk_StrName__finalize(); void pk_StrName__finalize();

View File

@ -93,7 +93,7 @@ typedef enum IntParsingResult{
IntParsing_OVERFLOW, IntParsing_OVERFLOW,
} IntParsingResult; } IntParsingResult;
IntParsingResult parse_uint(c11_stringview text, int64_t* out, int base); IntParsingResult parse_uint(c11_sv text, int64_t* out, int base);
typedef struct Error Error; typedef struct Error Error;
@ -103,7 +103,7 @@ Error* pk_Lexer__process(pk_SourceData_ src, pk_TokenArray* out_tokens);
Error* pk_Lexer__process_and_dump(pk_SourceData_ src, c11_string** out_string); Error* pk_Lexer__process_and_dump(pk_SourceData_ src, c11_string** out_string);
void pk_TokenArray__dtor(pk_TokenArray* self); void pk_TokenArray__dtor(pk_TokenArray* self);
#define Token__sv(self) (c11_stringview){(self)->start, (self)->length} #define Token__sv(self) (c11_sv){(self)->start, (self)->length}
#ifdef __cplusplus #ifdef __cplusplus
} }

View File

@ -87,7 +87,7 @@ typedef struct CodeObject {
int end_line; int end_line;
} CodeObject; } CodeObject;
void CodeObject__ctor(CodeObject* self, pk_SourceData_ src, c11_stringview name); void CodeObject__ctor(CodeObject* self, pk_SourceData_ src, c11_sv name);
void CodeObject__dtor(CodeObject* self); void CodeObject__dtor(CodeObject* self);
void CodeObject__gc_mark(const CodeObject* self); void CodeObject__gc_mark(const CodeObject* self);
@ -116,7 +116,7 @@ typedef struct FuncDecl {
typedef FuncDecl* FuncDecl_; typedef FuncDecl* FuncDecl_;
FuncDecl_ FuncDecl__rcnew(pk_SourceData_ src, c11_stringview name); FuncDecl_ FuncDecl__rcnew(pk_SourceData_ src, c11_sv name);
void FuncDecl__dtor(FuncDecl* self); void FuncDecl__dtor(FuncDecl* self);
void FuncDecl__add_kwarg(FuncDecl* self, int index, uint16_t key, const py_TValue* value); void FuncDecl__add_kwarg(FuncDecl* self, int index, uint16_t key, const py_TValue* value);
void FuncDecl__gc_mark(const FuncDecl* self); void FuncDecl__gc_mark(const FuncDecl* self);

View File

@ -9,10 +9,10 @@
#define SMALLMAP_T__SOURCE #define SMALLMAP_T__SOURCE
#define K c11_stringview #define K c11_sv
#define V uint16_t #define V uint16_t
#define NAME c11_smallmap_s2n #define NAME c11_smallmap_s2n
#define less(a, b) (c11_string__cmp((a), (b)) < 0) #define less(a, b) (c11_sv__cmp((a), (b)) < 0)
#define equal(a, b) (c11_string__cmp((a), (b)) == 0) #define equal(a, b) (c11_sv__cmp((a), (b)) == 0)
#include "pocketpy/xmacros/smallmap.h" #include "pocketpy/xmacros/smallmap.h"
#undef SMALLMAP_T__SOURCE #undef SMALLMAP_T__SOURCE

View File

@ -64,7 +64,7 @@ void pk_SStream__write_f64(pk_SStream* self, double val, int precision) {
if(all_is_digit) pk_SStream__write_cstr(self, ".0"); if(all_is_digit) pk_SStream__write_cstr(self, ".0");
} }
void pk_SStream__write_sv(pk_SStream* self, c11_stringview sv) { void pk_SStream__write_sv(pk_SStream* self, c11_sv sv) {
pk_SStream__write_cstrn(self, sv.data, sv.size); pk_SStream__write_cstrn(self, sv.data, sv.size);
} }
@ -146,7 +146,7 @@ void pk_vsprintf(pk_SStream* ss, const char* fmt, va_list args) {
} }
case 'q': { case 'q': {
const char* s = va_arg(args, const char*); const char* s = va_arg(args, const char*);
c11_stringview sv = {s, strlen(s)}; c11_sv sv = {s, strlen(s)};
c11_sv__quote(sv, '\'', &ss->data); c11_sv__quote(sv, '\'', &ss->data);
break; break;
} }

View File

@ -36,9 +36,9 @@ int c11_string__len(c11_string* self) {
return *p; return *p;
} }
c11_stringview c11_string__view(c11_string* self) { c11_sv c11_string__view(c11_string* self) {
int* p = (int*)self - 1; int* p = (int*)self - 1;
return (c11_stringview){self, *p}; return (c11_sv){self, *p};
} }
c11_string* c11_string__replace(c11_string* self, char old, char new_) { c11_string* c11_string__replace(c11_string* self, char old, char new_) {
@ -56,7 +56,7 @@ int c11_string__u8_length(c11_string* self) {
return c11__byte_index_to_unicode(self, size); return c11__byte_index_to_unicode(self, size);
} }
c11_stringview c11_string__u8_getitem(c11_string* self, int i) { c11_sv c11_string__u8_getitem(c11_string* self, int i) {
i = c11__unicode_index_to_byte(self, i); i = c11__unicode_index_to_byte(self, i);
int size = c11__u8_header(self[i], false); int size = c11__u8_header(self[i], false);
return c11_sv__slice2(c11_string__view(self), i, i + size); return c11_sv__slice2(c11_string__view(self), i, i + size);
@ -67,14 +67,14 @@ c11_string* c11_string__u8_slice(c11_string* self, int start, int stop, int step
pk_SStream__ctor(&ss); pk_SStream__ctor(&ss);
assert(step != 0); assert(step != 0);
for(int i = start; step > 0 ? i < stop : i > stop; i += step) { for(int i = start; step > 0 ? i < stop : i > stop; i += step) {
c11_stringview unicode = c11_string__u8_getitem(self, i); c11_sv unicode = c11_string__u8_getitem(self, i);
pk_SStream__write_sv(&ss, unicode); pk_SStream__write_sv(&ss, unicode);
} }
return pk_SStream__submit(&ss); return pk_SStream__submit(&ss);
} }
///////////////////////////////////////// /////////////////////////////////////////
void c11_sv__quote(c11_stringview sv, char quote, c11_vector* buf) { void c11_sv__quote(c11_sv sv, char quote, c11_vector* buf) {
assert(quote == '"' || quote == '\''); assert(quote == '"' || quote == '\'');
c11_vector__push(char, buf, quote); c11_vector__push(char, buf, quote);
for(int i = 0; i < sv.size; i++) { for(int i = 0; i < sv.size; i++) {
@ -103,7 +103,7 @@ void c11_sv__quote(c11_stringview sv, char quote, c11_vector* buf) {
c11_vector__push(char, buf, quote); c11_vector__push(char, buf, quote);
} }
void c11_sv__lower(c11_stringview sv, c11_vector* buf) { void c11_sv__lower(c11_sv sv, c11_vector* buf) {
for(int i = 0; i < sv.size; i++) { for(int i = 0; i < sv.size; i++) {
char c = sv.data[i]; char c = sv.data[i];
if('A' <= c && c <= 'Z') c += 32; if('A' <= c && c <= 'Z') c += 32;
@ -111,7 +111,7 @@ void c11_sv__lower(c11_stringview sv, c11_vector* buf) {
} }
} }
void c11_sv__upper(c11_stringview sv, c11_vector* buf) { void c11_sv__upper(c11_sv sv, c11_vector* buf) {
for(int i = 0; i < sv.size; i++) { for(int i = 0; i < sv.size; i++) {
char c = sv.data[i]; char c = sv.data[i];
if('a' <= c && c <= 'z') c -= 32; if('a' <= c && c <= 'z') c -= 32;
@ -119,16 +119,16 @@ void c11_sv__upper(c11_stringview sv, c11_vector* buf) {
} }
} }
c11_stringview c11_sv__slice(c11_stringview sv, int start) { c11_sv c11_sv__slice(c11_sv sv, int start) {
return c11_sv__slice2(sv, start, sv.size); return c11_sv__slice2(sv, start, sv.size);
} }
c11_stringview c11_sv__slice2(c11_stringview sv, int start, int stop) { c11_sv c11_sv__slice2(c11_sv sv, int start, int stop) {
if(stop < start) stop = start; if(stop < start) stop = start;
return (c11_stringview){sv.data + start, stop - start}; return (c11_sv){sv.data + start, stop - start};
} }
c11_stringview c11_sv__strip(c11_stringview sv, bool left, bool right) { c11_sv c11_sv__strip(c11_sv sv, bool left, bool right) {
int L = 0; int L = 0;
int R = sv.size; int R = sv.size;
const char* data = sv.data; const char* data = sv.data;
@ -144,14 +144,14 @@ c11_stringview c11_sv__strip(c11_stringview sv, bool left, bool right) {
return c11_sv__slice2(sv, L, R); return c11_sv__slice2(sv, L, R);
} }
int c11_sv__index(c11_stringview self, char c) { int c11_sv__index(c11_sv self, char c) {
for(int i = 0; i < self.size; i++) { for(int i = 0; i < self.size; i++) {
if(self.data[i] == c) return i; if(self.data[i] == c) return i;
} }
return -1; return -1;
} }
int c11_sv__index2(c11_stringview self, c11_stringview sub, int start) { int c11_sv__index2(c11_sv self, c11_sv sub, int start) {
if(sub.size == 0) return start; if(sub.size == 0) return start;
int max_end = self.size - sub.size; int max_end = self.size - sub.size;
for(int i = start; i <= max_end; i++) { for(int i = start; i <= max_end; i++) {
@ -161,7 +161,7 @@ int c11_sv__index2(c11_stringview self, c11_stringview sub, int start) {
return -1; return -1;
} }
int c11_sv__count(c11_stringview self, c11_stringview sub) { int c11_sv__count(c11_sv self, c11_sv sub) {
if(sub.size == 0) return self.size + 1; if(sub.size == 0) return self.size + 1;
int cnt = 0; int cnt = 0;
int start = 0; int start = 0;
@ -174,42 +174,42 @@ int c11_sv__count(c11_stringview self, c11_stringview sub) {
return cnt; return cnt;
} }
c11_vector /* T=c11_stringview */ c11_sv__split(c11_stringview self, char sep) { c11_vector /* T=c11_sv */ c11_sv__split(c11_sv self, char sep) {
c11_vector retval; c11_vector retval;
c11_vector__ctor(&retval, sizeof(c11_stringview)); c11_vector__ctor(&retval, sizeof(c11_sv));
const char* data = self.data; const char* data = self.data;
int i = 0; int i = 0;
for(int j = 0; j < self.size; j++) { for(int j = 0; j < self.size; j++) {
if(data[j] == sep) { if(data[j] == sep) {
if(j > i) { if(j > i) {
c11_stringview tmp = {data + i, j - i}; c11_sv tmp = {data + i, j - i};
c11_vector__push(c11_stringview, &retval, tmp); c11_vector__push(c11_sv, &retval, tmp);
} }
i = j + 1; i = j + 1;
continue; continue;
} }
} }
if(self.size > i) { if(self.size > i) {
c11_stringview tmp = {data + i, self.size - i}; c11_sv tmp = {data + i, self.size - i};
c11_vector__push(c11_stringview, &retval, tmp); c11_vector__push(c11_sv, &retval, tmp);
} }
return retval; return retval;
} }
c11_vector /* T=c11_stringview */ c11_sv__split2(c11_stringview self, c11_stringview sep) { c11_vector /* T=c11_sv */ c11_sv__split2(c11_sv self, c11_sv sep) {
c11_vector retval; c11_vector retval;
c11_vector__ctor(&retval, sizeof(c11_stringview)); c11_vector__ctor(&retval, sizeof(c11_sv));
int start = 0; int start = 0;
const char* data = self.data; const char* data = self.data;
while(true) { while(true) {
int i = c11_sv__index2(self, sep, start); int i = c11_sv__index2(self, sep, start);
if(i == -1) break; if(i == -1) break;
c11_stringview tmp = {data + start, i - start}; c11_sv tmp = {data + start, i - start};
if(tmp.size != 0) c11_vector__push(c11_stringview, &retval, tmp); if(tmp.size != 0) c11_vector__push(c11_sv, &retval, tmp);
start = i + sep.size; start = i + sep.size;
} }
c11_stringview tmp = {data + start, self.size - start}; c11_sv tmp = {data + start, self.size - start};
if(tmp.size != 0) c11_vector__push(c11_stringview, &retval, tmp); if(tmp.size != 0) c11_vector__push(c11_sv, &retval, tmp);
return retval; return retval;
} }
@ -232,18 +232,18 @@ int c11__byte_index_to_unicode(const char* data, int n) {
////////////// //////////////
int c11_string__cmp(c11_stringview self, c11_stringview other) { int c11_sv__cmp(c11_sv self, c11_sv other) {
return c11_string__cmp2(self, other.data, other.size); return c11_sv__cmp2(self, other.data, other.size);
} }
int c11_string__cmp2(c11_stringview self, const char* other, int size) { int c11_sv__cmp2(c11_sv self, const char* other, int size) {
int res = strncmp(self.data, other, PK_MIN(self.size, size)); int res = strncmp(self.data, other, PK_MIN(self.size, size));
if(res != 0) return res; if(res != 0) return res;
return self.size - size; return self.size - size;
} }
int c11_string__cmp3(c11_stringview self, const char* other) { int c11_sv__cmp3(c11_sv self, const char* other) {
return c11_string__cmp2(self, other, strlen(other)); return c11_sv__cmp2(self, other, strlen(other));
} }

View File

@ -17,7 +17,7 @@ void pk_StrName__initialize() {
for(int i = 0; i < _r_interned.count; i++) { for(int i = 0; i < _r_interned.count; i++) {
free(c11__at(char*, &_r_interned, i)); free(c11__at(char*, &_r_interned, i));
} }
c11_vector__ctor(&_r_interned, sizeof(c11_stringview)); c11_vector__ctor(&_r_interned, sizeof(c11_sv));
_initialized = true; _initialized = true;
#define MAGIC_METHOD(x) x = pk_StrName__map(#x); #define MAGIC_METHOD(x) x = pk_StrName__map(#x);
@ -46,10 +46,10 @@ void pk_StrName__finalize() {
} }
uint16_t pk_StrName__map(const char* name) { uint16_t pk_StrName__map(const char* name) {
return pk_StrName__map2((c11_stringview){name, strlen(name)}); return pk_StrName__map2((c11_sv){name, strlen(name)});
} }
uint16_t pk_StrName__map2(c11_stringview name) { uint16_t pk_StrName__map2(c11_sv name) {
// TODO: PK_GLOBAL_SCOPE_LOCK() // TODO: PK_GLOBAL_SCOPE_LOCK()
if(!_initialized) { if(!_initialized) {
pk_StrName__initialize(); // lazy init pk_StrName__initialize(); // lazy init
@ -65,7 +65,7 @@ uint16_t pk_StrName__map2(c11_stringview name) {
c11_vector__push(char*, &_r_interned, p); c11_vector__push(char*, &_r_interned, p);
index = _r_interned.count; // 1-based index = _r_interned.count; // 1-based
// save to _interned // save to _interned
c11_smallmap_s2n__set(&_interned, (c11_stringview){p, name.size}, index); c11_smallmap_s2n__set(&_interned, (c11_sv){p, name.size}, index);
assert(_interned.count == _r_interned.count); assert(_interned.count == _r_interned.count);
return index; return index;
} }
@ -76,9 +76,9 @@ const char* pk_StrName__rmap(uint16_t index) {
return c11__getitem(char*, &_r_interned, index - 1); return c11__getitem(char*, &_r_interned, index - 1);
} }
c11_stringview pk_StrName__rmap2(uint16_t index) { c11_sv pk_StrName__rmap2(uint16_t index) {
const char* p = pk_StrName__rmap(index); const char* p = pk_StrName__rmap(index);
return (c11_stringview){p, strlen(p)}; return (c11_sv){p, strlen(p)};
} }
py_Name py_name(const char* name) { py_Name py_name(const char* name) {

View File

@ -83,7 +83,7 @@ void Ctx__patch_jump(Ctx* self, int index);
bool Ctx__add_label(Ctx* self, StrName name); bool Ctx__add_label(Ctx* self, StrName name);
int Ctx__add_varname(Ctx* self, StrName name); int Ctx__add_varname(Ctx* self, StrName name);
int Ctx__add_const(Ctx* self, py_Ref); int Ctx__add_const(Ctx* self, py_Ref);
int Ctx__add_const_string(Ctx* self, c11_stringview); int Ctx__add_const_string(Ctx* self, c11_sv);
void Ctx__emit_store_name(Ctx* self, NameScope scope, StrName name, int line); void Ctx__emit_store_name(Ctx* self, NameScope scope, StrName name, int line);
void Ctx__try_merge_for_iter_store(Ctx* self, int); void Ctx__try_merge_for_iter_store(Ctx* self, int);
void Ctx__s_emit_top(Ctx*); // emit top -> pop -> delete void Ctx__s_emit_top(Ctx*); // emit top -> pop -> delete
@ -222,7 +222,7 @@ UnaryExpr* UnaryExpr__new(int line, Expr* child, Opcode opcode) {
typedef struct RawStringExpr { typedef struct RawStringExpr {
EXPR_COMMON_HEADER EXPR_COMMON_HEADER
c11_stringview value; c11_sv value;
Opcode opcode; Opcode opcode;
} RawStringExpr; } RawStringExpr;
@ -233,7 +233,7 @@ void RawStringExpr__emit_(Expr* self_, Ctx* ctx) {
Ctx__emit_(ctx, self->opcode, BC_NOARG, self->line); Ctx__emit_(ctx, self->opcode, BC_NOARG, self->line);
} }
RawStringExpr* RawStringExpr__new(int line, c11_stringview value, Opcode opcode) { RawStringExpr* RawStringExpr__new(int line, c11_sv value, Opcode opcode) {
const static ExprVt Vt = {.emit_ = RawStringExpr__emit_}; const static ExprVt Vt = {.emit_ = RawStringExpr__emit_};
static_assert_expr_size(RawStringExpr); static_assert_expr_size(RawStringExpr);
RawStringExpr* self = PoolExpr_alloc(); RawStringExpr* self = PoolExpr_alloc();
@ -289,7 +289,7 @@ void LiteralExpr__emit_(Expr* self_, Ctx* ctx) {
break; break;
} }
case TokenValue_STR: { case TokenValue_STR: {
c11_stringview sv = c11_string__view(self->value->_str); c11_sv sv = c11_string__view(self->value->_str);
int index = Ctx__add_const_string(ctx, sv); int index = Ctx__add_const_string(ctx, sv);
Ctx__emit_(ctx, OP_LOAD_CONST, index, self->line); Ctx__emit_(ctx, OP_LOAD_CONST, index, self->line);
break; break;
@ -585,7 +585,7 @@ LambdaExpr* LambdaExpr__new(int line, int index) {
typedef struct FStringExpr { typedef struct FStringExpr {
EXPR_COMMON_HEADER EXPR_COMMON_HEADER
c11_stringview src; c11_sv src;
} FStringExpr; } FStringExpr;
static bool is_fmt_valid_char(char c) { static bool is_fmt_valid_char(char c) {
@ -601,7 +601,7 @@ static bool is_fmt_valid_char(char c) {
} }
} }
static bool is_identifier(c11_stringview s) { static bool is_identifier(c11_sv s) {
if(s.size == 0) return false; if(s.size == 0) return false;
if(!isalpha(s.data[0]) && s.data[0] != '_') return false; if(!isalpha(s.data[0]) && s.data[0] != '_') return false;
for(int i = 0; i < s.size; i++) { for(int i = 0; i < s.size; i++) {
@ -611,7 +611,7 @@ static bool is_identifier(c11_stringview s) {
return true; return true;
} }
static void _load_simple_expr(Ctx* ctx, c11_stringview expr, int line) { static void _load_simple_expr(Ctx* ctx, c11_sv expr, int line) {
bool repr = false; bool repr = false;
const char* expr_end = expr.data + expr.size; const char* expr_end = expr.data + expr.size;
if(expr.size >= 2 && expr_end[-2] == '!') { if(expr.size >= 2 && expr_end[-2] == '!') {
@ -636,8 +636,8 @@ static void _load_simple_expr(Ctx* ctx, c11_stringview expr, int line) {
} else { } else {
int dot = c11_sv__index(expr, '.'); int dot = c11_sv__index(expr, '.');
if(dot > 0) { if(dot > 0) {
c11_stringview a = {expr.data, dot}; // expr[:dot] c11_sv a = {expr.data, dot}; // expr[:dot]
c11_stringview b = {expr.data + (dot + 1), expr.size - (dot + 1)}; // expr[dot+1:] c11_sv b = {expr.data + (dot + 1), expr.size - (dot + 1)}; // expr[dot+1:]
if(is_identifier(a) && is_identifier(b)) { if(is_identifier(a) && is_identifier(b)) {
Ctx__emit_(ctx, OP_LOAD_NAME, pk_StrName__map2(a), line); Ctx__emit_(ctx, OP_LOAD_NAME, pk_StrName__map2(a), line);
Ctx__emit_(ctx, OP_LOAD_ATTR, pk_StrName__map2(b), line); Ctx__emit_(ctx, OP_LOAD_ATTR, pk_StrName__map2(b), line);
@ -666,11 +666,11 @@ static void FStringExpr__emit_(Expr* self_, Ctx* ctx) {
if(flag) { if(flag) {
if(src[j] == '}') { if(src[j] == '}') {
// add expression // add expression
c11_stringview expr = {src + i, j - i}; // src[i:j] c11_sv expr = {src + i, j - i}; // src[i:j]
// BUG: ':' is not a format specifier in f"{stack[2:]}" // BUG: ':' is not a format specifier in f"{stack[2:]}"
int conon = c11_sv__index(expr, ':'); int conon = c11_sv__index(expr, ':');
if(conon >= 0) { if(conon >= 0) {
c11_stringview spec = {expr.data + (conon + 1), c11_sv spec = {expr.data + (conon + 1),
expr.size - (conon + 1)}; // expr[conon+1:] expr.size - (conon + 1)}; // expr[conon+1:]
// filter some invalid spec // filter some invalid spec
bool ok = true; bool ok = true;
@ -707,7 +707,7 @@ static void FStringExpr__emit_(Expr* self_, Ctx* ctx) {
j++; j++;
Ctx__emit_(ctx, Ctx__emit_(ctx,
OP_LOAD_CONST, OP_LOAD_CONST,
Ctx__add_const_string(ctx, (c11_stringview){"{", 1}), Ctx__add_const_string(ctx, (c11_sv){"{", 1}),
self->line); self->line);
count++; count++;
} else { } else {
@ -722,7 +722,7 @@ static void FStringExpr__emit_(Expr* self_, Ctx* ctx) {
j++; j++;
Ctx__emit_(ctx, Ctx__emit_(ctx,
OP_LOAD_CONST, OP_LOAD_CONST,
Ctx__add_const_string(ctx, (c11_stringview){"}", 1}), Ctx__add_const_string(ctx, (c11_sv){"}", 1}),
self->line); self->line);
count++; count++;
} else { } else {
@ -735,7 +735,7 @@ static void FStringExpr__emit_(Expr* self_, Ctx* ctx) {
i = j; i = j;
while(j < self->src.size && src[j] != '{' && src[j] != '}') while(j < self->src.size && src[j] != '{' && src[j] != '}')
j++; j++;
c11_stringview literal = {src + i, j - i}; // src[i:j] c11_sv literal = {src + i, j - i}; // src[i:j]
Ctx__emit_(ctx, OP_LOAD_CONST, Ctx__add_const_string(ctx, literal), self->line); Ctx__emit_(ctx, OP_LOAD_CONST, Ctx__add_const_string(ctx, literal), self->line);
count++; count++;
continue; // skip j++ continue; // skip j++
@ -746,14 +746,14 @@ static void FStringExpr__emit_(Expr* self_, Ctx* ctx) {
if(flag) { if(flag) {
// literal // literal
c11_stringview literal = {src + i, self->src.size - i}; // src[i:] c11_sv literal = {src + i, self->src.size - i}; // src[i:]
Ctx__emit_(ctx, OP_LOAD_CONST, Ctx__add_const_string(ctx, literal), self->line); Ctx__emit_(ctx, OP_LOAD_CONST, Ctx__add_const_string(ctx, literal), self->line);
count++; count++;
} }
Ctx__emit_(ctx, OP_BUILD_STRING, count, self->line); Ctx__emit_(ctx, OP_BUILD_STRING, count, self->line);
} }
FStringExpr* FStringExpr__new(int line, c11_stringview src) { FStringExpr* FStringExpr__new(int line, c11_sv src) {
const static ExprVt Vt = {.emit_ = FStringExpr__emit_}; const static ExprVt Vt = {.emit_ = FStringExpr__emit_};
static_assert_expr_size(FStringExpr); static_assert_expr_size(FStringExpr);
FStringExpr* self = PoolExpr_alloc(); FStringExpr* self = PoolExpr_alloc();
@ -1344,7 +1344,7 @@ int Ctx__add_varname(Ctx* self, StrName name) {
return index; return index;
} }
int Ctx__add_const_string(Ctx* self, c11_stringview key) { int Ctx__add_const_string(Ctx* self, c11_sv key) {
uint16_t* val = c11_smallmap_s2n__try_get(&self->co_consts_string_dedup_map, key); uint16_t* val = c11_smallmap_s2n__try_get(&self->co_consts_string_dedup_map, key);
if(val) { if(val) {
return *val; return *val;
@ -1659,19 +1659,19 @@ static Error* exprLiteral(Compiler* self) {
} }
static Error* exprLong(Compiler* self) { static Error* exprLong(Compiler* self) {
c11_stringview sv = Token__sv(prev()); c11_sv sv = Token__sv(prev());
Ctx__s_push(ctx(), (Expr*)RawStringExpr__new(prev()->line, sv, OP_BUILD_LONG)); Ctx__s_push(ctx(), (Expr*)RawStringExpr__new(prev()->line, sv, OP_BUILD_LONG));
return NULL; return NULL;
} }
static Error* exprBytes(Compiler* self) { static Error* exprBytes(Compiler* self) {
c11_stringview sv = c11_string__view(prev()->value._str); c11_sv sv = c11_string__view(prev()->value._str);
Ctx__s_push(ctx(), (Expr*)RawStringExpr__new(prev()->line, sv, OP_BUILD_BYTES)); Ctx__s_push(ctx(), (Expr*)RawStringExpr__new(prev()->line, sv, OP_BUILD_BYTES));
return NULL; return NULL;
} }
static Error* exprFString(Compiler* self) { static Error* exprFString(Compiler* self) {
c11_stringview sv = c11_string__view(prev()->value._str); c11_sv sv = c11_string__view(prev()->value._str);
Ctx__s_push(ctx(), (Expr*)FStringExpr__new(prev()->line, sv)); Ctx__s_push(ctx(), (Expr*)FStringExpr__new(prev()->line, sv));
return NULL; return NULL;
} }

View File

@ -28,7 +28,7 @@ CodeObject* Compiler::push_global_context() noexcept{
return co; return co;
} }
FuncDecl_ Compiler::push_f_context(c11_stringview name, int* out_index) noexcept{ FuncDecl_ Compiler::push_f_context(c11_sv name, int* out_index) noexcept{
FuncDecl_ decl = FuncDecl__rcnew(lexer.src, name); FuncDecl_ decl = FuncDecl__rcnew(lexer.src, name);
decl->code->start_line = __i == 0 ? 1 : prev().line; decl->code->start_line = __i == 0 ? 1 : prev().line;
decl->nested = name_scope() == NAME_LOCAL; decl->nested = name_scope() == NAME_LOCAL;

View File

@ -28,7 +28,7 @@ typedef struct TokenDeserializer {
void TokenDeserializer__ctor(TokenDeserializer* self, const char* source); void TokenDeserializer__ctor(TokenDeserializer* self, const char* source);
bool TokenDeserializer__match_char(TokenDeserializer* self, char c); bool TokenDeserializer__match_char(TokenDeserializer* self, char c);
c11_stringview TokenDeserializer__read_string(TokenDeserializer* self, char c); c11_sv TokenDeserializer__read_string(TokenDeserializer* self, char c);
c11_string* TokenDeserializer__read_string_from_hex(TokenDeserializer* self, char c); c11_string* TokenDeserializer__read_string_from_hex(TokenDeserializer* self, char c);
int TokenDeserializer__read_count(TokenDeserializer* self); int TokenDeserializer__read_count(TokenDeserializer* self);
int64_t TokenDeserializer__read_uint(TokenDeserializer* self, char c); int64_t TokenDeserializer__read_uint(TokenDeserializer* self, char c);
@ -243,14 +243,14 @@ static Error* eat_name(pk_Lexer* self){
int length = (int)(self->curr_char - self->token_start); int length = (int)(self->curr_char - self->token_start);
if(length == 0) return SyntaxError("@id contains invalid char"); if(length == 0) return SyntaxError("@id contains invalid char");
c11_stringview name = {self->token_start, length}; c11_sv name = {self->token_start, length};
if(self->src->mode == JSON_MODE) { if(self->src->mode == JSON_MODE) {
if(c11_string__cmp3(name, "true") == 0) { if(c11_sv__cmp3(name, "true") == 0) {
add_token(self, TK_TRUE); add_token(self, TK_TRUE);
} else if(c11_string__cmp3(name, "false") == 0) { } else if(c11_sv__cmp3(name, "false") == 0) {
add_token(self, TK_FALSE); add_token(self, TK_FALSE);
} else if(c11_string__cmp3(name, "null") == 0) { } else if(c11_sv__cmp3(name, "null") == 0) {
add_token(self, TK_NONE); add_token(self, TK_NONE);
} else { } else {
return SyntaxError("invalid JSON token"); return SyntaxError("invalid JSON token");
@ -260,12 +260,12 @@ static Error* eat_name(pk_Lexer* self){
const char** KW_BEGIN = pk_TokenSymbols + TK_FALSE; const char** KW_BEGIN = pk_TokenSymbols + TK_FALSE;
int KW_COUNT = TK__COUNT__ - TK_FALSE; int KW_COUNT = TK__COUNT__ - TK_FALSE;
#define less(a, b) (c11_string__cmp3(b, a) > 0) #define less(a, b) (c11_sv__cmp3(b, a) > 0)
int out; int out;
c11__lower_bound(const char*, KW_BEGIN, KW_COUNT, name, less, &out); c11__lower_bound(const char*, KW_BEGIN, KW_COUNT, name, less, &out);
#undef less #undef less
if(out != KW_COUNT && c11_string__cmp3(name, KW_BEGIN[out]) == 0) { if(out != KW_COUNT && c11_sv__cmp3(name, KW_BEGIN[out]) == 0) {
add_token(self, (TokenIndex)(out + TK_FALSE)); add_token(self, (TokenIndex)(out + TK_FALSE));
} else { } else {
add_token(self, TK_ID); add_token(self, TK_ID);
@ -361,7 +361,7 @@ static Error* eat_number(pk_Lexer* self){
is_scientific_notation = true; is_scientific_notation = true;
} }
c11_stringview text = {self->token_start, i - self->token_start}; c11_sv text = {self->token_start, i - self->token_start};
self->curr_char = i; self->curr_char = i;
if(text.data[0] != '.' && !is_scientific_notation) { if(text.data[0] != '.' && !is_scientific_notation) {
@ -552,9 +552,9 @@ static Error* from_precompiled(pk_Lexer* self) {
TokenDeserializer__ctor(&deserializer, self->src->source); TokenDeserializer__ctor(&deserializer, self->src->source);
deserializer.curr += 5; // skip "pkpy:" deserializer.curr += 5; // skip "pkpy:"
c11_stringview version = TokenDeserializer__read_string(&deserializer, '\n'); c11_sv version = TokenDeserializer__read_string(&deserializer, '\n');
if(c11_string__cmp3(version, PK_VERSION) != 0) { if(c11_sv__cmp3(version, PK_VERSION) != 0) {
return SyntaxError("precompiled version mismatch"); return SyntaxError("precompiled version mismatch");
} }
if(TokenDeserializer__read_uint(&deserializer, '\n') != (int64_t)self->src->mode){ if(TokenDeserializer__read_uint(&deserializer, '\n') != (int64_t)self->src->mode){
@ -564,7 +564,7 @@ static Error* from_precompiled(pk_Lexer* self) {
int count = TokenDeserializer__read_count(&deserializer); int count = TokenDeserializer__read_count(&deserializer);
c11_vector* precompiled_tokens = &self->src->_precompiled_tokens; c11_vector* precompiled_tokens = &self->src->_precompiled_tokens;
for(int i = 0; i < count; i++) { for(int i = 0; i < count; i++) {
c11_stringview item = TokenDeserializer__read_string(&deserializer, '\n'); c11_sv item = TokenDeserializer__read_string(&deserializer, '\n');
c11_string* copied_item = c11_string__new2(item.data, item.size); c11_string* copied_item = c11_string__new2(item.data, item.size);
c11_vector__push(c11_string*, precompiled_tokens, copied_item); c11_vector__push(c11_string*, precompiled_tokens, copied_item);
} }
@ -618,16 +618,16 @@ static Error* from_precompiled(pk_Lexer* self) {
return NULL; return NULL;
} }
IntParsingResult parse_uint(c11_stringview text, int64_t* out, int base) { IntParsingResult parse_uint(c11_sv text, int64_t* out, int base) {
*out = 0; *out = 0;
c11_stringview prefix = {.data = text.data, .size = PK_MIN(2, text.size)}; c11_sv prefix = {.data = text.data, .size = PK_MIN(2, text.size)};
if(base == -1) { if(base == -1) {
if(c11_string__cmp3(prefix, "0b") == 0) if(c11_sv__cmp3(prefix, "0b") == 0)
base = 2; base = 2;
else if(c11_string__cmp3(prefix, "0o") == 0) else if(c11_sv__cmp3(prefix, "0o") == 0)
base = 8; base = 8;
else if(c11_string__cmp3(prefix, "0x") == 0) else if(c11_sv__cmp3(prefix, "0x") == 0)
base = 16; base = 16;
else else
base = 10; base = 10;
@ -649,9 +649,9 @@ IntParsingResult parse_uint(c11_stringview text, int64_t* out, int base) {
return IntParsing_SUCCESS; return IntParsing_SUCCESS;
} else if(base == 2) { } else if(base == 2) {
// 2-base 0b101010 // 2-base 0b101010
if(c11_string__cmp3(prefix, "0b") == 0) { if(c11_sv__cmp3(prefix, "0b") == 0) {
// text.remove_prefix(2); // text.remove_prefix(2);
text = (c11_stringview){text.data + 2, text.size - 2}; text = (c11_sv){text.data + 2, text.size - 2};
} }
if(text.size == 0) return IntParsing_FAILURE; if(text.size == 0) return IntParsing_FAILURE;
for(int i = 0; i < text.size; i++) { for(int i = 0; i < text.size; i++) {
@ -667,9 +667,9 @@ IntParsingResult parse_uint(c11_stringview text, int64_t* out, int base) {
return IntParsing_SUCCESS; return IntParsing_SUCCESS;
} else if(base == 8) { } else if(base == 8) {
// 8-base 0o123 // 8-base 0o123
if(c11_string__cmp3(prefix, "0o") == 0) { if(c11_sv__cmp3(prefix, "0o") == 0) {
// text.remove_prefix(2); // text.remove_prefix(2);
text = (c11_stringview){text.data + 2, text.size - 2}; text = (c11_sv){text.data + 2, text.size - 2};
} }
if(text.size == 0) return IntParsing_FAILURE; if(text.size == 0) return IntParsing_FAILURE;
for(int i = 0; i < text.size; i++) { for(int i = 0; i < text.size; i++) {
@ -685,9 +685,9 @@ IntParsingResult parse_uint(c11_stringview text, int64_t* out, int base) {
return IntParsing_SUCCESS; return IntParsing_SUCCESS;
} else if(base == 16) { } else if(base == 16) {
// 16-base 0x123 // 16-base 0x123
if(c11_string__cmp3(prefix, "0x") == 0) { if(c11_sv__cmp3(prefix, "0x") == 0) {
// text.remove_prefix(2); // text.remove_prefix(2);
text = (c11_stringview){text.data + 2, text.size - 2}; text = (c11_sv){text.data + 2, text.size - 2};
} }
if(text.size == 0) return IntParsing_FAILURE; if(text.size == 0) return IntParsing_FAILURE;
for(int i = 0; i < text.size; i++) { for(int i = 0; i < text.size; i++) {
@ -759,7 +759,7 @@ Error* pk_Lexer__process_and_dump(pk_SourceData_ src, c11_string** out) {
c11__foreach(Token, &nexts, token) { c11__foreach(Token, &nexts, token) {
if(is_raw_string_used(token->type)) { if(is_raw_string_used(token->type)) {
c11_stringview token_sv = {token->start, token->length}; c11_sv token_sv = {token->start, token->length};
if(!c11_smallmap_s2n__contains(&token_indices, token_sv)) { if(!c11_smallmap_s2n__contains(&token_indices, token_sv)) {
c11_smallmap_s2n__set(&token_indices, token_sv, 0); c11_smallmap_s2n__set(&token_indices, token_sv, 0);
} }
@ -790,7 +790,7 @@ Error* pk_Lexer__process_and_dump(pk_SourceData_ src, c11_string** out) {
if(is_raw_string_used(token->type)) { if(is_raw_string_used(token->type)) {
uint16_t *p = c11_smallmap_s2n__try_get( uint16_t *p = c11_smallmap_s2n__try_get(
&token_indices, (c11_stringview){token->start, token->length}); &token_indices, (c11_sv){token->start, token->length});
assert(p != NULL); assert(p != NULL);
pk_SStream__write_int(&ss, (int)*p); pk_SStream__write_int(&ss, (int)*p);
pk_SStream__write_char(&ss, ','); pk_SStream__write_char(&ss, ',');
@ -821,7 +821,7 @@ Error* pk_Lexer__process_and_dump(pk_SourceData_ src, c11_string** out) {
break; break;
case TokenValue_STR: { case TokenValue_STR: {
pk_SStream__write_char(&ss, 'S'); pk_SStream__write_char(&ss, 'S');
c11_stringview sv = c11_string__view(token->value._str); c11_sv sv = c11_string__view(token->value._str);
for(int i=0; i<sv.size; i++){ for(int i=0; i<sv.size; i++){
pk_SStream__write_hex(&ss, sv.data[i], false); pk_SStream__write_hex(&ss, sv.data[i], false);
} }
@ -882,17 +882,17 @@ bool TokenDeserializer__match_char(TokenDeserializer* self, char c){
return false; return false;
} }
c11_stringview TokenDeserializer__read_string(TokenDeserializer* self, char c){ c11_sv TokenDeserializer__read_string(TokenDeserializer* self, char c){
const char* start = self->curr; const char* start = self->curr;
while(*self->curr != c) while(*self->curr != c)
self->curr++; self->curr++;
c11_stringview retval = {start, (int)(self->curr-start)}; c11_sv retval = {start, (int)(self->curr-start)};
self->curr++; // skip the delimiter self->curr++; // skip the delimiter
return retval; return retval;
} }
c11_string* TokenDeserializer__read_string_from_hex(TokenDeserializer* self, char c){ c11_string* TokenDeserializer__read_string_from_hex(TokenDeserializer* self, char c){
c11_stringview sv = TokenDeserializer__read_string(self, c); c11_sv sv = TokenDeserializer__read_string(self, c);
const char* s = sv.data; const char* s = sv.data;
pk_SStream ss; pk_SStream ss;
pk_SStream__ctor(&ss); pk_SStream__ctor(&ss);
@ -933,7 +933,7 @@ int64_t TokenDeserializer__read_uint(TokenDeserializer* self, char c){
} }
double TokenDeserializer__read_float(TokenDeserializer* self, char c){ double TokenDeserializer__read_float(TokenDeserializer* self, char c){
c11_stringview sv = TokenDeserializer__read_string(self, c); c11_sv sv = TokenDeserializer__read_string(self, c);
// TODO: optimize this // TODO: optimize this
c11_string* nullterm = c11_string__new2(sv.data, sv.size); c11_string* nullterm = c11_string__new2(sv.data, sv.size);
char* end; char* end;

View File

@ -13,7 +13,7 @@ bool Bytecode__is_forward_jump(const Bytecode* self) {
return self->op >= OP_JUMP_FORWARD && self->op <= OP_LOOP_BREAK; return self->op >= OP_JUMP_FORWARD && self->op <= OP_LOOP_BREAK;
} }
FuncDecl_ FuncDecl__rcnew(pk_SourceData_ src, c11_stringview name) { FuncDecl_ FuncDecl__rcnew(pk_SourceData_ src, c11_sv name) {
FuncDecl* self = malloc(sizeof(FuncDecl)); FuncDecl* self = malloc(sizeof(FuncDecl));
self->rc.count = 1; self->rc.count = 1;
self->rc.dtor = (void (*)(void*))FuncDecl__dtor; self->rc.dtor = (void (*)(void*))FuncDecl__dtor;
@ -46,7 +46,7 @@ void FuncDecl__add_kwarg(FuncDecl* self, int index, uint16_t key, const py_TValu
c11_vector__push(FuncDeclKwArg, &self->kwargs, item); c11_vector__push(FuncDeclKwArg, &self->kwargs, item);
} }
void CodeObject__ctor(CodeObject* self, pk_SourceData_ src, c11_stringview name) { void CodeObject__ctor(CodeObject* self, pk_SourceData_ src, c11_sv name) {
self->src = src; self->src = src;
PK_INCREF(src); PK_INCREF(src);
self->name = c11_string__new2(name.data, name.size); self->name = c11_string__new2(name.data, name.size);