Re: [PATCH] userdiff: add builtin driver for kotlin language
- From
Johannes Sixt <j6t@kdbg.org>
- Date
- Mar 3, 2022, 20:04 UTC
- Message-ID
- <c1298c9d-0f4a-40b8-b337-896f4d4777f3@kdbg.org>
- In-Reply-To
- <76d46b15-f6c0-b8da-87e8-a992047b9a6a@gmail.com>
Am 03.03.22 um 12:41 schrieb Jaydeep Das:
Show 6 quoted lines
> How about modifying the number match regex to: > > `[0-9._]+([Ee][-+]?[0-9]+)?[fFlLuU]*[^a-zA-Z]` ? > > The `[^a-zA-Z]` in the end would make sure to not match > the `.F` in `X.Find`.
No, you cannot do that, because then in X.u+1 you have three tokens X .u+ 1, which you do not want, either.
Show 7 quoted lines
> Additionally, we can add another regex for matching just > the method calls: > > `[.][a-zA-Z()0-9]+` > > Both of these changes would make word_regex match 2 tokens in > X.Find() : X and .Find() (Here X can be any valid identifier name)
Well, you can do that. But I would not do that if it is allowed to have a blank between the fullstop and a method name.
Show 18 quoted lines
>> How many tokens will the word-regex find in the expression X.e+200UL? >> .e+200UL is a single token. > It's most easily fixed by requiring a >> digit before the fullstop. But if >> floatingpoint numbers can begin with a fullstop, then we need a second >> expression that requires a digit after a leading fullstop. > > But that syntax would be wrong. I tried making a condition like you said, > but it always ended up breaking something else(like breaking 2.e+200UL > into 2, .e, + and 200UL) > > Also, I realized I did a bit of mistake in the identifier regex. > Both _abc and __abc are valid identifiers. _3432, __3232 are valid > identifiers too.(not numbers) > > The previous regex matched only one `_`, so in the next patch, > I plan to implement the following regex: > > Identifier: `([_]*[a-zA-Z]|[_]+[0-9]+)[a-zA-Z0-9_]*`
But then you can use the regex you had in the first round:
[a-zA-Z_][a-zA-Z0-9_]*
Show 9 quoted lines
> > Numbers: `[0-9_.]+([Ee][-+]?[0-9]+)?[fFlLuU]*[^a-zA-Z]` > (It makes sure that in X.Find, .F is not matched ) > > Additionally, An extra regex for method calls: > > `[.][a-zA-Z()0-9]+` > > What do you think?
Have a look at the regex in the cpp driver. I think we need something like this:
/* integers floatingpoint numbers */ "|[0-9][0-9_.]*([Ee][*-]?[0-9]+)?[FfLl]*" /* floatingpoint numbers that begin with a decimal point */ "|[.][0-9][0-9_]*([Ee][*-]?[0-9]+)?[FfLl]*"
Drop the second option if numbers such as .5 are invalid syntax in Kotlin.
-- Hannes