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-----