2013-02-21 36 views
7

我正在建立一個網站來學習基本的編程,我將使用僞語言,用戶可以在其中提交他們的代碼,我需要解釋它。不過,我不確定如何在PHP中構建一個標記器。如何在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的定期expresions列表...我可以做類似於strtok的東西,但是它接受的數組是substr和strrpos的針,但在我看來,它應該可以用strtok來完成,因爲它只是爲此而設計的。任何信息或指向正確的方向將被感謝

+1

你可以得到http://php.net/manual/en/book.tokenizer.php – 2013-02-21 03:58:58

+1

通常是指向字符或正則列表的標記名列表。由於http://compilers.iecc.com/crenshaw/的介紹非常合適。但是,沒有冒犯,我認爲這不是一個你應該嘗試的任務。 – mario 2013-02-21 04:15:24

+0

沒有采取。我可能不會完成它,但它只是一個個人項目,所以我不在乎。我剛剛讀了關於strtok,我無法弄清楚如何使用它的值列表。如果你指向正確的方向,我會接受 – lisovaccaro 2013-02-21 04:28:00

回答

5

不要等待一些來自strtok的魔法。它與preg_split類似。

我認爲你想建立你自己的詞法分析器。所以你可以使用文章Writing a simple lexer in PHPsomething else

+0

的答案謝謝,我剛剛實現,我會編輯你的答案來添加代碼,因爲它太棒了。複製粘貼並在幾分鐘內運行 – lisovaccaro 2013-02-22 04:21:23

相關問題