parsers 0.14.1 copy "parsers: ^0.14.1" to clipboard
parsers: ^0.14.1 copied to clipboard

outdatedDart 1 only

Parser combinators for Dart

Parser Combinators for Dart #

Build Status

Check out the user guide (work in progress) and the API reference.

Quick Start #

import 'package:parsers/parsers.dart';
import 'dart:math';

// grammar

final number = digit.many1       ^ digits2int
             | string('none')    ^ none
             | string('answer')  ^ answer;

final comma = char(',') < spaces;

final numbers = number.sepBy(comma) < eof;

// actions

digits2int(digits) => parseInt(Strings.concatAll(digits));
none(_) => null;
answer(_) => 42;

// parsing

main() {
  print(numbers.parse('0,1, none, 3,answer'));
  // [0, 1, null, 3, 42]

  print(numbers.parse('0,1, boom, 3,answer'));
  // line 1, character 6: expected digit, 'none' or 'answer', got 'b'.
}

See the example directory for advanced usage.

About #

This library is heavily inspired by Parsec, but differs on some points. In particular, the | operator has a sane backtracking semantics, as in Polyparse. As a consequence it is slower but also easier to use. I've also introduced some syntax for transforming parsing results that doesn't require any knowledge of monads or applicative functors and features uncurried functions, which are nicer-looking than curried ones in Dart.

0
likes
0
pub points
0%
popularity

Publisher

unverified uploader

Parser combinators for Dart

Repository (GitHub)
View/report issues

Documentation

Documentation

License

unknown (license)

Dependencies

persistent

More

Packages that depend on parsers