Skip to content
Commits on Oct 30, 2010
  1. Bumped to version 2.1.0

  2. Refactored Citrus::ParseError.

    Most of the methods on ParseError were moved to Input as they were actually
    just calling them on Input objects anyways. This creates cleaner encapsulation
    of Input objects, and even makes them reusable after a ParseError has been
    raised with one of them (simply call Input#reset to reuse).
Commits on Oct 28, 2010
  1. Refactored Citrus::File.

    Reduced the use of Kernel#eval and created cleaner encapsulation of rule
    responsibilities in the hierarchy.
    Introduced Citrus#parse as an intermediary that is useful for performing
    parsing using Citrus::File and inspecting match results. Citrus::SyntaxError
    was created to report errors from parsing a Citrus grammar.
    Citrus#eval and Citrus::Rule#eval now throws a SyntaxError on failed parse.
    Also, created Citrus::Error and made all Citrus error classes subclasses.
    This enables more consistent error handling for clients.
Commits on Oct 24, 2010
  1. Added some docs.

    Added a section to the README about testing and debugging.
  2. Separating out debug tests

  3. Some small refactorings.

    Exposed Input#lines, Input#each_line, and ParseError#line_index just
    because there's no real advantage to keeping them private.
  4. Bumped version to 2.0.1

  5. Fixed ParseError message

  6. Bumped version to 2.0

  7. Matches no longer contain an offset.

    Calculating the offset every time a match is created can slow down the
    parse dramatically. Also, the actual offset of a match is not usually
    very useful during interpretation.
    The functionality was moved into citrus/debug.rb to preserve the ability
    to inspect the offset of a match when debugging.
  8. Implemented StringScanner for scanning input strings.

    Citrus::Input now extends StringScanner which provides a big boost to
    performance. As part of this refactoring, Citrus::FixedWidth and
    Citrus::Expression were merged into Citrus::Terminal.
    Also, Citrus::ParseError now provides much more detailed information for
    debugging parse failures. It is now very easy to discover the line, line
    number, and exact character where the error occurred.
Commits on Oct 22, 2010
  1. More doc tweaks.

Commits on Oct 21, 2010
  1. Tweaked some docs.

  2. Bumped version to 1.8.0

  3. Updated documentation.

  4. Ignoring api.

Commits on Oct 14, 2010
  1. Match now subclasses String.

Commits on Sep 30, 2010
  1. Adjusted examples.

Commits on Sep 23, 2010
  1. Reordered arguments to more sensible order.

    The argument list to Repeat#new and Label#new needed to be reordered to
    follow a more sane model. Instead of accepting the rule as the last
    argument, they now accept the rule as the first argument just like all
    other Rule types.
  2. Implied Rule#value method.

    If no methods are specified in an extension block, it is assumed that
    the block is to be used to define a "value" method on an anonymous
    module. This helps syntax to be much less verbose, and may be used in
    the vast majority of cases.
Commits on Sep 20, 2010
  1. Added GrammarMethods#dot.

Commits on Sep 19, 2010
Commits on Sep 17, 2010
Commits on Sep 8, 2010
  1. Refactored calculator examples.

    Added ability to interpret unary operators.
  2. Refactored calculator examples.

    Added ability to understand numbers with underscores, the modulo
    operator, and exponential notation.
  3. Updated precedence table

Commits on Sep 4, 2010
  1. Bumped version to 1.7.0

Something went wrong with that request. Please try again.