1 |
%{ |
%{ |
2 |
/* |
/* |
3 |
* Copyright (c) 2002, 2004 Tama Communications Corporation |
* Copyright (c) 2002, 2004, 2005 Tama Communications Corporation |
4 |
* |
* |
5 |
* This file is part of GNU GLOBAL. |
* This file is part of GNU GLOBAL. |
6 |
* |
* |
52 |
|
|
53 |
#define YY_USER_ACTION DEFAULT_YY_USER_ACTION |
#define YY_USER_ACTION DEFAULT_YY_USER_ACTION |
54 |
|
|
55 |
|
char end_of_here_document[IDENTLEN+1]; |
56 |
|
|
57 |
%} |
%} |
58 |
/* Definitions */ |
/* Definitions */ |
59 |
H 0[Xx][0-9A-Fa-f]+ |
H 0[Xx][0-9A-Fa-f]+ |
66 |
ALPHANUM [a-zA-Z_\x80-\xff0-9] |
ALPHANUM [a-zA-Z_\x80-\xff0-9] |
67 |
WORD {ALPHA}{ALPHANUM}* |
WORD {ALPHA}{ALPHANUM}* |
68 |
|
|
69 |
%start PHP C_COMMENT CPP_COMMENT SHELL_COMMENT STRING LITERAL PREPROCESSOR_LINE |
%start PHP C_COMMENT CPP_COMMENT SHELL_COMMENT STRING LITERAL HEREDOCUMENT PREPROCESSOR_LINE |
70 |
%option 8bit noyywrap noyy_top_state stack prefix="php_" |
%option 8bit noyywrap noyy_top_state stack prefix="php_" |
71 |
%% |
%% |
72 |
/* Start PHP */ |
/* Start PHP */ |
99 |
<LITERAL>\' { ECHO; yy_pop_state(); } |
<LITERAL>\' { ECHO; yy_pop_state(); } |
100 |
<LITERAL>\\. { put_char(LEXTEXT[0]); put_char(LEXTEXT[1]); } |
<LITERAL>\\. { put_char(LEXTEXT[0]); put_char(LEXTEXT[1]); } |
101 |
|
|
102 |
|
/* Here document */ |
103 |
|
<PHP><<<{WORD} { |
104 |
|
put_string(LEXTEXT); |
105 |
|
/* extract word and save */ |
106 |
|
if (LEXLENG - 3 > IDENTLEN) |
107 |
|
die("Too long name '%s'.", LEXTEXT + 3); |
108 |
|
strcpy(end_of_here_document, LEXTEXT + 3); |
109 |
|
yy_push_state(HEREDOCUMENT); |
110 |
|
} |
111 |
|
<HEREDOCUMENT>^{WORD} { |
112 |
|
ECHO; |
113 |
|
if (!strcmp(end_of_here_document, LEXTEXT)) |
114 |
|
yy_pop_state(); |
115 |
|
} |
116 |
<PHP>^[ \t]*include[ \t]*\( { |
<PHP>^[ \t]*include[ \t]*\( { |
117 |
int c; |
int c; |
118 |
|
|