Этот проект представляет собой мое исследование реализации сервера протокола языкового сервера (LSP).
Curage-lang сам по себе — крошечный, неинтересный язык. Я реализую LSP-сервер для этого языка. Он имеет некоторые функции, такие как отчеты о синтаксических ошибках, переименование символов и т. д.
lsp
: реализация языкового сервера и расширение VSCode.src/extension.ts
: точка входа расширения VSCode.src/server.ts
: точка входа на сервер. Синтаксис Curage-lang очень прост. Ниже описан синтаксис нотации типа PEG.
expression = int / name
statement = " let " name " be " expression " n "
program = statement *
Легенды:
A*
означает последовательность A или пустую,A+
означает последовательность из хотя бы одного A,A / B
означает А или Б.Пример:
let x be 1
let y be x
Для переименования символов не требуется скриншот.
let x be 1
↓ (Переименуйте x
в new_x
)
let new_x be 1
Я пишу серию статей, объясняющих исходные коды в этом репозитории. Написано на японском языке.