函式名:Parle\Lexer::getToken()
適用版本:Parle 0.8.1 及以上版本
用法: Parle\Lexer::getToken() 方法用於從詞法分析器中獲取下一個標記(token)。它返回一個陣列,包含標記的型別和值。
語法:
public Parle\Lexer::getToken(): array
示例:
// 建立詞法分析器例項
$lexer = new Parle\Lexer();
// 新增詞法規則
$lexer->addSymbol('NUMBER', '[0-9]+');
$lexer->addSymbol('PLUS', '\+');
$lexer->addSymbol('MINUS', '-');
$lexer->addSymbol('MULTIPLY', '\*');
$lexer->addSymbol('DIVIDE', '/');
// 設定輸入字串
$input = '42 + 7 - 3 * 2 / 4';
// 設定輸入字串作為詞法分析器的輸入
$lexer->setInput($input);
// 迴圈獲取下一個標記
while (($token = $lexer->getToken()) !== null) {
$type = $token[0];
$value = $token[1];
echo "Token Type: $type, Value: $value" . PHP_EOL;
}
輸出:
Token Type: NUMBER, Value: 42
Token Type: PLUS, Value: +
Token Type: NUMBER, Value: 7
Token Type: MINUS, Value: -
Token Type: NUMBER, Value: 3
Token Type: MULTIPLY, Value: *
Token Type: NUMBER, Value: 2
Token Type: DIVIDE, Value: /
Token Type: NUMBER, Value: 4
上述示例中,我們使用 Parle\Lexer 類建立一個詞法分析器,並新增了一些詞法規則。然後,我們將輸入字串設定為詞法分析器的輸入,並使用 while 迴圈來獲取下一個標記。每個標記都是一個包含型別和值的陣列。最後,我們列印出每個標記的型別和值。
請注意,此示例僅用於演示 Parle\Lexer::getToken() 方法的用法,實際使用時需要根據具體需求設定適當的詞法規則和處理邏輯。