Skip to content

Commit c444a09

Browse files
committed
Fix to make VB lexers fully case-insensitive
1 parent e349eec commit c444a09

File tree

4 files changed

+172
-161
lines changed

4 files changed

+172
-161
lines changed

src/org/opensolaris/opengrok/analysis/vb/Consts.java

Lines changed: 165 additions & 156 deletions
Original file line numberDiff line numberDiff line change
@@ -30,173 +30,182 @@
3030
@SuppressWarnings("PMD.AvoidThrowingRawExceptionTypes")
3131
public final class Consts {
3232

33-
private static final Set<String> reservedKeywords;
33+
public static final Set<String> reservedKeywords;
34+
public static final Set<String> directives;
3435

3536
static {
36-
HashSet<String> kwds = new HashSet<String>();
37+
HashSet<String> kwds = new HashSet<>();
3738
populateKeywordSet(kwds);
3839
reservedKeywords = Collections.unmodifiableSet(kwds);
40+
41+
HashSet<String> hashwords = new HashSet<>();
42+
hashwords.add("#const"); // VB lang-reference/keywords
43+
hashwords.add("#else"); // VB lang-reference/keywords
44+
hashwords.add("#elseif"); // VB lang-reference/keywords
45+
hashwords.add("#end"); // VB lang-reference/keywords
46+
hashwords.add("#if"); // VB lang-reference/keywords
47+
directives = Collections.unmodifiableSet(hashwords);
3948
}
4049

4150
private Consts() {
4251
// Util class, can not be constructed.
4352
}
4453

4554
private static void populateKeywordSet(Set<String> kwd) {
46-
kwd.add("AddHandler");
47-
kwd.add("AddressOf");
48-
kwd.add("Alias");
49-
kwd.add("And");
50-
kwd.add("AndAlso");
51-
kwd.add("As");
52-
kwd.add("Boolean");
53-
kwd.add("ByRef");
54-
kwd.add("Byte");
55-
kwd.add("ByVal");
56-
kwd.add("Call");
57-
kwd.add("Case");
58-
kwd.add("Catch");
59-
kwd.add("CBool");
60-
kwd.add("CByte");
61-
kwd.add("CChar");
62-
kwd.add("CDate");
63-
kwd.add("CDec");
64-
kwd.add("CDbl");
65-
kwd.add("Char");
66-
kwd.add("CInt");
67-
kwd.add("Class");
68-
kwd.add("CLng");
69-
kwd.add("CObj");
70-
kwd.add("Const");
71-
kwd.add("Continue");
72-
kwd.add("CSByte");
73-
kwd.add("CShort");
74-
kwd.add("CSng");
75-
kwd.add("CStr");
76-
kwd.add("CType");
77-
kwd.add("CUInt");
78-
kwd.add("CULng");
79-
kwd.add("CUShort");
80-
kwd.add("Date");
81-
kwd.add("Decimal");
82-
kwd.add("Declare");
83-
kwd.add("Default");
84-
kwd.add("Delegate");
85-
kwd.add("Dim");
86-
kwd.add("DirectCast");
87-
kwd.add("Do");
88-
kwd.add("Double");
89-
kwd.add("Each");
90-
kwd.add("Else");
91-
kwd.add("ElseIf");
92-
kwd.add("End");
93-
kwd.add("EndIf");
94-
kwd.add("Enum");
95-
kwd.add("Erase");
96-
kwd.add("Error");
97-
kwd.add("Event");
98-
kwd.add("Exit");
99-
kwd.add("False");
100-
kwd.add("Finally");
101-
kwd.add("For");
102-
kwd.add("Friend");
103-
kwd.add("Function");
104-
kwd.add("Get");
105-
kwd.add("GetType");
106-
kwd.add("Global");
107-
kwd.add("GoSub");
108-
kwd.add("GoTo");
109-
kwd.add("Handles");
110-
kwd.add("If");
111-
kwd.add("Implements");
112-
kwd.add("Imports");
113-
kwd.add("In");
114-
kwd.add("Inherits");
115-
kwd.add("Integer");
116-
kwd.add("Interface");
117-
kwd.add("Is");
118-
kwd.add("IsNot");
119-
kwd.add("Let");
120-
kwd.add("Lib");
121-
kwd.add("Like");
122-
kwd.add("Long");
123-
kwd.add("Loop");
124-
kwd.add("Me");
125-
kwd.add("Mod");
126-
kwd.add("Module");
127-
kwd.add("MustInherit");
128-
kwd.add("MustOverride");
129-
kwd.add("MyBase");
130-
kwd.add("MyClass");
131-
kwd.add("Namespace");
132-
kwd.add("Narrowing");
133-
kwd.add("New");
134-
kwd.add("Next");
135-
kwd.add("Not");
136-
kwd.add("Nothing");
137-
kwd.add("NotInheritable");
138-
kwd.add("NotOverridable");
139-
kwd.add("Object");
140-
kwd.add("Of");
141-
kwd.add("On");
142-
kwd.add("Operator");
143-
kwd.add("Option");
144-
kwd.add("Optional");
145-
kwd.add("Or");
146-
kwd.add("OrElse");
147-
kwd.add("Overloads");
148-
kwd.add("Overridable");
149-
kwd.add("Overrides");
150-
kwd.add("ParamArray");
151-
kwd.add("Partial");
152-
kwd.add("Private");
153-
kwd.add("Property");
154-
kwd.add("Protected");
155-
kwd.add("Public");
156-
kwd.add("RaiseEvent");
157-
kwd.add("ReadOnly");
158-
kwd.add("ReDim");
159-
kwd.add("REM");
160-
kwd.add("RemoveHandler");
161-
kwd.add("Resume");
162-
kwd.add("Return");
163-
kwd.add("SByte");
164-
kwd.add("Select");
165-
kwd.add("Set");
166-
kwd.add("Shadows");
167-
kwd.add("Shared");
168-
kwd.add("Short");
169-
kwd.add("Single");
170-
kwd.add("Static");
171-
kwd.add("Step");
172-
kwd.add("Stop");
173-
kwd.add("String");
174-
kwd.add("Structure");
175-
kwd.add("Sub");
176-
kwd.add("SyncLock");
177-
kwd.add("Then");
178-
kwd.add("Throw");
179-
kwd.add("To");
180-
kwd.add("True");
181-
kwd.add("Try");
182-
kwd.add("TryCast");
183-
kwd.add("TypeOf");
184-
kwd.add("Variant");
185-
kwd.add("Wend");
186-
kwd.add("UInteger");
187-
kwd.add("ULong");
188-
kwd.add("UShort");
189-
kwd.add("Using");
190-
kwd.add("When");
191-
kwd.add("While");
192-
kwd.add("Widening");
193-
kwd.add("With");
194-
kwd.add("WithEvents");
195-
kwd.add("WriteOnly");
196-
kwd.add("Xor");
197-
}
55+
kwd.clear();
56+
kwd.add("addhandler"); // Original vb.Consts but now l-case
57+
kwd.add("addressof"); // Original vb.Consts but now l-case
58+
kwd.add("alias"); // Original vb.Consts but now l-case
59+
kwd.add("and"); // Original vb.Consts but now l-case
60+
kwd.add("andalso"); // Original vb.Consts but now l-case
61+
kwd.add("as"); // Original vb.Consts but now l-case
62+
kwd.add("boolean"); // Original vb.Consts but now l-case
63+
kwd.add("byref"); // Original vb.Consts but now l-case
64+
kwd.add("byte"); // Original vb.Consts but now l-case
65+
kwd.add("byval"); // Original vb.Consts but now l-case
66+
kwd.add("call"); // Original vb.Consts but now l-case
67+
kwd.add("case"); // Original vb.Consts but now l-case
68+
kwd.add("catch"); // Original vb.Consts but now l-case
69+
kwd.add("cbool"); // Original vb.Consts but now l-case
70+
kwd.add("cbyte"); // Original vb.Consts but now l-case
71+
kwd.add("cchar"); // Original vb.Consts but now l-case
72+
kwd.add("cdate"); // Original vb.Consts but now l-case
73+
kwd.add("cdec"); // Original vb.Consts but now l-case
74+
kwd.add("cdbl"); // Original vb.Consts but now l-case
75+
kwd.add("char"); // Original vb.Consts but now l-case
76+
kwd.add("cint"); // Original vb.Consts but now l-case
77+
kwd.add("class"); // Original vb.Consts but now l-case
78+
kwd.add("clng"); // Original vb.Consts but now l-case
79+
kwd.add("cobj"); // Original vb.Consts but now l-case
80+
kwd.add("const"); // Original vb.Consts but now l-case
81+
kwd.add("continue"); // Original vb.Consts but now l-case
82+
kwd.add("csbyte"); // Original vb.Consts but now l-case
83+
kwd.add("cshort"); // Original vb.Consts but now l-case
84+
kwd.add("csng"); // Original vb.Consts but now l-case
85+
kwd.add("cstr"); // Original vb.Consts but now l-case
86+
kwd.add("ctype"); // Original vb.Consts but now l-case
87+
kwd.add("cuint"); // Original vb.Consts but now l-case
88+
kwd.add("culng"); // Original vb.Consts but now l-case
89+
kwd.add("cushort"); // Original vb.Consts but now l-case
90+
kwd.add("date"); // Original vb.Consts but now l-case
91+
kwd.add("decimal"); // Original vb.Consts but now l-case
92+
kwd.add("declare"); // Original vb.Consts but now l-case
93+
kwd.add("default"); // Original vb.Consts but now l-case
94+
kwd.add("delegate"); // Original vb.Consts but now l-case
95+
kwd.add("dim"); // Original vb.Consts but now l-case
96+
kwd.add("directcast"); // Original vb.Consts but now l-case
97+
kwd.add("do"); // Original vb.Consts but now l-case
98+
kwd.add("double"); // Original vb.Consts but now l-case
99+
kwd.add("each"); // Original vb.Consts but now l-case
100+
kwd.add("else"); // Original vb.Consts but now l-case
101+
kwd.add("elseif"); // Original vb.Consts but now l-case
102+
kwd.add("end"); // Original vb.Consts but now l-case
103+
kwd.add("endif"); // Original vb.Consts but now l-case
104+
kwd.add("enum"); // Original vb.Consts but now l-case
105+
kwd.add("erase"); // Original vb.Consts but now l-case
106+
kwd.add("error"); // Original vb.Consts but now l-case
107+
kwd.add("event"); // Original vb.Consts but now l-case
108+
kwd.add("exit"); // Original vb.Consts but now l-case
109+
kwd.add("false"); // Original vb.Consts but now l-case
110+
kwd.add("finally"); // Original vb.Consts but now l-case
111+
kwd.add("for"); // Original vb.Consts but now l-case
112+
kwd.add("friend"); // Original vb.Consts but now l-case
113+
kwd.add("function"); // Original vb.Consts but now l-case
114+
kwd.add("get"); // Original vb.Consts but now l-case
115+
kwd.add("gettype"); // Original vb.Consts but now l-case
116+
kwd.add("global"); // Original vb.Consts but now l-case
117+
kwd.add("gosub"); // Original vb.Consts but now l-case
118+
kwd.add("goto"); // Original vb.Consts but now l-case
119+
kwd.add("handles"); // Original vb.Consts but now l-case
120+
kwd.add("if"); // Original vb.Consts but now l-case
121+
kwd.add("implements"); // Original vb.Consts but now l-case
122+
kwd.add("imports"); // Original vb.Consts but now l-case
123+
kwd.add("in"); // Original vb.Consts but now l-case
124+
kwd.add("inherits"); // Original vb.Consts but now l-case
125+
kwd.add("integer"); // Original vb.Consts but now l-case
126+
kwd.add("interface"); // Original vb.Consts but now l-case
127+
kwd.add("is"); // Original vb.Consts but now l-case
128+
kwd.add("isnot"); // Original vb.Consts but now l-case
129+
kwd.add("let"); // Original vb.Consts but now l-case
130+
kwd.add("lib"); // Original vb.Consts but now l-case
131+
kwd.add("like"); // Original vb.Consts but now l-case
132+
kwd.add("long"); // Original vb.Consts but now l-case
133+
kwd.add("loop"); // Original vb.Consts but now l-case
134+
kwd.add("me"); // Original vb.Consts but now l-case
135+
kwd.add("mod"); // Original vb.Consts but now l-case
136+
kwd.add("module"); // Original vb.Consts but now l-case
137+
kwd.add("mustinherit"); // Original vb.Consts but now l-case
138+
kwd.add("mustoverride"); // Original vb.Consts but now l-case
139+
kwd.add("mybase"); // Original vb.Consts but now l-case
140+
kwd.add("myclass"); // Original vb.Consts but now l-case
141+
kwd.add("namespace"); // Original vb.Consts but now l-case
142+
kwd.add("narrowing"); // Original vb.Consts but now l-case
143+
kwd.add("new"); // Original vb.Consts but now l-case
144+
kwd.add("next"); // Original vb.Consts but now l-case
145+
kwd.add("not"); // Original vb.Consts but now l-case
146+
kwd.add("nothing"); // Original vb.Consts but now l-case
147+
kwd.add("notinheritable"); // Original vb.Consts but now l-case
148+
kwd.add("notoverridable"); // Original vb.Consts but now l-case
149+
kwd.add("object"); // Original vb.Consts but now l-case
150+
kwd.add("of"); // Original vb.Consts but now l-case
151+
kwd.add("on"); // Original vb.Consts but now l-case
152+
kwd.add("operator"); // Original vb.Consts but now l-case
153+
kwd.add("option"); // Original vb.Consts but now l-case
154+
kwd.add("optional"); // Original vb.Consts but now l-case
155+
kwd.add("or"); // Original vb.Consts but now l-case
156+
kwd.add("orelse"); // Original vb.Consts but now l-case
157+
kwd.add("overloads"); // Original vb.Consts but now l-case
158+
kwd.add("overridable"); // Original vb.Consts but now l-case
159+
kwd.add("overrides"); // Original vb.Consts but now l-case
160+
kwd.add("paramarray"); // Original vb.Consts but now l-case
161+
kwd.add("partial"); // Original vb.Consts but now l-case
162+
kwd.add("private"); // Original vb.Consts but now l-case
163+
kwd.add("property"); // Original vb.Consts but now l-case
164+
kwd.add("protected"); // Original vb.Consts but now l-case
165+
kwd.add("public"); // Original vb.Consts but now l-case
166+
kwd.add("raiseevent"); // Original vb.Consts but now l-case
167+
kwd.add("readonly"); // Original vb.Consts but now l-case
168+
kwd.add("redim"); // Original vb.Consts but now l-case
169+
kwd.add("rem"); // Original vb.Consts but now l-case
170+
kwd.add("removehandler"); // Original vb.Consts but now l-case
171+
kwd.add("resume"); // Original vb.Consts but now l-case
172+
kwd.add("return"); // Original vb.Consts but now l-case
173+
kwd.add("sbyte"); // Original vb.Consts but now l-case
174+
kwd.add("select"); // Original vb.Consts but now l-case
175+
kwd.add("set"); // Original vb.Consts but now l-case
176+
kwd.add("shadows"); // Original vb.Consts but now l-case
177+
kwd.add("shared"); // Original vb.Consts but now l-case
178+
kwd.add("short"); // Original vb.Consts but now l-case
179+
kwd.add("single"); // Original vb.Consts but now l-case
180+
kwd.add("static"); // Original vb.Consts but now l-case
181+
kwd.add("step"); // Original vb.Consts but now l-case
182+
kwd.add("stop"); // Original vb.Consts but now l-case
183+
kwd.add("string"); // Original vb.Consts but now l-case
184+
kwd.add("structure"); // Original vb.Consts but now l-case
185+
kwd.add("sub"); // Original vb.Consts but now l-case
186+
kwd.add("synclock"); // Original vb.Consts but now l-case
187+
kwd.add("then"); // Original vb.Consts but now l-case
188+
kwd.add("throw"); // Original vb.Consts but now l-case
189+
kwd.add("to"); // Original vb.Consts but now l-case
190+
kwd.add("true"); // Original vb.Consts but now l-case
191+
kwd.add("try"); // Original vb.Consts but now l-case
192+
kwd.add("trycast"); // Original vb.Consts but now l-case
193+
kwd.add("typeof"); // Original vb.Consts but now l-case
194+
kwd.add("variant"); // Original vb.Consts but now l-case
195+
kwd.add("wend"); // Original vb.Consts but now l-case
196+
kwd.add("uinteger"); // Original vb.Consts but now l-case
197+
kwd.add("ulong"); // Original vb.Consts but now l-case
198+
kwd.add("ushort"); // Original vb.Consts but now l-case
199+
kwd.add("using"); // Original vb.Consts but now l-case
200+
kwd.add("when"); // Original vb.Consts but now l-case
201+
kwd.add("while"); // Original vb.Consts but now l-case
202+
kwd.add("widening"); // Original vb.Consts but now l-case
203+
kwd.add("with"); // Original vb.Consts but now l-case
204+
kwd.add("withevents"); // Original vb.Consts but now l-case
205+
kwd.add("writeonly"); // Original vb.Consts but now l-case
206+
kwd.add("xor"); // Original vb.Consts but now l-case
198207

199-
static Set<String> getReservedKeywords() {
200-
return reservedKeywords;
208+
kwd.add("getxmlnamespace"); // VB lang-reference/keywords l-case
209+
kwd.add("out"); // VB lang-reference/keywords l-case
201210
}
202211
}

src/org/opensolaris/opengrok/analysis/vb/VBSymbolTokenizer.lex

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ import org.opensolaris.opengrok.analysis.JFlexTokenizer;
3636
%class VBSymbolTokenizer
3737
%extends JFlexTokenizer
3838
%unicode
39+
%ignorecase
3940
%init{
4041
super(in);
4142
%init}
@@ -50,8 +51,9 @@ Identifier = [a-zA-Z_] [a-zA-Z0-9_]*
5051
%%
5152

5253
<YYINITIAL> {
53-
{Identifier} {String id = yytext();
54-
if(!Consts.getReservedKeywords().contains(id)){
54+
{Identifier} {
55+
String id = yytext();
56+
if (!Consts.reservedKeywords.contains(id.toLowerCase())) {
5557
setAttribs(id, yychar, yychar + yylength());
5658
return yystate(); }
5759
}

src/org/opensolaris/opengrok/analysis/vb/VBXref.lex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ Number = (0[xX][0-9a-fA-F]+|[0-9]+\.[0-9]+|[0-9]+)(([eE][+-]?[0-9]+)?[ufdlUFDL]*
6666

6767
{Identifier} {
6868
String id = yytext();
69-
writeSymbol(id, Consts.getReservedKeywords(), yyline);
69+
writeSymbol(id, Consts.reservedKeywords, yyline, false);
7070
}
7171

7272
"<" ({File}|{FPath}) ">" {

test/org/opensolaris/opengrok/analysis/vb/sample_xref.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,10 @@
2828
<a class="hl" name="20" href="#20">20</a><span class="c">' OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</span>
2929
<a class="l" name="21" href="#21">21</a><span class="c">' SOFTWARE.</span>
3030
<a class="l" name="22" href="#22">22</a>
31-
<a class="l" name="23" href="#23">23</a><a href="/source/s?defs=VERSION" class="intelliWindow-symbol" data-definition-place="undefined-in-file">VERSION</a> <span class="n">1.0</span> <a href="/source/s?defs=CLASS" class="intelliWindow-symbol" data-definition-place="undefined-in-file">CLASS</a>
31+
<a class="l" name="23" href="#23">23</a><a href="/source/s?defs=VERSION" class="intelliWindow-symbol" data-definition-place="undefined-in-file">VERSION</a> <span class="n">1.0</span> <b>CLASS</b>
3232
<a class="l" name="24" href="#24">24</a><a href="/source/s?defs=BEGIN" class="intelliWindow-symbol" data-definition-place="undefined-in-file">BEGIN</a>
3333
<a class="l" name="25" href="#25">25</a> <a href="/source/s?defs=MultiUse" class="intelliWindow-symbol" data-definition-place="undefined-in-file">MultiUse</a> = -<span class="n">1</span> <span class="c">'True</span>
34-
<a class="l" name="26" href="#26">26</a><a href="/source/s?defs=END" class="intelliWindow-symbol" data-definition-place="undefined-in-file">END</a>
34+
<a class="l" name="26" href="#26">26</a><b>END</b>
3535
<a class="l" name="27" href="#27">27</a><a href="/source/s?defs=Attribute" class="intelliWindow-symbol" data-definition-place="undefined-in-file">Attribute</a> <a href="/source/s?defs=VB_Name" class="intelliWindow-symbol" data-definition-place="undefined-in-file">VB_Name</a> = <span class="s">"WebResponse"</span>
3636
<a class="l" name="28" href="#28">28</a><a href="/source/s?defs=Attribute" class="intelliWindow-symbol" data-definition-place="undefined-in-file">Attribute</a> <a href="/source/s?defs=VB_GlobalNameSpace" class="intelliWindow-symbol" data-definition-place="undefined-in-file">VB_GlobalNameSpace</a> = <b>False</b>
3737
<a class="l" name="29" href="#29">29</a><a href="/source/s?defs=Attribute" class="intelliWindow-symbol" data-definition-place="undefined-in-file">Attribute</a> <a href="/source/s?defs=VB_Creatable" class="intelliWindow-symbol" data-definition-place="undefined-in-file">VB_Creatable</a> = <b>False</b>

0 commit comments

Comments
 (0)