From: helly Date: Mon, 18 Feb 2008 11:33:12 +0000 (+0000) Subject: - Changed to allow /* comments with -c switch. X-Git-Tag: 0.13.6~88 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=bb29a2c151879478b8f643359c2dbf89f9bb69ff;p=re2c - Changed to allow /* comments with -c switch. --- diff --git a/re2c/CHANGELOG b/re2c/CHANGELOG index e719f5b1..e218d26f 100644 --- a/re2c/CHANGELOG +++ b/re2c/CHANGELOG @@ -1,3 +1,7 @@ +Version 0.13.3 (2008-??-??) +--------------------------- +- Changed to allow /* comments with -c switch. + Version 0.13.2 (2008-02-14) --------------------------- - Added flag --case-inverted. diff --git a/re2c/bootstrap/scanner.cc b/re2c/bootstrap/scanner.cc index 97d1f059..3e114c85 100644 --- a/re2c/bootstrap/scanner.cc +++ b/re2c/bootstrap/scanner.cc @@ -1,4 +1,4 @@ -/* Generated by re2c 0.13.2.dev on Thu Feb 14 20:22:44 2008 */ +/* Generated by re2c 0.13.2.dev on Fri Feb 15 01:08:50 2008 */ /* $Id$ */ #include #include diff --git a/re2c/code.cc b/re2c/code.cc index aebe97d3..2add39e0 100644 --- a/re2c/code.cc +++ b/re2c/code.cc @@ -596,6 +596,7 @@ void Accept::emitBinary(std::ostream &o, uint ind, uint l, uint r, bool &readCh) { uint m = (l + r) >> 1; + assert(bUsedYYAccept); o << indent(ind) << "if (" << mapCodeName["yyaccept"] << " <= " << m << ") {\n"; emitBinary(o, ++ind, l, m, readCh); o << indent(--ind) << "} else {\n"; @@ -1623,7 +1624,10 @@ void DFA::emit(std::ostream &o, uint& ind, const RegExpMap* specMap, const std:: delete head->action; head->action = NULL; - bUsedYYAccept = false; + if (!cFlag) + { + bUsedYYAccept = false; + } uint start_label = next_label; diff --git a/re2c/htdocs/index.html b/re2c/htdocs/index.html index f524a3ad..92094e18 100755 --- a/re2c/htdocs/index.html +++ b/re2c/htdocs/index.html @@ -80,6 +80,10 @@ fixes which were incorporated.

Changelog

+

2008-??-??: 0.13.3

+
    +
  • Changed to allow /* comments with -c switch.
  • +

2008-02-14: 0.13.2

  • Added flag --case-inverted.
  • diff --git a/re2c/test/yyaccept_missing.bci.c b/re2c/test/yyaccept_missing.bci.c new file mode 100755 index 00000000..df453630 --- /dev/null +++ b/re2c/test/yyaccept_missing.bci.c @@ -0,0 +1,168 @@ +/* Generated by re2c */ +#include +#include +#include + +#define YYGETCONDITION() yy_state +#define YYSETCONDITION(s) yy_state = s +#define YYCTYPE char +#define YYCURSOR p +#define YYLIMIT (s+l) +#define YYMARKER q +#define YYFILL(n) + +#define STATE(name) yyc##name + +static enum YYCONDTYPE yy_state; + + +enum YYCONDTYPE { + yycINITIAL, + yycST_VALUE, +}; + + +int scan(char *s, int l) +{ + char *p = s; + char *q = 0; + char *t; + + for(;;) + { + t = p; + + { + YYCTYPE yych; + unsigned int yyaccept = 0; + if (YYGETCONDITION() < 1) { + goto yyc_INITIAL; + } else { + goto yyc_ST_VALUE; + } +/* *********************************** */ +yyc_INITIAL: + + if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); + yych = *YYCURSOR; + if (yych <= 0x00) goto yy4; + if (yych != '$') goto yy6; + ++YYCURSOR; + if ((yych = *YYCURSOR) <= '@') goto yy3; + if (yych <= 'Z') goto yy7; + if (yych <= '`') goto yy3; + if (yych <= 'z') goto yy7; +yy3: + { printf("ERR\n"); return 1; } +yy4: + ++YYCURSOR; + { printf("EOF\n"); return 0; } +yy6: + yych = *++YYCURSOR; + goto yy3; +yy7: + ++YYCURSOR; + { + printf("FOUND %s\n", t); + continue; + } +/* *********************************** */ +yyc_ST_VALUE: + { + static const unsigned char yybm[] = { + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 128, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 128, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }; + if (YYLIMIT == YYCURSOR) YYFILL(1); + yych = *(YYMARKER = YYCURSOR); + if (yybm[0+yych] & 128) { + goto yy14; + } + if (yych == '$') goto yy12; +yy11: + { + YYSETCONDITION(STATE(INITIAL)); + printf("Found spaces\n"); + } +yy12: + ++YYCURSOR; + if (YYLIMIT == YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + if (yych <= '@') goto yy13; + if (yych <= 'Z') goto yy16; + if (yych <= '`') goto yy13; + if (yych <= 'z') goto yy16; +yy13: + YYCURSOR = YYMARKER; + if (yyaccept <= 0) { + goto yy11; + } else { + goto yy17; + } +yy14: + ++YYCURSOR; + if (YYLIMIT == YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + if (yybm[0+yych] & 128) { + goto yy14; + } + goto yy11; +yy16: + yyaccept = 1; + YYMARKER = ++YYCURSOR; + if (YYLIMIT == YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + if (yych == '$') goto yy12; +yy17: + { + printf("Found $ or $\\\n"); + continue; + } + } + } + + } +} + +int main(int argc, char **argv) +{ + if (argc > 1) + { + return scan(argv[1], strlen(argv[1])); + } + else + { + fprintf(stderr, "%s \n", argv[0]); + return 1; + } +} diff --git a/re2c/test/yyaccept_missing.bci.re b/re2c/test/yyaccept_missing.bci.re new file mode 100755 index 00000000..842a27e5 --- /dev/null +++ b/re2c/test/yyaccept_missing.bci.re @@ -0,0 +1,67 @@ +#include +#include +#include + +#define YYGETCONDITION() yy_state +#define YYSETCONDITION(s) yy_state = s +#define YYCTYPE char +#define YYCURSOR p +#define YYLIMIT (s+l) +#define YYMARKER q +#define YYFILL(n) + +#define STATE(name) yyc##name + +static enum YYCONDTYPE yy_state; + +/*!types:re2c */ + +int scan(char *s, int l) +{ + char *p = s; + char *q = 0; + char *t; + + for(;;) + { + t = p; +/*!re2c + re2c:indent:top = 2; + + TABS_AND_SPACES = [ \t]*; + LITERAL_DOLLAR = "$"[a-zA-Z]; + + LITERAL_DOLLAR { + printf("FOUND %s\n", t); + continue; + } + + LITERAL_DOLLAR+ { + printf("Found $ or $\\\n"); + continue; + } + + TABS_AND_SPACES { + YYSETCONDITION(STATE(INITIAL)); + printf("Found spaces\n"); + } + + "\000" { printf("EOF\n"); return 0; } + [^] { printf("ERR\n"); return 1; } + +*/ + } +} + +int main(int argc, char **argv) +{ + if (argc > 1) + { + return scan(argv[1], strlen(argv[1])); + } + else + { + fprintf(stderr, "%s \n", argv[0]); + return 1; + } +}