Esempio n. 1
0
 public SOF parse(StringBuffer buf) {
   Indent.clearStats();
   ArrayList<LexicalNode> nodeList = new ArrayList<LexicalNode>();
   char[] content = buf.toString().toCharArray();
   int start = 0;
   int lastMatch = 0;
   int length = 0;
   SOF sof = new SOF(new Interval(0, 0));
   nodeList.add(sof);
   while (start < content.length) {
     if ((length = match(content, start, buf, nodeList, lastMatch)) > 0) {
       start += length;
       lastMatch = start;
     } else start++;
   }
   if (start - lastMatch - 1 > 0) {
     createWater(buf, lastMatch + 1, start, nodeList);
   }
   nodeList.add(
       new EOF(
           nodeList.get(nodeList.size() - 1),
           new Interval(content.length - 1, content.length - 1)));
   return sof;
 }