【问题标题】:Is there an interpreter for C? [closed]有 C 的解释器吗? [关闭]
【发布时间】:2010-10-09 17:47:29
【问题描述】:

我想知道是否有类似 C 解释器的东西。也就是说,在 Linux 终端中,我可以输入“python”,然后在该解释器中编码。 (我不确定解释正确的词)。这对于测试不同的东西真的很有帮助,我很好奇 C 是否存在类似的东西。尽管我对此表示怀疑。我唯一能想到的就是 C shell...

【问题讨论】:

  • 您想要的正确词是“shell”或“prompt”或“REPL”(Read-Eval-Print-Loop,参考 4 个 Lisp 命令,必须将它们连接起来才能生成Lisp 中的 Lisp 解释器),但解释器可以工作。
  • 顺便说一句,您要查找的术语是 REPL(读取评估打印循环)。
  • 首选词实际上是 C 的“交互式”环境。交互式环境会打开特定于该语言的 shell 或提示符。 REPL 也不错。
  • C/C++ 解释器和编译器的完整列表可以在这里找到:thefreecountry.com/compilers/cpp.shtml

标签: c interpreter read-eval-print-loop


【解决方案1】:

There are many - 如果您缩小问题的范围,我们或许可以针对您的需求提出一些具体建议。

著名的解释器是 Dobbs 博士详细介绍的“Ch: A C/C++ Interpreter for Script Computing”:

Ch 是一个完整的 C 解释器 支持所有语言功能和 ISO C90 标准库 标准,但用许多扩展 C 字符串等高级功能 类型和计算数组为 一流的对象。

Ch standard is freeware 但不是开源的。只有 Ch 专业版具有绘图功能和其他可能需要的功能。

我以前从未看过这个,但是手头有一个 c 解释器听起来非常有用,而且我可能会添加到我的工具集中。感谢您的提问!


编辑:

刚刚发现我最喜欢的编译器之一 TCC 将执行 C 脚本:

它还处理 C 脚本文件(只是 添加shebang线 "#!/usr/local/bin/tcc -run" 到 C 源代码文件的第一行 在 Linux 上直接执行。

TCC 可以从以下位置读取 C 源代码 使用“-”时的标准输入 'infile' 的位置。示例:

echo 'main(){puts("hello");}' | tcc -run -

【讨论】:

  • 我希望 CH 的一个版本在 OSI 批准的许可下可用,以便可以分发。您可以使用他们的解释器设计非常好的实用程序,不幸的是它们太成问题而无法捆绑。
  • 那太好了。免费软件总比没有好,但在有人这样做之前......
  • 奇怪的是,tcc 默认退出状态为10。看起来您必须明确添加 return 0echo 'main(){puts("hello"); return 0;}' | tcc -run -
【解决方案2】:

picoc - 一个非常小的 C 解释器

PicoC 是一个非常小的 C 脚本解释器。它原本是 作为 UAV 机载飞行系统的脚本语言编写。 它也非常适合其他机器人,嵌入式和非嵌入式 应用程序。

【讨论】:

    【解决方案3】:

    ROOT 项目提供了一个非常实用的 C 和 C++ 解释器,称为 Cint。我非常喜欢它。不过,这需要一点时间来适应解释。

    TCC 也是一个很好的选择,但我无法保证它的 REPL

    【讨论】:

    • ROOT团队不是在淘汰Cint吗?
    • @Zboson "CERN 已切换到新的解释器,坚持。CERN 不再支持 CINT"
    • ROOT 将 cint 替换为 clin。因此,紧贴可以作为更新的推荐。 (虽然 - 查看其他答案 - cling 是 C++,而不是 C,如果相关的话,尽管 iirc cint 也做了一些 C++)
    【解决方案4】:

    大概吧。 C++ 有几个。有关示例,请参阅Have you used any of the C++ interpreters (not compilers)?。当然,cint 几乎可以吃掉任何效果良好的 c 代码,而且tcc 速度如此之快,您可以像使用解释器一样使用它。

    【讨论】:

      【解决方案5】:

      看看Ch Interpreter

      Ch 是一个可嵌入的 C/C++ 解释器 用于跨平台脚本,shell 编程, 2D/3D 绘图, 数值 计算和嵌入式脚本。

      【讨论】:

        【解决方案6】:

        我知道我们在课堂上使用 CINT。看起来不错,你不妨试试看!

        【讨论】:

          【解决方案7】:

          查看iGCC

          【讨论】:

            【解决方案8】:

            cinterp 是一个开始。

            【讨论】:

            【解决方案9】:

            最近有 Cling(基于 LLVM/Clang)

            http://root.cern.ch/drupal/content/cling

            【讨论】:

            • 它适用于 C++,而不是 C。
            【解决方案10】:

            您可以使用 CompCert。以下是一些示例:http://compcert.inria.fr/man/manual004.html

            【讨论】:

              【解决方案11】:

              ccons 似乎满足您的限制:

              ccons 项目的目标是为 C 编程语言创建一个交互式控制台,分别类似于 Python 和 Ruby 的“python”和“irb”。该项目建立在 clang 和 llvm 之上。

              【讨论】:

                【解决方案12】:

                它已经完成了,尽管绝大多数 C 工作都已编译。一个例子是CH

                【讨论】:

                  【解决方案13】:

                  CERN 有一个名为 ROOT 的工具包,主要用于科学或数据分析等目的,但它有一个基于 Clang 的 C/C++ 解释器,名为 Cling

                  在改编 Cling 之前,他们使用了一个名为 CINT 的 C 解释器。 CINT 是轻量级的,而且似乎仍然可以下载。

                  我认为您可以通过仔细搜索 Wikipedia 列表文章来获得其他信息。

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2010-12-12
                    • 2014-05-18
                    • 2013-05-21
                    • 2015-09-13
                    • 2012-05-27
                    相关资源
                    最近更新 更多