Можно ли сделать прокси между IDE и языковым сервером? - PullRequest
0 голосов
/ 30 января 2019

Скажите, я хочу немного изменить поведение некоторых языков.

Можно ли это сделать?Это было сделано раньше?

UPD: Typescript имеет очень ограниченные возможности для работы с именами свойств (например, вы не можете с помощью машинописного текста создать имя, которое является производным от другого, например, в верхнем регистре или с префиксом с префиксом), тогда как Javascript(это то, что Typescript компилирует в) очень гибкий.Поэтому я хотел с помощью LSP изменить некоторые сообщения LSP Typescript, содержащие параметры автозаполнения.

1 Ответ

0 голосов
/ 30 января 2019

Да, но как это сделать, зависит от операционной системы.С точки зрения компилятора, прокси будет отображаться как ваша IDE. LSP - это сетевой протокол

Я хочу немного изменить поведение некоторых языков.

Итак, вы хотитеизмените семантику некоторого языка (и вы не скажете, какой).Тогда LSP - не лучшее место для этого.

Например, в некоторых простых случаях с GCC более подходящим является написание вашего плагина GCC .

В большинстве случаев изменение "поведение "действительно меняет сам язык.Тогда вам может потребоваться сделать собственную реализацию этого языка.Иногда вы можете исправить существующую свободную программную реализацию исходных языков.В других случаях вам нужно будет самостоятельно реализовать свой язык.Затем прочитайте Dragon Book и подумайте о компиляции или преобразовании в C вашего языка в вашей языковой реализации.Обязательно сначала укажите это на бумаге.

Не путайте язык программирования (который является спецификацией , обычно написанным на английском языке - возможно, с некоторой формализацией в некоторых конкретных обозначениях, например n1570 для C11, R5RS для схемы) с его реализацией (которая является программным обеспечением).Прочтите Скотта Прагматика языка программирования .

Не путайте IDE с языковой реализацией.Например, все известные мне компиляторы C или C ++ не имеют IDE и являются программами командной строки (например, GCC , Clang и т. Д.), И большинство из нихдаже не знаю о LSP.IDE может запускать компилятор C ++, но это не компилятор.Вы можете кодировать (в C, C ++, Java, C #, Ocaml, ....) с помощью простого редактора исходного кода (даже простого, не зависящего от языка, такого как Notepad в Windows, Leafpad или nanoв Linux).

Большинство языков программирования определяют исходные программы в виде набора «единиц перевода», практически «исходных файлов», каждый из которых представляет собой последовательность символов со сложным синтаксисом и семантикой.То, как создаются эти исходные файлы, выходит за рамки спецификации языка программирования (вы можете использовать редакторы, вы можете написать свои собственные генераторы для этих исходных файлов, ....)

LSP - это предложение дляпротокол между "IDE" и реализациями языка.

Обратите внимание, что автозаполнение (упомянутое в вашем комментарии) не является особенностью языка программирования (и не является частью семантики C или C ++).Это может быть особенностью некоторых IDE (не всех).Это можно сделать не зависящим от языка способом (например, в Emacs ).

...