Skip to content

Commit

Permalink
docs: QSPLIB -> QSPLib & some tiny improvements (#7)
Browse files Browse the repository at this point in the history
Co-authored-by: Varg <[email protected]>
Closes: #5
  • Loading branch information
hzdbyte and Varg authored Jul 25, 2024
1 parent 8c7b437 commit 47bf234
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 12 deletions.
15 changes: 10 additions & 5 deletions docs/all-together.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,23 +11,28 @@
* VS Code
* любой текстовый редактор

Если в Atom, то при проверке кода используется расширение Alex Versus
Если в Atom, то при проверке кода используется расширение JAD_for_QSP

Если в VS Code, то при написании кода используется расширение Qsp.FSharp.VsCode

QGen преобразовывает исходник с помощью встроенного QSPLIB в бинарник
QGen преобразовывает исходник в бинарный файл игры

Голые исходники, написанные в редакторах, либо оставляются так, либо преобразовываются в бинарник с помощью утилиты qsp-convertor
Голые исходники, написанные в редакторах, либо оставляются так, либо преобразовываются в бинарник с помощью одной из утилит:

* QSP CLI
* TXT2GAM

Некоторые утилиты позволяют преобразовать бинарные файлы игр обратно в текстовый формат.

Голые исходники или бинарники воспроизводятся в плеерах:

* Classic
* Navigator
* QSpider

Classic и Navigator <!-- todo: уточнить --> использует интерпретатор QSPLIB.
Classic и Navigator <!-- todo: уточнить --> используют интерпретатор QSPLib.

QSpider использует qsp-wasm-engine, который является обёрткой над интерпретатором QSPLIB.
QSpider использует qsp-wasm-engine, который является обёрткой над интерпретатором QSPLib.

В дальнейшем разработчик игры выкладывает ресурсы игры в:

Expand Down
8 changes: 4 additions & 4 deletions docs/parsers/qsp-fsharp-parser.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,18 @@

[Qsp.FSharp.Parser](https://github.com/QSPFoundation/Qsp.FSharp/tree/master/src/Qsp.FSharp.Core) разрабатывается для сред разработки, которые поддерживают LSP (к примеру, VS Code, для [расширения](https://github.com/QSPFoundation/Qsp.FSharp.VsCode) которого всё это и затевалось).

Qsp.FSharp.Parser парсит вообще весь исходник сразу (в чем принимал но отличается от [парсера в QSPLIB](./qsplib-parser.md)) и попутно собирает:
Qsp.FSharp.Parser парсит вообще весь исходник сразу (чем отличается от [парсера в QSPLib](./qsplib-parser.md)) и попутно собирает:

* токены и их расположение (кажется, этим должен заниматься *лексический* анализатор, а не синтаксический, но там всё не так просто)
* семантическое значение токенов
* собирает синтаксическое дерево

Главный юмор — в том, что синтаксическое дерево для LSP сервера вообще не надо, но парсер все равно упорно его собирает, а затем откидывает. Зато оно используется для форматирования кода (которое вызывается, к примеру, из LSP сервера, т.е. всё-таки надо!) и прочих пока не задокументированных штук.

Технически ничего не мешает написать интерпретатор, на. вход которого можно было бы подавать синтаксическое дерево, но пускай лучше QSPLIB этим занимается, раз уж под это дело заточен.
Технически ничего не мешает написать интерпретатор, на вход которого можно было бы подавать синтаксическое дерево, но пускай лучше QSPLib этим занимается, раз уж он под это дело заточен.

Qsp.FSharp.Parser старается честно следовать спецификации, но и отсебятины и недочётов тоже хватает.
Qsp.FSharp.Parser старается честно следовать спецификации, но отсебятины и недочётов тоже хватает.

<!-- todo: привести пример -->

Написан на F#, что с одной стороны привязывает его к .Net платформе, а с другой стороны позволяет с помощью Fable скомпилироваться в JS и прочие языки. Было бы желание, как говорится.
Написан на F#, что, с одной стороны, привязывает его к .Net платформе, а с другой стороны позволяет с помощью Fable скомпилироваться в JS и прочие языки. Было бы желание, как говорится.
6 changes: 3 additions & 3 deletions docs/parsers/qsplib-parser.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
# QSPLIB Parser
# QSPLib Parser

[QSPLIB](https://github.com/QSPFoundation/qsp/tree/master/qsp) парсил исходники ещё задолго до того, как это стало модным, и продолжает этим заниматься и по сей день.
[QSPLib](https://github.com/QSPFoundation/qsp/tree/master/qsp) парсил исходники ещё задолго до того, как это стало модным, и продолжает этим заниматься и по сей день.

Является самым близким парсером к спецификации языка (собственно, с него и пишется спецификация), остальные равняются на него с разной степенью успешности.

Работает по "ленивому" принципу: разбирает построчно исходник и сразу же его интерпретирует. Таким образом синтаксические ошибки ловятся только тогда, когда на них натыкается парсер.
Работает по "ленивому" принципу: разбирает построчно исходник и сразу же его интерпретирует. Таким образом, синтаксические ошибки ловятся только тогда, когда на них натыкается парсер.

<!-- todo: добавить пример -->

0 comments on commit 47bf234

Please sign in to comment.