Lexer examples

Example #1 Tokenize comma separated integer list

<?php

use Parle\Token;
use 
Parle\Lexer;
use 
Parle\LexerException;

/* name => id */
$token = array(
        
"COMMA" => 1,
        
"CRLF" => 2,
        
"DECIMAL" => 3,
);
/* id => name */
$tokenIdToName array_flip($token);

$lex = new Lexer;
$lex->push("[\x2c]"$token["COMMA"]);
$lex->push("[\r][\n]"$token["CRLF"]);
$lex->push("[\d]+"$token["DECIMAL"]);
$lex->build();

$in "0,1,2\r\n3,42,5\r\n6,77,8\r\n";

$lex->consume($in);

do {
        
$lex->advance();
        
$tok $lex->getToken();

        if (
Token::UNKNOWN == $tok->id) {
                throw new 
LexerException("Unknown token '{$tok->value}' at offset {$lex->marker}.");
        }

        echo 
"TOKEN: "$tokenIdToName[$tok->id], PHP_EOL;
} while (
Token::EOI != $tok->id);

Example #2 Tokenize assign statement

<?php

use Parle\{TokenLexer};

$lex = new Lexer;

$lex->push("\$[a-zA-Z_][a-zA-Z0-9_]*"1);
$lex->push("="2);
$lex->push("\d+"3);
$lex->push(";"4);

$lex->build();

$lex->consume('$x = 42; $y = 24;');


do {
    
$lex->advance();
    
$tok $lex->getToken();
    
var_dump($tok);
} while (
Token::EOI != $tok->id);

Here you can write a comment


Please enter at least 10 characters.
Loading... Please wait.
* Pflichtangabe
There are no comments available yet.

PHP cURL Tutorial: Using cURL to Make HTTP Requests

cURL is a powerful PHP extension that allows you to communicate with different servers using various protocols, including HTTP, HTTPS, FTP, and more. ...

TheMax

Autor : TheMax
Category: PHP-Tutorials

Midjourney Tutorial - Instructions for beginners

There is an informative video about Midjourney, the tool for creating digital images using artificial intelligence, entitled "Midjourney tutorial in German - instructions for beginners" ...

Mike94

Autor : Mike94
Category: KI Tutorials

Basics of views in MySQL

Views in a MySQL database offer the option of creating a virtual table based on the result of an SQL query. This virtual table can be queried like a normal table without changing the underlying data. ...

admin

Autor : admin
Category: mySQL-Tutorials

Publish a tutorial

Share your knowledge with other developers worldwide

Share your knowledge with other developers worldwide

You are a professional in your field and want to share your knowledge, then sign up now and share it with our PHP community

learn more

Publish a tutorial