Skip to content

Commit 09035e3

Browse files
committed
rebuilt grammar again - fixed block statement rule. With blocks resolve correctly, but not nested ones. Left-side "Set" assignments are also resolved.
1 parent 2451931 commit 09035e3

File tree

5 files changed

+598
-1077
lines changed

5 files changed

+598
-1077
lines changed

Rubberduck.Parsing/Grammar/VBA.g4

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -559,17 +559,17 @@ eCS_MemberProcedureCall : CALL WS implicitCallStmt_InStmt? '.' ambiguousIdentifi
559559

560560

561561
implicitCallStmt_InBlock :
562-
iCS_B_ProcedureCall
563-
| iCS_B_MemberProcedureCall
562+
iCS_B_MemberProcedureCall
563+
| iCS_B_ProcedureCall
564564
;
565565

566+
iCS_B_MemberProcedureCall : implicitCallStmt_InStmt? '.' ambiguousIdentifier typeHint? (WS argsCall)? dictionaryCallStmt?;
567+
566568
// parantheses are forbidden in case of args
567569
// variables cannot be called in blocks
568570
// certainIdentifier instead of ambiguousIdentifier for preventing ambiguity with statement keywords
569571
iCS_B_ProcedureCall : certainIdentifier (WS argsCall)?;
570572

571-
iCS_B_MemberProcedureCall : implicitCallStmt_InStmt? '.' ambiguousIdentifier typeHint? (WS argsCall)? dictionaryCallStmt?;
572-
573573

574574
// iCS_S_MembersCall first, so that member calls are not resolved as separate iCS_S_VariableOrProcedureCalls
575575
implicitCallStmt_InStmt :

Rubberduck.Parsing/Grammar/VBA.tokens

Lines changed: 241 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,241 @@
1+
FUNCTION=78
2+
PROPERTY_LET=133
3+
BYREF=23
4+
DEFDBL=39
5+
MOD=111
6+
CONST=32
7+
DO=50
8+
COLORLITERAL=206
9+
NOT=115
10+
EXIT_PROPERTY=72
11+
KILL=90
12+
END_SELECT=59
13+
REDIM=143
14+
TYPE=171
15+
RPAREN=201
16+
LOOP=94
17+
BEGIN=18
18+
CHDIR=27
19+
RETURN=147
20+
IMP=84
21+
GET=79
22+
GEQ=189
23+
GOTO=82
24+
EQ=188
25+
SHARED=157
26+
DEFLNG=43
27+
PRESERVE=129
28+
GOSUB=81
29+
DEFVAR=47
30+
STATIC=160
31+
ELSE=53
32+
DOUBLELITERAL=208
33+
LOAD=91
34+
STOP=162
35+
DEFDEC=40
36+
SAVEPICTURE=150
37+
VARIANT=176
38+
PLUS_EQ=199
39+
DEFOBJ=44
40+
LIB=97
41+
MINUS_EQ=195
42+
OPTION_BASE=122
43+
WS=214
44+
MACRO_END_IF=107
45+
READ=141
46+
TYPEOF=172
47+
DEFDATE=38
48+
ALIAS=12
49+
WIDTH=180
50+
LOCK_READ_WRITE=102
51+
GT=190
52+
RMDIR=148
53+
CALL=25
54+
END=63
55+
END_SUB=60
56+
MACRO_ELSEIF=105
57+
UNLOCK=174
58+
ERASE=66
59+
FILECOPY=75
60+
INPUT=87
61+
STEP=161
62+
SUB=164
63+
VERSION=177
64+
RANDOM=138
65+
LPAREN=192
66+
DATELITERAL=205
67+
AS=17
68+
TIME=168
69+
THEN=167
70+
IMPLEMENTS=85
71+
END_TYPE=61
72+
LINE_CONTINUATION=211
73+
ACCESS=10
74+
LINE_INPUT=99
75+
PLUS=198
76+
EXIT_FUNCTION=71
77+
LIKE=98
78+
INTEGER=89
79+
OPTION_PRIVATE_MODULE=125
80+
DEFBYTE=37
81+
DEFBOOL=36
82+
TO=169
83+
MID=109
84+
AMPERSAND=185
85+
SET=155
86+
MINUS=194
87+
TEXT=166
88+
PRINT=130
89+
RESUME=146
90+
SETATTR=156
91+
DELETESETTING=48
92+
ENUM=64
93+
DATABASE=33
94+
CLOSE=30
95+
END_WITH=62
96+
STRINGLITERAL=204
97+
ADDRESSOF=11
98+
WITHEVENTS=182
99+
DIM=49
100+
END_IF=57
101+
END_PROPERTY=58
102+
DECLARE=35
103+
DEFSNG=45
104+
DIV=187
105+
LONG=93
106+
PUBLIC=136
107+
STRING=163
108+
WEND=178
109+
LT=193
110+
INTEGERLITERAL=207
111+
WHILE=179
112+
SPC=159
113+
RESET=145
114+
CASE=26
115+
NEW=114
116+
BYVAL=22
117+
ME=108
118+
MACRO_IF=104
119+
READ_WRITE=142
120+
BEEP=19
121+
T__8=1
122+
END_ENUM=55
123+
T__7=2
124+
PROPERTY_SET=134
125+
T__6=3
126+
T__5=4
127+
T__4=5
128+
OPTION_EXPLICIT=123
129+
NAME=112
130+
OPTION_COMPARE=124
131+
POW=200
132+
EXIT_SUB=73
133+
LOCK_READ=100
134+
FRIEND=76
135+
LSET=103
136+
DOUBLE=51
137+
EACH=52
138+
COMMENT=213
139+
L_SQUARE_BRACKET=202
140+
SELECT=153
141+
PRIVATE=131
142+
NULL=117
143+
ON=118
144+
MULT=196
145+
ERROR=67
146+
SENDKEYS=154
147+
EXIT_DO=69
148+
UNTIL=175
149+
OR=126
150+
FALSE=74
151+
OUTPUT=127
152+
APPEND=16
153+
CLASS=29
154+
ATTRIBUTE=14
155+
DEFCUR=41
156+
FOR=77
157+
PTRSAFE=135
158+
AND=13
159+
LOCK=92
160+
IF=83
161+
RSET=149
162+
APPACTIVATE=15
163+
BOOLEAN=21
164+
IN=86
165+
PARAMARRAY=128
166+
END_FUNCTION=56
167+
IS=88
168+
IDENTIFIER=210
169+
MACRO_ELSE=106
170+
NOTHING=116
171+
NEXT=113
172+
COLLECTION=31
173+
WITH=181
174+
RAISEEVENT=140
175+
BYTE=24
176+
XOR=184
177+
DEFSTR=46
178+
BYTELITERAL=209
179+
R_SQUARE_BRACKET=203
180+
TAB=165
181+
ON_ERROR=119
182+
PROPERTY_GET=132
183+
REM=144
184+
EVENT=68
185+
TRUE=170
186+
WRITE=183
187+
UNLOAD=173
188+
OPTIONAL=121
189+
ELSEIF=54
190+
SEEK=152
191+
OPEN=120
192+
NEQ=197
193+
NEWLINE=212
194+
MKDIR=110
195+
SINGLE=158
196+
T__1=8
197+
T__0=9
198+
T__3=6
199+
EXIT_FOR=70
200+
T__2=7
201+
DEFINT=42
202+
ASSIGN=186
203+
LEN=95
204+
EQV=65
205+
BINARY=20
206+
LOCK_WRITE=101
207+
GLOBAL=80
208+
CHDRIVE=28
209+
DATE=34
210+
LET=96
211+
SAVESETTING=151
212+
PUT=137
213+
RANDOMIZE=139
214+
LEQ=191
215+
'!'=8
216+
'#'=6
217+
'>='=189
218+
':='=186
219+
'>'=190
220+
';'=7
221+
'='=188
222+
'<>'=197
223+
'@'=5
224+
'+'=198
225+
')'=201
226+
'.'=2
227+
'^'=200
228+
'%'=1
229+
'$'=9
230+
'+='=199
231+
'<='=191
232+
'<'=193
233+
':'=4
234+
'('=192
235+
'['=202
236+
'-'=194
237+
'*'=196
238+
','=3
239+
'&'=185
240+
'-='=195
241+
']'=203

0 commit comments

Comments
 (0)