while( ! lookingAt(TokenType.DOT) )
{
if ( i >= vars.size() )
exception(peekToken(), "Too many items in a line. Expected "+vars.size()) ;
Var v = vars.get(i) ;
Token token = nextToken() ;
if ( ! token.hasType(TokenType.MINUS ) )
{
Node n ;
// One case; VARS line then *
if ( token.hasType(TokenType.STAR ) || ( token.isCtlCode() && token.getCntrlCode() == -1 ) )
n = lastLine.get(v) ;
else if ( token.hasType(TokenType.BNODE) )
n = NodeFactory.createAnon(new AnonId(NodeFmtLib.decodeBNodeLabel(token.getImage()))) ;
else
n = profile.create(null, token) ;
binding.add(v, n) ;
}
i++ ;
}
if ( eof() )
exception(peekToken(), "Line does not end with a DOT") ;
Token dot = nextToken() ;
if ( i != vars.size() )
{
Var v = vars.get(vars.size()-1) ;
exception(dot, "Too many items in a line. Expected "+vars.size()) ;
}
lastLine = binding ;
return binding ;
}