1
2
3 using System;
4 using System.Collections;
5 using System.XPath.Token;
6
7 namespace System.XPath.Keyword
8 {
9 public class Keywords
10 {
11 static Keywords() : instance(new Keywords())
12 {
13 }
14 public static Keywords& Instance()
15 {
16 return *instance;
17 }
18 public System.Lex.KeywordMap* GetKeywords() const
19 {
20 return &keywordMap;
21 }
22 private Keywords()
23 {
24 keywords.Add(System.Lex.Keyword(u"or", OR));
25 keywords.Add(System.Lex.Keyword(u"and", AND));
26 keywords.Add(System.Lex.Keyword(u"div", DIV));
27 keywords.Add(System.Lex.Keyword(u"mod", MOD));
28 keywords.Add(System.Lex.Keyword(u"ancestor", ANCESTOR));
29 keywords.Add(System.Lex.Keyword(u"ancestor-or-self", ANCESTOR_OR_SELF));
30 keywords.Add(System.Lex.Keyword(u"attribute", ATTRIBUTE));
31 keywords.Add(System.Lex.Keyword(u"child", CHILD));
32 keywords.Add(System.Lex.Keyword(u"descendant", DESCENDANT));
33 keywords.Add(System.Lex.Keyword(u"descendant-or-self", DESCENDANT_OR_SELF));
34 keywords.Add(System.Lex.Keyword(u"following", FOLLOWING));
35 keywords.Add(System.Lex.Keyword(u"following-sibling", FOLLOWING_SIBLING));
36 keywords.Add(System.Lex.Keyword(u"namespace", NAMESPACE));
37 keywords.Add(System.Lex.Keyword(u"parent", PARENT));
38 keywords.Add(System.Lex.Keyword(u"preceding", PRECEDING));
39 keywords.Add(System.Lex.Keyword(u"preceding-sibling", PRECEDING_SIBLING));
40 keywords.Add(System.Lex.Keyword(u"self", SELF));
41 keywords.Add(System.Lex.Keyword(u"processing-instruction", PROCESSING_INSTRUCTION));
42 keywords.Add(System.Lex.Keyword(u"comment", COMMENT));
43 keywords.Add(System.Lex.Keyword(u"text", TEXT));
44 keywords.Add(System.Lex.Keyword(u"node", NODE));
45 keywordMap.SetKeywords(keywords);
46 }
47 private List<System.Lex.Keyword> keywords;
48 private System.Lex.KeywordMap keywordMap;
49 private static UniquePtr<Keywords> instance;
50 }
51
52 public System.Lex.KeywordMap* GetKeywords()
53 {
54 return Keywords.Instance().GetKeywords();
55 }
56