File: 01_basic_s.hs

package info (click to toggle)
re2c 4.1-1
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 50,052 kB
  • sloc: cpp: 32,477; ml: 8,279; sh: 5,265; makefile: 968; haskell: 612; python: 428; ansic: 227; javascript: 111; java: 3
file content (44 lines) | stat: -rw-r--r-- 954 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
-- Generated by re2hs
-- re2hs $INPUT -o $OUTPUT -is --api custom
{-# LANGUAGE OverloadedStrings #-}

import Data.ByteString as BS


yy0 :: BS.ByteString -> Int -> Bool
yy0 _str _cur =
    let yych = BS.index _str _cur in
    let _cur' = _cur + 1 in let _cur = _cur' in
    if yych <= 0x30 then yy1 _str _cur
    else if yych <= 0x39 then yy2 _str _cur
    else yy1 _str _cur

yy1 :: BS.ByteString -> Int -> Bool
yy1 _str _cur =
    False

yy2 :: BS.ByteString -> Int -> Bool
yy2 _str _cur =
    let yych = BS.index _str _cur in
    if yych <= 0x2F then
        yy3 _str _cur
    else if yych <= 0x39 then
        let _cur' = _cur + 1 in let _cur = _cur' in
        yy2 _str _cur
    else
        yy3 _str _cur

yy3 :: BS.ByteString -> Int -> Bool
yy3 _str _cur =
    True

lexer :: BS.ByteString -> Int -> Bool
lexer _str _cur =
    yy0 _str _cur



main :: IO ()
main = case lexer "1234\0" 0 of
    True -> return ()
    False -> error "lexer failed!"