Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion blog/2024-08-15-docs-add-chapters-of-keywords-etc.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ tags:

Поскольку этот раздел был практически полностью написан мной в другом проекте, я решил слегка его отредактировать и перенести сюда.

[Это раздел](../../../../docs/language/qsp-keywords/), в котором собраны все операторы, функции, системные переменные, а так же спецсимволы и синтаксемы языка QSP.
[Это раздел](/docs/language/qsp-keywords/), в котором собраны все операторы, функции, системные переменные, а так же спецсимволы и синтаксемы языка QSP.

:::warning[Важно помнить:]
Раздел охватывает полностью ключевые слова и т.д. для версий плееров 5.8.0, и частично затрагивает плееры версии 5.9.0. А значит, в будущем требует дополнения.
Expand Down
2 changes: 0 additions & 2 deletions docs/language/qsp-keywords/_category_.yml

This file was deleted.

1 change: 1 addition & 0 deletions docs/language/qsp-keywords/index.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
---
title: Зарезервированные слова, системные переменные, спецсимволы
sidebar_position: 6
---

Expand Down
24 changes: 12 additions & 12 deletions docs/language/qsp-keywords/qsp-keyword-functions.md
Original file line number Diff line number Diff line change
Expand Up @@ -183,14 +183,14 @@ func('возвести_в_степень', 3, 3)
Другие примеры:

```qsp
!Обработка локации "функция" как функции.
!Обработка локации "функция" как функции.
!Массив ARGS пуст.
яблоки = FUNC('функция')

!обработка локации с названием лежащим в переменной $name как функции. ARGS[0] равен 1.
pl func($name, 1) * 78
!обработка локации с названием в $name как функции.

!обработка локации с названием в $name как функции.
!$ARGS[0] содержит строку "строка", ARGS[1] равен 2.
msg "text" + func($name, "строка", 2)
```
Expand Down Expand Up @@ -301,7 +301,7 @@ $name = $input('Как звать тебя, герой?')
Другие примеры:

```qsp
! Вопрос с одним правильным ответом.
! Вопрос с одним правильным ответом.
if $input('Что приходит после тьмы?') = 'свет':
msg 'Все верно.'
else
Expand Down Expand Up @@ -667,7 +667,7 @@ $strfind('идти к пещере', '\b\w{4}\b') &! на экране увид
```

```qsp title="Выборка с вложенными группами"
$strfind('+33-671-190-23-999', '\+\d{1,2}-(\d{3})((-\d+)+)', 1) &! на экране увидим '671'
$strfind('+33-671-190-23-999', '\+\d{1,2}-(\d{3})((-\d+)+)', 1) &! на экране увидим '671'
$strfind('+33-671-190-23-999', '\+\d{1,2}-(\d{3})((-\d+)+)', 2) &! на экране увидим '-190-23-999'
$strfind('+33-671-190-23-999', '\+\d{1,2}-(\d{3})((-\d+)+)', 3) &! на экране увидим '-999'
```
Expand Down Expand Up @@ -785,8 +785,8 @@ arrcomp('$A', 'This', 0)
arrcomp('$A', 'abc\d+', 2)
! аналогично предыдущему примеру,
! но поиск осуществляется по всем элементам массива
arrcomp('$A', '.*string.*', 0)
arrcomp('$A', '.*string.*', 0)

arrcomp('$A', 'This') & ! эквивалентно 1му варианту
```

Expand Down Expand Up @@ -945,13 +945,13 @@ ARRTYPE([$имя_массива], [индекс])
```qsp
$ddd = 'text'
arrtype('ddd') & ! '$'

$g = 'text' & g = 13
arrtype('g') & ! '#'

%tuple['index'] = [12, 'string']
arrtype('tuple', 'index') & ! '%'

! $empty not exist
arrtype('$empty') & ! ''
```
Expand Down Expand Up @@ -1098,7 +1098,7 @@ if i < 100000:
end
new_time = msecscount
pl "Скорость работы старого цикла: " + $str(new_time - old_time)

old_time = msecscount
loop i = 0 while i < 100000 step i += 1:
b[i] = i
Expand Down
10 changes: 5 additions & 5 deletions docs/language/qsp-keywords/qsp-keyword-operacion.md
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,7 @@ sidebar_position: 1
%tuple = [4, 10, 16]
%a = %tuple * 2
! %a будет равно [8, 20, 32]

[4, 10] * 'b' & ! ошибка о несоответствии типов данных
```

Expand Down Expand Up @@ -352,7 +352,7 @@ number += [4,5] & ! ошибка о несоответствии типов да
%tuple = [4, 10, 16]
%a = %tuple - 2
! %a будет равно [2, 8, 14]

[4, 10] - 'b' & ! ошибка о несоответствии типов данных
```

Expand Down Expand Up @@ -494,7 +494,7 @@ number -= [4,5] & ! ошибка о несоответствии типов да
%tuple = [4, 10, 16]
%a = %tuple / 2
! %a будет равно [2, 5, 8]

[4, 10] / 'b' & ! ошибка о несоответствии типов данных
```

Expand Down Expand Up @@ -1231,7 +1231,7 @@ elseif obj("Пустой кувшин") = 1:
addobj "Полный кувшин"
delobj "Пустой квушин"
goto $curloc
end
end
end
```

Expand All @@ -1253,7 +1253,7 @@ end
! одна часть выражения верна, значит всё выражение верно
(2 <> 2) or (3 <> 2) & ! выражение вернёт 1 (правда)
! обе части выражения не верны, значит и всё выражение не верно
(2 <> 2) or (3 = 2) & ! выражение вернёт 0 (ложь)
(2 <> 2) or (3 = 2) & ! выражение вернёт 0 (ложь)
```

:::note[5.7.0]
Expand Down
36 changes: 18 additions & 18 deletions docs/language/qsp-keywords/qsp-keyword-operators.md
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ end
```qsp
! строка до кавычек " текст внутри кавычек
может переходить на другие строки " а так же {
можно использовать другие группы символов, чтобы
можно использовать другие группы символов, чтобы
продолжать многострочный комментарий
} и комментарий не кончится, пока не кончится строка
```
Expand Down Expand Up @@ -426,7 +426,7 @@ $code = '
*pl "<<$args[0]>>"
*pl $args[0]
'

dynamic $code, 'asdfg'
```

Expand Down Expand Up @@ -504,8 +504,8 @@ gosub 'ход'
!Передаётся один параметр - args[0] равен 1.
gosub $location,1

!обработка локации "ход" с передачей 3-х параметров.
! $args[0] = $var (значению), args[1] = 2,
!обработка локации "ход" с передачей 3-х параметров.
! $args[0] = $var (значению), args[1] = 2,
! $args[2] = "данные". Обратите внимание на символы '$'.
gosub 'ход',$var,2,'данные'
```
Expand Down Expand Up @@ -657,8 +657,8 @@ end &! ключевое слово end - просто игнорируется
```qsp
if a+b<3 or y=8:
p 'A+B<3 или Y=8'
nl
if j=88: nl & p 'NEXT'
nl
if j=88: nl & p 'NEXT'
if $h='ooo':
p 'loo' & jump 'lll'
end
Expand Down Expand Up @@ -711,7 +711,7 @@ if abcd=3: k1=34 else k1=25 end
```qsp
! однострочная форма записи
IF [#выражение]: {команда д1} & {команда д2} & ... ELSE {команда н1} & {команда н2} & ...

! в многострочном IF:

! многострочная форма ELSE
Expand Down Expand Up @@ -819,8 +819,8 @@ ELSE
{последний набор команд}
...
END
! однострочная в многострочном условии

! однострочная в многострочном условии
IF [#выражение 1]:
{набор команд 1}
...
Expand All @@ -835,7 +835,7 @@ END
Особенности записи `ELSEIF`:

- Может использоваться вариант написания `ELSE IF`. Работает точно так же.
- Если в многострочной конструкции `IF` после `ELSEIF` операторы идут в той же самой строке (однострочная форма), то все последующие строки игнорируются до следующего `ELSEIF`, либо до `ELSE` или `END`.
- Если в многострочной конструкции `IF` после `ELSEIF` операторы идут в той же самой строке (однострочная форма), то все последующие строки игнорируются до следующего `ELSEIF`, либо до `ELSE` или `END`.
- В конструкции `IF` c `ELSEIF` может как присутствовать, так и отсутствовать часть с `ELSE`.

Примеры:
Expand All @@ -850,7 +850,7 @@ ELSEIF ОЧКИ>99:
ELSE
GOTO 'КОН5'
END

if money mod 10=1 and money mod 100<>11:
*pl "У вас <<money>> монета."
elseif money mod 10>1 and money mod 10<5 and (money mod 100<5 or money mod 100>20):
Expand Down Expand Up @@ -1133,7 +1133,7 @@ i = 99 & ! объявляем глобальную переменную
gosub 'foo'
*nl i & ! на экране увидим число 99
--- start ---

# foo
! на этой локации объявляем локальную переменную
local i = 0
Expand All @@ -1146,7 +1146,7 @@ loop while i < 10 step i += 1:
end
*nl i & ! на экране увидим число 10
--- foo ---

# undo
! в эту локацию из цикла с локации foo
! транслируется всё та же локальная переменная
Expand Down Expand Up @@ -1179,7 +1179,7 @@ if i = 0: i = 99 & ! значение переменной i задаётся л
*pl "Глобальное i = <<i>>"
act "На локацию 2": goto 'локация 2'
--- локация 1 ---

# локация 2
*pl "Глобальное i = <<i>>"
local i = 137 & ! значение переменной i задаётся лишь раз
Expand Down Expand Up @@ -1324,7 +1324,7 @@ menu '%stone'
%usr_menu[2] = ['Уничтожить предмет','del_item', $icon_file]
! пункт меню задан 3-мя переменными
%usr_menu[3] = [$name, $location, $icon_file]

menu 'usr_menu' &! покажет меню из 4-х пунктов
```

Expand Down Expand Up @@ -1421,7 +1421,7 @@ $usr_menu[1] = 'Положить предмет:put_item:images/put_item.gif'
$usr_menu[2] = 'Осмотреть предмет:look_item:<<$icon_file>>'
! пункт меню задан 3-мя переменными
$usr_menu[3] = '<<$name>>:<<$location>>:<<$file>>'

menu 'usr_menu' &! покажет меню из 4-х пунктов
```

Expand Down Expand Up @@ -1647,12 +1647,12 @@ SCANSTR [$имя_массива], [$текст_для_разбора], [$рег
$text = 'Шла Саша по шоссе, а Грека через реку.'
scanstr '$words', $text, '\b\w+\b'
!В массиве $words окажутся значения: 'Шла', 'Саша', 'по', 'шоссе', 'а', 'Грека', 'через', 'реку'

! разбиваем строку по разделителю:
$text = 'утро|день|вечер|ночь'
scanstr '$words', $text, '[^|]+'
!В массиве $words окажутся значения: 'утро', 'день', 'вечер', 'ночь'

! вытаскиваем из строки все слова, помещённые в квадратные скобки, но без квадратных скобок:
$text = '[first] ignoredtext [second][third] also ignored'
scanstr '$words', $text, '\[(.*?)\]', 1
Expand Down
6 changes: 3 additions & 3 deletions docs/language/qsp-keywords/qsp-keyword-syntaxems.md
Original file line number Diff line number Diff line change
Expand Up @@ -417,9 +417,9 @@ health = 150
```qsp
!обработка локации "ход". Массив args[] пуст.
@ход()
!обработка локации "ход" с передачей 3-х параметров.
! $args[0] = $var (значению), args[1] = 2,

!обработка локации "ход" с передачей 3-х параметров.
! $args[0] = $var (значению), args[1] = 2,
! $args[2] = "данные". Обратите внимание на символы '$'.
@ход($var, 2, 'данные')
```
Expand Down
6 changes: 3 additions & 3 deletions docs/syntax-highlighting.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,9 @@ VS Code есть два способа подсветки:

### Готовые решения {#vscode-text-solutions}

* TextMate формат
* `glife/src/master/tools/syntax/VSCode/qsrc/syntaxes/QSP.tmLanguage.json`
* [LangQSP от некого slanon](https://git.tfgames.site/slanon/LangQSP/src/master/qsrc/syntaxes/QSP.tmLanguage.json)
* TextMate Формат
* `glife/tools/syntax/VSCode/qsrc/syntaxes/QSP.tmLanguage.json`
* [Формат TextMate от некого Xorgroth](https://gitlab.com/kevinsmartstfg/girl-life/-/raw/master/tools/syntax/VSCode/qsrc/syntaxes/QSP.tmLanguage.json)

* семантическая подсветка
* Связка `Qsp.FSharp.Parser`, `Qsp.FSharp.ServerLanguage` и `Qsp.FSharp.VsCode`
Expand Down
22 changes: 19 additions & 3 deletions docusaurus.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,20 @@ const config: Config = {
// useful metadata like html lang. For example, if your site is Chinese, you
// may want to replace "en" with "zh-Hans".
i18n: {
defaultLocale: 'en',
locales: ['en'],
defaultLocale: 'ru',
locales: ['ru', 'en'],
localeConfigs: {
ru: {
label: 'Русский',
direction: 'ltr',
htmlLang: 'ru-RU',
},
en: {
label: 'English',
direction: 'ltr',
htmlLang: 'en-US',
},
},
},

presets: [
Expand Down Expand Up @@ -82,7 +94,11 @@ const config: Config = {
position: 'left',
label: 'Docs',
},
{to: '/blog', label: 'Blog', position: 'left'},
{ to: '/blog', label: 'Blog', position: 'left' },
{
type: 'localeDropdown',
position: 'right',
},
{
href: 'https://github.com/QSPFoundation/qspfoundation.github.io',
label: 'GitHub',
Expand Down
Loading