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 ); } }