parser library
Liquify Parser: Core parsing, tag management, and registry for Liquid templates
This library provides essential components for parsing Liquid templates, managing custom tags, and registering built-in and custom functionality.
Key components:
-
Parsing and Grammar (in
src/grammar/shared.dart
):- Basic Liquid syntax parsers: tagStart, tagEnd, varStart, varEnd
- Expression parsers: expression, literal, identifier, memberAccess
- Tag helpers: someTag, breakTag, continueTag, elseTag
- Main parsing function: parseInput
Note: The someTag helper is designed for simple tags without end tags. For tags that require an end tag or more complex parsing, custom parser implementation is necessary.
-
Tag Management (in
src/tags/tag.dart
):- AbstractTag: Base class for all Liquid tags
- Tag: Standard implementation of a Liquid tag
-
Tag Registry (in
src/registry.dart
):- TagRegistry: Central management system for Liquid template tags
- TagRegistry.register: Register new custom tags
- TagRegistry.createTag: Create instances of registered tags
registerBuiltIns
: Function to register all built-in Liquid tags
- TagRegistry: Central management system for Liquid template tags
-
AST (Abstract Syntax Tree) (in
src/ast.dart
): -
Evaluation (in
src/evaluator.dart
):- Evaluator: Class for evaluating parsed Liquid templates
Evaluator.evaluate
: Evaluates a single ASTNodeEvaluator.evaluateNodes
: Evaluates a list of ASTNodes
- Evaluator: Class for evaluating parsed Liquid templates
Usage:
import 'package:liquify/parser.dart';
// Define a custom tag with an end tag
class UppercaseTag extends AbstractTag with CustomTagParser {
UppercaseTag(List<ASTNode> content, List<Filter> filters) : super(content, filters);
@override
dynamic evaluate(Evaluator evaluator, Buffer buffer) {
buffer.write('<span style="text-transform: uppercase;">');
for (final node in content) {
final result = evaluator.evaluate(node);
buffer.write(result);
}
buffer.write('</span>');
}
@override
Parser parser() {
// Custom parser implementation for tags with end tags
return (tagStart() &
string('uppercase').trim() &
tagEnd() &
any()
.starLazy(tagStart() & string('enduppercase').trim() & tagEnd())
.flatten() &
tagStart() &
string('enduppercase').trim() &
tagEnd())
.map((values) {
return Tag("uppercase", [TextNode(values[3])]);
});
}
}
// For a simple tag without an end tag, you could use someTag:
// Parser simpleParser() => someTag('simpletag');
// Register the custom tag
TagRegistry.register('uppercase', (content, filters) => UppercaseTag(content, filters));
// Parse a template using the custom tag
List<ASTNode> nodes = parseInput('{% uppercase %}Hello, {{ name }}!{% enduppercase %}');
// Evaluate the template
Evaluator evaluator = Evaluator(Environment({'name': 'World'}));
final result = evaluator.evaluateNodes(nodes);
print(result); // Output: <span style="text-transform: uppercase;">Hello, World!</span>
This library is used internally by the Liquify engine but can also be used directly for advanced customization of the Liquid parsing and evaluation process.
Classes
- AbstractTag
- Abstract base class for all Liquid tags.
-
AndParser<
R> - The and-predicate, a parser that succeeds whenever its delegate does, but does not consume the input stream.
- AnyCharacterParser
- A parser that accepts any input element.
- ArrayAccess
- Assignment
- ASTNode
- BinaryOperation
- Buffer
-
CastListParser<
R, S> -
A parser that casts a
Result<List>
to aResult<List<S>>
. -
CastParser<
R, S> -
A parser that casts a
Result
to aResult<R>
. - CharacterPredicate
- Abstract character predicate class.
-
ChoiceParser<
R> - A parser that uses the first parser that succeeds.
- Context
- An immutable parse context.
-
ContinuationParser<
R, S> - Continuation parser that when activated captures a continuation function and passes it together with the current context into the handler.
-
DelegateParser<
T, R> -
An abstract parser that delegates to a parser of type
T
and returns a result of typeR
. - DigitCharPredicate
- Document
- Empty
- EndOfInputParser
- A parser that succeeds at the end of input.
- Environment
-
EpsilonParser<
R> - A parser that consumes nothing and succeeds.
- Evaluator
- Evaluates Liquid templates by traversing and executing AST nodes.
-
ExpressionBuilder<
T> - A builder that allows the simple definition of expression grammars with prefix, postfix, and left- and right-associative infix operators.
-
ExpressionGroup<
T> - Models a group of operators of the same precedence.
- Failure
- An immutable failed parse result.
- FailureParser
- A parser that consumes nothing and fails.
- Filter
- FilteredExpression
- FlattenParser
- A parser that discards the result of the delegate and answers the sub-string its delegate consumes.
-
GrammarDefinition<
R> - Helper to conveniently define and build complex, recursive grammars using plain Dart code.
-
GrammarParser<
T> - A (now pointless) helper to build a parser from a {@link GrammarDefinition}.
-
GreedyRepeatingParser<
R> - A greedy repeating parser, commonly seen in regular expression implementations. It aggressively consumes as much input as possible and then backtracks to meet the 'limit' condition.
- GroupedExpression
- Identifier
-
LabeledParser<
R> - Interface of a parser that has a debug label.
-
LabelParser<
R> - A parser that always defers to its delegate, but that also holds a label for debugging purposes.
-
LazyRepeatingParser<
R> - A lazy repeating parser, commonly seen in regular expression implementations. It limits its consumption to meet the 'limit' condition as early as possible.
- LetterCharPredicate
-
LimitedRepeatingParser<
R> - An abstract parser that repeatedly parses between 'min' and 'max' instances of its delegate and that requires the input to be completed with a specified parser 'limit'. Subclasses provide repeating behavior as typically seen in regular expression implementations (non-blind).
-
ListParser<
R, S> - Abstract parser that parses a list of things in some way.
- Literal
- LowercaseCharPredicate
-
MapParser<
R, S> - A parser that performs a transformation with a given function on the successful parse result of the delegate.
- MemberAccess
- NamedArgument
- NewlineParser
- A parser that consumes newlines platform independently.
-
NotParser<
R> - The not-predicate, a parser that succeeds whenever its delegate does not, but consumes no input.
-
OptionalParser<
R> -
A parser that optionally parsers its delegate, or answers
null
. -
Parser<
R> -
Abstract base class of all parsers that produce a parse result of type
R
. - PatternParser
- A parser that uses a Pattern matcher for parsing.
-
PermuteParser<
R> - A parser that performs a transformation with a given function on the successful parse result of the delegate.
-
PickParser<
R> - A parser that performs a transformation with a given function on the successful parse result of the delegate.
- PositionParser
- A parser that reports the current input position.
-
PossessiveRepeatingParser<
R> - A greedy parser that repeatedly parses between 'min' and 'max' instances of its delegate.
- PredicateParser
- A parser for a literal satisfying a predicate.
- RangeCharPredicate
- RepeatingCharacterParser
- An abstract parser that repeatedly parses between 'min' and 'max' instances of its delegate.
-
RepeatingParser<
T, R> - An abstract parser that repeatedly parses between 'min' and 'max' instances of its delegate.
-
ResolvableParser<
R> - Interface of a parser that can be resolved to another one.
-
Result<
R> - An immutable parse result that is either a Success or a Failure.
-
SeparatedList<
R, S> - A list of elements and its separators.
-
SeparatedRepeatingParser<
R, S> - A parser that consumes the delegate between min and max times separated by the separator parser.
-
SequenceParser<
R> - A parser that parses a sequence of parsers.
-
SequenceParser2<
R1, R2> - A parser that consumes a sequence of 2 parsers and returns a Record with 2 positional parse results.
-
SequenceParser3<
R1, R2, R3> - A parser that consumes a sequence of 3 parsers and returns a Record with 3 positional parse results.
-
SequenceParser4<
R1, R2, R3, R4> - A parser that consumes a sequence of 4 parsers and returns a Record with 4 positional parse results.
-
SequenceParser5<
R1, R2, R3, R4, R5> - A parser that consumes a sequence of 5 parsers and returns a Record with 5 positional parse results.
-
SequenceParser6<
R1, R2, R3, R4, R5, R6> - A parser that consumes a sequence of 6 parsers and returns a Record with 6 positional parse results.
-
SequenceParser7<
R1, R2, R3, R4, R5, R6, R7> - A parser that consumes a sequence of 7 parsers and returns a Record with 7 positional parse results.
-
SequenceParser8<
R1, R2, R3, R4, R5, R6, R7, R8> - A parser that consumes a sequence of 8 parsers and returns a Record with 8 positional parse results.
-
SequenceParser9<
R1, R2, R3, R4, R5, R6, R7, R8, R9> - A parser that consumes a sequence of 9 parsers and returns a Record with 9 positional parse results.
-
SettableParser<
R> - A parser that is not defined, but that can be set at a later point in time.
- SingleCharacterParser
- Parser class for individual character classes.
- SingleCharPredicate
-
SkipParser<
R> - A parser that silently consumes input of another parser before and after its delegate.
-
Success<
R> - An immutable successful parse result.
- Tag
- TagRegistry
- TagRegistry is responsible for managing and creating Liquid template tags.
- TextNode
-
Token<
R> - A token represents a parsed part of the input stream.
-
TokenParser<
R> - A parser that creates a token of the result its delegate parses.
-
TrimmingParser<
R> - A parser that silently consumes input of another parser around its delegate.
- UnaryOperation
- UppercaseCharPredicate
- Variable
-
WhereParser<
R> - WhitespaceCharPredicate
- WordCharPredicate
Enums
- BlockMode
- Represents the execution environment for a code context.
- LiteralType
Mixins
- AsyncTag
- Marker mixin for tags that support async operations
- CustomTagParser
Extensions
-
AcceptParser
on Parser<
R> -
AndParserExtension
on Parser<
R> - AsyncVisits on Evaluator
- BufferHandling on Evaluator
-
CastListParserExtension
on Parser<
R> -
CastParserExtension
on Parser<
R> -
ChoiceIterableExtension
on Iterable<
Parser< R> > - ChoiceParserExtension on Parser
-
ContinuationParserExtension
on Parser<
R> -
EndOfInputParserExtension
on Parser<
R> - Evaluation on Evaluator
- FlattenParserExtension on Parser
-
GreedyRepeatingParserExtension
on Parser<
R> -
LabelParserExtension
on Parser<
R> -
LazyRepeatingParserExtension
on Parser<
R> -
MapParserExtension
on Parser<
R> -
MatchesParserExtension
on Parser<
T> -
NotParserExtension
on Parser<
R> -
OptionalParserExtension
on Parser<
R> -
PatternParserExtension
on Parser<
R> -
PermuteParserExtension
on Parser<
List< R> > -
PickParserExtension
on Parser<
List< R> > -
PossessiveRepeatingParserExtension
on Parser<
R> - PredicateStringExtension on String
-
RecordOfParsersExtension2
on (Parser<
R1> , Parser<R2> ) - Extensions on a Record with 2 positional Parsers.
-
RecordOfParsersExtension3
on (Parser<
R1> , Parser<R2> , Parser<R3> ) - Extensions on a Record with 3 positional Parsers.
-
RecordOfParsersExtension4
on (Parser<
R1> , Parser<R2> , Parser<R3> , Parser<R4> ) - Extensions on a Record with 4 positional Parsers.
-
RecordOfParsersExtension5
on (Parser<
R1> , Parser<R2> , Parser<R3> , Parser<R4> , Parser<R5> ) - Extensions on a Record with 5 positional Parsers.
-
RecordOfParsersExtension6
on (Parser<
R1> , Parser<R2> , Parser<R3> , Parser<R4> , Parser<R5> , Parser<R6> ) - Extensions on a Record with 6 positional Parsers.
-
RecordOfParsersExtension7
on (Parser<
R1> , Parser<R2> , Parser<R3> , Parser<R4> , Parser<R5> , Parser<R6> , Parser<R7> ) - Extensions on a Record with 7 positional Parsers.
-
RecordOfParsersExtension8
on (Parser<
R1> , Parser<R2> , Parser<R3> , Parser<R4> , Parser<R5> , Parser<R6> , Parser<R7> , Parser<R8> ) - Extensions on a Record with 8 positional Parsers.
-
RecordOfParsersExtension9
on (Parser<
R1> , Parser<R2> , Parser<R3> , Parser<R4> , Parser<R5> , Parser<R6> , Parser<R7> , Parser<R8> , Parser<R9> ) - Extensions on a Record with 9 positional Parsers.
- RecordOfValuesExtension2 on (T1, T2)
- Extension on a Record with 2 positional values.
- RecordOfValuesExtension3 on (T1, T2, T3)
- Extension on a Record with 3 positional values.
- RecordOfValuesExtension4 on (T1, T2, T3, T4)
- Extension on a Record with 4 positional values.
- RecordOfValuesExtension5 on (T1, T2, T3, T4, T5)
- Extension on a Record with 5 positional values.
- RecordOfValuesExtension6 on (T1, T2, T3, T4, T5, T6)
- Extension on a Record with 6 positional values.
- RecordOfValuesExtension7 on (T1, T2, T3, T4, T5, T6, T7)
- Extension on a Record with 7 positional values.
- RecordOfValuesExtension8 on (T1, T2, T3, T4, T5, T6, T7, T8)
- Extension on a Record with 8 positional values.
- RecordOfValuesExtension9 on (T1, T2, T3, T4, T5, T6, T7, T8, T9)
- Extension on a Record with 9 positional values.
-
RecordParserExtension2
on Parser<
(T1, T2)> - Extension on a Parser producing a Record of 2 positional values.
-
RecordParserExtension3
on Parser<
(T1, T2, T3)> - Extension on a Parser producing a Record of 3 positional values.
-
RecordParserExtension4
on Parser<
(T1, T2, T3, T4)> - Extension on a Parser producing a Record of 4 positional values.
-
RecordParserExtension5
on Parser<
(T1, T2, T3, T4, T5)> - Extension on a Parser producing a Record of 5 positional values.
-
RecordParserExtension6
on Parser<
(T1, T2, T3, T4, T5, T6)> - Extension on a Parser producing a Record of 6 positional values.
-
RecordParserExtension7
on Parser<
(T1, T2, T3, T4, T5, T6, T7)> - Extension on a Parser producing a Record of 7 positional values.
-
RecordParserExtension8
on Parser<
(T1, T2, T3, T4, T5, T6, T7, T8)> - Extension on a Parser producing a Record of 8 positional values.
-
RecordParserExtension9
on Parser<
(T1, T2, T3, T4, T5, T6, T7, T8, T9)> - Extension on a Parser producing a Record of 9 positional values.
-
RepeatingCharacterParserExtension
on Parser<
String> -
SeparatedByParserExtension
on Parser<
T> -
SeparatedRepeatingParserExtension
on Parser<
R> -
SequenceIterableExtension
on Iterable<
Parser< R> > - SequenceParserExtension on Parser
-
SettableParserExtension
on Parser<
R> -
SkipParserExtension
on Parser<
R> -
TokenParserExtension
on Parser<
R> -
TrimmingParserExtension
on Parser<
R> -
WhereParserExtension
on Parser<
R>
Functions
-
any(
[String message = 'input expected']) → Parser< String> - Returns a parser that accepts any input element.
-
anyOf(
String chars, [String? message]) → Parser< String> - Returns a parser that accepts any of the specified characters.
-
argument(
) → Parser -
arithmeticExpression(
) → Parser -
arrayAccess(
) → Parser -
assignment(
) → Parser -
booleanLiteral(
) → Parser< Literal> -
breakTag(
) → Parser< Tag> -
caseBlock(
) → Parser -
caseTag(
) → Parser< Tag> -
char(
String char, [String? message]) → Parser< String> - Returns a parser that accepts a specific character only.
-
charIgnoringCase(
String char, [String? message]) → Parser< String> - Returns a parser that accepts a case-insensitive specific character only.
-
collapseTextNodes(
List< ASTNode> elements) → List<ASTNode> -
comparison(
) → Parser -
comparisonOperator(
) → Parser -
comparisonOrExpression(
) → Parser -
continueTag(
) → Parser< Tag> -
createFactory_<
R> ({String? message, FailureFactory< R> ? factory, Callback<R, String> ? failureMessage, Callback<R, int> ? failurePosition}) → FailureFactory<R> -
digit(
[String message = 'digit expected']) → Parser< String> -
Returns a parser that accepts any digit character. The accepted input is
equivalent to the character-set
0-9
. -
document(
) → Parser< Document> -
element(
) → Parser -
elseBlock(
) → Parser -
elseIfBlock(
) → Parser -
elseifTag(
) → Parser -
elseTag(
) → Parser< Tag> -
emptyLiteral(
) → Parser -
endCaseTag(
) → Parser -
endForTag(
) → Parser -
endIfTag(
) → Parser -
endOfInput(
[String message = 'end of input expected']) → Parser< void> - Returns a parser that succeeds at the end of input.
-
epsilon(
) → Parser< void> - Returns a parser that consumes nothing and succeeds.
-
epsilonWith<
R> (R result) → Parser< R> -
Returns a parser that consumes nothing and succeeds with
result
. -
expression(
) → Parser -
failure<
R> ([String message = 'unable to parse']) → Parser< R> - Returns a parser that consumes nothing and fails.
-
filter(
) → Parser -
filterArguments(
) → Parser -
forBlock(
) → Parser -
forTag(
) → Parser< Tag> -
groupedExpression(
) → Parser -
identifier(
) → Parser -
ifBlock(
) → Parser -
ifTag(
) → Parser -
letter(
[String message = 'letter expected']) → Parser< String> -
Returns a parser that accepts any letter character (lowercase or uppercase).
The accepted input is equivalent to the character-set
a-zA-Z
. -
literal(
) → Parser -
logicalExpression(
) → Parser -
logicalOperator(
) → Parser -
lowercase(
[String message = 'lowercase letter expected']) → Parser< String> -
Returns a parser that accepts any lowercase character. The accepted input is
equivalent to the character-set
a-z
. -
memberAccess(
) → Parser -
namedArgument(
) → Parser -
newline(
[String message = 'newline expected']) → Parser< String> - Returns a parser that detects newlines platform independently.
-
nilLiteral(
) → Parser< Literal> -
noneOf(
String chars, [String? message]) → Parser< String> - Returns a parser that accepts none of the specified characters.
-
numericLiteral(
) → Parser -
parseInput(
String input, {bool enableTrace = false, bool shouldLint = false}) → List< ASTNode> - Parses the given input string and returns a list of ASTNode objects representing the parsed document.
-
pattern(
String element, [String? message]) → Parser< String> - Returns a parser that accepts a single character of a given character set provided as a string.
-
patternIgnoreCase(
String element, [String? message]) → Parser< String> - Returns a parser that accepts a single character of a given case-insensitive character set provided as a string.
-
position(
) → Parser - Returns a parser that reports the current input position.
-
predicate(
int length, Predicate< String> predicate, String message) → Parser<String> -
Returns a parser that reads input of the specified
length
, accepts it if thepredicate
matches, or fails with the givenmessage
. -
range(
) → Parser -
ref<
R> (Function function, [dynamic arg1 = undefined, dynamic arg2 = undefined, dynamic arg3 = undefined, dynamic arg4 = undefined, dynamic arg5 = undefined, dynamic arg6 = undefined, dynamic arg7 = undefined, dynamic arg8 = undefined, dynamic arg9 = undefined]) → Parser< R> -
Creates a Parser from a
function
reference, possibly with the given argumentsarg1
,arg2
,arg3
, ... -
ref0<
R> (Parser< R> function()) → Parser<R> -
Creates a Parser from a
function
without arguments. -
ref1<
R, A1> (Parser< R> function(A1), A1 arg1) → Parser<R> -
Reference to a production
function
parametrized with 1 argument. -
ref2<
R, A1, A2> (Parser< R> function(A1, A2), A1 arg1, A2 arg2) → Parser<R> -
Reference to a production
function
parametrized with 2 arguments. -
ref3<
R, A1, A2, A3> (Parser< R> function(A1, A2, A3), A1 arg1, A2 arg2, A3 arg3) → Parser<R> -
Reference to a production
function
parametrized with 3 arguments. -
ref4<
R, A1, A2, A3, A4> (Parser< R> function(A1, A2, A3, A4), A1 arg1, A2 arg2, A3 arg3, A4 arg4) → Parser<R> -
Reference to a production
function
parametrized with 4 arguments. -
ref5<
R, A1, A2, A3, A4, A5> (Parser< R> function(A1, A2, A3, A4, A5), A1 arg1, A2 arg2, A3 arg3, A4 arg4, A5 arg5) → Parser<R> -
Reference to a production
function
parametrized with 5 arguments. -
ref6<
R, A1, A2, A3, A4, A5, A6> (Parser< R> function(A1, A2, A3, A4, A5, A6), A1 arg1, A2 arg2, A3 arg3, A4 arg4, A5 arg5, A6 arg6) → Parser<R> -
Reference to a production
function
parametrized with 6 arguments. -
ref7<
R, A1, A2, A3, A4, A5, A6, A7> (Parser< R> function(A1, A2, A3, A4, A5, A6, A7), A1 arg1, A2 arg2, A3 arg3, A4 arg4, A5 arg5, A6 arg6, A7 arg7) → Parser<R> -
Reference to a production
function
parametrized with 7 arguments. -
ref8<
R, A1, A2, A3, A4, A5, A6, A7, A8> (Parser< R> function(A1, A2, A3, A4, A5, A6, A7, A8), A1 arg1, A2 arg2, A3 arg3, A4 arg4, A5 arg5, A6 arg6, A7 arg7, A8 arg8) → Parser<R> -
Reference to a production
function
parametrized with 8 arguments. -
ref9<
R, A1, A2, A3, A4, A5, A6, A7, A8, A9> (Parser< R> function(A1, A2, A3, A4, A5, A6, A7, A8, A9), A1 arg1, A2 arg2, A3 arg3, A4 arg4, A5 arg5, A6 arg6, A7 arg7, A8 arg8, A9 arg9) → Parser<R> -
Reference to a production
function
parametrized with 9 arguments. -
registerBuiltInTags(
) → void - Registers all built-in Liquid tags.
-
resolve<
R> (Parser< R> parser) → Parser<R> -
Resolves all parser references reachable through
parser
. Returns an optimized parser graph that inlines all references directly. -
selectFarthest(
Failure first, Failure second) → Failure - Reports the parser failure farthest down in the input string, preferring later failures over earlier ones.
-
selectFarthestJoined(
Failure first, Failure second) → Failure - Reports the parser failure farthest down in the input string, joining error messages at the same position.
-
selectFirst(
Failure first, Failure second) → Failure - Reports the first parse failure observed.
-
selectLast(
Failure first, Failure second) → Failure - Reports the last parse failure observed (default).
-
seq2<
R1, R2> (Parser< R1> parser1, Parser<R2> parser2) → Parser<(R1, R2)> - Creates a Parser that consumes the 2 parsers passed as argument in sequence and returns a Record with 2 positional parse results.
-
seq3<
R1, R2, R3> (Parser< R1> parser1, Parser<R2> parser2, Parser<R3> parser3) → Parser<(R1, R2, R3)> - Creates a Parser that consumes the 3 parsers passed as argument in sequence and returns a Record with 3 positional parse results.
-
seq4<
R1, R2, R3, R4> (Parser< R1> parser1, Parser<R2> parser2, Parser<R3> parser3, Parser<R4> parser4) → Parser<(R1, R2, R3, R4)> - Creates a Parser that consumes the 4 parsers passed as argument in sequence and returns a Record with 4 positional parse results.
-
seq5<
R1, R2, R3, R4, R5> (Parser< R1> parser1, Parser<R2> parser2, Parser<R3> parser3, Parser<R4> parser4, Parser<R5> parser5) → Parser<(R1, R2, R3, R4, R5)> - Creates a Parser that consumes the 5 parsers passed as argument in sequence and returns a Record with 5 positional parse results.
-
seq6<
R1, R2, R3, R4, R5, R6> (Parser< R1> parser1, Parser<R2> parser2, Parser<R3> parser3, Parser<R4> parser4, Parser<R5> parser5, Parser<R6> parser6) → Parser<(R1, R2, R3, R4, R5, R6)> - Creates a Parser that consumes the 6 parsers passed as argument in sequence and returns a Record with 6 positional parse results.
-
seq7<
R1, R2, R3, R4, R5, R6, R7> (Parser< R1> parser1, Parser<R2> parser2, Parser<R3> parser3, Parser<R4> parser4, Parser<R5> parser5, Parser<R6> parser6, Parser<R7> parser7) → Parser<(R1, R2, R3, R4, R5, R6, R7)> - Creates a Parser that consumes the 7 parsers passed as argument in sequence and returns a Record with 7 positional parse results.
-
seq8<
R1, R2, R3, R4, R5, R6, R7, R8> (Parser< R1> parser1, Parser<R2> parser2, Parser<R3> parser3, Parser<R4> parser4, Parser<R5> parser5, Parser<R6> parser6, Parser<R7> parser7, Parser<R8> parser8) → Parser<(R1, R2, R3, R4, R5, R6, R7, R8)> - Creates a Parser that consumes the 8 parsers passed as argument in sequence and returns a Record with 8 positional parse results.
-
seq9<
R1, R2, R3, R4, R5, R6, R7, R8, R9> (Parser< R1> parser1, Parser<R2> parser2, Parser<R3> parser3, Parser<R4> parser4, Parser<R5> parser5, Parser<R6> parser6, Parser<R7> parser7, Parser<R8> parser8, Parser<R9> parser9) → Parser<(R1, R2, R3, R4, R5, R6, R7, R8, R9)> - Creates a Parser that consumes the 9 parsers passed as argument in sequence and returns a Record with 9 positional parse results.
-
someTag(
String name, {Parser? start, Parser? end, Parser? content, Parser? filters, bool hasContent = true}) → Parser< Tag> -
string(
String element, [String? message]) → Parser< String> -
Returns a parser that accepts the string
element
. -
stringIgnoreCase(
String element, [String? message]) → Parser< String> -
Returns a parser that accepts the string
element
ignoring the case. -
stringLiteral(
) → Parser< Literal> -
tag(
) → Parser -
tagContent(
) → Parser -
tagEnd(
) → Parser -
tagStart(
) → Parser -
text(
) → Parser -
unaryOperation(
) → Parser -
unaryOperator(
) → Parser -
undefined<
R> ([String message = 'undefined parser']) → SettableParser< R> - Returns a parser that is not defined, but that can be set at a later point in time.
-
uppercase(
[String message = 'uppercase letter expected']) → Parser< String> -
Returns a parser that accepts any uppercase character. The accepted input is
equivalent to the character-set
A-Z
. -
varEnd(
) → Parser -
variable(
) → Parser -
varStart(
) → Parser -
whenBlock(
) → Parser -
whenTag(
) → Parser< Tag> -
whitespace(
[String message = 'whitespace expected']) → Parser< String> - Returns a parser that accepts any whitespace character.
-
word(
[String message = 'letter or digit expected']) → Parser< String> -
Returns a parser that accepts any word character (lowercase, uppercase,
underscore, or digit). The accepted input is equivalent to the character-set
a-zA-Z_0-9
.
Typedefs
- AnyParser = AnyCharacterParser
- Alias for deprecated class name.
- CharacterParser = SingleCharacterParser
- Alias for deprecated class name.
-
ContinuationFunction<
R> = Result< R> Function(Context context) - Continuation function of the ContinuationHandler.
-
ContinuationHandler<
R, S> = Result< S> Function(ContinuationFunction<R> continuation, Context context) - Handler function for the ContinuationParser.
-
FailureFactory<
R> = Result< R> Function(Context context, Success<R> success) - FailureJoiner = Failure Function(Failure first, Failure second)
- Function definition that joins parse Failure instances.
Exceptions / Errors
- ParserException
- An exception raised in case of a parse error.
- ParsingException
- Represents an exception that occurred during parsing.