KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > sablecc > sablecc > walkers > SyntaxVersionExtractor


1 /* This file is part of SableCC ( http://sablecc.org ).
2  *
3  * Copyright 2007 Etienne M. Gagnon <egagnon@j-meg.com>
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */

17
18 package org.sablecc.sablecc.walkers;
19
20 import org.sablecc.sablecc.GlobalInformation;
21 import org.sablecc.sablecc.exception.InternalException;
22 import org.sablecc.sablecc.syntax3.analysis.DepthFirstAdapter;
23 import org.sablecc.sablecc.syntax3.node.ASpecification;
24 import org.sablecc.sablecc.syntax3.node.ASyntax;
25 import org.sablecc.sablecc.syntax3.node.TNumber;
26
27 public class SyntaxVersionExtractor
28         extends DepthFirstAdapter {
29
30     private TNumber syntaxVersion;
31
32     private SyntaxVersionExtractor() {
33
34         // do nothing
35
}
36
37     @Override JavaDoc
38     public void caseASpecification(
39             ASpecification node) {
40
41         // no need to walk anything other than the header
42
node.getHeader().apply(this);
43     }
44
45     @Override JavaDoc
46     public void caseASyntax(
47             ASyntax node) {
48
49         this.syntaxVersion = node.getVersion();
50     }
51
52     public static TNumber getSyntaxVersion(
53             GlobalInformation globalInformation) {
54
55         if (globalInformation == null) {
56             throw new InternalException("ast may not be null");
57         }
58
59         SyntaxVersionExtractor syntaxVersionExtractor = new SyntaxVersionExtractor();
60         globalInformation.getAst().apply(syntaxVersionExtractor);
61
62         if (syntaxVersionExtractor.syntaxVersion == null) {
63             throw new InternalException("there must be a syntax version");
64         }
65
66         return syntaxVersionExtractor.syntaxVersion;
67     }
68 }
69
Popular Tags