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