}
o << indent(ind) << "}\n";
}
- if (o.warn_condition_order) // see note [condition order]
- {
- warn.condition_order (o.get_block_line ());
- }
+ o.insert_warn_condition_order ();
bWroteCondCheck = true;
}
insert_code ();
}
+void OutputFile::insert_warn_condition_order ()
+{
+ blocks.back ()->fragments.push_back (new OutputFragment (OutputFragment::WARN_CONDITION_ORDER, 0));
+ insert_code ();
+}
+
void OutputFile::insert_yyaccept_init (uint32_t ind)
{
blocks.back ()->fragments.push_back (new OutputFragment (OutputFragment::YYACCEPT_INIT, ind));
case OutputFragment::TYPES:
output_types (f.stream, f.indent, types);
break;
+ case OutputFragment::WARN_CONDITION_ORDER:
+ if (warn_condition_order) // see note [condition order]
+ {
+ warn.condition_order (b.line);
+ }
+ break;
case OutputFragment::YYACCEPT_INIT:
output_yyaccept_init (f.stream, f.indent, b.used_yyaccept);
break;
, LINE_INFO
, STATE_GOTO
, TYPES
+ , WARN_CONDITION_ORDER
, YYACCEPT_INIT
, YYMAXFILL
};
void insert_line_info ();
void insert_state_goto (uint32_t ind);
void insert_types ();
+ void insert_warn_condition_order ();
void insert_yyaccept_init (uint32_t ind);
void insert_yymaxfill ();
re2c: warning: line 3: rule matches empty string [-Wmatch-empty-string]
-re2c: warning: line 7: looks like you use hardcoded numbers instead of autogenerated condition names: better add '/*!types:re2c*/' directive or '-t, --type-header' option and don't rely on fixed condition order. [-Wcondition-order]
re2c: warning: line 7: naked default case in condition r1 (stray code units: [0x00-`][c-0xFF]), better add default rule * [-Wnaked-default]
re2c: warning: line 7: naked default case in condition r2 (stray code units: [0x00-a][c-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 7: looks like you use hardcoded numbers instead of autogenerated condition names: better add '/*!types:re2c*/' directive or '-t, --type-header' option and don't rely on fixed condition order. [-Wcondition-order]
/* Generated by re2c */
#line 1 "condition_02.cg.re"
re2c: warning: line 3: rule matches empty string [-Wmatch-empty-string]
-re2c: warning: line 9: looks like you use hardcoded numbers instead of autogenerated condition names: better add '/*!types:re2c*/' directive or '-t, --type-header' option and don't rely on fixed condition order. [-Wcondition-order]
re2c: warning: line 9: naked default case in condition r1 (stray code units: [0x00-0][3-`][c-0xFF]), better add default rule * [-Wnaked-default]
re2c: warning: line 9: naked default case in condition r2 (stray code units: [0x00-0][3-a][c-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 9: looks like you use hardcoded numbers instead of autogenerated condition names: better add '/*!types:re2c*/' directive or '-t, --type-header' option and don't rely on fixed condition order. [-Wcondition-order]
/* Generated by re2c */
#line 1 "condition_03.cg.re"
re2c: warning: line 8: naked default case in condition r1 (stray code units: [0x00-0][3-`][c-0xFF]), better add default rule * [-Wnaked-default]
-re2c: warning: line 8: looks like you use hardcoded numbers instead of autogenerated condition names: better add '/*!types:re2c*/' directive or '-t, --type-header' option and don't rely on fixed condition order. [-Wcondition-order]
re2c: warning: line 8: naked default case in condition r2 (stray code units: [0x00-0][3-a][c-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 8: looks like you use hardcoded numbers instead of autogenerated condition names: better add '/*!types:re2c*/' directive or '-t, --type-header' option and don't rely on fixed condition order. [-Wcondition-order]
/* Generated by re2c */
#line 1 "condition_04.cg.re"
re2c: warning: line 3: rule matches empty string [-Wmatch-empty-string]
-re2c: warning: line 9: looks like you use hardcoded numbers instead of autogenerated condition names: better add '/*!types:re2c*/' directive or '-t, --type-header' option and don't rely on fixed condition order. [-Wcondition-order]
re2c: warning: line 9: naked default case in condition r1 (stray code units: [0x00-0][3-`][c-0xFF]), better add default rule * [-Wnaked-default]
re2c: warning: line 9: naked default case in condition r2 (stray code units: [0x00-0][3-a][c-0xFF]), better add default rule * [-Wnaked-default]
/* Generated by re2c */
re2c: warning: line 3: rule matches empty string [-Wmatch-empty-string]
-re2c: warning: line 9: looks like you use hardcoded numbers instead of autogenerated condition names: better add '/*!types:re2c*/' directive or '-t, --type-header' option and don't rely on fixed condition order. [-Wcondition-order]
re2c: warning: line 9: naked default case in condition r1 (stray code units: [0x00-0][3-`][c-0xFF]), better add default rule * [-Wnaked-default]
re2c: warning: line 9: naked default case in condition r2 (stray code units: [0x00-0][3-a][c-0xFF]), better add default rule * [-Wnaked-default]
/* Generated by re2c */
re2c: warning: line 11: naked default case in condition a (stray code units: [0x00-`][b-0xFF]), better add default rule * [-Wnaked-default]
-re2c: warning: line 11: looks like you use hardcoded numbers instead of autogenerated condition names: better add '/*!types:re2c*/' directive or '-t, --type-header' option and don't rely on fixed condition order. [-Wcondition-order]
re2c: warning: line 11: naked default case in condition b (stray code units: [0x00-a][c-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 11: looks like you use hardcoded numbers instead of autogenerated condition names: better add '/*!types:re2c*/' directive or '-t, --type-header' option and don't rely on fixed condition order. [-Wcondition-order]
/* Generated by re2c */
#line 1 "condtype.cg.re"
int main ()
re2c: warning: line 11: naked default case in condition a (stray code units: [0x00-`][b-0xFF]), better add default rule * [-Wnaked-default]
-re2c: warning: line 11: looks like you use hardcoded numbers instead of autogenerated condition names: better add '/*!types:re2c*/' directive or '-t, --type-header' option and don't rely on fixed condition order. [-Wcondition-order]
re2c: warning: line 11: naked default case in condition b (stray code units: [0x00-a][c-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 11: looks like you use hardcoded numbers instead of autogenerated condition names: better add '/*!types:re2c*/' directive or '-t, --type-header' option and don't rely on fixed condition order. [-Wcondition-order]
/* Generated by re2c */
#line 1 "condtype.cs.re"
int main ()
--- /dev/null
+re2c: warning: line 14: naked default case in condition a (stray code units: [0x00-`][b-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 14: naked default case in condition b (stray code units: [0x00-a][c-0xFF]), better add default rule * [-Wnaked-default]
+/* Generated by re2c */
+#line 1 "condtype_forwdecl.cg.re"
+enum cond_t : int;
+
+int main ()
+{
+ cond_t cond;
+ char * YYCURSOR;
+#define YYGETCONDITION() cond
+
+#line 12 "<stdout>"
+{
+ unsigned char yych;
+ static void *yyctable[2] = {
+ &&yyc_a,
+ &&yyc_b,
+ };
+ goto *yyctable[YYGETCONDITION()];
+/* *********************************** */
+yyc_a:
+ yych = *YYCURSOR;
+ if (yych == 'a') goto yy4;
+yy4:
+ ++YYCURSOR;
+#line 12 "condtype_forwdecl.cg.re"
+ {}
+#line 28 "<stdout>"
+/* *********************************** */
+yyc_b:
+ yych = *YYCURSOR;
+ if (yych == 'b') goto yy9;
+yy9:
+ ++YYCURSOR;
+#line 13 "condtype_forwdecl.cg.re"
+ {}
+#line 37 "<stdout>"
+}
+#line 14 "condtype_forwdecl.cg.re"
+
+ return 0;
+}
+
+#line 44 "<stdout>"
+
+enum cond_t : int {
+ yyca,
+ yycb,
+};
+
+#line 18 "condtype_forwdecl.cg.re"
--- /dev/null
+enum cond_t : int;
+
+int main ()
+{
+ cond_t cond;
+ char * YYCURSOR;
+#define YYGETCONDITION() cond
+/*!re2c
+ re2c:yyfill:enable = 0;
+ re2c:define:YYCTYPE = "unsigned char";
+ re2c:define:YYCONDTYPE = "cond_t : int";
+ <a> "a" {}
+ <b> "b" {}
+*/
+ return 0;
+}
+
+/*!types:re2c*/
--- /dev/null
+re2c: warning: line 14: naked default case in condition a (stray code units: [0x00-`][b-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 14: naked default case in condition b (stray code units: [0x00-a][c-0xFF]), better add default rule * [-Wnaked-default]
+/* Generated by re2c */
+#line 1 "condtype_forwdecl.cs.re"
+enum cond_t : int;
+
+int main ()
+{
+ cond_t cond;
+ char * YYCURSOR;
+#define YYGETCONDITION() cond
+
+#line 12 "<stdout>"
+{
+ unsigned char yych;
+ if (YYGETCONDITION() < 1) {
+ goto yyc_a;
+ } else {
+ goto yyc_b;
+ }
+/* *********************************** */
+yyc_a:
+ yych = *YYCURSOR;
+ if (yych == 'a') goto yy4;
+yy4:
+ ++YYCURSOR;
+#line 12 "condtype_forwdecl.cs.re"
+ {}
+#line 28 "<stdout>"
+/* *********************************** */
+yyc_b:
+ yych = *YYCURSOR;
+ if (yych == 'b') goto yy9;
+yy9:
+ ++YYCURSOR;
+#line 13 "condtype_forwdecl.cs.re"
+ {}
+#line 37 "<stdout>"
+}
+#line 14 "condtype_forwdecl.cs.re"
+
+ return 0;
+}
+
+#line 44 "<stdout>"
+
+enum cond_t : int {
+ yyca,
+ yycb,
+};
+
+#line 18 "condtype_forwdecl.cs.re"
--- /dev/null
+enum cond_t : int;
+
+int main ()
+{
+ cond_t cond;
+ char * YYCURSOR;
+#define YYGETCONDITION() cond
+/*!re2c
+ re2c:yyfill:enable = 0;
+ re2c:define:YYCTYPE = "unsigned char";
+ re2c:define:YYCONDTYPE = "cond_t : int";
+ <a> "a" {}
+ <b> "b" {}
+*/
+ return 0;
+}
+
+/*!types:re2c*/
--- /dev/null
+re2c: warning: line 11: naked default case in condition a (stray code units: [0x00-`][b-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 11: naked default case in condition b (stray code units: [0x00-a][c-0xFF]), better add default rule * [-Wnaked-default]
+/* Generated by re2c */
+#line 1 "condtype_yysetcondition.cg.re"
+int main ()
+{
+ YYCONDTYPE cond;
+ char * YYCURSOR;
+#define YYGETCONDITION() cond
+
+#line 10 "<stdout>"
+{
+ unsigned char yych;
+ static void *yyctable[2] = {
+ &&yyc_a,
+ &&yyc_b,
+ };
+ goto *yyctable[YYGETCONDITION()];
+/* *********************************** */
+yyc_a:
+ yych = *YYCURSOR;
+ if (yych == 'a') goto yy4;
+yy4:
+ ++YYCURSOR;
+ YYSETCONDITION(yycb);
+#line 9 "condtype_yysetcondition.cg.re"
+ {}
+#line 27 "<stdout>"
+/* *********************************** */
+yyc_b:
+ yych = *YYCURSOR;
+ if (yych == 'b') goto yy9;
+yy9:
+ ++YYCURSOR;
+#line 10 "condtype_yysetcondition.cg.re"
+ {}
+#line 36 "<stdout>"
+}
+#line 11 "condtype_yysetcondition.cg.re"
+
+ return 0;
+}
--- /dev/null
+int main ()
+{
+ YYCONDTYPE cond;
+ char * YYCURSOR;
+#define YYGETCONDITION() cond
+/*!re2c
+ re2c:yyfill:enable = 0;
+ re2c:define:YYCTYPE = "unsigned char";
+ <a> "a" => b {}
+ <b> "b" {}
+*/
+ return 0;
+}
--- /dev/null
+re2c: warning: line 11: naked default case in condition a (stray code units: [0x00-`][b-0xFF]), better add default rule * [-Wnaked-default]
+re2c: warning: line 11: naked default case in condition b (stray code units: [0x00-a][c-0xFF]), better add default rule * [-Wnaked-default]
+/* Generated by re2c */
+#line 1 "condtype_yysetcondition.cs.re"
+int main ()
+{
+ YYCONDTYPE cond;
+ char * YYCURSOR;
+#define YYGETCONDITION() cond
+
+#line 10 "<stdout>"
+{
+ unsigned char yych;
+ if (YYGETCONDITION() < 1) {
+ goto yyc_a;
+ } else {
+ goto yyc_b;
+ }
+/* *********************************** */
+yyc_a:
+ yych = *YYCURSOR;
+ if (yych == 'a') goto yy4;
+yy4:
+ ++YYCURSOR;
+ YYSETCONDITION(yycb);
+#line 9 "condtype_yysetcondition.cs.re"
+ {}
+#line 27 "<stdout>"
+/* *********************************** */
+yyc_b:
+ yych = *YYCURSOR;
+ if (yych == 'b') goto yy9;
+yy9:
+ ++YYCURSOR;
+#line 10 "condtype_yysetcondition.cs.re"
+ {}
+#line 36 "<stdout>"
+}
+#line 11 "condtype_yysetcondition.cs.re"
+
+ return 0;
+}
--- /dev/null
+int main ()
+{
+ YYCONDTYPE cond;
+ char * YYCURSOR;
+#define YYGETCONDITION() cond
+/*!re2c
+ re2c:yyfill:enable = 0;
+ re2c:define:YYCTYPE = "unsigned char";
+ <a> "a" => b {}
+ <b> "b" {}
+*/
+ return 0;
+}
-re2c: warning: line 340: looks like you use hardcoded numbers instead of autogenerated condition names: better add '/*!types:re2c*/' directive or '-t, --type-header' option and don't rely on fixed condition order. [-Wcondition-order]
/* Generated by re2c */
/*
+----------------------------------------------------------------------+