查詢

Parle\Lexer::advance()函式—用法及示例

「 推進詞法分析器的當前位置,並返回當前位置的詞法單元 」


函式名稱:Parle\Lexer::advance() 

適用版本:Parle 0.8.0 及以上版本

函式用法: Parle\Lexer::advance() 函式用於推進詞法分析器的當前位置,並返回當前位置的詞法單元。

語法:

public mixed Parle\Lexer::advance()

引數: 該函式沒有任何引數。

返回值:

  • 如果詞法分析器已經到達輸入的末尾,則返回 null
  • 如果詞法分析器成功推進到下一個詞法單元,則返回一個陣列,包含兩個元素:
    • 0 索引位置的元素為當前位置的詞法單元的型別(token type)。
    • 1 索引位置的元素為當前位置的詞法單元的值(token value)。

示例: 以下示例演示瞭如何使用 Parle\Lexer::advance() 函式:

$lexer = new Parle\Lexer();
$lexer->push('[0-9]+', 'NUMBER');
$lexer->push('[a-zA-Z]+', 'WORD');
$lexer->push('[+\-*/]', 'OPERATOR');

$lexer->consume('2 + 3 * 4');

while (($token = $lexer->advance()) !== null) {
    echo "Token Type: " . $token[0] . "\n";
    echo "Token Value: " . $token[1] . "\n";
    echo "------------------------\n";
}

輸出: ``` Token Type: NUMBER Token Value: 2

Token Type: OPERATOR Token Value: +

Token Type: NUMBER Token Value: 3

Token Type: OPERATOR Token Value: *

Token Type: NUMBER Token Value: 4


在上述示例中,首先建立了一個 Parle\Lexer 物件,並使用 `push()` 方法定義了三個詞法規則。然後,呼叫 `consume()` 方法將要分析的字串傳遞給詞法分析器。最後,使用 `advance()` 方法在一個迴圈中逐個獲取詞法單元,並輸出其型別和值。

注意:示例中的輸出結果僅供參考,實際輸出結果可能會因為不同的輸入而有所不同。
補充糾錯
上一個函式: Parle\Lexer::build()函式
熱門PHP函式
分享連結