Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Magic chars in StringPattern character groups behaving incorrectly #4

Open
Fish013 opened this issue May 4, 2019 · 4 comments
Open
Labels
bug Something isn't working help wanted Extra attention is needed

Comments

@Fish013
Copy link

Fish013 commented May 4, 2019

string.match(tostring(0.5), "([^05+])") 

is giving a

Caused by: java.lang.IllegalArgumentException: error at character 6: unexpected character '+'
	at net.sandius.rembulan.lib.StringPattern$PatternBuilder.parseError(StringPattern.java:941)
	at net.sandius.rembulan.lib.StringPattern$PatternBuilder.CC_lit(StringPattern.java:1087)
	at net.sandius.rembulan.lib.StringPattern$PatternBuilder.characterSetElement(StringPattern.java:1017)
	at net.sandius.rembulan.lib.StringPattern$PatternBuilder.characterSetBody(StringPattern.java:1025)
	at net.sandius.rembulan.lib.StringPattern$PatternBuilder.cclass(StringPattern.java:1133)
	at net.sandius.rembulan.lib.StringPattern$PatternBuilder.PI_cc(StringPattern.java:1163)
	at net.sandius.rembulan.lib.StringPattern$PatternBuilder.PI(StringPattern.java:1186)
	at net.sandius.rembulan.lib.StringPattern$PatternBuilder.PI_capture(StringPattern.java:1196)
	at net.sandius.rembulan.lib.StringPattern$PatternBuilder.PI(StringPattern.java:1170)
	at net.sandius.rembulan.lib.StringPattern$PatternBuilder.parse(StringPattern.java:1218)
	at net.sandius.rembulan.lib.StringPattern$PatternBuilder.access$900(StringPattern.java:913)
	at net.sandius.rembulan.lib.StringPattern.fromString(StringPattern.java:1228)
	at net.sandius.rembulan.lib.StringPattern.fromString(StringPattern.java:1232)
	at net.sandius.rembulan.lib.StringLib$Match.invoke(StringLib.java:1699)
	at net.sandius.rembulan.lib.AbstractLibFunction.invoke(AbstractLibFunction.java:39)
	at net.sandius.rembulan.runtime.AbstractFunctionAnyArg.invoke(AbstractFunctionAnyArg.java:36)
	at net.sandius.rembulan.runtime.Dispatch.mt_invoke(Dispatch.java:70)
	at net.sandius.rembulan.runtime.Dispatch.call(Dispatch.java:236)

when it should execute successfully and handle the + char as it is in the character group.

See https://www.lua.org/manual/5.3/manual.html#6.4.1 in the section '[set]' where it is stated that

"All other characters [except '-' and escaped character classes] in set represent themselves"

@Fish013
Copy link
Author

Fish013 commented May 4, 2019

While making further tests on https://www.lua.org/cgi-bin/demo it seems even '-' does not need to be escaped if it forms no character range

@mkarneim
Copy link
Member

mkarneim commented May 5, 2019

Confirmed - this looks like a bug.

Here is a simplified reproducer that produces the same error: string.match("+" ,"[+]")

java.lang.IllegalArgumentException: error at character 2: unexpected character '+'
	at net.sandius.rembulan.lib.StringPattern$PatternBuilder.parseError(StringPattern.java:941)
	at net.sandius.rembulan.lib.StringPattern$PatternBuilder.CC_lit(StringPattern.java:1087)
	at net.sandius.rembulan.lib.StringPattern$PatternBuilder.characterSetElement(StringPattern.java:1017)
	at net.sandius.rembulan.lib.StringPattern$PatternBuilder.characterSetBody(StringPattern.java:1025)
	at net.sandius.rembulan.lib.StringPattern$PatternBuilder.cclass(StringPattern.java:1140)
	at net.sandius.rembulan.lib.StringPattern$PatternBuilder.PI_cc(StringPattern.java:1163)
	at net.sandius.rembulan.lib.StringPattern$PatternBuilder.PI(StringPattern.java:1186)
	at net.sandius.rembulan.lib.StringPattern$PatternBuilder.parse(StringPattern.java:1218)
	at net.sandius.rembulan.lib.StringPattern$PatternBuilder.access$0(StringPattern.java:1212)
	at net.sandius.rembulan.lib.StringPattern.fromString(StringPattern.java:1228)
	at net.sandius.rembulan.lib.StringPattern.fromString(StringPattern.java:1232)
	at net.sandius.rembulan.lib.StringLib$Match.invoke(StringLib.java:1699)
	at net.sandius.rembulan.lib.AbstractLibFunction.invoke(AbstractLibFunction.java:39)

mkarneim added a commit that referenced this issue May 5, 2019
@mkarneim mkarneim added bug Something isn't working help wanted Extra attention is needed labels May 5, 2019
@Adrodoc
Copy link
Member

Adrodoc commented May 5, 2019

Duplicate of mjanicek#17.

@Fish013
Copy link
Author

Fish013 commented May 5, 2019

maybe i should start by looking in the original repo, thx for the info

jupjohn added a commit to Lukkit/rembulan that referenced this issue May 22, 2020
Add unit test for wizards-of-lua#4 - Magic chars in StringPattern character groups behaving incorrectly
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

3 participants