arguments property
Parser<List<Expression> >
get
arguments
Implementation
Parser<List<Expression>> get arguments {
// Non-empty argument list: expression followed by zero or more (comma + expression)
final nonEmptyArgs = (expression & (char(',').trim() & expression).star())
.map<List<Expression>>((values) {
final first = values[0] as Expression;
final rest = values[1] as List;
final result = <Expression>[first];
for (var pair in rest) {
// pair is a list: [comma_char, expression]
// The & operator ensures both comma AND expression must be present
result.add(pair[1] as Expression);
}
return result;
});
// Allow either non-empty args or empty args (for empty parentheses)
return nonEmptyArgs.or(epsilon().map((_) => <Expression>[])).cast<List<Expression>>();
}