Config: Implement true/false as aliases for 1/0

Fixes #3551
This commit is contained in:
Gunnar Beutner 2013-01-24 10:08:03 +01:00
parent 99e58f7031
commit 1bbdfa2413
2 changed files with 135 additions and 114 deletions

View File

@ -370,8 +370,8 @@ static void yy_fatal_error (yyconst char msg[] ,yyscan_t yyscanner );
*yy_cp = '\0'; \
yyg->yy_c_buf_p = yy_cp;
#define YY_NUM_RULES 26
#define YY_END_OF_BUFFER 27
#define YY_NUM_RULES 28
#define YY_END_OF_BUFFER 29
/* This struct is not used in this scanner,
but its presence is necessary. */
struct yy_trans_info
@ -379,17 +379,19 @@ struct yy_trans_info
flex_int32_t yy_verify;
flex_int32_t yy_nxt;
};
static yyconst flex_int16_t yy_accept[85] =
static yyconst flex_int16_t yy_accept[94] =
{ 0,
0, 0, 0, 0, 27, 25, 24, 24, 25, 25,
25, 25, 25, 25, 13, 14, 8, 8, 8, 8,
8, 8, 21, 22, 24, 0, 9, 0, 0, 17,
15, 13, 16, 19, 0, 18, 0, 10, 11, 12,
8, 8, 8, 8, 8, 8, 21, 20, 0, 0,
23, 13, 8, 8, 8, 8, 8, 0, 0, 8,
8, 8, 7, 8, 0, 0, 8, 8, 2, 8,
0, 0, 8, 8, 3, 0, 0, 8, 8, 4,
5, 1, 6, 0
0, 0, 0, 0, 29, 27, 26, 26, 27, 27,
27, 27, 27, 27, 15, 16, 10, 10, 10, 10,
10, 10, 10, 10, 23, 24, 26, 0, 11, 0,
0, 19, 17, 15, 18, 21, 0, 20, 0, 12,
13, 14, 10, 10, 10, 10, 10, 10, 10, 10,
23, 22, 0, 0, 25, 15, 10, 10, 10, 10,
10, 10, 10, 0, 0, 10, 10, 10, 10, 7,
10, 8, 0, 0, 10, 9, 10, 2, 10, 0,
0, 10, 10, 3, 0, 0, 10, 10, 4, 5,
1, 6, 0
} ;
static yyconst flex_int32_t yy_ec[256] =
@ -405,9 +407,9 @@ static yyconst flex_int32_t yy_ec[256] =
13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
1, 1, 1, 1, 13, 1, 14, 15, 16, 17,
18, 13, 13, 19, 20, 21, 13, 22, 23, 24,
25, 13, 13, 26, 27, 28, 29, 13, 13, 13,
30, 13, 1, 1, 1, 1, 1, 1, 1, 1,
18, 19, 13, 20, 21, 22, 13, 23, 24, 25,
26, 13, 13, 27, 28, 29, 30, 13, 13, 13,
31, 13, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
@ -424,84 +426,91 @@ static yyconst flex_int32_t yy_ec[256] =
1, 1, 1, 1, 1
} ;
static yyconst flex_int32_t yy_meta[31] =
static yyconst flex_int32_t yy_meta[32] =
{ 0,
1, 1, 2, 1, 1, 3, 1, 4, 1, 1,
4, 1, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4
4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4
} ;
static yyconst flex_int16_t yy_base[90] =
static yyconst flex_int16_t yy_base[99] =
{ 0,
0, 0, 108, 107, 112, 115, 29, 31, 107, 15,
98, 97, 27, 30, 34, 115, 0, 93, 83, 81,
76, 89, 0, 93, 44, 98, 115, 77, 80, 115,
115, 0, 115, 115, 0, 115, 88, 115, 115, 115,
0, 71, 78, 80, 73, 73, 0, 115, 77, 77,
0, 33, 63, 72, 75, 66, 69, 64, 59, 58,
57, 60, 0, 65, 51, 65, 64, 55, 0, 44,
42, 32, 39, 26, 0, 33, 20, 21, 21, 115,
115, 0, 0, 115, 61, 65, 37, 69, 73
0, 0, 116, 115, 120, 123, 30, 32, 115, 15,
106, 105, 28, 31, 35, 123, 0, 101, 101, 89,
87, 82, 96, 83, 0, 99, 45, 104, 123, 82,
85, 123, 123, 0, 123, 123, 0, 123, 94, 123,
123, 123, 0, 76, 80, 82, 85, 77, 77, 68,
0, 123, 81, 81, 0, 34, 66, 66, 75, 78,
68, 72, 71, 65, 60, 59, 67, 57, 60, 0,
66, 0, 51, 66, 63, 0, 53, 0, 32, 43,
30, 40, 24, 0, 34, 20, 21, 21, 123, 123,
0, 0, 123, 63, 67, 38, 71, 75
} ;
static yyconst flex_int16_t yy_def[90] =
static yyconst flex_int16_t yy_def[99] =
{ 0,
84, 1, 85, 85, 84, 84, 84, 84, 86, 84,
84, 84, 84, 84, 84, 84, 87, 87, 87, 87,
87, 87, 88, 84, 84, 86, 84, 84, 84, 84,
84, 15, 84, 84, 89, 84, 84, 84, 84, 84,
87, 87, 87, 87, 87, 87, 88, 84, 84, 84,
89, 84, 87, 87, 87, 87, 87, 84, 84, 87,
87, 87, 87, 87, 84, 84, 87, 87, 87, 87,
84, 84, 87, 87, 87, 84, 84, 87, 87, 84,
84, 87, 87, 0, 84, 84, 84, 84, 84
93, 1, 94, 94, 93, 93, 93, 93, 95, 93,
93, 93, 93, 93, 93, 93, 96, 96, 96, 96,
96, 96, 96, 96, 97, 93, 93, 95, 93, 93,
93, 93, 93, 15, 93, 93, 98, 93, 93, 93,
93, 93, 96, 96, 96, 96, 96, 96, 96, 96,
97, 93, 93, 93, 98, 93, 96, 96, 96, 96,
96, 96, 96, 93, 93, 96, 96, 96, 96, 96,
96, 96, 93, 93, 96, 96, 96, 96, 96, 93,
93, 96, 96, 96, 93, 93, 96, 96, 93, 93,
96, 96, 0, 93, 93, 93, 93, 93
} ;
static yyconst flex_int16_t yy_nxt[146] =
static yyconst flex_int16_t yy_nxt[155] =
{ 0,
6, 7, 8, 9, 10, 11, 12, 13, 6, 14,
15, 16, 17, 18, 17, 17, 17, 17, 17, 19,
17, 20, 17, 21, 22, 17, 17, 17, 17, 17,
25, 25, 25, 25, 28, 34, 29, 32, 33, 35,
41, 36, 37, 52, 32, 25, 25, 83, 82, 81,
80, 38, 38, 79, 78, 39, 39, 77, 76, 40,
40, 23, 23, 23, 23, 26, 26, 26, 26, 47,
47, 75, 47, 51, 74, 51, 51, 73, 72, 71,
15, 16, 17, 18, 17, 17, 17, 17, 19, 17,
20, 17, 21, 17, 22, 23, 17, 17, 24, 17,
17, 27, 27, 27, 27, 30, 36, 31, 34, 35,
37, 43, 38, 39, 56, 34, 27, 27, 92, 91,
90, 89, 88, 40, 40, 87, 86, 41, 41, 85,
84, 42, 42, 25, 25, 25, 25, 28, 28, 28,
28, 51, 51, 83, 51, 55, 82, 55, 55, 81,
80, 79, 78, 77, 76, 75, 74, 73, 72, 71,
70, 69, 68, 67, 66, 65, 64, 63, 62, 61,
60, 59, 58, 57, 56, 55, 54, 53, 52, 50,
49, 27, 48, 46, 45, 44, 43, 42, 31, 30,
27, 84, 24, 24, 5, 84, 84, 84, 84, 84,
84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
84, 84, 84, 84, 84
60, 59, 58, 57, 56, 54, 53, 29, 52, 50,
49, 48, 47, 46, 45, 44, 33, 32, 29, 93,
26, 26, 5, 93, 93, 93, 93, 93, 93, 93,
93, 93, 93, 93, 93, 93, 93, 93, 93, 93,
93, 93, 93, 93, 93, 93, 93, 93, 93, 93,
93, 93, 93, 93
} ;
static yyconst flex_int16_t yy_chk[146] =
static yyconst flex_int16_t yy_chk[155] =
{ 0,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7, 7, 8, 8, 10, 14, 10, 13, 13, 14,
87, 14, 15, 52, 15, 25, 25, 79, 78, 77,
76, 52, 15, 74, 73, 52, 15, 72, 71, 52,
15, 85, 85, 85, 85, 86, 86, 86, 86, 88,
88, 70, 88, 89, 68, 89, 89, 67, 66, 65,
64, 62, 61, 60, 59, 58, 57, 56, 55, 54,
53, 50, 49, 46, 45, 44, 43, 42, 37, 29,
1, 7, 7, 8, 8, 10, 14, 10, 13, 13,
14, 96, 14, 15, 56, 15, 27, 27, 88, 87,
86, 85, 83, 56, 15, 82, 81, 56, 15, 80,
79, 56, 15, 94, 94, 94, 94, 95, 95, 95,
95, 97, 97, 77, 97, 98, 75, 98, 98, 74,
73, 71, 69, 68, 67, 66, 65, 64, 63, 62,
61, 60, 59, 58, 57, 54, 53, 50, 49, 48,
28, 26, 24, 22, 21, 20, 19, 18, 12, 11,
9, 5, 4, 3, 84, 84, 84, 84, 84, 84,
84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
84, 84, 84, 84, 84
47, 46, 45, 44, 39, 31, 30, 28, 26, 24,
23, 22, 21, 20, 19, 18, 12, 11, 9, 5,
4, 3, 93, 93, 93, 93, 93, 93, 93, 93,
93, 93, 93, 93, 93, 93, 93, 93, 93, 93,
93, 93, 93, 93, 93, 93, 93, 93, 93, 93,
93, 93, 93, 93
} ;
/* Table of booleans, true if rule could match eol. */
static yyconst flex_int32_t yy_rule_can_match_eol[27] =
static yyconst flex_int32_t yy_rule_can_match_eol[29] =
{ 0,
0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 1, 0, 0, 1, 0, 0, };
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 1, 0, 0, 1, 0, 0, };
/* The intent behind this definition is that it'll catch
* any uses of REJECT which flex missed.
@ -553,7 +562,7 @@ do { \
} while (0)
#define YY_NO_UNISTD_H 1
#line 557 "config_lexer.cc"
#line 566 "config_lexer.cc"
#define INITIAL 0
#define IN_C_COMMENT 1
@ -802,7 +811,7 @@ YY_DECL
#line 49 "config_lexer.ll"
#line 806 "config_lexer.cc"
#line 815 "config_lexer.cc"
yylval = yylval_param;
@ -859,13 +868,13 @@ yy_match:
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
if ( yy_current_state >= 85 )
if ( yy_current_state >= 94 )
yy_c = yy_meta[(unsigned int) yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
++yy_cp;
}
while ( yy_current_state != 84 );
while ( yy_current_state != 93 );
yy_cp = yyg->yy_last_accepting_cpos;
yy_current_state = yyg->yy_last_accepting_state;
@ -935,106 +944,116 @@ return T_NULL;
case 8:
YY_RULE_SETUP
#line 57 "config_lexer.ll"
{ yylval->text = strdup(yytext); return T_IDENTIFIER; }
{ yylval->num = 1; return T_NUMBER; }
YY_BREAK
case 9:
/* rule 9 can match eol */
YY_RULE_SETUP
#line 58 "config_lexer.ll"
{ yytext[yyleng-1] = '\0'; yylval->text = strdup(yytext + 1); return T_STRING; }
{ yylval->num = 0; return T_NUMBER; }
YY_BREAK
case 10:
YY_RULE_SETUP
#line 59 "config_lexer.ll"
{ yylval->num = strtod(yytext, NULL) * 60 * 60; return T_NUMBER; }
{ yylval->text = strdup(yytext); return T_IDENTIFIER; }
YY_BREAK
case 11:
/* rule 11 can match eol */
YY_RULE_SETUP
#line 60 "config_lexer.ll"
{ yylval->num = strtod(yytext, NULL) * 60; return T_NUMBER; }
{ yytext[yyleng-1] = '\0'; yylval->text = strdup(yytext + 1); return T_STRING; }
YY_BREAK
case 12:
YY_RULE_SETUP
#line 61 "config_lexer.ll"
{ yylval->num = strtod(yytext, NULL); return T_NUMBER; }
{ yylval->num = strtod(yytext, NULL) * 60 * 60; return T_NUMBER; }
YY_BREAK
case 13:
YY_RULE_SETUP
#line 62 "config_lexer.ll"
{ yylval->num = strtod(yytext, NULL); return T_NUMBER; }
{ yylval->num = strtod(yytext, NULL) * 60; return T_NUMBER; }
YY_BREAK
case 14:
YY_RULE_SETUP
#line 63 "config_lexer.ll"
{ yylval->op = OperatorSet; return T_EQUAL; }
{ yylval->num = strtod(yytext, NULL); return T_NUMBER; }
YY_BREAK
case 15:
YY_RULE_SETUP
#line 64 "config_lexer.ll"
{ yylval->op = OperatorPlus; return T_PLUS_EQUAL; }
{ yylval->num = strtod(yytext, NULL); return T_NUMBER; }
YY_BREAK
case 16:
YY_RULE_SETUP
#line 65 "config_lexer.ll"
{ yylval->op = OperatorMinus; return T_MINUS_EQUAL; }
{ yylval->op = OperatorSet; return T_EQUAL; }
YY_BREAK
case 17:
YY_RULE_SETUP
#line 66 "config_lexer.ll"
{ yylval->op = OperatorMultiply; return T_MULTIPLY_EQUAL; }
{ yylval->op = OperatorPlus; return T_PLUS_EQUAL; }
YY_BREAK
case 18:
YY_RULE_SETUP
#line 67 "config_lexer.ll"
{ yylval->op = OperatorMinus; return T_MINUS_EQUAL; }
YY_BREAK
case 19:
YY_RULE_SETUP
#line 68 "config_lexer.ll"
{ yylval->op = OperatorMultiply; return T_MULTIPLY_EQUAL; }
YY_BREAK
case 20:
YY_RULE_SETUP
#line 69 "config_lexer.ll"
{ yylval->op = OperatorDivide; return T_DIVIDE_EQUAL; }
YY_BREAK
case 19:
case 21:
YY_RULE_SETUP
#line 70 "config_lexer.ll"
#line 72 "config_lexer.ll"
BEGIN(IN_C_COMMENT);
YY_BREAK
case 20:
YY_RULE_SETUP
#line 74 "config_lexer.ll"
BEGIN(INITIAL);
YY_BREAK
case 21:
/* rule 21 can match eol */
YY_RULE_SETUP
#line 75 "config_lexer.ll"
/* ignore comment */
YY_BREAK
case 22:
YY_RULE_SETUP
#line 76 "config_lexer.ll"
BEGIN(INITIAL);
YY_BREAK
case 23:
/* rule 23 can match eol */
YY_RULE_SETUP
#line 77 "config_lexer.ll"
/* ignore comment */
YY_BREAK
case 24:
YY_RULE_SETUP
#line 78 "config_lexer.ll"
/* ignore star */
YY_BREAK
case 23:
YY_RULE_SETUP
#line 79 "config_lexer.ll"
/* ignore C++-style comments */
YY_BREAK
case 24:
/* rule 24 can match eol */
YY_RULE_SETUP
#line 80 "config_lexer.ll"
/* ignore whitespace */
YY_BREAK
case 25:
YY_RULE_SETUP
#line 82 "config_lexer.ll"
return yytext[0];
#line 81 "config_lexer.ll"
/* ignore C++-style comments */
YY_BREAK
case 26:
/* rule 26 can match eol */
YY_RULE_SETUP
#line 83 "config_lexer.ll"
#line 82 "config_lexer.ll"
/* ignore whitespace */
YY_BREAK
case 27:
YY_RULE_SETUP
#line 84 "config_lexer.ll"
return yytext[0];
YY_BREAK
case 28:
YY_RULE_SETUP
#line 85 "config_lexer.ll"
ECHO;
YY_BREAK
#line 1038 "config_lexer.cc"
#line 1057 "config_lexer.cc"
case YY_STATE_EOF(INITIAL):
case YY_STATE_EOF(IN_C_COMMENT):
yyterminate();
@ -1330,7 +1349,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner)
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
if ( yy_current_state >= 85 )
if ( yy_current_state >= 94 )
yy_c = yy_meta[(unsigned int) yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@ -1359,11 +1378,11 @@ static int yy_get_next_buffer (yyscan_t yyscanner)
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
if ( yy_current_state >= 85 )
if ( yy_current_state >= 94 )
yy_c = yy_meta[(unsigned int) yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
yy_is_jam = (yy_current_state == 84);
yy_is_jam = (yy_current_state == 93);
return yy_is_jam ? 0 : yy_current_state;
}
@ -2222,7 +2241,7 @@ void yyfree (void * ptr , yyscan_t yyscanner)
#define YYTABLES_NAME "yytables"
#line 83 "config_lexer.ll"
#line 85 "config_lexer.ll"

View File

@ -54,6 +54,8 @@ object return T_OBJECT;
#library return T_LIBRARY;
inherits return T_INHERITS;
null return T_NULL;
true { yylval->num = 1; return T_NUMBER; }
false { yylval->num = 0; return T_NUMBER; }
[a-zA-Z_][a-zA-Z0-9\-_]* { yylval->text = strdup(yytext); return T_IDENTIFIER; }
\"[^\"]*\" { yytext[yyleng-1] = '\0'; yylval->text = strdup(yytext + 1); return T_STRING; }
-?[0-9]+(\.[0-9]+)?h { yylval->num = strtod(yytext, NULL) * 60 * 60; return T_NUMBER; }