src/lexer.js
function(engine) {
  this.engine = engine;
  this.tok = this.engine.tokens.names;
  this.EOF = 1;
  this.debug = false;
  this.all_tokens = true;
  this.comment_tokens = false;
  this.mode_eval = false;
  this.asp_tags = false;
  this.short_tags = true;
  this.php7 = true;
  this.yyprevcol = 0;
  this.keywords = {
    __class__: this.tok.T_CLASS_C,
    __trait__: this.tok.T_TRAIT_C,
    __function__: this.tok.T_FUNC_C,
    __method__: this.tok.T_METHOD_C,
    __line__: this.tok.T_LINE,
    __file__: this.tok.T_FILE,
    __dir__: this.tok.T_DIR,
    __namespace__: this.tok.T_NS_C,
    exit: this.tok.T_EXIT,
    die: this.tok.T_EXIT,
    function: this.tok.T_FUNCTION,
    const: this.tok.T_CONST,
    return: this.tok.T_RETURN,
    try: this.tok.T_TRY,
    catch: this.tok.T_CATCH,
    finally: this.tok.T_FINALLY,
    throw: this.tok.T_THROW,
    if: this.tok.T_IF,
    elseif: this.tok.T_ELSEIF,
    endif: this.tok.T_ENDIF,
    else: this.tok.T_ELSE,
    while: this.tok.T_WHILE,
    endwhile: this.tok.T_ENDWHILE,
    do: this.tok.T_DO,
    for: this.tok.T_FOR,
    endfor: this.tok.T_ENDFOR,
    foreach: this.tok.T_FOREACH,
    endforeach: this.tok.T_ENDFOREACH,
    declare: this.tok.T_DECLARE,
    enddeclare: this.tok.T_ENDDECLARE,
    instanceof: this.tok.T_INSTANCEOF,
    as: this.tok.T_AS,
    switch: this.tok.T_SWITCH,
    endswitch: this.tok.T_ENDSWITCH,
    case: this.tok.T_CASE,
    default: this.tok.T_DEFAULT,
    break: this.tok.T_BREAK,
    continue: this.tok.T_CONTINUE,
    goto: this.tok.T_GOTO,
    echo: this.tok.T_ECHO,
    print: this.tok.T_PRINT,
    class: this.tok.T_CLASS,
    interface: this.tok.T_INTERFACE,
    trait: this.tok.T_TRAIT,
    extends: this.tok.T_EXTENDS,
    implements: this.tok.T_IMPLEMENTS,
    new: this.tok.T_NEW,
    clone: this.tok.T_CLONE,
    var: this.tok.T_VAR,
    eval: this.tok.T_EVAL,
    include: this.tok.T_INCLUDE,
    include_once: this.tok.T_INCLUDE_ONCE,
    require: this.tok.T_REQUIRE,
    require_once: this.tok.T_REQUIRE_ONCE,
    namespace: this.tok.T_NAMESPACE,
    use: this.tok.T_USE,
    insteadof: this.tok.T_INSTEADOF,
    global: this.tok.T_GLOBAL,
    isset: this.tok.T_ISSET,
    empty: this.tok.T_EMPTY,
    __halt_compiler: this.tok.T_HALT_COMPILER,
    static: this.tok.T_STATIC,
    abstract: this.tok.T_ABSTRACT,
    final: this.tok.T_FINAL,
    private: this.tok.T_PRIVATE,
    protected: this.tok.T_PROTECTED,
    public: this.tok.T_PUBLIC,
    unset: this.tok.T_UNSET,
    list: this.tok.T_LIST,
    array: this.tok.T_ARRAY,
    callable: this.tok.T_CALLABLE,
    or: this.tok.T_LOGICAL_OR,
    and: this.tok.T_LOGICAL_AND,
    xor: this.tok.T_LOGICAL_XOR
  };
  this.castKeywords = {
    int: this.tok.T_INT_CAST,
    integer: this.tok.T_INT_CAST,
    real: this.tok.T_DOUBLE_CAST,
    double: this.tok.T_DOUBLE_CAST,
    float: this.tok.T_DOUBLE_CAST,
    string: this.tok.T_STRING_CAST,
    binary: this.tok.T_STRING_CAST,
    array: this.tok.T_ARRAY_CAST,
    object: this.tok.T_OBJECT_CAST,
    bool: this.tok.T_BOOL_CAST,
    boolean: this.tok.T_BOOL_CAST,
    unset: this.tok.T_UNSET_CAST
  };
}
function(engine) {
  this.engine = engine;
  this.tok = this.engine.tokens.names;
  this.EOF = 1;
  this.debug = false;
  this.all_tokens = true;
  this.comment_tokens = false;
  this.mode_eval = false;
  this.asp_tags = false;
  this.short_tags = true;
  this.php7 = true;
  this.yyprevcol = 0;
  this.keywords = {
    __class__: this.tok.T_CLASS_C,
    __trait__: this.tok.T_TRAIT_C,
    __function__: this.tok.T_FUNC_C,
    __method__: this.tok.T_METHOD_C,
    __line__: this.tok.T_LINE,
    __file__: this.tok.T_FILE,
    __dir__: this.tok.T_DIR,
    __namespace__: this.tok.T_NS_C,
    exit: this.tok.T_EXIT,
    die: this.tok.T_EXIT,
    function: this.tok.T_FUNCTION,
    const: this.tok.T_CONST,
    return: this.tok.T_RETURN,
    try: this.tok.T_TRY,
    catch: this.tok.T_CATCH,
    finally: this.tok.T_FINALLY,
    throw: this.tok.T_THROW,
    if: this.tok.T_IF,
    elseif: this.tok.T_ELSEIF,
    endif: this.tok.T_ENDIF,
    else: this.tok.T_ELSE,
    while: this.tok.T_WHILE,
    endwhile: this.tok.T_ENDWHILE,
    do: this.tok.T_DO,
    for: this.tok.T_FOR,
    endfor: this.tok.T_ENDFOR,
    foreach: this.tok.T_FOREACH,
    endforeach: this.tok.T_ENDFOREACH,
    declare: this.tok.T_DECLARE,
    enddeclare: this.tok.T_ENDDECLARE,
    instanceof: this.tok.T_INSTANCEOF,
    as: this.tok.T_AS,
    switch: this.tok.T_SWITCH,
    endswitch: this.tok.T_ENDSWITCH,
    case: this.tok.T_CASE,
    default: this.tok.T_DEFAULT,
    break: this.tok.T_BREAK,
    continue: this.tok.T_CONTINUE,
    goto: this.tok.T_GOTO,
    echo: this.tok.T_ECHO,
    print: this.tok.T_PRINT,
    class: this.tok.T_CLASS,
    interface: this.tok.T_INTERFACE,
    trait: this.tok.T_TRAIT,
    extends: this.tok.T_EXTENDS,
    implements: this.tok.T_IMPLEMENTS,
    new: this.tok.T_NEW,
    clone: this.tok.T_CLONE,
    var: this.tok.T_VAR,
    eval: this.tok.T_EVAL,
    include: this.tok.T_INCLUDE,
    include_once: this.tok.T_INCLUDE_ONCE,
    require: this.tok.T_REQUIRE,
    require_once: this.tok.T_REQUIRE_ONCE,
    namespace: this.tok.T_NAMESPACE,
    use: this.tok.T_USE,
    insteadof: this.tok.T_INSTEADOF,
    global: this.tok.T_GLOBAL,
    isset: this.tok.T_ISSET,
    empty: this.tok.T_EMPTY,
    __halt_compiler: this.tok.T_HALT_COMPILER,
    static: this.tok.T_STATIC,
    abstract: this.tok.T_ABSTRACT,
    final: this.tok.T_FINAL,
    private: this.tok.T_PRIVATE,
    protected: this.tok.T_PROTECTED,
    public: this.tok.T_PUBLIC,
    unset: this.tok.T_UNSET,
    list: this.tok.T_LIST,
    array: this.tok.T_ARRAY,
    callable: this.tok.T_CALLABLE,
    or: this.tok.T_LOGICAL_OR,
    and: this.tok.T_LOGICAL_AND,
    xor: this.tok.T_LOGICAL_XOR
  };
  this.castKeywords = {
    int: this.tok.T_INT_CAST,
    integer: this.tok.T_INT_CAST,
    real: this.tok.T_DOUBLE_CAST,
    double: this.tok.T_DOUBLE_CAST,
    float: this.tok.T_DOUBLE_CAST,
    string: this.tok.T_STRING_CAST,
    binary: this.tok.T_STRING_CAST,
    array: this.tok.T_ARRAY_CAST,
    object: this.tok.T_OBJECT_CAST,
    bool: this.tok.T_BOOL_CAST,
    boolean: this.tok.T_BOOL_CAST,
    unset: this.tok.T_UNSET_CAST
  };
}
function ( engine ) { this . engine = engine ; this . tok = this . engine . tokens . names ; this . EOF = 1 ; this . debug = false ; this . all_tokens = true ; this . comment_tokens = false ; this . mode_eval = false ; this . asp_tags = false ; this . short_tags = true ; this . php7 = true ; this . yyprevcol = 0 ; this . keywords = { __class__ : this . tok . T_CLASS_C , __trait__ : this . tok . T_TRAIT_C , __function__ : this . tok . T_FUNC_C , __method__ : this . tok . T_METHOD_C , __line__ : this . tok . T_LINE , __file__ : this . tok . T_FILE , __dir__ : this . tok . T_DIR , __namespace__ : this . tok . T_NS_C , exit : this . tok . T_EXIT , die : this . tok . T_EXIT , function : this . tok . T_FUNCTION , const : this . tok . T_CONST , return : this . tok . T_RETURN , try : this . tok . T_TRY , catch : this . tok . T_CATCH , finally : this . tok . T_FINALLY , throw : this . tok . T_THROW , if : this . tok . T_IF , elseif : this . tok . T_ELSEIF , endif : this . tok . T_ENDIF , else : this . tok . T_ELSE , while : this . tok . T_WHILE , endwhile : this . tok . T_ENDWHILE , do : this . tok . T_DO , for : this . tok . T_FOR , endfor : this . tok . T_ENDFOR , foreach : this . tok . T_FOREACH , endforeach : this . tok . T_ENDFOREACH , declare : this . tok . T_DECLARE , enddeclare : this . tok . T_ENDDECLARE , instanceof : this . tok . T_INSTANCEOF , as : this . tok . T_AS , switch : this . tok . T_SWITCH , endswitch : this . tok . T_ENDSWITCH , case : this . tok . T_CASE , default : this . tok . T_DEFAULT , break : this . tok . T_BREAK , continue : this . tok . T_CONTINUE , goto : this . tok . T_GOTO , echo : this . tok . T_ECHO , print : this . tok . T_PRINT , class : this . tok . T_CLASS , interface : this . tok . T_INTERFACE , trait : this . tok . T_TRAIT , extends : this . tok . T_EXTENDS , implements : this . tok . T_IMPLEMENTS , new : this . tok . T_NEW , clone : this . tok . T_CLONE , var : this . tok . T_VAR , eval : this . tok . T_EVAL , include : this . tok . T_INCLUDE , include_once : this . tok . T_INCLUDE_ONCE , require : this . tok . T_REQUIRE , require_once : this . tok . T_REQUIRE_ONCE , namespace : this . tok . T_NAMESPACE , use : this . tok . T_USE , insteadof : this . tok . T_INSTEADOF , global : this . tok . T_GLOBAL , isset : this . tok . T_ISSET , empty : this . tok . T_EMPTY , __halt_compiler : this . tok . T_HALT_COMPILER , static : this . tok . T_STATIC , abstract : this . tok . T_ABSTRACT , final : this . tok . T_FINAL , private : this . tok . T_PRIVATE , protected : this . tok . T_PROTECTED , public : this . tok . T_PUBLIC , unset : this . tok . T_UNSET , list : this . tok . T_LIST , array : this . tok . T_ARRAY , callable : this . tok . T_CALLABLE , or : this . tok . T_LOGICAL_OR , and : this . tok . T_LOGICAL_AND , xor : this . tok . T_LOGICAL_XOR } ; this . castKeywords = { int : this . tok . T_INT_CAST , integer : this . tok . T_INT_CAST , real : this . tok . T_DOUBLE_CAST , double : this . tok . T_DOUBLE_CAST , float : this . tok . T_DOUBLE_CAST , string : this . tok . T_STRING_CAST , binary : this . tok . T_STRING_CAST , array : this . tok . T_ARRAY_CAST , object : this . tok . T_OBJECT_CAST , bool : this . tok . T_BOOL_CAST , boolean : this . tok . T_BOOL_CAST , unset : this . tok . T_UNSET_CAST } ; }
This is the php lexer. It will tokenize the string for helping the
parser to build the AST from its grammar.

@class
@property {Integer} EOF
@property {Boolean} all_tokens defines if all tokens must be retrieved (used by token_get_all only)
@property {Boolean} comment_tokens extracts comments tokens
@property {Boolean} mode_eval enables the evald mode (ignore opening tags)
@property {Boolean} asp_tags disables by default asp tags mode
@property {Boolean} short_tags enables by default short tags mode
@property {Object} keywords List of php keyword
@property {Object} castKeywords List of php keywords for type casting
This is the php lexer . It will tokenize the string for helping the parser to build the AST from its grammar .