Thread overview | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
May 30, 2009 legal identifier check | ||||
---|---|---|---|---|
| ||||
Is there a function to check whether some string is a legal identifier? |
May 31, 2009 Re: legal identifier check | ||||
---|---|---|---|---|
| ||||
Posted in reply to Saaa | Saaa wrote:
> Is there a function to check whether some string is a legal identifier?
>
>
Sure.
static if(is(typeof({ /* code to be checked for validity goes here */ }))) ...
|
May 31, 2009 Re: legal identifier check | ||||
---|---|---|---|---|
| ||||
Posted in reply to downs | > Saaa wrote:
>> Is there a function to check whether some string is a legal identifier?
>>
>>
>
> Sure.
>
> static if(is(typeof({ /* code to be checked for validity goes here */ }))) ...
That is a compile time check, right?
I meant a runtime check.
How does that piece of code work anyways :D
static if = compile time if
is = comparison between two non value things?
typeof = returns the type
I know use this (in the ddata thread above):
foreach(char c; identifier)
{
if( !inPattern( c, `_a-zA-Z0-9`) )
{
return false;
}
}
|
May 31, 2009 Re: legal identifier check | ||||
---|---|---|---|---|
| ||||
Posted in reply to Saaa | Saaa wrote: > ... > > I know use this (in the ddata thread above): > > foreach(char c; identifier) > { > if( !inPattern( c, `_a-zA-Z0-9`) ) > { > return false; > } > } That's not correct. http://digitalmars.com/d/1.0/lex.html#identifier |
May 31, 2009 Re: legal identifier check | ||||
---|---|---|---|---|
| ||||
Posted in reply to Saaa | Hello Saaa,
>> static if(is(typeof({ /* code to be checked for validity goes here */
>> }))) ...
>>
> How does that piece of code work anyways :D
that checks to see if the {...} is a valid delegate literal by using is() to see if semantic checks fail.
|
May 31, 2009 Re: legal identifier check | ||||
---|---|---|---|---|
| ||||
Posted in reply to Daniel Keep | >> I know use this (in the ddata thread above):
>>
>> foreach(char c; identifier)
>> {
>> if( !inPattern( c, `_a-zA-Z0-9`) )
>> {
>> return false;
>> }
>> }
>
> That's not correct. http://digitalmars.com/d/1.0/lex.html#identifier
Which is why I asked for it here :)
It isn't extremely important as it is just a data format, but I would like
to be as D as possible.
|
May 31, 2009 Re: legal identifier check | ||||
---|---|---|---|---|
| ||||
Posted in reply to BCS |
> Hello Saaa,
>
>>> static if(is(typeof({ /* code to be checked for validity goes here */
>>> }))) ...
>>>
>> How does that piece of code work anyways :D
>
>
> that checks to see if the {...} is a valid delegate literal by using is() to see if semantic checks fail.
>
Ah, I see. Can this be done at runtime?
|
May 31, 2009 Re: legal identifier check | ||||
---|---|---|---|---|
| ||||
Posted in reply to Saaa | Saaa wrote: >> Hello Saaa, >> >>>> static if(is(typeof({ /* code to be checked for validity goes here */ >>>> }))) ... >>>> >>> How does that piece of code work anyways :D >> >> that checks to see if the {...} is a valid delegate literal by using is() to see if semantic checks fail. >> > Ah, I see. Can this be done at runtime? You have to write it yourself. Here's a good starting point: http://www.digitalmars.com/d/1.0/lex.html#identifier |
May 31, 2009 Re: legal identifier check | ||||
---|---|---|---|---|
| ||||
Posted in reply to grauzone |
>
> You have to write it yourself. Here's a good starting point: http://www.digitalmars.com/d/1.0/lex.html#identifier
Yes, that was my starting point and it seemed quite complex, thus my
question :)
I think I'll stay with my simple check for now as it isn't really necessary
to be as strict as D's identifiers.
Just thought that if there was an easy check I'd implement that.
Thanks anyways everybody.
|
May 31, 2009 Re: legal identifier check | ||||
---|---|---|---|---|
| ||||
Posted in reply to Saaa | Hello Saaa,
>> You have to write it yourself. Here's a good starting point:
>> http://www.digitalmars.com/d/1.0/lex.html#identifier
>>
> Yes, that was my starting point and it seemed quite complex, thus my
> question :)
> I think I'll stay with my simple check for now as it isn't really
> necessary
> to be as strict as D's identifiers.
> Just thought that if there was an easy check I'd implement that.
> Thanks anyways everybody.
if you are only working with ASCII: use the regex `_A-Za-z[_A-Za-z0-9]*`
|
Copyright © 1999-2021 by the D Language Foundation