Thread (44 messages) 44 messages, 4 authors, 2022-03-13

Re: [PATCH] userdiff: add builtin driver for kotlin language

From: Johannes Sixt <hidden>
Date: 2022-03-03 20:04:14

Am 03.03.22 um 12:41 schrieb Jaydeep Das:
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.
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.
quoted
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_]*
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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help