Comparing version 0.2.1 to 0.3.0
@@ -72,3 +72,3 @@ var P = require('pjs').P; | ||
_.or = function(alternative) { | ||
return alt([this, alternative]); | ||
return alt(this, alternative); | ||
}; | ||
@@ -188,3 +188,3 @@ | ||
var self = this; | ||
return seq([this.times(n), this.many()]).map(function(results) { | ||
return seq(this.times(n), this.many()).map(function(results) { | ||
return results[0].concat(results[1]); | ||
@@ -204,7 +204,7 @@ }); | ||
_.skip = function(next) { | ||
return seq([this, next]).map(function(results) { return results[0]; }); | ||
return seq(this, next).map(function(results) { return results[0]; }); | ||
}; | ||
_.mark = function() { | ||
return seq([index, this, index]).map(function(results) { | ||
return seq(index, this, index).map(function(results) { | ||
return { start: results[0], value: results[1], end: results[2] }; | ||
@@ -290,8 +290,11 @@ }); | ||
// [Parser a] -> Parser [a] | ||
var seq = Parsimmon.seq = function(parsers) { | ||
var seq = Parsimmon.seq = function() { | ||
var parsers = [].slice.call(arguments); | ||
var numParsers = parsers.length; | ||
return Parser(function(stream, i) { | ||
var result; | ||
var accum = new Array(parsers.length); | ||
var accum = new Array(numParsers); | ||
for (var j = 0; j < parsers.length; j += 1) { | ||
for (var j = 0; j < numParsers; j += 1) { | ||
result = furthestBacktrackFor(parsers[j]._(stream, i), result); | ||
@@ -307,3 +310,7 @@ if (!result.status) return result; | ||
var alt = Parsimmon.alt = function(parsers) { | ||
var alt = Parsimmon.alt = function() { | ||
var parsers = [].slice.call(arguments); | ||
var numParsers = parsers.length; | ||
if (numParsers === 0) return fail('zero alternates') | ||
return Parser(function(stream, i) { | ||
@@ -333,3 +340,3 @@ var result; | ||
_.ap = function(other) { | ||
return seq([this, other]).map(function(results) { | ||
return seq(this, other).map(function(results) { | ||
return results[0](results[1]); | ||
@@ -336,0 +343,0 @@ }); |
{ | ||
"name": "parsimmon", | ||
"version": "0.2.1", | ||
"version": "0.3.0", | ||
"description": "A monadic LL(infinity) parser combinator library", | ||
@@ -5,0 +5,0 @@ "keywords": ["parsing", "parse", "parser combinators"], |
@@ -94,4 +94,4 @@ [![Build Status](https://secure.travis-ci.org/jayferd/parsimmon.png)](http://travis-ci.org/jayferd/parsimmon) | ||
the string, and yields `result`. | ||
- `Parsimmon.seq(parsers)` accepts an array of parsers that it expects to find in order, | ||
yielding an array of the results. | ||
- `Parsimmon.seq(p1, p2, ... pn)` accepts a variable number of parsers | ||
that it expects to find in order, yielding an array of the results. | ||
- `Parsimmon.lazy(f)` accepts a function that returns a parser, which is evaluated the | ||
@@ -98,0 +98,0 @@ first time the parser is used. This is useful for referencing parsers that haven't yet |
@@ -71,3 +71,3 @@ var Parsimmon = {}; | ||
_.or = function(alternative) { | ||
return alt([this, alternative]); | ||
return alt(this, alternative); | ||
}; | ||
@@ -187,3 +187,3 @@ | ||
var self = this; | ||
return seq([this.times(n), this.many()]).map(function(results) { | ||
return seq(this.times(n), this.many()).map(function(results) { | ||
return results[0].concat(results[1]); | ||
@@ -203,7 +203,7 @@ }); | ||
_.skip = function(next) { | ||
return seq([this, next]).map(function(results) { return results[0]; }); | ||
return seq(this, next).map(function(results) { return results[0]; }); | ||
}; | ||
_.mark = function() { | ||
return seq([index, this, index]).map(function(results) { | ||
return seq(index, this, index).map(function(results) { | ||
return { start: results[0], value: results[1], end: results[2] }; | ||
@@ -289,8 +289,11 @@ }); | ||
// [Parser a] -> Parser [a] | ||
var seq = Parsimmon.seq = function(parsers) { | ||
var seq = Parsimmon.seq = function() { | ||
var parsers = [].slice.call(arguments); | ||
var numParsers = parsers.length; | ||
return Parser(function(stream, i) { | ||
var result; | ||
var accum = new Array(parsers.length); | ||
var accum = new Array(numParsers); | ||
for (var j = 0; j < parsers.length; j += 1) { | ||
for (var j = 0; j < numParsers; j += 1) { | ||
result = furthestBacktrackFor(parsers[j]._(stream, i), result); | ||
@@ -306,3 +309,7 @@ if (!result.status) return result; | ||
var alt = Parsimmon.alt = function(parsers) { | ||
var alt = Parsimmon.alt = function() { | ||
var parsers = [].slice.call(arguments); | ||
var numParsers = parsers.length; | ||
if (numParsers === 0) return fail('zero alternates') | ||
return Parser(function(stream, i) { | ||
@@ -332,3 +339,3 @@ var result; | ||
_.ap = function(other) { | ||
return seq([this, other]).map(function(results) { | ||
return seq(this, other).map(function(results) { | ||
return results[0](results[1]); | ||
@@ -335,0 +342,0 @@ }); |
984615
845