scanner

package
v0.6.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 20, 2019 License: MIT Imports: 11 Imported by: 0

Documentation

Overview

Package scanner transforms an input string into a stream of PHP tokens.

Index

Constants

View Source
const (
	INITIAL = iota
	PHP
	STRING
	STRING_VAR
	STRING_VAR_INDEX
	STRING_VAR_NAME
	PROPERTY
	HEREDOC_END
	NOWDOC
	HEREDOC
	BACKQUOTE
	HALT_COMPILER
)

Variables

This section is empty.

Functions

func Rune2Class

func Rune2Class(r rune) int

Rune2Class returns the rune integer id

Types

type Lexer

type Lexer struct {
	*lex.Lexer
	StateStack    []int
	PhpDocComment string
	FreeFloating  []freefloating.String

	TokenPool        *TokenPool
	WithFreeFloating bool

	Errors []*errors.Error
	// contains filtered or unexported fields
}

Lexer php lexer

func NewLexer

func NewLexer(src io.Reader, fName string) *Lexer

NewLexer the Lexer constructor

func (*Lexer) Begin added in v0.6.0

func (l *Lexer) Begin(state int)

func (*Lexer) Error added in v0.6.0

func (l *Lexer) Error(msg string)

func (*Lexer) Lex

func (l *Lexer) Lex(lval Lval) int

type LexerToken added in v0.6.0

type LexerToken int
const (
	T_INCLUDE LexerToken = iota + 57346
	T_INCLUDE_ONCE
	T_EXIT
	T_IF
	T_LNUMBER
	T_DNUMBER
	T_STRING
	T_STRING_VARNAME
	T_VARIABLE
	T_NUM_STRING
	T_INLINE_HTML
	T_CHARACTER
	T_BAD_CHARACTER
	T_ENCAPSED_AND_WHITESPACE
	T_CONSTANT_ENCAPSED_STRING
	T_ECHO
	T_DO
	T_WHILE
	T_ENDWHILE
	T_FOR
	T_ENDFOR
	T_FOREACH
	T_ENDFOREACH
	T_DECLARE
	T_ENDDECLARE
	T_AS
	T_SWITCH
	T_ENDSWITCH
	T_CASE
	T_DEFAULT
	T_BREAK
	T_CONTINUE
	T_GOTO
	T_FUNCTION
	T_CONST
	T_RETURN
	T_TRY
	T_CATCH
	T_FINALLY
	T_THROW
	T_USE
	T_INSTEADOF
	T_GLOBAL
	T_VAR
	T_UNSET
	T_ISSET
	T_EMPTY
	T_HALT_COMPILER
	T_CLASS
	T_TRAIT
	T_INTERFACE
	T_EXTENDS
	T_IMPLEMENTS
	T_OBJECT_OPERATOR
	T_DOUBLE_ARROW
	T_LIST
	T_ARRAY
	T_CALLABLE
	T_CLASS_C
	T_TRAIT_C
	T_METHOD_C
	T_FUNC_C
	T_LINE
	T_FILE
	T_COMMENT
	T_DOC_COMMENT
	T_OPEN_TAG
	T_OPEN_TAG_WITH_ECHO
	T_CLOSE_TAG
	T_WHITESPACE
	T_START_HEREDOC
	T_END_HEREDOC
	T_DOLLAR_OPEN_CURLY_BRACES
	T_CURLY_OPEN
	T_PAAMAYIM_NEKUDOTAYIM
	T_NAMESPACE
	T_NS_C
	T_DIR
	T_NS_SEPARATOR
	T_ELLIPSIS
	T_EVAL
	T_REQUIRE
	T_REQUIRE_ONCE
	T_LOGICAL_OR
	T_LOGICAL_XOR
	T_LOGICAL_AND
	T_INSTANCEOF
	T_NEW
	T_CLONE
	T_ELSEIF
	T_ELSE
	T_ENDIF
	T_PRINT
	T_YIELD
	T_STATIC
	T_ABSTRACT
	T_FINAL
	T_PRIVATE
	T_PROTECTED
	T_PUBLIC
	T_INC
	T_DEC
	T_YIELD_FROM
	T_INT_CAST
	T_DOUBLE_CAST
	T_STRING_CAST
	T_ARRAY_CAST
	T_OBJECT_CAST
	T_BOOL_CAST
	T_UNSET_CAST
	T_COALESCE
	T_SPACESHIP
	T_NOELSE
	T_PLUS_EQUAL
	T_MINUS_EQUAL
	T_MUL_EQUAL
	T_POW_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_BOOLEAN_OR
	T_BOOLEAN_AND
	T_POW
	T_SL
	T_SR
	T_IS_IDENTICAL
	T_IS_NOT_IDENTICAL
	T_IS_EQUAL
	T_IS_NOT_EQUAL
	T_IS_SMALLER_OR_EQUAL
	T_IS_GREATER_OR_EQUAL
)

func (LexerToken) String added in v0.6.0

func (i LexerToken) String() string

type Lval

type Lval interface {
	Token(tkn *Token)
}

Lval parsers yySymType must implement this interface

type Token added in v0.5.0

type Token struct {
	Value        string
	FreeFloating []freefloating.String
	StartLine    int
	EndLine      int
	StartPos     int
	EndPos       int
}

Token value returned by lexer

func (*Token) GetFreeFloatingToken added in v0.6.0

func (t *Token) GetFreeFloatingToken() []freefloating.String

func (*Token) String added in v0.5.0

func (t *Token) String() string

type TokenPool added in v0.6.0

type TokenPool struct {
	// contains filtered or unexported fields
}

TokenPool light version of sync.Pool for Token objects

func (*TokenPool) Get added in v0.6.0

func (tp *TokenPool) Get() *Token

Get returns *Token from pool or creates new object

func (*TokenPool) Put added in v0.6.0

func (tp *TokenPool) Put(t *Token)

Put returns *Token to pool

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL