%{ /* +----------------------------------------------------------------------+ | PHP version 4.0 | +----------------------------------------------------------------------+ | Copyright (c) 1997, 1998, 1999 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 2.0 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available at through the world-wide-web at | | http://www.php.net/license/2_0.txt. | | If you did not receive a copy of the PHP license and are unable to | | obtain it through the world-wide-web, please send a note to | | license@php.net so we can mail you a copy immediately. | +----------------------------------------------------------------------+ | Authors: Zeev Suraski | +----------------------------------------------------------------------+ */ #include "php.h" #include "configuration-parser.h" #undef YYSTYPE #define YYSTYPE pval #define YY_DECL cfglex(pval *cfglval) void init_cfg_scanner() { cfglineno=1; } %} %option noyywrap %option yylineno %% "extension" { #if 0 printf("found extension\n"); #endif return EXTENSION; } "zend_extension" { return T_ZEND_EXTENSION; } "zend_extension_ts" { return T_ZEND_EXTENSION_TS; } "zend_extension_debug" { return T_ZEND_EXTENSION_DEBUG; } "zend_extension_debug_ts" { return T_ZEND_EXTENSION_DEBUG_TS; } [ ]*("true"|"on"|"yes")[ ]* { cfglval->value.str.val = php3_strndup("1",1); cfglval->value.str.len = 1; cfglval->type = IS_STRING; return CFG_TRUE; } [ ]*("false"|"off"|"no")[ ]* { cfglval->value.str.val = php3_strndup("",0); cfglval->value.str.len = 0; cfglval->type = IS_STRING; return CFG_FALSE; } [[][^[]+[\]]([\n]?|"\r\n"?) { /* SECTION */ /* eat trailng ] */ while (yyleng>0 && (yytext[yyleng-1]=='\n' || yytext[yyleng-1]=='\r' || yytext[yyleng-1]==']')) { yyleng--; yytext[yyleng]=0; } /* eat leading [ */ yytext++; yyleng--; cfglval->value.str.val = php3_strndup(yytext,yyleng); cfglval->value.str.len = yyleng; cfglval->type = IS_STRING; return SECTION; } ["][^\n\r"]*["] { /* ENCAPSULATED TC_STRING */ /* eat trailing " */ yytext[yyleng-1]=0; /* eat leading " */ yytext++; cfglval->value.str.val = php3_strndup(yytext,yyleng); cfglval->value.str.len = yyleng; cfglval->type = IS_STRING; return TC_ENCAPSULATED_STRING; } [^=\n\r\t;"]+ { /* STRING */ register int i; /* eat trailing whitespace */ for (i=yyleng-1; i>=0; i--) { if (yytext[i]==' ' || yytext[i]=='\t') { yytext[i]=0; yyleng--; } else { break; } } /* eat leading whitespace */ while (yytext[0]) { if (yytext[0]==' ' || yytext[0]=='\t') { yytext++; yyleng--; } else { break; } } if (yyleng!=0) { cfglval->value.str.val = php3_strndup(yytext,yyleng); cfglval->value.str.len = yyleng; cfglval->type = IS_STRING; return TC_STRING; } else { /* whitespace */ } } [=\n] { return yytext[0]; } "\r\n" { return '\n'; } [;][^\r\n]*[\r\n]? { /* comment */ return '\n'; } [ \t] { /* eat whitespace */ } . { #if DEBUG php_error(E_NOTICE,"Unexpected character on line %d: '%s' (ASCII %d)\n",yylineno,yytext,yytext[0]); #endif }