2015-06-13 16:24:52 +02:00
|
|
|
/* We currently rely on the token ID mapping to be the same between PHP 5 and PHP 7 - so the same lexer can be used for
|
|
|
|
* both. This is enforced by sharing this token file. */
|
|
|
|
|
|
|
|
%left T_INCLUDE T_INCLUDE_ONCE T_EVAL T_REQUIRE T_REQUIRE_ONCE
|
|
|
|
%left ','
|
|
|
|
%left T_LOGICAL_OR
|
|
|
|
%left T_LOGICAL_XOR
|
|
|
|
%left T_LOGICAL_AND
|
|
|
|
%right T_PRINT
|
|
|
|
%right T_YIELD
|
|
|
|
%right T_DOUBLE_ARROW
|
|
|
|
%right T_YIELD_FROM
|
2019-01-22 22:05:17 +01:00
|
|
|
%left '=' T_PLUS_EQUAL T_MINUS_EQUAL T_MUL_EQUAL T_DIV_EQUAL T_CONCAT_EQUAL T_MOD_EQUAL T_AND_EQUAL T_OR_EQUAL T_XOR_EQUAL T_SL_EQUAL T_SR_EQUAL T_POW_EQUAL T_COALESCE_EQUAL
|
2015-06-13 16:24:52 +02:00
|
|
|
%left '?' ':'
|
|
|
|
%right T_COALESCE
|
|
|
|
%left T_BOOLEAN_OR
|
|
|
|
%left T_BOOLEAN_AND
|
|
|
|
%left '|'
|
|
|
|
%left '^'
|
|
|
|
%left '&'
|
|
|
|
%nonassoc T_IS_EQUAL T_IS_NOT_EQUAL T_IS_IDENTICAL T_IS_NOT_IDENTICAL T_SPACESHIP
|
|
|
|
%nonassoc '<' T_IS_SMALLER_OR_EQUAL '>' T_IS_GREATER_OR_EQUAL
|
|
|
|
%left T_SL T_SR
|
|
|
|
%left '+' '-' '.'
|
|
|
|
%left '*' '/' '%'
|
|
|
|
%right '!'
|
|
|
|
%nonassoc T_INSTANCEOF
|
|
|
|
%right '~' T_INC T_DEC T_INT_CAST T_DOUBLE_CAST T_STRING_CAST T_ARRAY_CAST T_OBJECT_CAST T_BOOL_CAST T_UNSET_CAST '@'
|
|
|
|
%right T_POW
|
|
|
|
%right '['
|
|
|
|
%nonassoc T_NEW T_CLONE
|
|
|
|
%token T_EXIT
|
|
|
|
%token T_IF
|
|
|
|
%left T_ELSEIF
|
|
|
|
%left T_ELSE
|
|
|
|
%left T_ENDIF
|
|
|
|
%token T_LNUMBER
|
|
|
|
%token T_DNUMBER
|
|
|
|
%token T_STRING
|
|
|
|
%token T_STRING_VARNAME
|
|
|
|
%token T_VARIABLE
|
|
|
|
%token T_NUM_STRING
|
|
|
|
%token T_INLINE_HTML
|
|
|
|
%token T_ENCAPSED_AND_WHITESPACE
|
|
|
|
%token T_CONSTANT_ENCAPSED_STRING
|
|
|
|
%token T_ECHO
|
|
|
|
%token T_DO
|
|
|
|
%token T_WHILE
|
|
|
|
%token T_ENDWHILE
|
|
|
|
%token T_FOR
|
|
|
|
%token T_ENDFOR
|
|
|
|
%token T_FOREACH
|
|
|
|
%token T_ENDFOREACH
|
|
|
|
%token T_DECLARE
|
|
|
|
%token T_ENDDECLARE
|
|
|
|
%token T_AS
|
|
|
|
%token T_SWITCH
|
2020-07-15 21:40:05 +02:00
|
|
|
%token T_MATCH
|
2015-06-13 16:24:52 +02:00
|
|
|
%token T_ENDSWITCH
|
|
|
|
%token T_CASE
|
|
|
|
%token T_DEFAULT
|
|
|
|
%token T_BREAK
|
|
|
|
%token T_CONTINUE
|
|
|
|
%token T_GOTO
|
|
|
|
%token T_FUNCTION
|
2019-05-09 14:17:28 +02:00
|
|
|
%token T_FN
|
2015-06-13 16:24:52 +02:00
|
|
|
%token T_CONST
|
|
|
|
%token T_RETURN
|
|
|
|
%token T_TRY
|
|
|
|
%token T_CATCH
|
|
|
|
%token T_FINALLY
|
|
|
|
%token T_THROW
|
|
|
|
%token T_USE
|
|
|
|
%token T_INSTEADOF
|
|
|
|
%token T_GLOBAL
|
|
|
|
%right T_STATIC T_ABSTRACT T_FINAL T_PRIVATE T_PROTECTED T_PUBLIC
|
|
|
|
%token T_VAR
|
|
|
|
%token T_UNSET
|
|
|
|
%token T_ISSET
|
|
|
|
%token T_EMPTY
|
|
|
|
%token T_HALT_COMPILER
|
|
|
|
%token T_CLASS
|
|
|
|
%token T_TRAIT
|
|
|
|
%token T_INTERFACE
|
|
|
|
%token T_EXTENDS
|
|
|
|
%token T_IMPLEMENTS
|
|
|
|
%token T_OBJECT_OPERATOR
|
|
|
|
%token T_DOUBLE_ARROW
|
|
|
|
%token T_LIST
|
|
|
|
%token T_ARRAY
|
|
|
|
%token T_CALLABLE
|
|
|
|
%token T_CLASS_C
|
|
|
|
%token T_TRAIT_C
|
|
|
|
%token T_METHOD_C
|
|
|
|
%token T_FUNC_C
|
|
|
|
%token T_LINE
|
|
|
|
%token T_FILE
|
|
|
|
%token T_START_HEREDOC
|
|
|
|
%token T_END_HEREDOC
|
|
|
|
%token T_DOLLAR_OPEN_CURLY_BRACES
|
|
|
|
%token T_CURLY_OPEN
|
|
|
|
%token T_PAAMAYIM_NEKUDOTAYIM
|
|
|
|
%token T_NAMESPACE
|
|
|
|
%token T_NS_C
|
|
|
|
%token T_DIR
|
|
|
|
%token T_NS_SEPARATOR
|
|
|
|
%token T_ELLIPSIS
|
2020-07-23 11:57:04 +02:00
|
|
|
%token T_NAME_FULLY_QUALIFIED
|
|
|
|
%token T_NAME_QUALIFIED
|
|
|
|
%token T_NAME_RELATIVE
|