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

    committed
  2. Refactored Citrus::ParseError.

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

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

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

    committed
  3. Some small refactorings.

    committed
    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

    committed
  5. Fixed ParseError message

    committed
  6. Bumped version to 2.0

    committed
  7. Matches no longer contain an offset.

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

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

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

    committed
  2. Bumped version to 1.8.0

    committed
  3. Updated documentation.

    committed
  4. Ignoring api.

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

    committed
Commits on Sep 30, 2010
  1. Adjusted examples.

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

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

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

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

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

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

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

    committed
Something went wrong with that request. Please try again.