<*>\n { line_no++; REJECT; }
+<*>MOTHERFUCKER { fprintf(stderr,"You are a bad bad person!\n"); REJECT; }
+
\/\/.*$ { ; /*comment, ignore*/ }
-<C_CODE>\/\/.*$ { ; /*comment, ignore*/ }
+<C_CODE>\/\/.*$ { add_to_cbuf(yytext); /*comment, ignore*/ }
<CLASS_CODE>\/\/.*$ { ; /*comment, ignore*/ }
<CLASS_CODE_I>\/\/.*$ { ; /*comment, ignore*/ }
\/\* {BEGIN(COMMENT); before_comment = INITIAL; }
-<C_CODE>\/\* {BEGIN(COMMENT); before_comment = C_CODE; }
+<C_CODE>\/\* {
+ add_to_cbuf(yytext);
+ BEGIN(COMMENT);
+ before_comment = C_CODE;
+}
<CLASS_CODE>\/\* {BEGIN(COMMENT); before_comment = CLASS_CODE; }
<CLASS_CODE_I>\/\* {BEGIN(COMMENT); before_comment = CLASS_CODE_I; }
-<COMMENT>\*\/ {BEGIN(before_comment);}
-<COMMENT>. { ; /* comment, ignore */ }
-<COMMENT>\n { ; /* comment, ignore */ }
+<COMMENT>\*\/ {
+ if(before_comment == C_CODE) add_to_cbuf(yytext);
+ BEGIN(before_comment);
+ }
+<COMMENT>. {
+ /* comment, ignore */
+ if(before_comment == C_CODE) add_to_cbuf(yytext);
+ }
+<COMMENT>\n {
+ /* comment, ignore */
+ if(before_comment == C_CODE) add_to_cbuf(yytext);
+ }
^\%h\{ {
BEGIN(C_CODE);
<C_CODE>\'\\\{\' { add_to_cbuf(yytext); }
<C_CODE>\'\}\' { add_to_cbuf(yytext); }
<C_CODE>\'\\\}\' { add_to_cbuf(yytext); }
+<C_CODE>\'\"\' { add_to_cbuf(yytext); }
+<C_CODE>\'\\\"\' { add_to_cbuf(yytext); }
<C_CODE>\\. { add_to_cbuf(yytext); }
<C_CODE>\" {
BEGIN(C_CODE_STRING);
add_to_cbuf(yytext);
}
-<C_CODE_STRING>\\. {
- add_to_cbuf(yytext);
- }
+<C_CODE_STRING>\\. { add_to_cbuf(yytext); }
<C_CODE_STRING>\" {
BEGIN(C_CODE);
add_to_cbuf(yytext);
}
-<C_CODE_STRING>. {
- add_to_cbuf(yytext);
- }
+<C_CODE_STRING>. { add_to_cbuf(yytext); }
+<C_CODE_STRING>\n { add_to_cbuf(yytext); }
<C_CODE>\{ {
parenth_depth++;
<CLASS_CODE_I>float {return FLOAT;}
<CLASS_CODE_I>double {return DOUBLE;}
<CLASS_CODE_I>char {return CHAR;}
+<CLASS_CODE_I>const {return CONST;}
+
+<CLASS_CODE_I>\.\.\. {return THREEDOTS;}
<CLASS_CODE_I>public {yylval.line = line_no; return PUBLIC;}
<CLASS_CODE_I>private {yylval.line = line_no; return PRIVATE;}
return '}';
}
-<CLASS_CODE,CLASS_CODE_I,INITIAL>[\n\t ] ; /*ignore*/
+<CLASS_CODE,CLASS_CODE_I,INITIAL>[\t ] ; /*ignore*/
<*>. {
yylval.line = line_no;
return yytext[0];
}
+
+<*>[\n\r] ; /*ignore*/