This commit is contained in:
MeexReay 2024-07-27 21:04:48 +03:00
parent 3c2cc0dd22
commit e02528b2f1
4 changed files with 749 additions and 399 deletions

View File

@ -40,7 +40,13 @@ WRITE text cout
| Команда | Параметры | Описание |
|--------------------------|------------|-------------|
| `TO_STRING` | `source_var`, `target_var` | Скопировать значение переменной с `source_var` в `target_var`, переводя в строку |
| `TO_STRING` | `source_var`, `result_var` | Скопировать значение переменной с `source_var` в `result_var`, переводя в `string` |
| `TO_BYTES` | `str_var`, `result_var` | Скопировать строку `str_var` в `result_var`, переводя в `list[char]` |
| `TO_INTEGER` | `source_var`, `result_var` | Скопировать строку `source_var` (тип переменной: `string`/`char`) в `result_var`, переводя в `integer` |
| `TO_CHAR` | `source_var`, `result_var` | Скопировать строку `source_var` (тип переменной: `string`/`integer`) в `result_var`, переводя в `char` |
| `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` |
| `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]`) |
@ -79,6 +85,7 @@ WRITE text cout
| `LESS` | `var`, `other_var`, `result_var` | Узнать, меньше ли в `var` чем в `other_var` записать результат в `result_var` |
| `AND` | `var`, `other_var`, `result_var` | Если `var` и `other_var` равны `true`, то результат `true`, иначе `false`, записать результат в `result_var` |
| `OR` | `var`, `other_var`, `result_var` | Если `var` или `other_var` равен `true`, то результат `true`, иначе `false`, записать результат в `result_var` |
| `NOT` | `var`, `result_var` | Если `var` равен `true`, то результат `false`, иначе `true`, записать результат в `result_var` |
| `IF` | `bool_var`, `func` | Если `var` равен `true` то вызвать функцию `func` |
| `HAS_STR` | `string_var`, `substring`, `result_var` | Узнать, имеет ли строка `var` в себе подстроку `substring` и записать результат в `result_var` |
| `HAS_ITEM` | `list_var`, `item_var`, `result_var` | Узнать, имеет ли список `list_var` значение `item_var` и записать результат в `result_var` |

1120
src/lib.rs

File diff suppressed because it is too large Load Diff

View File

@ -7,8 +7,8 @@ use std::{
use sustlang::{RunningScript, Script};
fn main() {
let script = Script::parse(fs::read_to_string("test.sus").unwrap());
let script = Script::parse(fs::read_to_string("test.sus").unwrap()).unwrap();
let mut running_script = RunningScript::new(script);
running_script.set_standard_vars(args().collect(), Box::new(stdout()), Box::new(stdin()));
running_script.run()
running_script.run().unwrap();
}

View File

@ -1,4 +1,4 @@
FUNC bool println text string # println command
FUNC null println text string # println command
TEMP_VAR char br 10 # line break var
ADD_STR text br # add line break to text var
@ -6,12 +6,15 @@ WRITE text cout # write text var to console
FUNC_END # end println command
INIT_VAR string text
SET_VAR text Hello World!
FUNC null hello_world index integer
INIT_VAR string text # init text var
SET_VAR text Hello World! # set hello world to var
USE_FUNC println null text
TEMP_VAR bool result 0 # init temp result var
USE_FUNC println result text # use println to print text
FUNC_END
DROP_VAR text # drop text var
TEMP_VAR integer start_index 0
TEMP_VAR integer end_index 9
FOR hello_world start_index end_index