7

我正在建立一个网站来学习基本编程,我将使用一种伪语言,用户可以在其中提交他们的代码,我需要解释它。但是我不确定如何在 PHP 中构建标记器。

有一个像这样的片段:

a = 1
b = 2
c = a - b

if(a > b) {
    buy(a)
    } else {
    buy(b)
    }

我将如何将此代码分成令牌?

--

这就是我现在正在尝试的:

$tokens = array();

// First token (define string)
$token  = strtok($botCode, '=');
$tokens[] = $token;

// Loop
while($token) {
    $token  = strtok('=');
    $tokens[] = $token;
}

但是我无法弄清楚如何将 strtok 与常规表达式列表一起使用...我可以做一些类似于 strtok 的事情,但它接受数组作为带有 substr 和 strrpos 的针,但在我看来它应该是可能的使用 strtok 来完成它,因为它就是为此而设计的。任何信息或指向正确的方向将不胜感激

4

1 回答 1

5

不要等待 strtok 的一些魔法。它类似于 preg_split。

我认为您想构建自己的词法分析器。因此,您可以使用文章Writing a simple lexer in PHP其他内容

于 2013-02-22T01:13:57.680 回答