KickJava   Java API By Example, From Geeks To Geeks.

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


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.ALanguage;
24 import org.sablecc.sablecc.syntax3.node.ASpecification;
25 import org.sablecc.sablecc.syntax3.node.TIdentifier;
26
27 public class LanguageNameExtractor
28         extends DepthFirstAdapter {
29
30     private TIdentifier languageName;
31
32     private LanguageNameExtractor() {
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 caseALanguage(
47             ALanguage node) {
48
49         this.languageName = node.getName();
50     }
51
52     public static TIdentifier getLanguageName(
53             GlobalInformation globalInformation) {
54
55         if (globalInformation == null) {
56             throw new InternalException("ast may not be null");
57         }
58
59         LanguageNameExtractor languageNameExtractor = new LanguageNameExtractor();
60         globalInformation.getAst().apply(languageNameExtractor);
61
62         if (languageNameExtractor.languageName == null) {
63             throw new InternalException("there must be a language name");
64         }
65
66         return languageNameExtractor.languageName;
67     }
68 }
69
Popular Tags