This commit is contained in:
blueloveTH 2024-04-14 15:25:01 +08:00
parent bcff54fe78
commit 5a8d9bb5f7
4 changed files with 12 additions and 14 deletions

View File

@ -46,16 +46,17 @@ print(code)
``` ```
```txt ```txt
pkpy:1.4.4 pkpy:1.4.5
0 0
|print| =1
print
=6 =6
5,1,0, 5,1,0,
6,1,5,1,0, 6,0,,,
42,1,1, 42,,1,
8,1,1,S48656c6c6f2c20776f726c6421 8,,,S48656c6c6f2c20776f726c6421
43,1,0, 43,,0,
3,1,0, 3,,,
``` ```

View File

@ -132,7 +132,7 @@ struct TokenDeserializer{
TokenDeserializer(const char* source): curr(source), source(source) {} TokenDeserializer(const char* source): curr(source), source(source) {}
char read_char(){ return *curr++; } char read_char(){ return *curr++; }
char peek_char(){ return *curr; } bool match_char(char c){ if(*curr == c) { curr++; return true; } return false; }
std::string_view read_string(char c); std::string_view read_string(char c);
Str read_string_from_hex(char c); Str read_string_from_hex(char c);

View File

@ -1252,13 +1252,10 @@ __EAT_DOTS_END:
if(is_raw_string_used(token.type)){ if(is_raw_string_used(token.type)){
ss << token_indices[token.sv()] << ','; ss << token_indices[token.sv()] << ',';
} }
if(i>0 && tokens[i-1].line == token.line) ss << ','; if(i>0 && tokens[i-1].line == token.line) ss << ',';
else ss << token.line << ','; else ss << token.line << ',';
if(i>0 && tokens[i-1].brackets_level == token.brackets_level) ss << ','; if(i>0 && tokens[i-1].brackets_level == token.brackets_level) ss << ',';
else ss << token.brackets_level << ','; else ss << token.brackets_level << ',';
// visit token value // visit token value
std::visit([&ss](auto&& arg){ std::visit([&ss](auto&& arg){
using T = std::decay_t<decltype(arg)>; using T = std::decay_t<decltype(arg)>;
@ -1306,13 +1303,13 @@ __EAT_DOTS_END:
t.length = 0; t.length = 0;
} }
if(deserializer.peek_char() == ','){ if(deserializer.match_char(',')){
t.line = tokens.back().line; t.line = tokens.back().line;
}else{ }else{
t.line = (int)deserializer.read_uint(','); t.line = (int)deserializer.read_uint(',');
} }
if(deserializer.peek_char() == ','){ if(deserializer.match_char(',')){
t.brackets_level = tokens.back().brackets_level; t.brackets_level = tokens.back().brackets_level;
}else{ }else{
t.brackets_level = (int)deserializer.read_uint(','); t.brackets_level = (int)deserializer.read_uint(',');

View File

@ -176,7 +176,7 @@ void add_module_os(VM* vm){
std::filesystem::directory_iterator di; std::filesystem::directory_iterator di;
try{ try{
di = std::filesystem::directory_iterator(path); di = std::filesystem::directory_iterator(path);
}catch(std::filesystem::filesystem_error& e){ }catch(std::filesystem::filesystem_error&){
vm->IOError(path.string()); vm->IOError(path.string());
} }
List ret; List ret;