说,我想稍微改变某些语言的行为。
可以做到吗?以前做过吗?
UPD:Typescript具有非常有限的可能性来使用属性名称(例如,您不能在typescript的帮助下创建派生自另一个名称的propname,例如大写字母或带有前缀),而Javascript( Typescript编译到的内容)非常灵活。因此,我想在LSP的帮助下修改Typescript的一些带有自动补全选项的LSP消息。
答案 0 :(得分:1)
是的,但是具体操作方法取决于操作系统。从编译器的角度来看,代理将显示为您的IDE。 LSP是网络协议
我想稍微改变某种语言的行为。
因此,您想更改某种语言的semantics(并且您不知道是哪一种)。那么LSP并不是最好的选择。
例如,在某些简单情况下,使用GCC编写GCC plugin更合适。
在大多数情况下,更改“行为”实际上是在更改语言本身。然后,您可能需要自己实现该语言。有时,您可能会修补现有的原始语言的免费软件实现。在其他情况下,您需要自己进行语言实现。然后阅读Dragon Book,并考虑在您的语言实现中编译或编译to C您的语言。确保先在纸上指定它。
不要混淆一种编程语言(这是一种规范,通常是用英语写的-也许以某种特定的表示形式进行了形式化,例如n1570代表C11,{{3} }(用于Scheme)及其实现(这是一种软件)。阅读Scott的R5RS。
不要将IDE与语言实现混淆。例如,我所知道的所有C或C ++编译器都没有任何IDE,而是命令行程序(例如Programming Language Pragmatics,GCC等),其中大多数甚至都没有了解LSP。 IDE可以启动 C ++编译器,但它不是编译器。您可以使用普通的Clang(甚至可以是与语言无关的简单代码,例如Windows上的Notepad或Linux上的Leafpad或nano)(在C,C ++,Java,C#,Ocaml等语言中进行编码)。
大多数编程语言都将源程序定义为一组“翻译单元”,实际上是“源文件”,每种都是具有某些复杂语法和语义的字符序列。这些源文件的创建方式不在编程语言规范的范围内(您可以使用编辑器,也可以为这些源文件编写自己的生成器,....)
LSP是对“ IDE”和语言实现之间的协议的建议。
请注意,自动补全(在您的评论中提到)不是编程语言的功能(也不是C或C ++语义的一部分)。它可能是某些IDE(不是所有IDE)的功能。可以以语言无关的方式(例如,在source code editor中完成)。