⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tokenizer.c

📁 php-4.4.7学习linux时下载的源代码
💻 C
📖 第 1 页 / 共 2 页
字号:
	REGISTER_LONG_CONSTANT("T_OPEN_TAG_WITH_ECHO", T_OPEN_TAG_WITH_ECHO, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("T_CLOSE_TAG", T_CLOSE_TAG, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("T_WHITESPACE", T_WHITESPACE, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("T_START_HEREDOC", T_START_HEREDOC, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("T_END_HEREDOC", T_END_HEREDOC, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("T_DOLLAR_OPEN_CURLY_BRACES", T_DOLLAR_OPEN_CURLY_BRACES, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("T_CURLY_OPEN", T_CURLY_OPEN, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("T_PAAMAYIM_NEKUDOTAYIM", T_PAAMAYIM_NEKUDOTAYIM, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("T_DOUBLE_COLON", T_PAAMAYIM_NEKUDOTAYIM, CONST_CS | CONST_PERSISTENT);		return SUCCESS;}/* }}} *//* {{{ PHP_MSHUTDOWN_FUNCTION */PHP_MSHUTDOWN_FUNCTION(tokenizer){	/* uncomment this line if you have INI entries	UNREGISTER_INI_ENTRIES();	*/	return SUCCESS;}/* }}} *//* Remove if there's nothing to do at request start *//* {{{ PHP_RINIT_FUNCTION */PHP_RINIT_FUNCTION(tokenizer){	return SUCCESS;}/* }}} *//* Remove if there's nothing to do at request end *//* {{{ PHP_RSHUTDOWN_FUNCTION */PHP_RSHUTDOWN_FUNCTION(tokenizer){	return SUCCESS;}/* }}} *//* {{{ PHP_MINFO_FUNCTION */PHP_MINFO_FUNCTION(tokenizer){	php_info_print_table_start();	php_info_print_table_row(2, "Tokenizer Support", "enabled");	php_info_print_table_end();	/* Remove comments if you have entries in php.ini	DISPLAY_INI_ENTRIES();	*/}/* }}} */static void tokenize(zval *return_value TSRMLS_DC){	zval token;	zval *keyword;	int token_type;	zend_bool destroy;	array_init(return_value);	ZVAL_NULL(&token);	while ((token_type = lex_scan(&token TSRMLS_CC))) {		destroy = 1;		switch (token_type) {			case T_OPEN_TAG:			case T_OPEN_TAG_WITH_ECHO:			case T_WHITESPACE:			case T_COMMENT:			case T_CLOSE_TAG:				destroy = 0;				break;		}		if (token_type >= 256) {			MAKE_STD_ZVAL(keyword);			array_init(keyword);			add_next_index_long(keyword, token_type);			if (token_type == T_END_HEREDOC) {				add_next_index_stringl(keyword, Z_STRVAL(token), Z_STRLEN(token), 1);				efree(Z_STRVAL(token));			} else {				add_next_index_stringl(keyword, zendtext, zendleng, 1);			}			add_next_index_zval(return_value, keyword);		} else {			add_next_index_stringl(return_value, zendtext, zendleng, 1);		}		if (destroy && Z_TYPE(token) != IS_NULL) {			zval_dtor(&token);		}		ZVAL_NULL(&token);	}}static char *get_token_type_name(int token_type){	switch (token_type) {		case T_INCLUDE: return "T_INCLUDE";		case T_INCLUDE_ONCE: return "T_INCLUDE_ONCE";		case T_EVAL: return "T_EVAL";		case T_REQUIRE: return "T_REQUIRE";		case T_REQUIRE_ONCE: return "T_REQUIRE_ONCE";		case T_LOGICAL_OR: return "T_LOGICAL_OR";		case T_LOGICAL_XOR: return "T_LOGICAL_XOR";		case T_LOGICAL_AND: return "T_LOGICAL_AND";		case T_PRINT: return "T_PRINT";		case T_PLUS_EQUAL: return "T_PLUS_EQUAL";		case T_MINUS_EQUAL: return "T_MINUS_EQUAL";		case T_MUL_EQUAL: return "T_MUL_EQUAL";		case T_DIV_EQUAL: return "T_DIV_EQUAL";		case T_CONCAT_EQUAL: return "T_CONCAT_EQUAL";		case T_MOD_EQUAL: return "T_MOD_EQUAL";		case T_AND_EQUAL: return "T_AND_EQUAL";		case T_OR_EQUAL: return "T_OR_EQUAL";		case T_XOR_EQUAL: return "T_XOR_EQUAL";		case T_SL_EQUAL: return "T_SL_EQUAL";		case T_SR_EQUAL: return "T_SR_EQUAL";		case T_BOOLEAN_OR: return "T_BOOLEAN_OR";		case T_BOOLEAN_AND: return "T_BOOLEAN_AND";		case T_IS_EQUAL: return "T_IS_EQUAL";		case T_IS_NOT_EQUAL: return "T_IS_NOT_EQUAL";		case T_IS_IDENTICAL: return "T_IS_IDENTICAL";		case T_IS_NOT_IDENTICAL: return "T_IS_NOT_IDENTICAL";		case T_IS_SMALLER_OR_EQUAL: return "T_IS_SMALLER_OR_EQUAL";		case T_IS_GREATER_OR_EQUAL: return "T_IS_GREATER_OR_EQUAL";		case T_SL: return "T_SL";		case T_SR: return "T_SR";		case T_INC: return "T_INC";		case T_DEC: return "T_DEC";		case T_INT_CAST: return "T_INT_CAST";		case T_DOUBLE_CAST: return "T_DOUBLE_CAST";		case T_STRING_CAST: return "T_STRING_CAST";		case T_ARRAY_CAST: return "T_ARRAY_CAST";		case T_OBJECT_CAST: return "T_OBJECT_CAST";		case T_BOOL_CAST: return "T_BOOL_CAST";		case T_UNSET_CAST: return "T_UNSET_CAST";		case T_NEW: return "T_NEW";		case T_EXIT: return "T_EXIT";		case T_IF: return "T_IF";		case T_ELSEIF: return "T_ELSEIF";		case T_ELSE: return "T_ELSE";		case T_ENDIF: return "T_ENDIF";		case T_LNUMBER: return "T_LNUMBER";		case T_DNUMBER: return "T_DNUMBER";		case T_STRING: return "T_STRING";		case T_STRING_VARNAME: return "T_STRING_VARNAME";		case T_VARIABLE: return "T_VARIABLE";		case T_NUM_STRING: return "T_NUM_STRING";		case T_INLINE_HTML: return "T_INLINE_HTML";		case T_CHARACTER: return "T_CHARACTER";		case T_BAD_CHARACTER: return "T_BAD_CHARACTER";		case T_ENCAPSED_AND_WHITESPACE: return "T_ENCAPSED_AND_WHITESPACE";		case T_CONSTANT_ENCAPSED_STRING: return "T_CONSTANT_ENCAPSED_STRING";		case T_ECHO: return "T_ECHO";		case T_DO: return "T_DO";		case T_WHILE: return "T_WHILE";		case T_ENDWHILE: return "T_ENDWHILE";		case T_FOR: return "T_FOR";		case T_ENDFOR: return "T_ENDFOR";		case T_FOREACH: return "T_FOREACH";		case T_ENDFOREACH: return "T_ENDFOREACH";		case T_DECLARE: return "T_DECLARE";		case T_ENDDECLARE: return "T_ENDDECLARE";		case T_AS: return "T_AS";		case T_SWITCH: return "T_SWITCH";		case T_ENDSWITCH: return "T_ENDSWITCH";		case T_CASE: return "T_CASE";		case T_DEFAULT: return "T_DEFAULT";		case T_BREAK: return "T_BREAK";		case T_CONTINUE: return "T_CONTINUE";#ifndef ZEND_ENGINE_2		case T_OLD_FUNCTION: return "T_OLD_FUNCTION";#endif		case T_FUNCTION: return "T_FUNCTION";		case T_CONST: return "T_CONST";		case T_RETURN: return "T_RETURN";		case T_USE: return "T_USE";		case T_GLOBAL: return "T_GLOBAL";		case T_STATIC: return "T_STATIC";		case T_VAR: return "T_VAR";		case T_UNSET: return "T_UNSET";		case T_ISSET: return "T_ISSET";		case T_EMPTY: return "T_EMPTY";		case T_CLASS: return "T_CLASS";		case T_EXTENDS: return "T_EXTENDS";		case T_OBJECT_OPERATOR: return "T_OBJECT_OPERATOR";		case T_DOUBLE_ARROW: return "T_DOUBLE_ARROW";		case T_LIST: return "T_LIST";		case T_ARRAY: return "T_ARRAY";		case T_CLASS_C: return "T_CLASS_C";		case T_FUNC_C: return "T_FUNC_C";		case T_LINE: return "T_LINE";		case T_FILE: return "T_FILE";		case T_COMMENT: return "T_COMMENT";		case T_ML_COMMENT: return "T_ML_COMMENT";		case T_OPEN_TAG: return "T_OPEN_TAG";		case T_OPEN_TAG_WITH_ECHO: return "T_OPEN_TAG_WITH_ECHO";		case T_CLOSE_TAG: return "T_CLOSE_TAG";		case T_WHITESPACE: return "T_WHITESPACE";		case T_START_HEREDOC: return "T_START_HEREDOC";		case T_END_HEREDOC: return "T_END_HEREDOC";		case T_DOLLAR_OPEN_CURLY_BRACES: return "T_DOLLAR_OPEN_CURLY_BRACES";		case T_CURLY_OPEN: return "T_CURLY_OPEN";		case T_PAAMAYIM_NEKUDOTAYIM: return "T_DOUBLE_COLON";	}	return "UNKNOWN";}/* {{{ proto array token_get_all(string source) */PHP_FUNCTION(token_get_all){	char *source = NULL;	int argc = ZEND_NUM_ARGS();	int source_len;	zval source_z;	zend_lex_state original_lex_state;	if (zend_parse_parameters(argc TSRMLS_CC, "s", &source, &source_len) == FAILURE) 		return;	ZVAL_STRINGL(&source_z, source, source_len, 1);	zend_save_lexical_state(&original_lex_state TSRMLS_CC);	if (zend_prepare_string_for_scanning(&source_z, "" TSRMLS_CC) == FAILURE) {		RETURN_EMPTY_STRING();	}	tokenize(return_value TSRMLS_CC);		zend_restore_lexical_state(&original_lex_state TSRMLS_CC);	zval_dtor(&source_z);}/* }}} *//* {{{ proto string token_name(int type) */PHP_FUNCTION(token_name){	int argc = ZEND_NUM_ARGS();	long type;	if (zend_parse_parameters(argc TSRMLS_CC, "l", &type) == FAILURE) {		return;	}	RETVAL_STRING(get_token_type_name(type), 1);}/* }}} *//* * Local variables: * tab-width: 4 * c-basic-offset: 4 * End: * vim600: noet sw=4 ts=4 fdm=marker * vim<600: noet sw=4 ts=4 */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -