我深入研究了编译器和解释器的主题。我想检查一下我的基本理解是否正确,所以让我们假设以下内容:
我有一种叫做“ Foobish”的语言,其关键字是
<OUTPUT> 'TEXT', <Number_of_Repeats>;
因此,如果我想在控制台上打印10次,我会写
OUTPUT 'Hello World', 10;
Hello World.foobish文件。
现在,我用自己选择的语言(在这种情况下为C#)编写解释器:
using System;
namespace FoobishInterpreter
{
internal class Program
{
private static void Main(string[] args)
{
analyseAndTokenize(Hello World.foobish-file)//Pseudocode
int repeats = Token[1];
string outputString = Token[0];
for (var i = 0; i < repeats; i++)
{
Console.WriteLine(outputString);
}
}
}
}
在非常简单的解释程序级别,解释程序将分析脚本文件等,并以解释程序的实现方式执行愚蠢的语言。
编译器会创建直接在物理硬件上运行的机器语言吗?
因此,解释器不会产生机器语言,但是编译器会为输入提供机器语言吗?
在编译器和解释器的基本工作方式上是否存在误解?