package querying.parsing.AnswerSets; import java.io.StringReader; import java.util.ArrayList; import java.util.Scanner; import warnings.StringListUtils; public class DLVAnswerSetParser extends AnswerSetParser{ private Scanner sc; private String buf; int bufIdx; public DLVAnswerSetParser() { } private Character nextChar() { if(buf==null || bufIdx==buf.length()) { if(sc.hasNext()) { buf=sc.next(); bufIdx=0; } else { return null; } } return buf.charAt(bufIdx++); } @Override public ArrayList<AnswerSet> getAnswerSets(String output) { sc=new Scanner(new StringReader(output)); ArrayList<AnswerSet> result=new ArrayList<AnswerSet>(); Character next=null; while((next=nextChar())!=null) { if(next=='{') { StringBuilder sb=new StringBuilder(); while((next=nextChar())!='}') { sb.append(next); } AnswerSet answerSet=new AnswerSet(); answerSet.literals.addAll(StringListUtils.splitCommaSequence(sb.toString())); result.add(answerSet); } } return result; } }