library-ts/browser/text/lexer/PHPLexer.ts

77 lines
2.8 KiB
TypeScript

import { RegExpUtility } from "../RegExpUtitlity";
import { Lexer } from "./Lexer";
import { LexerMatcher } from "./LexerMatcher";
import { LexerMatcherLibrary } from "./LexerMatcherLibrary";
import { LexerType } from "./LexerType";
export type PHP_KEYWORD = "PHP_KEYWORD";
export type PHP_START = "PHP_START";
export type PHP_END = "PHP_END";
export type PHP_CONSTANT = "PHP_CONSTANT";
export type PHPLexerType = LexerType | PHP_KEYWORD | PHP_START | PHP_END | PHP_CONSTANT;
export class PHPLexer extends Lexer
{
static readonly predefined =
[
"NULL","E_CORE_ERROR","Exception","PATHINFO_FILENAME","JSON_PRETTY_PRINT","__DIR__",
"ENT_QUOTES","PREG_OFFSET_CAPTURE","PREG_SPLIT_DELIM_CAPTURE","PREG_SPLIT_NO_EMPTY",
"PHP_INT_MAX","SEEK_CUR","SEEK_SET",
"CURLOPT_URL","CURLOPT_RETURNTRANSFER","CURLOPT_USERAGENT","E_USER_ERROR","E_USER_NOTICE","E_USER_WARNING",
"JSON_ERROR_NONE", "JSON_ERROR_DEPTH", "JSON_ERROR_STATE_MISMATCH", "JSON_ERROR_CTRL_CHAR",
"JSON_ERROR_SYNTAX", "JSON_ERROR_UTF8", "JSON_ERROR_RECURSION", "JSON_ERROR_INF_OR_NAN",
"JSON_ERROR_UNSUPPORTED_TYPE", "JSON_ERROR_INVALID_PROPERTY_NAME", "JSON_ERROR_UTF16"
]
static readonly PHP_CONSTANT:PHP_CONSTANT = "PHP_CONSTANT";
static readonly PHP_CONSTANT_MATCHER =
new LexerMatcher( PHPLexer.PHP_CONSTANT, RegExpUtility.createFromList( PHPLexer.predefined ) );
static readonly PHP_KEYWORD:PHP_KEYWORD = "PHP_KEYWORD";
static readonly PHP_KEYWORD_MATCHER =
new LexerMatcher( PHPLexer.PHP_KEYWORD, /include_once|include|require_once|require|extends|function|const/ );
static readonly PHP_START:PHP_START = "PHP_START";
static readonly PHP_START_MATCHER =
new LexerMatcher( PHPLexer.PHP_START, /\<\?php/ );
static readonly PHP_END:PHP_END = "PHP_END";
static readonly PHP_END_MATCHER =
new LexerMatcher( PHPLexer.PHP_END, /\?\>/ );
constructor()
{
super();
this.addAllMatchers(
LexerMatcherLibrary.SINGLE_LINE_COMMENT_MATCHER,
LexerMatcherLibrary.MULTI_LINE_COMMENT_MATCHER,
LexerMatcherLibrary.DOUBLE_QUOTED_STRING_MATCHER,
LexerMatcherLibrary.SINGLE_QUOTED_STRING_MATCHER,
PHPLexer.PHP_CONSTANT_MATCHER,
PHPLexer.PHP_START_MATCHER,
PHPLexer.PHP_END_MATCHER,
LexerMatcherLibrary.NUMBER_MATCHER,
LexerMatcherLibrary.NULL_MATCHER,
LexerMatcherLibrary.BOOL_MATCHER,
LexerMatcherLibrary.BREAK_MATCHER,
LexerMatcherLibrary.WHITESPACE_MATCHER,
LexerMatcherLibrary.LOGIC_MATCHER,
LexerMatcherLibrary.BRACKET_MATCHER,
LexerMatcherLibrary.ACCESS_MODIFIER_MATCHER,
LexerMatcherLibrary.CLASS_MATCHER,
PHPLexer.PHP_KEYWORD_MATCHER,
LexerMatcherLibrary.OPERATOR_MATCHER,
LexerMatcherLibrary.PHPWORD_MATCHER,
LexerMatcherLibrary.ANY_SYMBOL_MATCHER
);
}
}