Module Parslet::Atoms::DSL
In: lib/parslet/atoms/dsl.rb

A mixin module that defines operations that can be called on any subclass of Parslet::Atoms::Base. These operations make parslets atoms chainable and allow combination of parslet atoms to form bigger parsers.

Example:

  str('foo') >> str('bar')
  str('f').repeat
  any.absent?               # also called The Epsilon

Methods

>>   absent?   absnt?   as   maybe   present?   prsnt?   repeat   |  

Public Instance methods

Chains two parslet atoms together as a sequence.

Example:

  str('a') >> str('b')

Tests for absence of a parslet atom in the input stream without consuming it.

Example:

  # Only proceed the parse if 'a' is absent.
  str('a').absent?
absnt?()

Alias for absent?

Marks a parslet atom as important for the tree output. This must be used to achieve meaningful output from the parse method.

Example:

  str('a').as(:b) # will produce {:b => 'a'}

Returns a new parslet atom that is only maybe present in the input. This is synonymous to calling repeat(0,1). Generated tree value will be either nil (if atom is not present in the input) or the matched subtree.

Example:

  str('foo').maybe

Tests for presence of a parslet atom in the input stream without consuming it.

Example:

  # Only proceed the parse if 'a' is present.
  str('a').present?
prsnt?()

Alias for present?

Construct a new atom that repeats the current atom min times at least and at most max times. max can be nil to indicate that no maximum is present.

Example:

  # match any number of 'a's
  str('a').repeat

  # match between 1 and 3 'a's
  str('a').repeat(1,3)

Chains two parslet atoms together to express alternation. A match will always be attempted with the parslet on the left side first. If it doesn‘t match, the right side will be tried.

Example:

  # matches either 'a' OR 'b'
  str('a') | str('b')

[Validate]