factor method
Implementation
Parser<ExpressionNode> factor() => [
seq3(
ref1(token, '('),
ref0(expression),
ref1(token, ')'),
).map3((_, expr, _) => expr),
seq2(
ref1(token, 'not'),
ref0(factor),
).map2((_, f) => UnaryExpressionNode(operator: 'not', operand: f)),
seq3(
ref1(token, '['),
seq2(
ref0(expression),
seq2(
ref1(token, '..'),
ref0(expression),
).map2((_, e) => e).optional(),
)
.map2((start, end) => SetElementNode(start: start, end: end))
.starSeparated(ref1(token, ','))
.map((sep) => sep.elements),
ref1(token, ']'),
).map3((_, elems, _) => SetExpressionNode(elems)),
seq4(
ref0(identifier),
ref1(token, '('),
ref0(expression)
.plusSeparated(ref1(token, ','))
.map((sep) => sep.elements),
ref1(token, ')'),
).map4(
(name, _, args, _) =>
FunctionCallExpressionNode(name: name, arguments: args),
),
ref0(variable),
ref0(unsignedConstant),
].toChoiceParser();