1 /* 2 * Copyright (C) Christian Schulte, 2012-262 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 9 * o Redistributions of source code must retain the above copyright 10 * notice, this list of conditions and the following disclaimer. 11 * 12 * o Redistributions in binary form must reproduce the above copyright 13 * notice, this list of conditions and the following disclaimer in 14 * the documentation and/or other materials provided with the 15 * distribution. 16 * 17 * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 18 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY 19 * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 20 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY DIRECT, INDIRECT, 21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 22 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 * 28 * $JOMC: JavaLanguage.java 4681 2012-12-29 00:30:19Z schulte $ 29 * 30 */ 31 package org.jomc.model.test; 32 33 import java.util.HashSet; 34 import java.util.Set; 35 36 /** 37 * Java language support. 38 * 39 * @author <a href="mailto:cs@schulte.it">Christian Schulte</a> 40 * @version $JOMC: JavaLanguage.java 4681 2012-12-29 00:30:19Z schulte $ 41 * @since 1.4 42 */ 43 class JavaLanguage 44 { 45 46 /** 47 * The Java Language Specification - Java SE 7 Edition - Chapter 18. Syntax 48 * <pre> 49 * BasicType: 50 * byte 51 * short 52 * char 53 * int 54 * long 55 * float 56 * double 57 * </pre> 58 */ 59 static final Set<String> BASIC_TYPES = new HashSet<String>( 8 ); 60 61 /** 62 * The Java Language Specification - Java SE 7 Edition - Chapter 3.10.3. Boolean Literals 63 * <pre> 64 * BooleanLiteral: one of 65 * true false 66 * </pre> 67 */ 68 static final Set<String> BOOLEAN_LITERALS = new HashSet<String>( 2 ); 69 70 /** 71 * The Java Language Specification - Java SE 7 Edition - Chapter 3.9. Keywords 72 * <pre> 73 * Keyword: one of 74 * abstract continue for new switch 75 * assert default if package synchronized 76 * boolean do goto private this 77 * break double implements protected throw 78 * byte else import public throws 79 * case enum instanceof return transient 80 * catch extends int short try 81 * char final interface static void 82 * class finally long strictfp volatile 83 * const float native super while 84 * </pre> 85 */ 86 static final Set<String> KEYWORDS = new HashSet<String>( 50 ); 87 88 /** 89 * The Java Language Specification - Java SE 7 Edition - Chapter 3.10.7. The Null Literal 90 * <pre> 91 * NullLiteral: 92 * null 93 * </pre> 94 */ 95 static final String NULL_LITERAL = "null"; 96 97 static 98 { 99 // JLS - Java SE 7 Edition - Chapter 18. Syntax - BasicType 100 BASIC_TYPES.add( "boolean" ); 101 BASIC_TYPES.add( "byte" ); 102 BASIC_TYPES.add( "char" ); 103 BASIC_TYPES.add( "double" ); 104 BASIC_TYPES.add( "float" ); 105 BASIC_TYPES.add( "short" ); 106 BASIC_TYPES.add( "int" ); 107 BASIC_TYPES.add( "long" ); 108 109 // JLS - Java SE 7 Edition - 3.10.3. Boolean Literals 110 BOOLEAN_LITERALS.add( "true" ); 111 BOOLEAN_LITERALS.add( "false" ); 112 113 // JLS - Java SE 7 Edition - Chapter 3. Lexical Structure - 3.9. Keywords 114 KEYWORDS.add( "abstract" ); 115 KEYWORDS.add( "assert" ); 116 KEYWORDS.add( "boolean" ); 117 KEYWORDS.add( "break" ); 118 KEYWORDS.add( "byte" ); 119 KEYWORDS.add( "case" ); 120 KEYWORDS.add( "catch" ); 121 KEYWORDS.add( "char" ); 122 KEYWORDS.add( "class" ); 123 KEYWORDS.add( "const" ); 124 KEYWORDS.add( "continue" ); 125 KEYWORDS.add( "default" ); 126 KEYWORDS.add( "do" ); 127 KEYWORDS.add( "double" ); 128 KEYWORDS.add( "else" ); 129 KEYWORDS.add( "enum" ); 130 KEYWORDS.add( "extends" ); 131 KEYWORDS.add( "final" ); 132 KEYWORDS.add( "finally" ); 133 KEYWORDS.add( "float" ); 134 KEYWORDS.add( "for" ); 135 KEYWORDS.add( "if" ); 136 KEYWORDS.add( "goto" ); 137 KEYWORDS.add( "implements" ); 138 KEYWORDS.add( "import" ); 139 KEYWORDS.add( "instanceof" ); 140 KEYWORDS.add( "int" ); 141 KEYWORDS.add( "interface" ); 142 KEYWORDS.add( "long" ); 143 KEYWORDS.add( "native" ); 144 KEYWORDS.add( "new" ); 145 KEYWORDS.add( "package" ); 146 KEYWORDS.add( "private" ); 147 KEYWORDS.add( "protected" ); 148 KEYWORDS.add( "public" ); 149 KEYWORDS.add( "return" ); 150 KEYWORDS.add( "short" ); 151 KEYWORDS.add( "static" ); 152 KEYWORDS.add( "strictfp" ); 153 KEYWORDS.add( "super" ); 154 KEYWORDS.add( "switch" ); 155 KEYWORDS.add( "synchronized" ); 156 KEYWORDS.add( "this" ); 157 KEYWORDS.add( "throw" ); 158 KEYWORDS.add( "throws" ); 159 KEYWORDS.add( "transient" ); 160 KEYWORDS.add( "try" ); 161 KEYWORDS.add( "void" ); 162 KEYWORDS.add( "volatile" ); 163 KEYWORDS.add( "while" ); 164 } 165 166 }