-------------------------------------------------------------------
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>