Lexer
in package
Tags
Table of Contents
Constants
- PUNCTUATION = '()[]{}?:.,|'
- REGEX_DQ_STRING_DELIM = '/"/A'
- REGEX_DQ_STRING_PART = '/[^#"\\\\]*(?:(?:\\\\.|#(?!\{))[^#"\\\\]*)*/As'
- REGEX_INLINE_COMMENT = '/#[^\n]*/A'
- REGEX_NAME = '/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/A'
- REGEX_NUMBER = '/(?(DEFINE) (?<LNUM>[0-9]+(_[0-9]+)*) # Integers (with underscores) 123_456 (?<FRAC>\.(?&LNUM)) # Fractional part .456 (?<EXPONENT>[eE][+-]?(?&LNUM)) # Exponent part E+10 (?<DNUM>(?&LNUM)(?:(?&FRAC))?) # Decimal number 123_456.456 )(?:(?&DNUM)(?:(?&EXPONENT))?) # 123_456.456E+10 /Ax'
- REGEX_STRING = '/"([^#"\\\\]*(?:\\\\.[^#"\\\\]*)*)"|\'([^\'\\\\]*(?:\\\\.[^\'\\\\]*)*)\'/As'
- STATE_BLOCK = 1
- STATE_DATA = 0
- STATE_INTERPOLATION = 4
- STATE_STRING = 3
- STATE_VAR = 2
- SPECIAL_CHARS = ['f' => "\f", 'n' => "\n", 'r' => "\r", 't' => "\t", 'v' => "\v"]
Properties
- $brackets : mixed
- $closingBrackets : array<string|int, mixed>
- $code : mixed
- $currentVarBlockLine : mixed
- $cursor : mixed
- $end : mixed
- $env : mixed
- $isInitialized : mixed
- $lineno : mixed
- $openingBrackets : array<string|int, mixed>
- $options : mixed
- $position : mixed
- $positions : mixed
- $regexes : mixed
- $source : mixed
- $state : mixed
- $states : mixed
- $tokens : mixed
Methods
- __construct() : mixed
- tokenize() : TokenStream
- checkBrackets() : void
- getOperatorRegex() : string
- initialize() : void
- lexBlock() : void
- lexComment() : void
- lexData() : void
- lexExpression() : void
- lexInterpolation() : void
- lexRawData() : void
- lexString() : void
- lexVar() : void
- moveCursor() : void
- popState() : void
- pushState() : void
- pushToken() : void
- stripcslashes() : string
Constants
PUNCTUATION
public
mixed
PUNCTUATION
= '()[]{}?:.,|'
REGEX_DQ_STRING_DELIM
public
mixed
REGEX_DQ_STRING_DELIM
= '/"/A'
REGEX_DQ_STRING_PART
public
mixed
REGEX_DQ_STRING_PART
= '/[^#"\\\\]*(?:(?:\\\\.|#(?!\{))[^#"\\\\]*)*/As'
REGEX_INLINE_COMMENT
public
mixed
REGEX_INLINE_COMMENT
= '/#[^\n]*/A'
REGEX_NAME
public
mixed
REGEX_NAME
= '/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/A'
REGEX_NUMBER
public
mixed
REGEX_NUMBER
= '/(?(DEFINE)
(?<LNUM>[0-9]+(_[0-9]+)*) # Integers (with underscores) 123_456
(?<FRAC>\.(?&LNUM)) # Fractional part .456
(?<EXPONENT>[eE][+-]?(?&LNUM)) # Exponent part E+10
(?<DNUM>(?&LNUM)(?:(?&FRAC))?) # Decimal number 123_456.456
)(?:(?&DNUM)(?:(?&EXPONENT))?) # 123_456.456E+10
/Ax'
REGEX_STRING
public
mixed
REGEX_STRING
= '/"([^#"\\\\]*(?:\\\\.[^#"\\\\]*)*)"|\'([^\'\\\\]*(?:\\\\.[^\'\\\\]*)*)\'/As'
STATE_BLOCK
public
mixed
STATE_BLOCK
= 1
STATE_DATA
public
mixed
STATE_DATA
= 0
STATE_INTERPOLATION
public
mixed
STATE_INTERPOLATION
= 4
STATE_STRING
public
mixed
STATE_STRING
= 3
STATE_VAR
public
mixed
STATE_VAR
= 2
SPECIAL_CHARS
private
mixed
SPECIAL_CHARS
= ['f' => "\f", 'n' => "\n", 'r' => "\r", 't' => "\t", 'v' => "\v"]
Properties
$brackets
private
mixed
$brackets
$closingBrackets
private
array<string|int, mixed>
$closingBrackets
= ['}', ')', ']']
$code
private
mixed
$code
$currentVarBlockLine
private
mixed
$currentVarBlockLine
$cursor
private
mixed
$cursor
$end
private
mixed
$end
$env
private
mixed
$env
$isInitialized
private
mixed
$isInitialized
= false
$lineno
private
mixed
$lineno
$openingBrackets
private
array<string|int, mixed>
$openingBrackets
= ['{', '(', '[']
$options
private
mixed
$options
$position
private
mixed
$position
$positions
private
mixed
$positions
$regexes
private
mixed
$regexes
$source
private
mixed
$source
$state
private
mixed
$state
$states
private
mixed
$states
$tokens
private
mixed
$tokens
Methods
__construct()
public
__construct(Environment $env[, array<string|int, mixed> $options = [] ]) : mixed
Parameters
- $env : Environment
- $options : array<string|int, mixed> = []
tokenize()
public
tokenize(Source $source) : TokenStream
Parameters
- $source : Source
Return values
TokenStreamcheckBrackets()
private
checkBrackets(string $code) : void
Parameters
- $code : string
getOperatorRegex()
private
getOperatorRegex() : string
Return values
stringinitialize()
private
initialize() : void
lexBlock()
private
lexBlock() : void
lexComment()
private
lexComment() : void
lexData()
private
lexData() : void
lexExpression()
private
lexExpression() : void
lexInterpolation()
private
lexInterpolation() : void
lexRawData()
private
lexRawData() : void
lexString()
private
lexString() : void
lexVar()
private
lexVar() : void
moveCursor()
private
moveCursor(mixed $text) : void
Parameters
- $text : mixed
popState()
private
popState() : void
pushState()
private
pushState(mixed $state) : void
Parameters
- $state : mixed
pushToken()
private
pushToken(mixed $type[, mixed $value = '' ]) : void
Parameters
- $type : mixed
- $value : mixed = ''
stripcslashes()
private
stripcslashes(string $str, string $quoteType) : string
Parameters
- $str : string
- $quoteType : string