#define YY_EXTRA_TYPE ConfigCompiler *
#define YY_USER_ACTION \
do { \
+ yylloc->Path = yyextra->GetPath(); \
yylloc->FirstLine = yylineno; \
yylloc->FirstColumn = yycolumn; \
yylloc->LastLine = yylineno; \
} while (0)
#define YY_NO_UNISTD_H 1
-#line 540 "config_lexer.cc"
+#line 541 "config_lexer.cc"
#define INITIAL 0
#define IN_C_COMMENT 1
register int yy_act;
struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-#line 48 "config_lexer.ll"
+#line 49 "config_lexer.ll"
-#line 784 "config_lexer.cc"
+#line 785 "config_lexer.cc"
yylval = yylval_param;
case 1:
YY_RULE_SETUP
-#line 49 "config_lexer.ll"
+#line 50 "config_lexer.ll"
return T_ABSTRACT;
YY_BREAK
case 2:
YY_RULE_SETUP
-#line 50 "config_lexer.ll"
+#line 51 "config_lexer.ll"
return T_LOCAL;
YY_BREAK
case 3:
YY_RULE_SETUP
-#line 51 "config_lexer.ll"
+#line 52 "config_lexer.ll"
return T_OBJECT;
YY_BREAK
case 4:
YY_RULE_SETUP
-#line 52 "config_lexer.ll"
+#line 53 "config_lexer.ll"
return T_INCLUDE;
YY_BREAK
case 5:
YY_RULE_SETUP
-#line 53 "config_lexer.ll"
+#line 54 "config_lexer.ll"
return T_INHERITS;
YY_BREAK
case 6:
YY_RULE_SETUP
-#line 54 "config_lexer.ll"
+#line 55 "config_lexer.ll"
return T_NULL;
YY_BREAK
case 7:
YY_RULE_SETUP
-#line 55 "config_lexer.ll"
+#line 56 "config_lexer.ll"
{ yylval->text = strdup(yytext); return T_IDENTIFIER; }
YY_BREAK
case 8:
/* rule 8 can match eol */
YY_RULE_SETUP
-#line 56 "config_lexer.ll"
+#line 57 "config_lexer.ll"
{ yytext[yyleng-1] = '\0'; yylval->text = strdup(yytext + 1); return T_STRING; }
YY_BREAK
case 9:
YY_RULE_SETUP
-#line 57 "config_lexer.ll"
+#line 58 "config_lexer.ll"
{ yylval->num = atoi(yytext); return T_NUMBER; }
YY_BREAK
case 10:
YY_RULE_SETUP
-#line 58 "config_lexer.ll"
+#line 59 "config_lexer.ll"
{ yylval->op = OperatorSet; return T_EQUAL; }
YY_BREAK
case 11:
YY_RULE_SETUP
-#line 59 "config_lexer.ll"
+#line 60 "config_lexer.ll"
{ yylval->op = OperatorPlus; return T_PLUS_EQUAL; }
YY_BREAK
case 12:
YY_RULE_SETUP
-#line 60 "config_lexer.ll"
+#line 61 "config_lexer.ll"
{ yylval->op = OperatorMinus; return T_MINUS_EQUAL; }
YY_BREAK
case 13:
YY_RULE_SETUP
-#line 61 "config_lexer.ll"
+#line 62 "config_lexer.ll"
{ yylval->op = OperatorMultiply; return T_MULTIPLY_EQUAL; }
YY_BREAK
case 14:
YY_RULE_SETUP
-#line 62 "config_lexer.ll"
+#line 63 "config_lexer.ll"
{ yylval->op = OperatorDivide; return T_DIVIDE_EQUAL; }
YY_BREAK
case 15:
YY_RULE_SETUP
-#line 65 "config_lexer.ll"
+#line 66 "config_lexer.ll"
BEGIN(IN_C_COMMENT);
YY_BREAK
case 16:
YY_RULE_SETUP
-#line 69 "config_lexer.ll"
+#line 70 "config_lexer.ll"
BEGIN(INITIAL);
YY_BREAK
case 17:
/* rule 17 can match eol */
YY_RULE_SETUP
-#line 70 "config_lexer.ll"
+#line 71 "config_lexer.ll"
/* ignore comment */
YY_BREAK
case 18:
YY_RULE_SETUP
-#line 71 "config_lexer.ll"
+#line 72 "config_lexer.ll"
/* ignore star */
YY_BREAK
case 19:
YY_RULE_SETUP
-#line 74 "config_lexer.ll"
+#line 75 "config_lexer.ll"
/* ignore C++-style comments */
YY_BREAK
case 20:
YY_RULE_SETUP
-#line 75 "config_lexer.ll"
+#line 76 "config_lexer.ll"
/* ignore shell-style comments */
YY_BREAK
case 21:
/* rule 21 can match eol */
YY_RULE_SETUP
-#line 76 "config_lexer.ll"
+#line 77 "config_lexer.ll"
/* ignore whitespace */
YY_BREAK
case 22:
YY_RULE_SETUP
-#line 78 "config_lexer.ll"
+#line 79 "config_lexer.ll"
return yytext[0];
YY_BREAK
case 23:
YY_RULE_SETUP
-#line 79 "config_lexer.ll"
+#line 80 "config_lexer.ll"
ECHO;
YY_BREAK
-#line 1001 "config_lexer.cc"
+#line 1002 "config_lexer.cc"
case YY_STATE_EOF(INITIAL):
case YY_STATE_EOF(IN_C_COMMENT):
yyterminate();
#define YYTABLES_NAME "yytables"
-#line 79 "config_lexer.ll"
+#line 80 "config_lexer.ll"
{
stringstream message;
- message << locp->first_line << ":" << locp->first_column
+ message << "in " << locp->Path << ": "
+ << locp->FirstLine << ":" << locp->FirstColumn
<< "-"
- << locp->last_line << ":" << locp->last_column
+ << locp->LastLine << ":" << locp->LastColumn
<< ": " << err << endl;
throw runtime_error(message.str());
/* Line 264 of yacc.c */
-#line 244 "config_parser.cc"
+#line 245 "config_parser.cc"
#ifdef short
# undef short
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
static const yytype_uint16 yyrline[] =
{
- 0, 100, 100, 101, 104, 104, 107, 113, 118, 113,
- 138, 139, 142, 146, 152, 153, 156, 163, 164, 168,
- 167, 179, 180, 182, 183, 184, 187, 195, 209, 218,
- 219, 220, 221, 222, 228, 233, 237, 243, 244, 245,
- 252, 251, 263, 269, 270, 272, 274, 275
+ 0, 101, 101, 102, 105, 105, 108, 114, 119, 114,
+ 139, 140, 143, 147, 153, 154, 157, 164, 165, 169,
+ 168, 180, 181, 183, 184, 185, 188, 196, 210, 219,
+ 220, 221, 222, 223, 229, 234, 238, 244, 245, 246,
+ 253, 252, 264, 270, 271, 273, 275, 276
};
#endif
case 6:
/* Line 1455 of yacc.c */
-#line 108 "config_parser.yy"
+#line 109 "config_parser.yy"
{
context->HandleInclude((yyvsp[(2) - (2)].text));
}
case 7:
/* Line 1455 of yacc.c */
-#line 113 "config_parser.yy"
+#line 114 "config_parser.yy"
{
m_Abstract = false;
m_Local = false;
case 8:
/* Line 1455 of yacc.c */
-#line 118 "config_parser.yy"
+#line 119 "config_parser.yy"
{
m_Item = boost::make_shared<ConfigItemBuilder>(yylloc);
m_Item->SetType((yyvsp[(4) - (5)].text));
case 9:
/* Line 1455 of yacc.c */
-#line 124 "config_parser.yy"
+#line 125 "config_parser.yy"
{
Object::Ptr exprl_object = *(yyvsp[(8) - (8)].variant);
delete (yyvsp[(8) - (8)].variant);
case 12:
/* Line 1455 of yacc.c */
-#line 143 "config_parser.yy"
+#line 144 "config_parser.yy"
{
m_Abstract = true;
}
case 13:
/* Line 1455 of yacc.c */
-#line 147 "config_parser.yy"
+#line 148 "config_parser.yy"
{
m_Local = true;
}
case 16:
/* Line 1455 of yacc.c */
-#line 157 "config_parser.yy"
+#line 158 "config_parser.yy"
{
m_Item->AddParent((yyvsp[(1) - (1)].text));
free((yyvsp[(1) - (1)].text));
case 19:
/* Line 1455 of yacc.c */
-#line 168 "config_parser.yy"
+#line 169 "config_parser.yy"
{
m_ExpressionLists.push(boost::make_shared<ExpressionList>());
}
case 20:
/* Line 1455 of yacc.c */
-#line 173 "config_parser.yy"
+#line 174 "config_parser.yy"
{
(yyval.variant) = new Variant(m_ExpressionLists.top());
m_ExpressionLists.pop();
case 26:
/* Line 1455 of yacc.c */
-#line 188 "config_parser.yy"
+#line 189 "config_parser.yy"
{
Expression expr((yyvsp[(1) - (3)].text), (yyvsp[(2) - (3)].op), *(yyvsp[(3) - (3)].variant), yylloc);
free((yyvsp[(1) - (3)].text));
case 27:
/* Line 1455 of yacc.c */
-#line 196 "config_parser.yy"
+#line 197 "config_parser.yy"
{
Expression subexpr((yyvsp[(3) - (6)].text), (yyvsp[(5) - (6)].op), *(yyvsp[(6) - (6)].variant), yylloc);
free((yyvsp[(3) - (6)].text));
case 28:
/* Line 1455 of yacc.c */
-#line 210 "config_parser.yy"
+#line 211 "config_parser.yy"
{
Expression expr((yyvsp[(1) - (1)].text), OperatorSet, (yyvsp[(1) - (1)].text), yylloc);
free((yyvsp[(1) - (1)].text));
case 33:
/* Line 1455 of yacc.c */
-#line 223 "config_parser.yy"
+#line 224 "config_parser.yy"
{
(yyval.op) = (yyvsp[(1) - (1)].op);
}
case 34:
/* Line 1455 of yacc.c */
-#line 229 "config_parser.yy"
+#line 230 "config_parser.yy"
{
(yyval.variant) = new Variant((yyvsp[(1) - (1)].text));
free((yyvsp[(1) - (1)].text));
case 35:
/* Line 1455 of yacc.c */
-#line 234 "config_parser.yy"
+#line 235 "config_parser.yy"
{
(yyval.variant) = new Variant((yyvsp[(1) - (1)].num));
}
case 36:
/* Line 1455 of yacc.c */
-#line 238 "config_parser.yy"
+#line 239 "config_parser.yy"
{
(yyval.variant) = new Variant();
}
case 39:
/* Line 1455 of yacc.c */
-#line 246 "config_parser.yy"
+#line 247 "config_parser.yy"
{
(yyval.variant) = (yyvsp[(1) - (1)].variant);
}
case 40:
/* Line 1455 of yacc.c */
-#line 252 "config_parser.yy"
+#line 253 "config_parser.yy"
{
m_Array = boost::make_shared<Dictionary>();
}
case 41:
/* Line 1455 of yacc.c */
-#line 257 "config_parser.yy"
+#line 258 "config_parser.yy"
{
(yyval.variant) = new Variant(m_Array);
m_Array.reset();
case 42:
/* Line 1455 of yacc.c */
-#line 264 "config_parser.yy"
+#line 265 "config_parser.yy"
{
m_Array->AddUnnamedProperty(*(yyvsp[(1) - (1)].variant));
delete (yyvsp[(1) - (1)].variant);
/* Line 1455 of yacc.c */
-#line 1746 "config_parser.cc"
+#line 1747 "config_parser.cc"
default: break;
}
YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
/* Line 1675 of yacc.c */
-#line 277 "config_parser.yy"
+#line 278 "config_parser.yy"