diff options
author | ambrop7 <ambrop7@1a93d707-3861-5ebc-ad3b-9740d49b5140> | 2012-10-04 23:27:27 +0400 |
---|---|---|
committer | ambrop7 <ambrop7@1a93d707-3861-5ebc-ad3b-9740d49b5140> | 2012-10-04 23:27:27 +0400 |
commit | 6cfaee0f782e7915cf2a13ac136b83fa0a592d91 (patch) | |
tree | 6c64f740cf441870b3acd7a2e7d07d76ead43d34 /generated | |
parent | c1ac3f62d3a55fdda8d1b44195fedad1b5e829ec (diff) |
ncd: NCDAst: use a linked list instead of AVL tree to store map elements. There is no reason
to use an AVL tree at the parsing stage.
Diffstat (limited to 'generated')
-rw-r--r-- | generated/NCDConfigParser_parse.c | 43 | ||||
-rw-r--r-- | generated/NCDConfigParser_parse.y | 11 |
2 files changed, 20 insertions, 34 deletions
diff --git a/generated/NCDConfigParser_parse.c b/generated/NCDConfigParser_parse.c index 5f10c5a..3e9cc29 100644 --- a/generated/NCDConfigParser_parse.c +++ b/generated/NCDConfigParser_parse.c @@ -1448,7 +1448,7 @@ doneM: NCDValue_InitMap(&yygotominor.yy27.v); - if (!NCDValue_MapInsert(&yygotominor.yy27.v, yymsp[-2].minor.yy27.v, yymsp[0].minor.yy27.v)) { + if (!NCDValue_MapPrepend(&yygotominor.yy27.v, yymsp[-2].minor.yy27.v, yymsp[0].minor.yy27.v)) { goto failS1; } yymsp[-2].minor.yy27.have = 0; @@ -1476,14 +1476,7 @@ doneS: goto failT0; } - if (NCDValue_MapFindKey(&yymsp[0].minor.yy27.v, &yymsp[-4].minor.yy27.v)) { - BLog(BLOG_ERROR, "duplicate key in map"); - yygotominor.yy27.have = 0; - parser_out->syntax_error = 1; - goto doneT; - } - - if (!NCDValue_MapInsert(&yymsp[0].minor.yy27.v, yymsp[-4].minor.yy27.v, yymsp[-2].minor.yy27.v)) { + if (!NCDValue_MapPrepend(&yymsp[0].minor.yy27.v, yymsp[-4].minor.yy27.v, yymsp[-2].minor.yy27.v)) { goto failT0; } yymsp[-4].minor.yy27.have = 0; @@ -1504,29 +1497,29 @@ doneT: yy_destructor(yypParser,11,&yymsp[-3].minor); yy_destructor(yypParser,15,&yymsp[-1].minor); } -#line 1508 "NCDConfigParser_parse.c" +#line 1501 "NCDConfigParser_parse.c" break; case 26: /* map ::= BRACKET_OPEN BRACKET_CLOSE */ -#line 619 "NCDConfigParser_parse.y" +#line 612 "NCDConfigParser_parse.y" { yygotominor.yy27.have = 1; NCDValue_InitMap(&yygotominor.yy27.v); yy_destructor(yypParser,16,&yymsp[-1].minor); yy_destructor(yypParser,17,&yymsp[0].minor); } -#line 1518 "NCDConfigParser_parse.c" +#line 1511 "NCDConfigParser_parse.c" break; case 27: /* map ::= BRACKET_OPEN map_contents BRACKET_CLOSE */ -#line 624 "NCDConfigParser_parse.y" +#line 617 "NCDConfigParser_parse.y" { yygotominor.yy27 = yymsp[-1].minor.yy27; yy_destructor(yypParser,16,&yymsp[-2].minor); yy_destructor(yypParser,17,&yymsp[0].minor); } -#line 1527 "NCDConfigParser_parse.c" +#line 1520 "NCDConfigParser_parse.c" break; case 28: /* value ::= STRING */ -#line 628 "NCDConfigParser_parse.y" +#line 621 "NCDConfigParser_parse.y" { ASSERT(yymsp[0].minor.yy0.str) @@ -1543,10 +1536,10 @@ failU0: doneU: free_token(yymsp[0].minor.yy0); } -#line 1547 "NCDConfigParser_parse.c" +#line 1540 "NCDConfigParser_parse.c" break; case 29: /* value ::= dotted_name */ -#line 645 "NCDConfigParser_parse.y" +#line 638 "NCDConfigParser_parse.y" { if (!yymsp[0].minor.yy9) { goto failV0; @@ -1565,30 +1558,30 @@ failV0: doneV: free(yymsp[0].minor.yy9); } -#line 1569 "NCDConfigParser_parse.c" +#line 1562 "NCDConfigParser_parse.c" break; case 32: /* name_maybe ::= */ -#line 672 "NCDConfigParser_parse.y" +#line 665 "NCDConfigParser_parse.y" { yygotominor.yy9 = NULL; } -#line 1576 "NCDConfigParser_parse.c" +#line 1569 "NCDConfigParser_parse.c" break; case 34: /* process_or_template ::= PROCESS */ -#line 682 "NCDConfigParser_parse.y" +#line 675 "NCDConfigParser_parse.y" { yygotominor.yy8 = 0; yy_destructor(yypParser,19,&yymsp[0].minor); } -#line 1584 "NCDConfigParser_parse.c" +#line 1577 "NCDConfigParser_parse.c" break; case 35: /* process_or_template ::= TEMPLATE */ -#line 686 "NCDConfigParser_parse.y" +#line 679 "NCDConfigParser_parse.y" { yygotominor.yy8 = 1; yy_destructor(yypParser,20,&yymsp[0].minor); } -#line 1592 "NCDConfigParser_parse.c" +#line 1585 "NCDConfigParser_parse.c" break; default: break; @@ -1653,7 +1646,7 @@ static void yy_syntax_error( #line 125 "NCDConfigParser_parse.y" parser_out->syntax_error = 1; -#line 1657 "NCDConfigParser_parse.c" +#line 1650 "NCDConfigParser_parse.c" ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */ } diff --git a/generated/NCDConfigParser_parse.y b/generated/NCDConfigParser_parse.y index 8699477..124c825 100644 --- a/generated/NCDConfigParser_parse.y +++ b/generated/NCDConfigParser_parse.y @@ -565,7 +565,7 @@ map_contents(R) ::= value(A) COLON value(B). { NCDValue_InitMap(&R.v); - if (!NCDValue_MapInsert(&R.v, A.v, B.v)) { + if (!NCDValue_MapPrepend(&R.v, A.v, B.v)) { goto failS1; } A.have = 0; @@ -589,14 +589,7 @@ map_contents(R) ::= value(A) COLON value(B) COMMA map_contents(N). { goto failT0; } - if (NCDValue_MapFindKey(&N.v, &A.v)) { - BLog(BLOG_ERROR, "duplicate key in map"); - R.have = 0; - parser_out->syntax_error = 1; - goto doneT; - } - - if (!NCDValue_MapInsert(&N.v, A.v, B.v)) { + if (!NCDValue_MapPrepend(&N.v, A.v, B.v)) { goto failT0; } A.have = 0; |