sách gpt4 ai đã đi

tự động hoàn thành - Thư viện/công cụ hoàn thành mã chung

In lại 作者:行者123 更新时间:2023-12-04 08:55:55 32 4
mua khóa gpt4 Nike

我正在尝试在我最喜欢的编辑器中设置适当的代码完成功能,我们将其称为AnEditor,以避免互联网上充斥着特定于程序的答案。 (您知道语言是ALanguage。)编辑器具有两个我喜欢的功能:它既可以在控制台中工作,也可以在GUI中工作,因此我可以在网络上使用它,并且它具有很大的可扩展性。因此,我不愿意使用功能完善的IDE。但是,如果我找到一个不错的解决方案,可以将其插入,但该编辑器没有可靠的代码完成功能。

我已经针对“[编辑器/IDE Y]中的[语言X]完成”提出了一系列问题和解决方案。似乎每个新的IDE都从头,解析器和所有语言开始为每种语言实现其代码完成。每个较简单的编辑器(包括AnEditor)都执行以下操作之一:

  • 仅完成标准库函数名称
  • 或使用ctags可以提供基于延迟的基于正则表达式的“解析”(适用于非C程序),并且不应告诉您刚才输入的变量的类型,因此对于真正的代码完成来说不是很有用,
  • 如果编辑器可以使用插件扩展,则还有其他方法,但是它们通常归结为上述内容的某种或多或少的变态组合,以及大量的自定义正则表达式。

  • 现在的问题是,为什么我们不能有一个声音代码完成库,我可以将其插入AnEditor而将其他人插入ABigIDE?据我所知(解密C指针丛林不是我的目标),答案应该看起来像这样:
  • 是yacc/lex/bison风格的通用解析器(或静态分析器),在编写过程中以某种方式放松了对代码的容忍度,能够理解JavaDoc风格的注释。而且最好是快速,因此它可以即时使用
  • 一个索引,它可以告诉类的成员,方法的签名及其在文件中的位置(现在是ctags),返回值以及JavaDoc注释中的其他文档
  • 另一个知道变量类型的索引,以及一个根据当前正在写入的文件或代码中的位置告诉类型的函数

  • 因此,要完成某种语言的工作,您需要为该语言制定解析器规则,在标准库和项目上建立索引,召唤打字功能并查找类的成员和文档。或者,如果要处理对象构造或静态调用,则仅列出类和成员。

    如果Eclipse,Netbeans和JetBrains已成功用Java完成此操作(因此我应该使用 plug Eclipse to AnEditor),为什么没有人能以一种less肿且更通用的方式来做到这一点?还是我错过了一些东西,而 future 已经潜伏在某个地方?

    1 Câu trả lời

    因此:到目前为止,几乎所有人都已经解决了这个确切的问题。 ‘Language servers’ provide a protocol to plug language-specific semantics-aware completion and other features to different editors and IDEs.

    值得注意的是,“语言服务器”倾向于使用与它们解析的语言相同的语言进行开发。对于较慢的语言(例如Python),这可能是一个可疑的决定。

    对于某些语言,类似的解决方案在一段时间内是可用的,而与Langservers无关,例如Haskell等的Tern for JS,Scionghc-mod等。它们通常主要用于Emacs和Vim。可以预见的是,此类解决方案主要出现在非主流语言中,例如所有的JS编译语言-弹出的速度似乎比为每个编辑器/IDE开发单独的插件要快。

    关于autocomplete - 通用代码完成库/工具,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12326471/

    32 4 0
    行者123
    Hồ sơ cá nhân

    Tôi là một lập trình viên xuất sắc, rất giỏi!

    Nhận phiếu giảm giá Didi Taxi miễn phí
    Mã giảm giá Didi Taxi
    Giấy chứng nhận ICP Bắc Kinh số 000000
    Hợp tác quảng cáo: 1813099741@qq.com 6ren.com