Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcKeywords.java')
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcKeywords.java79
1 files changed, 48 insertions, 31 deletions
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcKeywords.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcKeywords.java
index aee276b47cc..15661bd11d7 100644
--- a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcKeywords.java
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcKeywords.java
@@ -23,46 +23,63 @@ import org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym;
public class XlcKeywords extends CLanguageKeywords {
- public static final XlcKeywords ALL_C_KEYWORDS = new XlcKeywords(ParserLanguage.C, true, true);
- public static final XlcKeywords ALL_CPP_KEYWORDS = new XlcKeywords(ParserLanguage.CPP, true, true);
+ public static final XlcKeywords ALL_C_KEYWORDS = createC(true, true);
+ public static final XlcKeywords ALL_CPP_KEYWORDS = createCPP(true, true, true, true);
private final CharArrayMap<Integer> map = new CharArrayMap<Integer>();
private final ParserLanguage language;
private String[] allKeywords = null;
- public XlcKeywords(ParserLanguage language, boolean supportVectors, boolean supportDeclimalFloatingPoint) {
- super(language, XlcScannerExtensionConfiguration.getInstance());
- this.language = language;
-
- if(language.isCPP()) {
- if(supportVectors) {
- map.put("vector".toCharArray(), XlcCPPParsersym.TK_vector);
- map.put("__vector".toCharArray(), XlcCPPParsersym.TK_vector);
- map.put("pixel".toCharArray(), XlcCPPParsersym.TK_pixel);
- map.put("__pixel".toCharArray(), XlcCPPParsersym.TK_pixel);
- }
- if(supportDeclimalFloatingPoint) {
- map.put("_Decimal32".toCharArray(), XlcCPPParsersym.TK__Decimal32);
- map.put("_Decimal64".toCharArray(), XlcCPPParsersym.TK__Decimal64);
- map.put("_Decimal128".toCharArray(), XlcCPPParsersym.TK__Decimal128);
- }
+
+ public static XlcKeywords createC(boolean supportVectors, boolean supportDecimalFloatingPoint) {
+ XlcKeywords keywords = new XlcKeywords(ParserLanguage.C);
+ CharArrayMap<Integer> map = keywords.map;
+ if(supportVectors) {
+ map.put("vector".toCharArray(), XlcCParsersym.TK_vector);
+ map.put("__vector".toCharArray(), XlcCParsersym.TK_vector);
+ map.put("pixel".toCharArray(), XlcCParsersym.TK_pixel);
+ map.put("__pixel".toCharArray(), XlcCParsersym.TK_pixel);
+ map.put("bool".toCharArray(), XlcCParsersym.TK_bool);
}
- else {
- if(supportVectors) {
- map.put("vector".toCharArray(), XlcCParsersym.TK_vector);
- map.put("__vector".toCharArray(), XlcCParsersym.TK_vector);
- map.put("pixel".toCharArray(), XlcCParsersym.TK_pixel);
- map.put("__pixel".toCharArray(), XlcCParsersym.TK_pixel);
- map.put("bool".toCharArray(), XlcCParsersym.TK_bool);
- }
- if(supportDeclimalFloatingPoint) {
- map.put("_Decimal32".toCharArray(), XlcCParsersym.TK__Decimal32);
- map.put("_Decimal64".toCharArray(), XlcCParsersym.TK__Decimal64);
- map.put("_Decimal128".toCharArray(), XlcCParsersym.TK__Decimal128);
- }
+ if(supportDecimalFloatingPoint) {
+ map.put("_Decimal32".toCharArray(), XlcCParsersym.TK__Decimal32);
+ map.put("_Decimal64".toCharArray(), XlcCParsersym.TK__Decimal64);
+ map.put("_Decimal128".toCharArray(), XlcCParsersym.TK__Decimal128);
+ }
+ return keywords;
+ }
+
+ public static XlcKeywords createCPP(boolean supportVectors, boolean supportDecimalFloatingPoint, boolean supportComplex, boolean supportRestrict) {
+ XlcKeywords keywords = new XlcKeywords(ParserLanguage.CPP);
+ CharArrayMap<Integer> map = keywords.map;
+ if(supportVectors) {
+ map.put("vector".toCharArray(), XlcCPPParsersym.TK_vector);
+ map.put("__vector".toCharArray(), XlcCPPParsersym.TK_vector);
+ map.put("pixel".toCharArray(), XlcCPPParsersym.TK_pixel);
+ map.put("__pixel".toCharArray(), XlcCPPParsersym.TK_pixel);
+ }
+ if(supportDecimalFloatingPoint) {
+ map.put("_Decimal32".toCharArray(), XlcCPPParsersym.TK__Decimal32);
+ map.put("_Decimal64".toCharArray(), XlcCPPParsersym.TK__Decimal64);
+ map.put("_Decimal128".toCharArray(), XlcCPPParsersym.TK__Decimal128);
+ }
+ if(supportComplex) {
+ map.put("_Complex".toCharArray(), XlcCPPParsersym.TK__Complex);
+ }
+ if(supportRestrict) {
+ map.put("restrict".toCharArray(), XlcCPPParsersym.TK_restrict);
+ map.put("__restrict".toCharArray(), XlcCPPParsersym.TK_restrict);
+ map.put("__restrict__".toCharArray(), XlcCPPParsersym.TK_restrict);
}
+ return keywords;
+ }
+
+
+ private XlcKeywords(ParserLanguage language) {
+ super(language, XlcScannerExtensionConfiguration.getInstance());
+ this.language = language;
}
/**

Back to the top