From c921845c0ecaf176bee397e2bb7a9e2cebe94d54 Mon Sep 17 00:00:00 2001 From: helly Date: Tue, 24 Apr 2007 18:14:59 +0000 Subject: [PATCH] - Fix index of specs --- re2c/parser.y | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/re2c/parser.y b/re2c/parser.y index 93da8f51..73aa5db0 100644 --- a/re2c/parser.y +++ b/re2c/parser.y @@ -144,14 +144,19 @@ rule: { // Duplicating stuff, slow but safe $$ = new RuleOp($4, $5, new Token(*$6), accept++); - + RegExpMap::iterator itRE = specMap.find(*it); - + if (itRE != specMap.end()) { - $$ = mkAlt(itRE->second.second, $$); + itRE->second.second = mkAlt(itRE->second.second, $$); } - specMap[*it] = std::make_pair(specMap.size(), $$); + else + { + size_t nIndex = specMap.size() + 1; // 0 is reserved for "0"-spec + specMap[*it] = std::make_pair(nIndex, $$); + } + } delete $2; delete $6; -- 2.40.0