函式名:Parle\RLexer::getToken()
適用版本:Parle 0.7.0 及以上版本
用法: Parle\RLexer::getToken() 函式用於從輸入流中獲取下一個標記(token)。該函式是 Parle\RLexer 類的靜態方法,可以直接透過類名呼叫。
示例: 下面是一個簡單的示例,演示瞭如何使用 Parle\RLexer::getToken() 函式獲取輸入流中的下一個標記。
// 建立一個 Parle\RLexer 例項
$lexer = new Parle\RLexer();
// 設定詞法規則
$lexer->push('[a-zA-Z]+', 'T_IDENTIFIER'); // 匹配一個或多個字母,將其標記為 T_IDENTIFIER
$lexer->push('\d+', 'T_NUMBER'); // 匹配一個或多個數字,將其標記為 T_NUMBER
$lexer->push('\s+', 'T_WHITESPACE'); // 匹配一個或多個空白字元,將其標記為 T_WHITESPACE
// 設定輸入流
$input = 'Hello 123 World';
$lexer->consume($input);
// 使用 getToken() 函式獲取下一個標記
$token = Parle\RLexer::getToken();
// 輸出標記的型別和內容
echo 'Token type: ' . $token[0] . PHP_EOL;
echo 'Token value: ' . $token[1] . PHP_EOL;
在上述示例中,我們首先建立了一個 Parle\RLexer 例項,並使用 push() 方法設定了三個詞法規則,分別用於匹配識別符號、數字和空白字元。然後,我們將輸入流設定為字串 'Hello 123 World',並透過 consume() 方法將其傳遞給詞法分析器。最後,我們使用 Parle\RLexer::getToken() 函式獲取下一個標記,並輸出其型別和內容。
注意:在實際使用中,通常會結合使用迴圈和條件語句來遍歷整個輸入流,並逐個獲取標記。以上示例僅演示了單次使用 getToken() 函式的用法。