From: Fabien Fleutot Date: Tue, 3 Feb 2009 19:27:20 +0000 (+0100) Subject: minor refactoring in gg X-Git-Url: https://git.lizzy.rs/?a=commitdiff_plain;h=591bd0e43cf4aa22cead0a018dc88123094c2dc3;p=metalua.git minor refactoring in gg --- diff --git a/src/compiler/gg.lua b/src/compiler/gg.lua index d237d28..afab996 100644 --- a/src/compiler/gg.lua +++ b/src/compiler/gg.lua @@ -258,17 +258,18 @@ function multisequence (p) ------------------------------------------------------------------- function p:add (s) -- compile if necessary: + local keyword = s[1] if not is_parser(s) then sequence(s) end - if is_parser(s) ~= 'sequence' or type(s[1]) ~= "string" then + if is_parser(s) ~= 'sequence' or type(keyword) ~= "string" then if self.default then -- two defaults error ("In a multisequence parser, all but one sequences ".. "must start with a keyword") else self.default = s end -- first default - elseif self.sequences[s[1]] then -- duplicate keyword - eprintf (" *** Warning: keyword %q overloaded in multisequence ***", s[1]) - self.sequences[s[1]] = s + elseif self.sequences[keyword] then -- duplicate keyword + eprintf (" *** Warning: keyword %q overloaded in multisequence ***", keyword) + self.sequences[keyword] = s else -- newly caught keyword - self.sequences[s[1]] = s + self.sequences[keyword] = s end end --