- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
现在,在我开始问愚蠢的问题之前,我想说我在 JavaScript 和 C# 方面都有丰富的经验。
所以最近我开始了创建自己的编程语言的旅程。我找到了一个使用 javaScript 的好教程( http://lisperator.net/pltut/dream ) 但我不太明白这一点。你如何创建一个“独立”的编译器。现在,这是一个虚构的词,用来描述作为一个全新程序运行的编译器。例如“node index.js”。你不必用其他东西编译编译器。
如果我用 JavaScript 创建编译器,我仍然需要像这样为 ex 'node compiler.js nameofthefile.ext' 编译编译器。
然后我发现了一个叫做引导编译器的东西。因此,例如,您使用 Java 或 C 为您的新语言创建了一个编译器,然后您创建了一个用新语言编写的新编译器,并使用该编译器编译它以获得一个用新语言编写的新编译器。但我仍然不明白如何运行它。
例如,如果要用 C 来实现(这就是我打算做的),那么我将拥有名为 compiler.c 的文件
现在我需要编译 C 代码,所以我做了例如“make compiler.c”,这给了我一个名为“compiler”(在我使用的 Linux 中)或“compiler.exe”(在 Windows 中)。
所以现在要运行该程序,我可以执行 ./compiler,然后给它一个参数 the/path/to/the/programming_language.someExt
如果一切运行良好,它将执行我用新语言编写的程序所执行的操作。
但即使是现在我也无法将那个版本的编译器提供给 Windows 用户,因为编译器需要是 .exe 文件。
如果您仍在阅读本文,还有更多...如果然后想要引导当前编译器怎么办。
所以现在它自己的编译器将被称为 compiler.theExtOfTheProgrammingLang 而我想要编译的代码将是 hello_world.theExtOfTheProgrammingLang。但是现在我不能只运行编译器,因为我需要先使用以前的编译器编译它。
这一切让我脑子里一片困惑,但我不想放弃。
最佳答案
我会试着给你画一幅画。
您正在创建一种新语言 L
。对于那种语言,你编写了一个编译器,CL(例如)Java,它从 L
编译到 x86 并创建一个 ELF 可执行文件(即 Linux 可执行文件)。您需要使用 JVM 才能使用 CL(好吧,从技术上讲,有工具链可以将 Java 编译为 native ,但让我们忽略它)。
假设您不想受 JVM 限制,而是更喜欢在 Linux 上本地运行。嗯,没问题。您刚刚编写了一个从 L 编译为 native Linux 可执行文件的编译器。您只需要使用该编译器 CL 来编写一个新的编译器 C2L。 C2L 与 CL 做同样的事情,只是它是用 L
而不是 Java 编写的,所以你可以用 CL(在 JVM 上运行 CL)。编译 C2L 后,您不再需要 JVM 来运行或编译任何东西,因为 C2L 在 native 运行并编译为 native 可执行文件。
现在,如果您想创建另一个在 Windows 上运行的编译器,您需要创建第三个编译器 C3L,它将 L
编译为 native EXE (或您选择的任何 Windows 兼容格式)- 该编译器将使用 CL 或 C2L 进行编译。一旦你编译了 C3L,你就可以将该可执行文件转移到 Windows 机器上,你就完成了。
关于c - 在创建 "stand alone"编译器时遇到困难,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51835935/
tuple :: (Integer a,Fractional b) => (a,b,String) tuple = (18,5.55,"Charana") 所以这是给我的错误 ‘Integer’ is
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 11 年前。 Improve thi
我已经习惯了python和django,但我最近开始学习java。由于工作原因我没有太多时间,所以错过了很多类(class),现在我有点困惑,我必须做作业。 编辑 该程序应该根据每个运动员在自行车和比
这是一个困难的问题,但对专业人士来说很容易。 我在 mysql 中有以下字段:产品名称、mycost、sellprice 和 stock。因为我需要知道每种产品对我的商店的投资有多少,所以我创建了以下
我有 3 个表,其中已包含以下行: TBL_TESTER_LIST id tester_type tester_name 1 LMX LMX-01 2 LMX
我想只使用 GridBagLayout 来布局组件,如图所示。 我已经尝试了几个约束,但它永远不会以预期的结果结束,所以我想知道仅使用 GridBagLayout 是否真的可行。难点在于C1、C2、C
我遇到了以下代码没有结果的问题。但是,如果我取消注释掉指定的行,并注释掉它起作用的 bind_param 行,但这不是破坏了 mysqli 的目的吗?我的 var_dump 给了我的字符串(1)“1”
这个问题在这里已经有了答案: a good python to exe compiler? [closed] (3 个答案) 关闭 9 年前。 有了我之前问题的一些有用答案(见下文),我决定再试一次
我正在使用 Hadoop 分析 GSOD 数据 (ftp://ftp.ncdc.noaa.gov/pub/data/gsod/)。我选择了 5 年来执行我的实验 (2005 - 2009)。我配置了一
我在我的 macOS 应用程序的设置面板中使用 NSGridView。我是这样设置的: class GeneralViewController: RootViewController { pr
我正在尝试使用以下代码在 PHP 中自动安装 WordPress 发行版: $base_dir = '/home/username/wordpress_location'; chdir($base_d
在 Node.js 中将图像转换为 Base64 字符串时,我遇到了一个非常令人困惑的问题 这是我的示例代码: app.get('/image', (req, res) => { ServerAP
我在尝试运行我的应用程序时遇到一些错误,这里是 logcat java.lang.RuntimeException: Unable to instantiate activity Componen
基本上,我正在努力创建一个管理团队和球员的 Java 程序。 根据我的理解,我会有一个团队和一个玩家类。在团队类中会有 get 和 set 方法,以及某种形式的集合来正确存储球员,例如数组列表?然后在
我仍在尝试找出 JavaSwing 中的 BorderLayout,这真的很令人沮丧。 我希望能够将一个 Pane 拆分为 3 个包含的子面板,但我不完全确定如何包含它。 这是我的游戏类,它包含面板
下面的表设计(完整的模式见下文)还有很多需要改进的地方,并且已经造成了许多困难,但是我无法找出如何最好地将它们规范化。这些表格的目的是: ICD9-提供CICD9和CDESC组合的主查找。每个组合在I
这是我的表格: AB元组表 C 表,其中包含 A.id 和 B.id 的条目 D 表,其中包含带有 C.id 的条目和一个 bool 字段“open” 我想计算 D 表中“open”= true 且具
我在 YouTube 上跟踪了一个相当旧的教程,在视频中他以这种方式使用了 mysql_result: return (mysql_result($result,0) == 1) ? true : f
我正在尝试创建一个左侧面板的页面。该面板有一个页眉、一个内容区域和一个页脚。主面板包装器 div 应该是页面高度的 100%。页眉和页脚没有指定的高度,因为我只希望它们足够大以容纳其文本和填充,而我希
我有 TreeView ,我想在其中显示用户通过 file_dialog.getOpenFileNames() 选择的文件; file_dialog 是 QFileDialog。我确实创建了模型类:
我是一名优秀的程序员,十分优秀!