mirror of
https://github.com/MeexReay/sustlang.git
synced 2025-06-24 10:33:01 +03:00
more commands
This commit is contained in:
parent
6f201024dd
commit
85fbe7419b
@ -34,14 +34,13 @@ WRITE text cout
|
||||
| `COPY_VAR` | `source_var`, `target_var` | Скопировать значение переменной с `source_var` в `target_var` |
|
||||
| `DROP_VAR` | `name_var` | Дропнуть переменную `name_var` |
|
||||
| `HAS_VAR` | `name_var`, `result_var` | В переменную `result_var` записывается `bool` существует ли переменная `name_var` |
|
||||
| `LIST_SIZE` | `list_var`, `result_var` | Получить размер списка и записать в переменную `result_var` типа `int` |
|
||||
|
||||
### Преобразование переменных
|
||||
|
||||
| Команда | Параметры | Описание |
|
||||
|--------------------------|------------|-------------|
|
||||
| `TO_STRING` | `source_var`, `result_var` | Скопировать значение переменной с `source_var` в `result_var`, переводя в `string` |
|
||||
| `TO_BYTES` | `str_var`, `result_var` | Скопировать строку `str_var` в `result_var`, переводя в `list[char]` |
|
||||
| `TO_CHARS` | `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` |
|
||||
@ -53,6 +52,9 @@ WRITE text cout
|
||||
| `SUB_STR` | `str_var`, `start_index`, `end_index` | Сделать подстроку из строки `str_var` и сохранить туда же |
|
||||
| `SUB_LIST` | `list_var`, `start_index`, `end_index` | Сделать подсписок из списка `list_var` и сохранить туда же |
|
||||
| `UNPACK_OPTIONAL` | `optional_var`, `result_var` | Достать данные из `optional_var` и установить в `result_var` |
|
||||
| `LIST_SIZE` | `list_var`, `result_var` | Получить размер списка и записать в переменную `result_var` типа `int` |
|
||||
| `STRING_SIZE` | `string_var`, `result_var` | Получить размер строки и записать в переменную `result_var` типа `int` |
|
||||
| `MAP_SIZE` | `map_var`, `result_var` | Получить размер мапы и записать в переменную `result_var` типа `int` |
|
||||
|
||||
### Циклы
|
||||
|
||||
@ -61,6 +63,7 @@ WRITE text cout
|
||||
| `FOR` | `func(int)`, `start_index`, `end_index` | Функция `func` (с единственным аргументом с типом `int`) вызывается с `start_index` до `end_index` включительно, `start_index` и `end_index` это названия переменных |
|
||||
| `FOR_MAP` | `func(any, any)`, `map_var` | Функция `func` вызывается для каждого `key`, `value` переменной `map_var` |
|
||||
| `FOR_LIST` | `func(any)`, `list_var` | Функция `func` вызывается для каждого предмета переменной `list_var` |
|
||||
| `FOR_STRING` | `func(char)`, `string_var` | Функция `func` вызывается для каждого символа строки `string_var` |
|
||||
| `WHILE` | `func -> bool` | Функция `func` (с результатом `bool`) вызывается, пока функция выдает `true` |
|
||||
|
||||
### Работа со стримами
|
||||
|
60
src/lib.rs
60
src/lib.rs
@ -595,9 +595,9 @@ pub enum CommandType {
|
||||
|
||||
/// Скопировать строку `str_var` в `result_var`, переводя в `list[char]`
|
||||
///
|
||||
/// Название: TO_BYTES \
|
||||
/// Название: TO_CHARS \
|
||||
/// Параметры: `source_var`, `result_var`
|
||||
ToBytes,
|
||||
ToChars,
|
||||
|
||||
/// Скопировать строку `source_var` (тип переменной: `string`/`integer`) в `result_var`, переводя в `char`
|
||||
///
|
||||
@ -659,12 +659,6 @@ pub enum CommandType {
|
||||
/// Параметры: `list_var`, `start_index`, `end_index`
|
||||
SubList,
|
||||
|
||||
/// Получить размер списка и записать в переменную `result_var` типа `int`
|
||||
///
|
||||
/// Название: LIST_SIZE \
|
||||
/// Параметры: `list_var`, `result_var`
|
||||
ListSize,
|
||||
|
||||
/// Вывести переменную `name_var` в `stream_var`
|
||||
///
|
||||
/// Название: WRITE \
|
||||
@ -842,6 +836,30 @@ pub enum CommandType {
|
||||
/// Название: UNPACK_OPTIONAL \
|
||||
/// Параметры: `optional_var`, `result_var`
|
||||
UnpackOptional,
|
||||
|
||||
/// Получить размер списка и записать в переменную `result_var` типа `int`
|
||||
///
|
||||
/// Название: LIST_SIZE \
|
||||
/// Параметры: `list_var`, `result_var`
|
||||
ListSize,
|
||||
|
||||
/// Получить размер строки и записать в переменную `result_var` типа `int`
|
||||
///
|
||||
/// Название: MAP_SIZE \
|
||||
/// Параметры: `map_var`, `result_var`
|
||||
MapSize,
|
||||
|
||||
/// Получить размер мапы и записать в переменную `result_var` типа `int`
|
||||
///
|
||||
/// Название: STRING_SIZE \
|
||||
/// Параметры: `string_var`, `result_var`
|
||||
StringSize,
|
||||
|
||||
/// Функция `func` вызывается для каждого символа строки `string_var`
|
||||
///
|
||||
/// Название: FOR_STRING \
|
||||
/// Параметры: `func(char)`, `string_var`
|
||||
ForString,
|
||||
}
|
||||
|
||||
impl CommandType {
|
||||
@ -855,7 +873,7 @@ impl CommandType {
|
||||
"DROP_VAR" => Ok(CommandType::DropVar),
|
||||
"HAS_VAR" => Ok(CommandType::HasVar),
|
||||
"TO_STRING" => Ok(CommandType::ToString),
|
||||
"TO_BYTES" => Ok(CommandType::ToBytes),
|
||||
"TO_CHARS" => Ok(CommandType::ToChars),
|
||||
"TO_INTEGER" => Ok(CommandType::ToInteger),
|
||||
"TO_FLOAT" => Ok(CommandType::ToFloat),
|
||||
"TO_CHAR" => Ok(CommandType::ToChar),
|
||||
@ -867,12 +885,15 @@ impl CommandType {
|
||||
"SUB_STR" => Ok(CommandType::SubStr),
|
||||
"SUB_LIST" => Ok(CommandType::SubList),
|
||||
"LIST_SIZE" => Ok(CommandType::ListSize),
|
||||
"MAP_SIZE" => Ok(CommandType::MapSize),
|
||||
"STRING_SIZE" => Ok(CommandType::StringSize),
|
||||
"WRITE" => Ok(CommandType::Write),
|
||||
"READ" => Ok(CommandType::Read),
|
||||
"READ_ALL" => Ok(CommandType::ReadAll),
|
||||
"FOR" => Ok(CommandType::For),
|
||||
"FOR_MAP" => Ok(CommandType::ForMap),
|
||||
"FOR_LIST" => Ok(CommandType::ForList),
|
||||
"FOR_STRING" => Ok(CommandType::ForString),
|
||||
"WHILE" => Ok(CommandType::While),
|
||||
"OPEN_FILE_IN" => Ok(CommandType::OpenFileIn),
|
||||
"OPEN_FILE_OUT" => Ok(CommandType::OpenFileOut),
|
||||
@ -896,6 +917,7 @@ impl CommandType {
|
||||
"HAS_KEY" => Ok(CommandType::HasKey),
|
||||
"HAS_VALUE" => Ok(CommandType::HasValue),
|
||||
"HAS_OPTIONAL" => Ok(CommandType::HasOptional),
|
||||
"UNPACK_OPTIONAL" => Ok(CommandType::UnpackOptional),
|
||||
_ => Err(ScriptError::CommandUnknownError(line)),
|
||||
}
|
||||
}
|
||||
@ -1478,7 +1500,7 @@ impl RunningScript {
|
||||
|
||||
// TODO: write logic
|
||||
}
|
||||
CommandType::ToBytes => {
|
||||
CommandType::ToChars => {
|
||||
let source_var = command.args[0].clone();
|
||||
let result_var = command.args[1].clone();
|
||||
|
||||
@ -1547,6 +1569,18 @@ impl RunningScript {
|
||||
|
||||
// TODO: write logic
|
||||
}
|
||||
CommandType::MapSize => {
|
||||
let map_var = command.args[0].clone();
|
||||
let result_var = command.args[1].clone();
|
||||
|
||||
// TODO: write logic
|
||||
}
|
||||
CommandType::StringSize => {
|
||||
let string_var = command.args[0].clone();
|
||||
let result_var = command.args[1].clone();
|
||||
|
||||
// TODO: write logic
|
||||
}
|
||||
CommandType::Read => {
|
||||
let name_var = command.args[0].clone();
|
||||
let size_var = command.args[1].clone();
|
||||
@ -1572,6 +1606,12 @@ impl RunningScript {
|
||||
|
||||
// TODO: write logic
|
||||
}
|
||||
CommandType::ForString => {
|
||||
let func_name = command.args[0].clone();
|
||||
let string_var = command.args[1].clone();
|
||||
|
||||
// TODO: write logic
|
||||
}
|
||||
CommandType::While => {
|
||||
let func_name = command.args[0].clone();
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user