Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Lexer Laravel Package

doctrine/lexer

Doctrine Lexer is a lightweight base library for building lexers used in top-down, recursive descent parsers. It powers Doctrine Annotations and Doctrine ORM's DQL parser, offering a simple, reliable foundation for tokenizing input.

View on GitHub
Deep Wiki
Context7

Base library for a lexer that can be used in Top-Down, Recursive Descent Parsers.

Frequently asked questions about Lexer
What is doctrine/lexer used for in Laravel?
Doctrine Lexer is a lightweight base library for building lexers that tokenize input for top-down, recursive descent parsers. In Laravel it is useful when you need to parse custom syntax, such as a DSL, configuration format, or query language. It is not needed for standard Laravel applications unless you are implementing lexical analysis. It is the same lexer foundation used by Doctrine Annotations and Doctrine ORM's DQL parser.
How do I install doctrine/lexer in a Laravel project?
Install it with Composer using composer require doctrine/lexer. There is no Laravel service provider or facade required for basic use. You typically instantiate the lexer within your own service or parser class. Composer will also resolve it automatically as a transitive dependency if another package such as Doctrine ORM requires it.
Does doctrine/lexer support Laravel 10 and PHP 8.1?
Yes. Doctrine Lexer 3.0.0 and later require PHP 8.1 or newer, which aligns with Laravel 10 and newer. If you are on an older Laravel version running PHP 7.4 or PHP 8.0, you should use Doctrine Lexer 2.x instead. Always check the package's PHP constraint before upgrading across major versions.
Can I use doctrine/lexer to build a custom query language or DSL in Laravel?
Yes. Doctrine Lexer is designed as a base library for lexers used in top-down, recursive descent parsers, making it suitable for custom query languages, DSLs, and configuration parsers. You extend its lexer abstractions and feed tokens into your own parser logic. It is intentionally minimal, so you remain responsible for grammar and parser implementation.
Is doctrine/lexer a full parser or just a lexer?
It is only a lexer foundation, not a complete parser. It helps split input into tokens, but you must build the recursive descent parser or grammar layer yourself. The package description explicitly calls it a base library for a lexer used in top-down, recursive descent parsers. This separation keeps it lightweight and flexible.
Do I need to configure doctrine/lexer in Laravel?
No complex bootstrapping is required. You can instantiate the lexer directly in a custom service, command, or parser class without registering a service provider. If you want dependency injection, you can bind your own lexer instance in a Laravel service provider. Configuration is limited to how you extend and use the lexer in your application code.
How do I test a lexer built with doctrine/lexer?
Unit test it by feeding known input strings into your lexer and asserting the resulting token sequence. PHPUnit is a natural fit in Laravel, and you can test edge cases such as whitespace, operators, keywords, and invalid input. Because Doctrine Lexer is standalone, tests do not need a full Laravel application boot unless your lexer depends on framework services.
Is doctrine/lexer safe for production Laravel applications?
Yes, it is considered low risk due to the maturity of the Doctrine ecosystem and consistent patch releases. It is used in production by Doctrine Annotations and Doctrine ORM's DQL parser. The main production concern is PHP version compatibility, so pin a major version that matches your Laravel and PHP runtime. It has limited direct dependents but is a stable transitive dependency for Doctrine packages.
What are alternatives to doctrine/lexer for parsing in Laravel?
Alternatives depend on what you are parsing. For simple PHP tokenization you can use PHP's built-in token_get_all, while larger grammar needs may call for a dedicated parser or parser-generator library. Doctrine Lexer is a good fit when you want a small, Doctrine-style base lexer for a hand-written recursive descent parser. It is not a general-purpose parser generator.
How is doctrine/lexer maintained and which version supports older Laravel versions?
Doctrine Lexer is maintained as part of the Doctrine project with a stable release history and patch updates. Version 3.x requires PHP 8.1+ and fits Laravel 10+, while version 2.x supports older PHP versions such as those used by Laravel 8 and 9. It has few direct dependents on Packagist but is widely used indirectly through Doctrine ORM and Annotations.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
vento/laravel-airbrake
wfeller/laravel-batch
maco-studios/mage-os-installer
busarm/armie
siberfx/laravel-logger
kfteam1991/dcat-admin
dashed/dashed-laposta
dashed/dashed-ecommerce-montaportal
dashed/dashed-ecommerce-etsy
neohq/string-blade-compiler
log1x/acf-composer
cgv/localized-resource
noith/settings
kda/laravel-package
kda/filament-dynamic-navigation
bypersoft/signbox
pairus/product-data
fayne/laravel-filament-cms-core
nodisrupt/laravel-agent
sierratecnologia/media-manager