gpt4 book ai didi

解析源代码 - 不同语言的唯一标识符?

转载 作者:行者123 更新时间:2023-12-02 04:07:36 24 4
gpt4 key购买 nike

关闭。这个问题需要更多focused .它目前不接受答案。












想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post .

6年前关闭。




Improve this question




我正在构建一个接收源代码作为输入并分析代码的几个方面的应用程序。它可以接受来自许多通用语言的代码,例如C/C++、C#、Java、Python、PHP、Pascal、SQL 等(但不支持许多语言,例如 Ada、Cobol、Fortran)。一旦知道语言,我的应用程序就知道要做什么(我有不同语言的不同处理程序)。

目前我要求用户输入编写代码的编程语言,这很容易出错:虽然用户知道编程语言,但他们中的一小部分(在极少数情况下)只是因为鲁莽而点击了错误的选项,这会破坏系统(即我的分析失败)。

在我看来,应该有一种方法可以从输入文本本身找出(在大多数情况下)语言是什么。几个注意事项:

  • 我收到的是纯文本而不是文件名,所以我不能使用扩展名作为提示。
  • 用户不需要输入完整的源代码,也可以输入代码片段(即可以不包含include/import部分)。
  • 我很清楚,我选择的任何算法都不会 100% 证明,当然对于非常短的输入代码(例如,Python 和 Ruby 都可以接受的),在这种情况下,我仍然需要用户的帮助,但是我想最大限度地减少用户参与过程,以最大限度地减少错误。

  • 例子:
  • 如果文本包含“x->y()”,我肯定知道它是 C++ (?)
  • 如果文本包含“public static void main”,我肯定知道它是 Java (?)
  • 如果文本包含“for x := y to z do begin”,我肯定知道它是 Pascal (?)

  • 我的问题:
  • 您是否熟悉用于自动确定输入源代码的语言的任何标准库/方法?
  • 我可以肯定地将一种语言与另一种语言区分开来的唯一代码“标记”是什么?

  • 我正在用 Python 编写代码,但我认为这个问题与语言无关。

    谢谢

    最佳答案

    Vim 有一个自动检测文件类型的功能。如果您下载 vim 源代码,您将找到一个/vim/runtime/filetype.vim 文件。

    对于每种语言,它都会检查文件的扩展名,并且对于其中一些(最常见的),它有一个可以从源代码中获取文件类型的函数。你可以检查一下。代码很容易理解,并且有一些非常有用的注释。

    关于解析源代码 - 不同语言的唯一标识符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/924929/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com