在回答这个问题之前,请理解,我不是在问如何创建我自己的编程语言,我是在问如何使用vb.net代码为vb.net本身这样的语言创建编译器。本质上,用户输入代码,就会得到一个.exe。我绝对不想写我自己的语言,因为似乎其他编译器相关的问题已经在这里提出了。我也不想使用vb.net编译器本身,也不想复制集成开发环境。
我想要做的事情的确切目的很难解释,但我所需要的是朝着正确的方向推动编写一个编译器(如果可能的话,从头开始),它可以简单地接受输入并创建一个.exe。我以前打开过纯文本的.exe文件(我自己的程序),看看我是否能从我认为是人类可读的文本中获得一些含义,但我显然非常失望地看到随机的ascii,尽管可以理解为什么这就是我找到的全部。
我知道.exe文件只是几行代码,由它所在的计算机解析,但我这里的问题实际上可以归结为:.exe由什么代码组成?如果我想的话,我该如何在一个纯文本编辑器中创建一个呢?(不,我不想这样做,但如果我了解这个过程,我的目标将更容易实现。)是什么使可执行文件成为可执行文件?代码的逻辑适合在哪里?
这是一个编程问题,而不是计算机问题,这就是为什么我没有在SuperUser上发布它。我知道很多关于System.IO命名空间的信息,所以我知道如何创建一个文件并写入它,我只是不知道我到底应该在这个文件中放置什么才能使它作为一个可执行文件工作。
如果这个问题“令人困惑”、“愚蠢”或“显而易见”,我很抱歉,但我在任何地方都找不到任何关于可执行文件的实际内容的信息。
One of my google searches
Something that looked promising
编辑:这里的第二个链接,虽然看起来很好,但却彻底失败了。我不会浪费几个小时的时间去按键和记录结果。“使用"Alt”和3位数字的组合可以创建键盘上不显示但程序中需要的符号。“(步骤4)我怎么知道我需要什么符号?
非常感谢您的帮助,如果这个问题是nooby或“糟糕”的问题,我深表歉意。
简单地总结一下:我想用vb.net创建一个程序,它可以将特定语言的代码编译成单个可执行文件。有什么方法可以让我做到这一点,如果没有,我如何从头开始编写我自己的方法呢?
发布于 2009-09-28 20:16:30
你所问的是一个相当复杂的问题。当然,它的核心看起来非常基础:
但这些步骤中的每一步都可能相当紧张。步骤1应该在一定程度上是可以完成的,需要一些时间和大量的工作-您需要根据语言的规范将代码解析为许多控制语句。有关此步骤的更多信息,请查看http://en.wikipedia.org/wiki/Parsing。从本质上讲,您正在将键入的代码转换为表示所需功能的通用格式。
一旦解析了代码,下一步就是将解析后的代码转换成机器可运行的代码(通常是汇编,不过使用VB.NET,您可以编写Microsoft Intermediate Language代码作为输出,然后在CLR中运行它)。这就是以一种允许计算机运行程序的方式实际创建可执行文件的方法。
不幸的是,解决这个问题的最佳建议是:
祝好运!
编辑:如果你所寻找的是一种编写代码然后执行它的方法,你可以尝试为已经存在的脚本语言之一编写解释器- Ruby,Python,Lua,等等。
发布于 2009-09-28 20:08:43
Process.Start(String.Format("vbc.exe {0}", sourceFilePath))发布于 2009-09-28 20:34:40
下面是one book,它在非常基本的级别上解释了这一切。包括您可以在几个小时内获得工作的示例代码。
与许多编程爱好者一样,你需要花几个月的时间学习才能完成你想要的东西。祝你好运!
https://stackoverflow.com/questions/1489089
复制相似问题