variable function

Parser variable()

Implementation

Parser variable() =>
    (varStart() & ref0(expression).trim() & filter().star().trim() & varEnd())
        .map((values) {
          ASTNode expr = values[1];
          String name = '';
          if (expr is Identifier) {
            name = expr.name;
          } else if (expr is MemberAccess) {
            name = (expr.object as Identifier).name;
          }

          if ((values[2] as List).isNotEmpty) {
            return FilteredExpression(
              Variable(name, expr),
              (values[2] as List).cast<Filter>(),
            );
          }

          return Variable(name, expr);
        })
        .labeled('variable');