From: jaydeepjd.8914@gmail.com Date: Thu, 10 Mar 2022 10:52:05 GMT Subject: Re: [PATCH v5] userdiff: add builtin diff driver for kotlin language. Message-ID: <8d411f30-bfe9-ffbe-5ec5-1ae7b5c9588f@gmail.com> In-Reply-To: <72aca675-4c65-36bf-1337-34b2d1f40bb4@kdbg.org> Sorry for the late reply. On 3/9/22 12:02 AM, Johannes Sixt wrote: > Am 08.03.22 um 17:54 schrieb jaydeepjd.8914@gmail.com: > > So, the final regexes are these, right?: > > Not quite. > > > > >      "[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]*" Okay. > >      /* 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. It matches the following operators: `?:`, `?.`, `..` `::`. Although matching `::` is unnecessary since its matched before. https://kotlinlang.org/docs/keyword-reference.html#operators-and-special-symbols