我想知道如何创建像PHP这样的语言。服务器如何知道如何翻译PHP文件?它是如何工作的?我想这样做是出于教育目的。一种简单的语言,具有回声等基本功能。
答案 0 :(得分:4)
在基础知识中,当webserver获取处理php文件的请求时,它将此请求转换为php处理器,它可能是一个模块(如apache中的php.so)或服务(如php-cgi)。服务或模块将php脚本编译为机器代码,执行它并向服务器提供其工作的结果。您可以从http://php.net下载php源代码。源代码包括解析器,thanslator,编译器和执行php脚本作为机器代码所需的其他组件
答案 1 :(得分:4)
将您的任务划分为至少两个顶级部分:
PHP只是另一种编程语言 - 你需要一个词法分析器,解析器和解释器。
Web服务器的库和模块使Apache / TomCat与PHP接口。
答案 2 :(得分:2)
这是一个非常大的问题。而不是一个可以在这里真正回答的问题,而是一些可以帮助你入门的指示......
PHP公开了它的一些内部工作 - 如果你看一下:
<?php
$srctokens=token_get_all(file_get_contents(__FILE__));
print "<pre>\n";
foreach ($srctokens as $tok) {
print token_name($tok[0]) . ' -> ' . $tok[1];
}
?>
你会看到它将代码分成'单词'并为每一个分配元数据(它是函数名,变量,运算符......)。
然后将其构建为树结构,例如'if'语句可能有三个子节点 - 要评估的表达式(它本身会有子节点),一些代码用于评估表达式是否为真,还有一些代码用于评估表达式是否为假。
通常,它会使用一组内置函数从外部读取数据并将数据推送到外部世界。
Wikipedia或谷歌通常是了解你不了解的东西的好起点。
值得注意的是,因为它是一种解释型语言,所以使用eval()或create_function()(或仅使用临时文件)从PHP数据结构创建可执行代码很简单。实际上,您甚至可以实现结构化重写系统,使原始数据看起来不像PHP代码。例如lolcode
但是你需要非常小心,不要将这种机制暴露给可能滥用它的人。
HTH
答案 3 :(得分:2)
您也可以用PHP编写它,例如BobX。请注意,BobX实际上是 NOT 要做的一个例子。