From: Johannes Sixt Date: Tue, 08 Mar 2022 18:32:15 GMT Subject: Re: [PATCH v5] userdiff: add builtin diff driver for kotlin language. Message-ID: <72aca675-4c65-36bf-1337-34b2d1f40bb4@kdbg.org> In-Reply-To: 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]*" >      /* 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