牛牛在线工具

Parle\RLexer::push()

收录 8868 个 PHP 函数,含用途说明与用法示例。

Parle\RLexer::push()

向词法分析器的规则列表中添加一个或多个规则

函数名称:Parle\RLexer::push() 适用版本:Parle 0.7.1及以上版本 函数描述:Parle\RLexer::push()方法用于向词法分析器的规则列表中添加一个或多个规则。 用法: Parle\RLexer::push(string|array $rules): void 参数: $rules:添加的规则。可以是一个字符串或一个字符串数组。字符串规则应该遵循Parle词法分析器的规则语法。 示例1: $lexer = new Parle\RLexer(); // 添加单个规则 $lexer->push('T_STRING [a-zA-Z_][a-zA-Z0-9_]*'); // 添加多个规则 $lexer->push([ 'T_NUMBER [0-9]+', 'T_OPERATOR \+|\-|\*|\/', ]); // 执行词法分析 $tokens = $lexer->lex('1 + 2'); // 输出词法单元 foreach ($tokens as $token) { echo $token['name'] . ': ' . $token['text'] . PHP_EOL; } 示例2: $lexer = new Parle\RLexer(); // 添加多个规则 $lexer->push([ 'T_NAME [a-zA-Z_][a-zA-Z0-9_]*', 'T_EMAIL [a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}', ]); // 执行词法分析 $tokens = $lexer->lex('Hello, my email is test@example.com'); // 输出词法单元 foreach ($tokens as $token) { echo $token['name'] . ': ' . $token['text'] . PHP_EOL; } 注意事项: 添加的规则必须遵循Parle词法分析器的规则语法。 在执行词法分析之前,需要先添加所有需要的规则。 通过lex()方法执行词法分析,返回一个包含词法单元的数组。 词法单元的结构为['name' => '词法单元名称', 'text' => '词法单元文本']。