KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > netbeans > tax > decl > parser > ListParser


1 /*
2  * The contents of this file are subject to the terms of the Common Development
3  * and Distribution License (the License). You may not use this file except in
4  * compliance with the License.
5  *
6  * You can obtain a copy of the License at http://www.netbeans.org/cddl.html
7  * or http://www.netbeans.org/cddl.txt.
8  *
9  * When distributing Covered Code, include this CDDL Header Notice in each file
10  * and include the License file at http://www.netbeans.org/cddl.txt.
11  * If applicable, add the following below the CDDL Header, with the fields
12  * enclosed by brackets [] replaced by your own identifying information:
13  * "Portions Copyrighted [year] [name of copyright owner]"
14  *
15  * The Original Software is NetBeans. The Initial Developer of the Original
16  * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
17  * Microsystems, Inc. All Rights Reserved.
18  */

19 package org.netbeans.tax.decl.parser;
20
21 import org.netbeans.tax.TreeElementDecl;
22 import org.netbeans.tax.decl.*;
23
24 /** Parse list of ContentParticles. */
25 public abstract class ListParser extends MultiplicityParser implements ModelParser {
26
27     /** Parse model content.
28      * @param model parserreader without starting delimiter.
29      */

30     public TreeElementDecl.ContentType parseModel (ParserReader s) {
31
32         ChildrenType type = createType (s);
33
34         //first element
35
type.addType (new ContentParticleParser ().parseModel (s));
36         
37         while ( !!! s.trim ().startsWith (")")) { // NOI18N
38

39             if (s.startsWith (getSeparator ()) ) {
40                 type.addType (new ContentParticleParser ().parseModel (s));
41                 
42             } else {
43                 //should not occure
44
new RuntimeException JavaDoc ("Error in " + this); // NOI18N
45
break;
46             }
47         }
48         
49         return type; // may be empty (e.g. (#PCDATA))
50
}
51     
52     /**
53      */

54     protected abstract ChildrenType createType (ParserReader model);
55     
56     /**
57      */

58     protected abstract String JavaDoc getSeparator ();
59     
60     /**
61      */

62     protected boolean isEndMark (int ch) {
63         switch (ch) {
64             case ')': case -1:
65                 return true;
66             default:
67                 return false;
68         }
69     }
70     
71 }
72
Popular Tags