这里的简单问题,似乎无法以一种可以理解的方式传递谷歌。
假设我想从命令提示符命令行执行一行实际编程代码(c ++或java或python ...等),如SetCursorPos或printf。我模糊地想象我必须调用编译器并将命令传递给它,就像参数一样,然后将其转换为机器语言并传递给......究竟在哪里?
好的,这就是两个问题。
如何从命令行运行实际代码和
执行完全编译的程序或转换后的代码行(假设这些基本上是二进制容器)时,究竟发生了什么?
问题一显然优先。不幸的是,我找不到任何关于它的文档,只是一些与它模糊相关的东西。
答案 0 :(得分:1)
如何从命令行运行实际代码
在不深入研究它们之间的大量模糊性的情况下,语言实现有两大类:解释器和编译器。
对于许多解释器(或具有隐式编译的实现,例如V8 JavaScript的jit编译器,或几乎任何具有repl的实现),从命令行运行单行应该是相当简单的。 CPython(Python的标准实现)具有-c command
选项:
$ python -c 'print("Hello, world!")'
Hello, world!
使用显式编译步骤的语言实现往往不那么简单。特别是,编译器需要直接从参数列表中接受源,或者从标准输入(通过管道或重定向)接受源。在输出端,您的编译器必须支持立即执行该程序,或将其输出到标准输出,以便操作系统功能(如果存在)可以从管道执行它。
据我所知,大多数显式编译器的设计并未考虑到这些用法。在这种情况下,最好的办法是查看是否有可用于所讨论语言的REPL,最好是与编译器兼容的REPL,或创建(或查找)使其看起来像您的语言的包装器REPL。包装器会:
从用户的角度来看,这个应该看起来与CPython示例非常相似,因为它们不必与编译器或临时文件进行交互或查看。