lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]




On 05/07/16 06:34 PM, Sean Conner wrote:
It was thus said that the Great Soni L. once stated:

On 05/07/16 05:18 PM, Sean Conner wrote:
It was thus said that the Great Soni L. once stated:
As you may or may not know by now, regex can do basic arithmetic, with
unary integers.[1] Can LPeg do better, say with binary integers, or
binary floats, or even full-blown decimal?
   Yup.  You can do the regex approach with a substitution capture
(lpeg.Cs()) or even a full blown calculator (there's an example on the LPeg
web page).
Too bad it's not pure LPeg, instead deferring to a Lua function for it.
   What?  Is not lpeg.Cf() LPeg, just because it accepts a Lua function as a
parameter?  So,

	lpeg.R"09" / { ['o'] = 0 , ['1'] = 1 , ['2'] = 2 ... }

is fine, but not?

	lpeg.R"09" / tonumber

   If LPeg allows it, it's LPeg.

   But okay, fine!  If you restrict the domain to single digits, then:

	  lpeg.P"0+0" * lpeg.Cc(0)
	+ lpeg.P"0+1" * lpeg.Cc(1)
	+ lpeg.P"0+2" * lpeg.Cc(2)
	+ lpeg.P"0+3" * lpeg.Cc(3)
	... and so on.  Go crazy with this.

   -spc (Stop moving the goal posts!)




The goal is to never run Lua code for it. Perl regex can run Perl code, but the linked math-with-regex thingy doesn't use that and that's the whole point. If someone ports LPeg to a different programming language, a LPeg that calls Lua code will stop working.

Also, if this was a codegolf or programming puzzle and you weren't allowed to use the language's built-in addition subtraction etc, you could do it with regex instead.

--
Disclaimer: these emails may be made public at any given time, with or without reason. If you don't agree with this, DO NOT REPLY.