leex extended regexp {m,n} quantifiers

"Suraj N. Kurapati" <[email protected]> Wed, 21 Oct 2015 14:48:44 -0700
Newsgroups gmane.comp.lang.erlang.bugs
Message-ID <20151021144844.19ba4af7@yantram>
Hello,

I'm using Erlang/OTP 18.1 ([erts-7.1] [source] [64-bit] [smp:24:24]
[async-threads:10] [hipe] [kernel-poll:false]) where I find that leex
does not honor extended regexp numerical repetition quantifiers [1].

For example, I'm trying to recognize exactly 11, 10, or 7 uppercase
alphanumeric characters as a product_id in a leex rule, as follows:

[A-Z0-9]{11}|[A-Z0-9]{10}|[A-Z0-9]{7}
           : {token, {product_id, TokenLine, TokenChars}}.

However, that didn't work, so I tried using AWK syntax [2] exactly:

[A-Z0-9]\{11\}|[A-Z0-9]\{10\}|[A-Z0-9]\{7\}
           : {token, {product_id, TokenLine, TokenChars}}.

However, that didn't work either, so I was forced to expand it out:

[A-Z0-9][A-Z0-9][A-Z0-9][A-Z0-9][A-Z0-9][A-Z0-9][A-Z0-9][A-Z0-9][A-Z0-9][A-Z0-9][A-Z0-9]|[A-Z0-9][A-Z0-9][A-Z0-9][A-Z0-9][A-Z0-9][A-Z0-9][A-Z0-9][A-Z0-9][A-Z0-9][A-Z0-9]|[A-Z0-9][A-Z0-9][A-Z0-9][A-Z0-9][A-Z0-9][A-Z0-9][A-Z0-9]
           : {token, {product_id, TokenLine, TokenChars}}.

This is a giant step backwards in terms of regexp readability and
maintainability, so please make leex honor the extended regexp
numerical repetition quantifiers [1] since AWK supports them [2].

Furthermore, it seems that this work had already been started [3]
but, for reasons unknown to me, was commented-out in the code [4].

Thanks for your consideration.

[1] http://pubs.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap09.html#tag_09_03_06
[2] http://pubs.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap09.html#tag_09_04
[3] https://github.com/erlang/otp/blob/maint/lib/parsetools/src/leex.erl#L138
[4] https://github.com/erlang/otp/blob/maint/lib/parsetools/src/leex.erl#L692-L700

_______________________________________________
erlang-bugs mailing list
[email protected]
http://erlang.org/mailman/listinfo/erlang-bugs
signature.asc (application/pgp-signature, 949 B)
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1

iQJ8BAEBCgBmBQJWKAg8XxSAAAAAAC4AKGlzc3Vlci1mcHJAbm90YXRpb25zLm9w
ZW5wZ3AuZmlmdGhob3JzZW1hbi5uZXRDNTg1Njg2MEJFREM3QTA1MDlFMUE2RDZG
M0RFMTBGQkU5MzAzN0UyAAoJEPPeEPvpMDfi1HEQANYk7D/dALvsKBcXnGTSfGY8
R8xula4TvMbwz7qAi/fuw6vyNHLDxogs5/v9Fn4JzbaXJV9fpQbiQaopL2zjIYwQ
OAoKExaBZMQHTXe7/hAULOJIhEULiNtWHMVRYb2FzO0L/JZ0mycc8GuWT9nGe7o3
fLMdFSOLi4B6+WBMzVbGbrmhRmM7PWkXf4UoCXdGBB0uMJQOThSSsfTB1hbRSgmN
R2TWpnymzYWi+l8oz31Dry5IW4paC1QHbY3htUvd5Fz3+/kFWDAdYX/blz9jBoJE
fuRrcy7R4bwqz8E9zcyQ5BFifmnYoSSFckG+euegfeHK+8ztlqbTnNGP1A1AfcWy
DO+Jc8Sk151gvU3IB4EoXrnAOcUlp+be4AWNqVl6ZoVkj77wedOvkaYpaoLC51aj
b0fhYRynut6WLouj3d1G3+8OZyeL0n+ir10Luccf8BrRvkmxLn78aHGenrydfDrh
xOvB553LlpoTBVPkzF2vJcJl6Gw1EoR1T6FB4SDL75aj8A4m580arzzewxHKvEdg
STlCPwyKQ0RAhOhHK0KNMzEsxZR5+3g6xz1/c3deYnjuqjpbrQ5iVT7FwZnJccJK
DJ14lVc55fYe1KSOunytiQvZS/KiNPwADZ1Uy+NOMq2xlZGkuaJ5GWA4hyXuZeKq
Fg2s7+iVswPyL8K3JAd9
=RJP6
-----END PGP SIGNATURE-----