whole_func_string: 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
    };
  }
func_code_string: 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
    };
  }
func_documentation_string: 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