查詢

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

「 將一個或多個詞法分析器規則新增到詞法分析器中 」


PHP函式:Parle\Lexer::push()

適用版本:Parle\Lexer::push() 函式在 Parle 擴充套件版本1.0.0 及以上版本中可用。

用法:Parle\Lexer::push() 函式用於將一個或多個詞法分析器規則新增到詞法分析器中。

語法:

public void Parle\Lexer::push(array $rules)

引數:

  • $rules: 一個包含一個或多個規則的陣列。每個規則是一個關聯陣列,包含兩個鍵值對:
    • 're':規則的正規表示式模式。
    • 'token':規則匹配到時分配的標記。

返回值:該函式沒有返回值。

示例:

// 建立一個新的詞法分析器例項
$lexer = new Parle\Lexer();

// 定義一些詞法規則
$rules = [
    ['re' => '/[0-9]+/', 'token' => 'NUMBER'],
    ['re' => '/[a-zA-Z]+/', 'token' => 'WORD'],
    ['re' => '/\+/', 'token' => 'PLUS'],
    ['re' => '/-/', 'token' => 'MINUS'],
];

// 將規則新增到詞法分析器中
$lexer->push($rules);

// 使用詞法分析器進行分析
$lexer->consume('1234 + abc - 5678');
while ($token = $lexer->next()) {
    echo $token['token'] . ': ' . $token['value'] . "\n";
}

以上示例中,我們建立了一個新的 Parle\Lexer 例項,並定義了一些詞法規則。然後,我們使用 push() 函式將這些規則新增到詞法分析器中。接下來,我們使用 consume() 函式傳入待分析的字串。最後,我們使用 next() 函式逐個獲取分析結果,並輸出標記(token)和對應的值(value)。

輸出結果:

NUMBER: 1234
PLUS: +
WORD: abc
MINUS: -
NUMBER: 5678
補充糾錯
上一個函式: Parle\Lexer::reset()函式
熱門PHP函式
分享連結