class Parslet::Atoms::Alternative
Alternative
during matching. Contains a list of parslets that is tried each one in turn. Only fails if all alternatives fail.
Example:
str('a') | str('b') # matches either 'a' or 'b'
Attributes
alternatives[R]
Public Class Methods
new(*alternatives)
click to toggle source
Constructs an Alternative
instance using all given parslets in the order given. This is what happens if you call '|' on existing parslets, like this:
str('a') | str('b')
Calls superclass method
# File lib/parslet/atoms/alternative.rb, line 18 def initialize(*alternatives) super() @alternatives = alternatives end
Public Instance Methods
accept(visitor)
click to toggle source
Call back visitors visit_alternative method. See parslet/export for an example.
# File lib/parslet/atoms/visitor.rb, line 60 def accept(visitor) visitor.visit_alternative(alternatives) end
error_msg()
click to toggle source
# File lib/parslet/atoms/alternative.rb, line 32 def error_msg @error_msg ||= "Expected one of #{alternatives.inspect}" end
to_s_inner(prec)
click to toggle source
# File lib/parslet/atoms/alternative.rb, line 50 def to_s_inner(prec) alternatives.map { |a| a.to_s(prec) }.join(' / ') end
try(source, context, consume_all)
click to toggle source
# File lib/parslet/atoms/alternative.rb, line 36 def try(source, context, consume_all) errors = alternatives.map { |a| success, value = result = a.apply(source, context, consume_all) return result if success # Aggregate all errors value } # If we reach this point, all alternatives have failed. context.err(self, source, error_msg, errors) end
|(parslet)
click to toggle source
+
# File lib/parslet/atoms/alternative.rb, line 28 def |(parslet) self.class.new(*@alternatives + [parslet]) end