{
-- Issue #141
-- reported 2015-10-20 by Iavor S. Diatchki
-- fixed 2020-01-31 by Andreas Abel
--
-- Problem was:
-- Only one-digit numbers were accepted in repetition ranges.

module Main (main) where

import System.Exit
}

%wrapper "posn"
%token   "Token"

:-

-- allow several digits in repetition ranges, e.g. 14
"a"{14,14}          { \ _ _ -> A }
[\ \n\t]+           ;

{
data Token = A
  deriving (Eq, Show)

                -- 12345678901234
input           = "aaaaaaaaaaaaaa\n"  -- fourteen a's
expected_result = [A]

main :: IO ()
main
  | result == expected_result = do
      exitWith ExitSuccess
  | otherwise = do
      print $ take 20 result
      exitFailure
  where
  result = alexScanTokens input
}