64 |
YACC_DIRECTIVE %{ALPHA}({ALPHANUM}|-)* |
YACC_DIRECTIVE %{ALPHA}({ALPHANUM}|-)* |
65 |
YACC_IDENTIFIER ({ALPHA}|\.)({ALPHANUM}|\.)* |
YACC_IDENTIFIER ({ALPHA}|\.)({ALPHANUM}|\.)* |
66 |
|
|
67 |
%start C C_COMMENT CPP_COMMENT SHELL_COMMENT STRING LITERAL PREPROCESSING_DIRECTIVE |
%start C C_COMMENT CPP_COMMENT SHELL_COMMENT STRING LITERAL PREPROCESSOR_LINE |
68 |
%start YACC_DECLARATIONS YACC_RULES YACC_PROLOGUE BRACED_CODE |
%start YACC_DECLARATIONS YACC_RULES YACC_PROLOGUE BRACED_CODE |
69 |
%option 8bit noyywrap noyy_top_state stack prefix="c" |
%option 8bit noyywrap noyy_top_state stack prefix="c" |
70 |
%% |
%% |
72 |
\\\n DEFAULT_BACKSLASH_NEWLINE_ACTION |
\\\n DEFAULT_BACKSLASH_NEWLINE_ACTION |
73 |
|
|
74 |
/* Comment */ |
/* Comment */ |
75 |
<C,PREPROCESSING_DIRECTIVE,YACC_DECLARATIONS,YACC_RULES,YACC_PROLOGUE,BRACED_CODE>{ |
<C,PREPROCESSOR_LINE,YACC_DECLARATIONS,YACC_RULES,YACC_PROLOGUE,BRACED_CODE>{ |
76 |
"/*" { echos(comment_begin); ECHO; yy_push_state(C_COMMENT); } |
"/*" { echos(comment_begin); ECHO; yy_push_state(C_COMMENT); } |
77 |
} |
} |
78 |
<C_COMMENT>"*/" { ECHO; echos(comment_end); yy_pop_state(); } |
<C_COMMENT>"*/" { ECHO; echos(comment_end); yy_pop_state(); } |
82 |
unexpected_eof(LINENO); |
unexpected_eof(LINENO); |
83 |
yyterminate(); |
yyterminate(); |
84 |
} |
} |
85 |
<C,PREPROCESSING_DIRECTIVE,YACC_DECLARATIONS,YACC_RULES,YACC_PROLOGUE,BRACED_CODE>{ |
<C,PREPROCESSOR_LINE,YACC_DECLARATIONS,YACC_RULES,YACC_PROLOGUE,BRACED_CODE>{ |
86 |
"//" { echos(comment_begin); ECHO; yy_push_state(CPP_COMMENT); } |
"//" { echos(comment_begin); ECHO; yy_push_state(CPP_COMMENT); } |
87 |
} |
} |
88 |
|
|
89 |
/* String */ |
/* String */ |
90 |
<C,PREPROCESSING_DIRECTIVE,YACC_DECLARATIONS,YACC_RULES,YACC_PROLOGUE,BRACED_CODE>{ |
<C,PREPROCESSOR_LINE,YACC_DECLARATIONS,YACC_RULES,YACC_PROLOGUE,BRACED_CODE>{ |
91 |
\" { ECHO; yy_push_state(STRING); } |
\" { ECHO; yy_push_state(STRING); } |
92 |
} |
} |
93 |
<STRING>\" { ECHO; yy_pop_state(); } |
<STRING>\" { ECHO; yy_pop_state(); } |
94 |
<STRING>\\. { put_char(LEXTEXT[0]); put_char(LEXTEXT[1]); } |
<STRING>\\. { put_char(LEXTEXT[0]); put_char(LEXTEXT[1]); } |
95 |
|
|
96 |
/* Literal */ |
/* Literal */ |
97 |
<C,PREPROCESSING_DIRECTIVE,YACC_DECLARATIONS,YACC_RULES,YACC_PROLOGUE,BRACED_CODE>{ |
<C,PREPROCESSOR_LINE,YACC_DECLARATIONS,YACC_RULES,YACC_PROLOGUE,BRACED_CODE>{ |
98 |
\' { ECHO; yy_push_state(LITERAL); } |
\' { ECHO; yy_push_state(LITERAL); } |
99 |
} |
} |
100 |
<LITERAL>\' { ECHO; yy_pop_state(); } |
<LITERAL>\' { ECHO; yy_pop_state(); } |
180 |
if (wflag) |
if (wflag) |
181 |
unknown_preprocessing_directive(p, LINENO); |
unknown_preprocessing_directive(p, LINENO); |
182 |
} |
} |
183 |
yy_push_state(PREPROCESSING_DIRECTIVE); |
yy_push_state(PREPROCESSOR_LINE); |
184 |
} |
} |
185 |
/* Null directive */ |
/* Null directive */ |
186 |
^[ \t]*\# { put_macro(LEXTEXT); } |
^[ \t]*\# { put_macro(LEXTEXT); } |
222 |
yyterminate(); |
yyterminate(); |
223 |
} |
} |
224 |
|
|
225 |
<C,PREPROCESSING_DIRECTIVE,YACC_DECLARATIONS,YACC_RULES,YACC_PROLOGUE,BRACED_CODE>{ |
<C,PREPROCESSOR_LINE,YACC_DECLARATIONS,YACC_RULES,YACC_PROLOGUE,BRACED_CODE>{ |
226 |
{NUMBER} ECHO; |
{NUMBER} ECHO; |
227 |
} |
} |
228 |
<C,PREPROCESSING_DIRECTIVE,YACC_PROLOGUE,BRACED_CODE>{ |
<C,PREPROCESSOR_LINE,YACC_PROLOGUE,BRACED_CODE>{ |
229 |
{WORD} { |
{WORD} { |
230 |
if (reserved_word(LEXTEXT, LEXLENG)) |
if (reserved_word(LEXTEXT, LEXLENG)) |
231 |
put_reserved_word(LEXTEXT); |
put_reserved_word(LEXTEXT); |
232 |
else if (YY_START == PREPROCESSING_DIRECTIVE |
else if (YY_START == PREPROCESSOR_LINE |
233 |
&& (last_directive == SHARP_IF || last_directive == SHARP_ELIF) |
&& (last_directive == SHARP_IF || last_directive == SHARP_ELIF) |
234 |
&& strcmp(LEXTEXT, "defined") == 0) |
&& strcmp(LEXTEXT, "defined") == 0) |
235 |
put_reserved_word(LEXTEXT); |
put_reserved_word(LEXTEXT); |
244 |
} |
} |
245 |
} |
} |
246 |
} |
} |
247 |
<C,PREPROCESSING_DIRECTIVE,YACC_PROLOGUE>{ |
<C,PREPROCESSOR_LINE,YACC_PROLOGUE>{ |
248 |
[{}] { put_brace(LEXTEXT); } |
[{}] { put_brace(LEXTEXT); } |
249 |
} |
} |
250 |
|
|