]> git.lizzy.rs Git - metalua.git/commitdiff
minor refactoring in gg
authorFabien Fleutot <metalua@gmail.com>
Tue, 3 Feb 2009 19:27:20 +0000 (20:27 +0100)
committerFabien Fleutot <metalua@gmail.com>
Tue, 3 Feb 2009 19:27:20 +0000 (20:27 +0100)
src/compiler/gg.lua

index d237d28f1939f4fecc66df3ae42e707a5b02e479..afab9965042afba47315f509078d52a46a15ffc4 100644 (file)
@@ -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 -- </multisequence.add>