A Choice is a Nonterminal where only one rule must match. The Citrus notation is two or more expressions separated by a vertical bar, e.g.:
expr | expr
Included modules
Public instance methods
exec
(input, events=[])
Returns an array of events for this rule on the given input.
[show source]
# File lib/citrus.rb, line 1237 1237: def exec(input, events=[]) 1238: events << self 1239: 1240: index = events.size 1241: n = 0 1242: m = rules.length 1243: 1244: while n < m && input.exec(rules[n], events).size == index 1245: n += 1 1246: end 1247: 1248: if index < events.size 1249: events << CLOSE 1250: events << events[-2] 1251: else 1252: events.pop 1253: end 1254: 1255: events 1256: end