1 | module Text.ILex.Internal.Runner
3 | import Data.Array.Index
5 | import Data.Buffer.Core
6 | import Data.Buffer.Indexed
7 | import Data.ByteString
8 | import Data.Linear.Ref1
10 | import Data.Nat.BSExtra
13 | import Text.ParseError
15 | import Text.ILex.Lexer
16 | import Text.ILex.RExp
21 | offsetToIx : (o : Nat) -> Ix s (o+s)
23 | offsetToIx (S k) = rewrite plusSuccRightSucc k s in IS (offsetToIx k)
30 | -> {auto ix : Ix till n}
31 | -> {auto 0 lte : LTE (ixToNat from) (ixToNat ix)}
33 | toBS buf from till =
34 | let bv := fromIBuffer buf
35 | in BS _ $
substringFromTill (ixToNat from) (ixToNat ix) {lt2 = ixLTE ix} bv
43 | -> {auto ix : Ix till n}
44 | -> {auto 0 lte : LTE (ixToNat from) (ixToNat ix)}
46 | toBSP (BS 0 _) buf from till = toBS buf from till
47 | toBSP prev buf from till =
48 | let bv := fromIBuffer buf
49 | bs := BS _ $
substringFromTill (ixToNat from) (ixToNat ix) {lt2 = ixLTE ix} bv