From dc52c60fb69d80e2c0afa76ce90dd459679d4a94 Mon Sep 17 00:00:00 2001 From: Andreas Abel Date: Sun, 23 Jan 2022 09:35:04 +0100 Subject: [PATCH] WIP #197: add rules to interpret number literals as character sequences --- src/Parser.y | 3 +++ tests/Makefile | 1 + tests/issue_197.x | 12 ++++++++++++ 3 files changed, 16 insertions(+) create mode 100644 tests/issue_197.x diff --git a/src/Parser.y b/src/Parser.y index bf627fa8..011d7eb7 100644 --- a/src/Parser.y +++ b/src/Parser.y @@ -188,6 +188,8 @@ rexp0 :: { RExp } : '(' ')' { Eps } | STRING { foldr (:%%) Eps (map (Ch . charSetSingleton) $1) } + | NUM { foldr (:%%) Eps + (map (Ch . charSetSingleton) (show $1)) } | RMAC {% lookupRMac $1 } | set { Ch $1 } | '(' rexp ')' { $2 } @@ -216,6 +218,7 @@ set0 :: { CharSet } sets :: { [CharSet] } : set sets { $1 : $2 } + | NUM sets { map charSetSingleton (show $1) ++ $2 } | {- empty -} { [] } smac :: { (AlexPosn,String) } diff --git a/tests/Makefile b/tests/Makefile index 4f9b7371..65eb2042 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -48,6 +48,7 @@ HS_PROG_EXT = .bin endif TESTS = \ + issue_197.x \ basic_typeclass.x \ basic_typeclass_bytestring.x \ default_typeclass.x \ diff --git a/tests/issue_197.x b/tests/issue_197.x new file mode 100644 index 00000000..d64c0e68 --- /dev/null +++ b/tests/issue_197.x @@ -0,0 +1,12 @@ +{} +%wrapper "basic" + +tokens :- + +(32|64|128)[x]? ; +1234 ; +[1234] 56 ; + +{ +main = return () +}