Re: [PATCH v5] userdiff: add builtin diff driver for kotlin language.
- From
Johannes Sixt <j6t@kdbg.org>
- Date
- Mar 8, 2022, 18:32 UTC
- Message-ID
- <72aca675-4c65-36bf-1337-34b2d1f40bb4@kdbg.org>
- In-Reply-To
- <cf8a9316-c81e-2477-a565-1c38a168fc67@gmail.com>
Am 08.03.22 um 17:54 schrieb jaydeepjd.8914@gmail.com:
> So, the final regexes are these, right?:
Not quite.
Show 6 quoted lines
> > "[a-zA-Z_][a-zA-Z0-9_]*" > /* hexadecimal and binary numbers */ > "|0[xXbB][0-9a-fA-F_]+[lLuU]*" > /* integers and floats */ > "|[0-9][.]?[0-9_]+([Ee][-+]?[0-9]+)?[fFlLuU]*"
This would not match 12.5 because you allow only a single digit before the decimal point. Perhaps
"|[0-9][.0-9_]*([Ee][-+]?[0-9]+)?[fFlLuU]*"
Show 5 quoted lines
> /* floating point numbers beginning with decimal point */ > "|[.][0-9][0-9_]*([Ee][-+]?[0-9]+)?[fFlL]?" > /* unary and binary operators */ > > "|[-+*/<>%&^|=!]?==?|--|\\+\\+|<<=|>>=|&&|[||]|->|\\.\\*|!!|::|[?:.][.:]"),
[||] does not work as you intend. A new suggestion: do not start with an initial optional character in order to reduce the number of backtrackings that the regular expression evaluation has to do. I would write this line as
"|[-+*/<>%&^|=!]==?|--|\\+\\+|<<=|>>=|&&|\\|\\||->|\\.\\*|!!|::|[?:.][.:]"),
BTW which operators are handled by "[?:.][.:]"? I'm asking because you list :: separatly that would also be matched by this sub-expression.
-- Hannes