plexorganizrnginxsonarrradarrdashboardcouchpotatonzbgetbookmarkapplication-dashboardmuximuxlandingpagestartpagelandinghtpcserverhomepagesabnzbdheimdallemby
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
53 lines
2.1 KiB
53 lines
2.1 KiB
Introduction
|
|
============
|
|
|
|
Doctrine Lexer is a library that can be used in Top-Down, Recursive
|
|
Descent Parsers. This lexer is used in Doctrine Annotations and in
|
|
Doctrine ORM (DQL).
|
|
|
|
To write your own parser you just need to extend ``Doctrine\Common\Lexer\AbstractLexer``
|
|
and implement the following three abstract methods.
|
|
|
|
.. code-block:: php
|
|
|
|
/**
|
|
* Lexical catchable patterns.
|
|
*
|
|
* @return array
|
|
*/
|
|
abstract protected function getCatchablePatterns();
|
|
|
|
/**
|
|
* Lexical non-catchable patterns.
|
|
*
|
|
* @return array
|
|
*/
|
|
abstract protected function getNonCatchablePatterns();
|
|
|
|
/**
|
|
* Retrieve token type. Also processes the token value if necessary.
|
|
*
|
|
* @param string $value
|
|
* @return integer
|
|
*/
|
|
abstract protected function getType(&$value);
|
|
|
|
These methods define the `lexical <http://en.wikipedia.org/wiki/Lexical_analysis>`_
|
|
catchable and non-catchable patterns and a method for returning the
|
|
type of a token and filtering the value if necessary.
|
|
|
|
The Lexer is responsible for giving you an API to walk across a
|
|
string one character at a time and analyze the type of each character, value and position of
|
|
each token in the string. The low level API of the lexer is pretty simple:
|
|
|
|
- ``setInput($input)`` - Sets the input data to be tokenized. The Lexer is immediately reset and the new input tokenized.
|
|
- ``reset()`` - Resets the lexer.
|
|
- ``resetPeek()`` - Resets the peek pointer to 0.
|
|
- ``resetPosition($position = 0)`` - Resets the lexer position on the input to the given position.
|
|
- ``isNextToken($token)`` - Checks whether a given token matches the current lookahead.
|
|
- ``isNextTokenAny(array $tokens)`` - Checks whether any of the given tokens matches the current lookahead.
|
|
- ``moveNext()`` - Moves to the next token in the input string.
|
|
- ``skipUntil($type)`` - Tells the lexer to skip input tokens until it sees a token with the given value.
|
|
- ``isA($value, $token)`` - Checks if given value is identical to the given token.
|
|
- ``peek()`` - Moves the lookahead token forward.
|
|
- ``glimpse()`` - Peeks at the next token, returns it and immediately resets the peek.
|
|
|