private SourceRouteAST parseSourceRoute() throws ParseException {
pushPosition();
List<DomainAST> domainASTs = new ArrayList<DomainAST>();
do {
accept('@');
DomainAST domainAST = parseDomain();
domainASTs.add(domainAST);
} while (currentToken.ch == '@');
return new SourceRouteAST(popPosition(), domainASTs);
}