001 /* 002 * To change this template, choose Tools | Templates 003 * and open the template in the editor. 004 */ 005 006 package org.util.xml.parse; 007 008 import java.io.IOException; 009 import org.util.xml.parse.ElementParser; 010 011 /** 012 * parse space. 013 * S ::= (#x20 | #x9 | #xD | #xA)+ 014 * <a href="http://www.fxis.co.jp/xmlcafe/tmp/rec-xml.html#NT-S">W3C REC-xml-980210</a> 015 * @author masaru 016 */ 017 public class SpaceParser extends ParseElement { 018 019 public boolean match(char c) { 020 return isSpace(c); 021 } 022 023 @Override 024 public int parse(int c, ElementParser parser) throws XMLParseException, IOException { 025 int next_word_ = -1; 026 int state = 0; 027 while(true) { 028 if(state == 0) { 029 if(isSpace(c)) state = 1; 030 else throw new XMLParseException("parse error: cannot read space("+(char)c+")"); 031 }else if(state == 1) { 032 if(isSpace(c)); 033 else { 034 next_word_ = c; 035 break; 036 } 037 } 038 c = parser.getChar(); 039 } 040 return next_word_; 041 } 042 043 044 }