From: Jacek Caban Subject: Re: [PATCH v2 1/2] vbscript/tests: Test 'Get' keyword used as id Message-Id: Date: Fri, 15 Feb 2019 14:05:23 +0100 In-Reply-To: <31549ede-6c3c-def8-4078-0654ad7de72b@redmandi.com> References: <288c0b2d-0ac0-c953-b5d8-34559711b08b@codeweavers.com> <20190210004524.21594-1-brendan@redmandi.com> <55a2b4a6-a818-d5d4-04b9-846080d5824f@codeweavers.com> <31549ede-6c3c-def8-4078-0654ad7de72b@redmandi.com> Hi Brendan, On 2/13/19 1:33 AM, Brendan McGrath wrote: > I tried 'Dim Get' and 'Get = "xx"' in Windows, but they both create a > "compilation error". So I think 'Get' can be used as a Function on an > external object - but maybe can not be used as a declaration in vbscript. > > I'm not really familiar with the grammatical notation of vbscript - > but I did find this: > https://rosettacode.org/wiki/BNF_Grammar#VBScript > > It looks like after a 'dot', all the Keywords can be used (referred to > as a QualifiedIDTail in the link above), but after a 'Dim', only an > ExtendedID can be used (which only includes a subset of Keywords > referred to as 'SafeKeywordID' - which includes 'Property'). So I > think I should only be including the SafeKeywordIDs as an Identifier > (which does not include 'Get', 'Set' or 'Let'). > > For items after a dot, I guess I should introduce a new token (maybe > called DotIdentifier) which will include all the Keywords? Yes, it looks like we will need something like that. > I believe I would therefore need to use an external object to test those. Note that we already have such object in tests. It's accessible as testObj in scripts and implemented in run.c (mostly testObj_GetDispID and testObj_InvokeEx). We could probably have a single dispid for multiple keyword identifiers there to simplify things. Thanks, Jacek