diff options
| author | _ov4 <ov4@ov4.org> | 2026-09-05 15:43:51 +0000 |
|---|---|---|
| committer | _ov4 <ov4@ov4.org> | 2026-09-05 15:43:51 +0000 |
| commit | d69427039bc962f28edf826badbfe77ffbcac37f (patch) | |
| tree | 4875639edd156be7d0fc825a82ccff57373d971c | |
| parent | 036e7efcb9f4e80c8d76b9d1486c122915b702a1 (diff) | |
bracket + trim + pivot
| -rw-r--r-- | ast.cc | 4 | ||||
| -rw-r--r-- | include/parser/token.h | 26 |
2 files changed, 27 insertions, 3 deletions
@@ -64,11 +64,11 @@ int main() else if (c.token_type == RIGHT_BRACKET) println("{} RIGHT_BRACKET", c.bracket_depth); else if (c.token_type == TEXT) - println("{} TEXT {}", c.bracket_depth, c.text); + println("{} TEXT .{}.", c.bracket_depth, c.text); } cout << "---------- parse ----------" << endl; - parse(0, token.size(), alloc_ast()); + //parse(0, token.size(), alloc_ast()); return 0; } diff --git a/include/parser/token.h b/include/parser/token.h index 1896b3f..5b65d67 100644 --- a/include/parser/token.h +++ b/include/parser/token.h @@ -21,6 +21,27 @@ public: int bracket_depth = 0; }; +size_t find_non_space_previous(string s, size_t i) +{ + size_t len = s.size(), backup = i; + i--; // skip current char + for ( ; i < len; i--) + if (s[i] != ' ') + return i+1; // because region is [x, y) + + return backup; +} + +string trim_space(const string &s) +{ + size_t b = s.find_first_not_of(" \t"); + if (b == string::npos) + return ""; + size_t e = s.find_last_not_of(" \t"); + return s.substr(b, e - b + 1); +} + + bool is_symbol(char c) { if (c == '&' || c == '|' || c == '(' || c == ')') @@ -104,8 +125,11 @@ void token_push(string s, size_t current, size_t prev, int bracket_depth, bool i return; } + string trimed = trim_space(sub); + if (trimed == "") return; + tmp.token_type = TEXT; - tmp.text = sub; + tmp.text = trimed; token.push_back(tmp); } |
