more commandsgit add *git add *

This commit is contained in:
MeexReay 2024-07-28 03:20:33 +03:00
parent 85fbe7419b
commit fb9e7d0fae
4 changed files with 1162 additions and 420 deletions

View File

@ -46,6 +46,8 @@ WRITE text cout
| `TO_BOOL` | `source_var`, `result_var` | Скопировать строку `source_var` (тип переменной: `string`/`integer`) в `result_var`, переводя в `bool` |
| `TO_FLOAT` | `source_var`, `result_var` | Скопировать строку `source_var` в `result_var`, переводя в `float` |
| `GET_SYMBOL` | `str_var`, `index_var`, `result_var` | Скопировать символ из строки `str_var` по индексу `index_var` и записать в `result_var` |
| `GET_ITEM` | `list_var`, `index_var`, `result_var` | Скопировать предмет из списка `str_var` по индексу `index_var` и записать в `result_var` |
| `GET_VALUE` | `map_var`, `key_var`, `result_var` | Скопировать предмет из мапы `map_var` по ключу `key_var` и записать в `result_var` |
| `ADD_INT` | `int_var1`, `int_var2` | Прибавить к числу `int_var1` значение `int_var2` |
| `ADD_FLOAT` | `float_var1`, `float_var2` | Прибавить к числу `float_var1` значение `float_var2` |
| `ADD_STR` | `str_var`, `value_var` | Прибавить к строке `str_var` значение `value_var` (может быть типа `string/char/list[char]`) |

1014
src/lib.rs

File diff suppressed because it is too large Load Diff

View File

@ -18,5 +18,10 @@ fn main() {
running_script
.set_standard_vars(args, Box::new(stdout()), Box::new(stdin()))
.unwrap();
running_script.run().unwrap();
match running_script.run() {
Ok(_) => {}
Err((e, c)) => {
println!("error ({:?}) command: {:?}", e, c);
}
};
}

View File

@ -1,19 +1,72 @@
INIT_VAR char space
SET_VAR space 32
INIT_VAR char new_line
SET_VAR new_line 10
FUNC null println text string # println function
TEMP_VAR char br 10 # line break var
ADD_STR text br # add line break to text var
ADD_STR text new_line # add line break to text var
WRITE text cout # write text var to console
FUNC_END # end println function
FUNC null hello_world index integer
# write hello world
TEMP_VAR string text Hello World!
USE_FUNC println null text
# write args length
INIT_VAR integer args_size
LIST_SIZE args args_size
TEMP_VAR integer add -1
ADD_INT args_size add
INIT_VAR string args_size_str
TO_STRING args_size args_size_str
INIT_VAR string args_size_str_formatted # create var
SET_VAR args_size_str_formatted # init var with value
INIT_VAR string prefix
SET_VAR prefix Args length:
ADD_STR args_size_str_formatted prefix
ADD_STR args_size_str_formatted space
ADD_STR args_size_str_formatted args_size_str
USE_FUNC println null args_size_str_formatted
DROP_VAR prefix
DROP_VAR args_size_str_formatted
DROP_VAR args_size_str
DROP_VAR args_size
FUNC null print_arg_finally
USE_FUNC println null now_arg
FUNC_END
INIT_VAR string text
SET_VAR text Hello World!
FUNC null print_arg index integer
INIT_VAR bool is_first
SET_VAR is_first false
TEMP_VAR int first 0
MORE index first is_first
GET_ITEM args index now_arg
IF is_first print_arg_finally
FUNC_END
TEMP_VAR integer start_index 0 # temp vars can stack
TEMP_VAR integer end_index 9
TEMP_VAR string text Args:
USE_FUNC println null text
FOR hello_world start_index end_index
DROP_VAR text
INIT_VAR string now_arg
INIT_VAR integer end_index
LIST_SIZE args end_index
TEMP_VAR integer add -1
ADD_INT end_index add
TEMP_VAR integer start_index 0
FOR print_arg start_index end_index