{- This file is part of language-kort. - - Written in 2015 by fr33domlover . - - ♡ Copying is an act of love. Please copy, reuse and share. - - The author(s) have dedicated all copyright and related and neighboring - rights to this software to the public domain worldwide. This software is - distributed without any warranty. - - You should have received a copy of the CC0 Public Domain Dedication along - with this software. If not, see - . -} module Input where import qualified Data.ByteString.Char8 as BSC import qualified Data.Smaoin as S import qualified Data.Smaoin.Vocabulary.Smaoin as VS import Language.Kort -- Possible judgements of parser about a Kort line data Status = Clean | NotTwo | HasGen | NotRes | InvVal | Drop deriving (Eq, Show) -- Kort lines, expected parser judgements and whether they have no generators type Record = (Line, Status, Bool) input :: [Record] input = [ (cmnt "Top comment", Drop, True) {- -- 0 elements - invalid in Kort, must have at least 1 -- clean , (stmt (u "i0.1") (u "r0.1") [], NotTwo, True) -- hasgen , (stmt (lg "l1") (u "r0.2") [], NotTwo, False) , (stmt (u "i0.3") ug [], NotTwo, False) , (stmt ug (lg "l2") [], NotTwo, False) -} -- 1 element -- clean , (stmt (u "i1.1") (u "r1.1") [ru "a1.1"], NotTwo, True) -- hasgen , (stmt (u "i1.2") (lg "l2") [rug], NotTwo, False) , (stmt ug (u "r1.3") [rlg "l1"], NotTwo, False) , (stmt (lg "l3") ug [rug], NotTwo, False) , (stmt ug (lg "l4") [ru "a1.5"], NotTwo, False) -- notres , (stmt (u "i1.6") (u "r1.6") [vu "v" "t1.6"], NotTwo, True) -- hasgen, notres , (stmt (u "i1.7") (lg "l2") [vu "v" "t1.7"], NotTwo, False) , (stmt ug (u "r1.8") [vlg "v" "l1"], NotTwo, False) , (stmt (lg "l3") ug [vug "v"], NotTwo, False) , (stmt ug (lg "l4") [vu "v" "t1.A"], NotTwo, False) -- notres, invval , (stmt (u "i1.B") (u "r1.B") [vbool "c"], NotTwo, True) , (stmt (u "i1.C") (u "r1.C") [vchar "xy"], NotTwo, True) , (stmt (u "i1.D") (u "r1.D") [vstr "\\x"], NotTwo, True) , (stmt (u "i1.E") (u "r1.E") [vnum "A/+"], NotTwo, True) , (stmt (u "i1.F") (u "r1.F") [vdata "[x]"], NotTwo, True) -- hasgen, notres, invval , (stmt (u "i1.G") (lg "l2") [vbool "A/+"], NotTwo, False) , (stmt ug (u "r1.H") [vchar "[+]"], NotTwo, False) , (stmt (lg "l3") ug [vstr "\\x"], NotTwo, False) , (stmt ug (lg "l4") [vnum "xyz"], NotTwo, False) , (stmt ug ug [vdata "-5/7"], NotTwo, False) , (cmnt "Middle\ncomment", Drop, True) -- 2 elements -- clean , (stmt (u "i2.1") (u "r2.1") [ru "a2.1", ru "b2.1"], Clean, True) , (stmt (u "i2.2") (u "r2.2") [ru "a2.2", vbool "[_]"], Clean, True) , (stmt (u "i2.3") (u "r2.3") [ru "a2.3", vchar "\\xa"], Clean, True) , (stmt (u "i2.4") (u "r2.4") [ru "a2.4", vstr "x\\xaz"], Clean, True) , (stmt (u "i2.5") (u "r2.5") [ru "a2.5", vnum "4$-6"], Clean, True) , (stmt (u "i2.6") (u "r2.6") [ru "a2.6", vdata "Ab+5"], Clean, True) , (stmt (u "i2.7") (u "r2.7") [ru "a2.7", vu "v" "s2.2"], Clean, True) -- hasgen , (stmt (u "i2.8") (lg "l4") [ru "a2.8", ru "b2.8"], HasGen, False) , (stmt ug (u "r2.9") [ru "a2.9", vbool "[_]"], HasGen, False) , (stmt (u "i2.A") ug [ru "a2.A", vchar "\\xA"], HasGen, False) , (stmt ug (lg "l2") [ru "a2.B", vstr "x\\xAz"], HasGen, False) , (stmt (lg "l3") ug [ru "a2.C", vnum "4$-6"], HasGen, False) , (stmt ug (u "r2.D") [ru "a2.D", vdata "Ab+5"], HasGen, False) , (stmt (u "i2.E") (u "r2.E") [rug, vu "v" "s2.E"], HasGen, False) , (stmt (u "i2.F") (lg "l2") [rug, vu "v" "s2.F"], HasGen, False) , (stmt ug (u "r2.G") [rlg "l1", ru "b2.G"], HasGen, False) , (stmt (lg "l3") ug [ru "a2.H", rug], HasGen, False) , (stmt ug (lg "l4") [rlg "l5", ru "a2.I"], HasGen, False) , (stmt (u "i2.J") (lg "l2") [ru "a2.J", rug], HasGen, False) , (stmt ug (u "r2.K") [ru "a2.J", rlg "l1"], HasGen, False) , (stmt (lg "l3") ug [rlg "a2.L", rug], HasGen, False) , (stmt ug (lg "l4") [ru "a2.M", rlg "l4"], HasGen, False) , (stmt (u "i2.N") (lg "l2") [ru "a2.N", vug "l5"], HasGen, False) , (stmt ug (u "r2.O") [ru "a2.O", vlg "v" "l1"], HasGen, False) , (stmt (lg "l3") ug [rlg "a2.P", vug "l2"], HasGen, False) , (stmt ug (lg "l4") [ru "a2.Q", vlg "v" "l4"], HasGen, False) -- notres , (stmt (u "i2.R") (u "r2.R") [vu "v" "t2.R", ru "b2.R"], NotRes, True) , (stmt (u "i2.S") (u "r2.S") [vu "v" "t2.S", vbool "?"], NotRes, True) , (stmt (u "i2.T") (u "r2.T") [vnum "x", vdata "A"], NotRes, True) , (stmt (u "i2.U") (u "r2.U") [vchar "v", ru "b2.U"], NotRes, True) -- invval , (stmt (u "i2.V") (u "r2.V") [ru "a2.V", vbool "x\\xAz"], InvVal, True) , (stmt (u "i2.W") (u "r2.W") [ru "a2.W", vchar "4$-6"], InvVal, True) , (stmt (u "i2.X") (u "r2.X") [ru "a2.X", vstr "x\\x"], InvVal, True) , (stmt (u "i2.Y") (u "r2.Y") [ru "a2.Y", vnum "[_]"], InvVal, True) , (stmt (u "i2.Z") (u "r2.Z") [ru "a2.Z", vdata "%"], InvVal, True) -- hasgen, notres , (stmt (u "i2.a") (lg "l2") [vu "v" "t2.a", rug], HasGen, False) , (stmt ug (u "r2.b") [vlg "v" "l1", ru "b2.b"], HasGen, False) , (stmt (lg "l3") ug [vug "v", vchar "a"], HasGen, False) , (stmt ug (lg "l4") [vu "v" "t2.d", rlg "l1"], HasGen, False) -- notres, invval , (stmt (u "i2.e") (u "r2.e") [vbool "c", ru "a2.e"], NotRes, True) , (stmt (u "i2.f") (u "r2.f") [vchar "xy", vu "v" "s2.e"], NotRes, True) , (stmt (u "i2.g") (u "r2.g") [vstr "\\x", vu "v" "s2.g"], NotRes, True) , (stmt (u "i2.h") (u "r2.h") [vnum "A/+", ru "a2.h"], NotRes, True) , (stmt (u "i2.i") (u "r2.i") [vdata "[x]", vu "v" "s2.i"], NotRes, True) , (stmt (u "i2.j") (u "r2.j") [vbool "[x]", vchar "xy"], NotRes, True) , (stmt (u "i2.k") (u "r2.k") [vchar "x", vstr "\\x"], NotRes, True) , (stmt (u "i2.l") (u "r2.l") [vstr "xy", vnum "A/+"], NotRes, True) , (stmt (u "i2.m") (u "r2.m") [vnum "0xA", vdata "[x]"], NotRes, True) , (stmt (u "i2.n") (u "r2.n") [vdata "/4z", vbool "c"], NotRes, True) -- hasgen, notres, invval , (stmt (u "i2.o") (lg "l2") [vbool "A/+", rug], HasGen, False) , (stmt ug (u "r.p") [vchar "[+]", vlg "v" "l6"], HasGen, False) , (stmt (lg "l3") ug [vstr "\\x", vu "v" "s2.q"], HasGen, False) , (stmt ug (lg "l4") [vnum "xyz", vug "v"], HasGen, False) , (stmt ug ug [vdata "-5/7", rlg "l6"], HasGen, False) , (stmt (u "i2.t") (u "r2.t") [vbool "A/+", rug], HasGen, False) , (stmt (u "i2.u") (u "r2.u") [vchar "[+]", vlg "v" "l6"], HasGen, False) , (stmt (lg "l3") ug [vstr "\\x", vu "v" "s2.v"], HasGen, False) , (stmt (u "i2.w") (u "r2.w") [vnum "xyz", vug "v"], HasGen, False) , (stmt (u "i2.x") (u "r2.x") [vdata "-5/7", rlg "l6"], HasGen, False) -- 3+ elements , (stmt (u "i3.1") (u "r3.1") [ru"a3.1",ru"b3.1",ru"c3.1"], NotTwo, True) , (stmt (u "i3.2") (u "r3.2") [ru"a3.2",ru"b3.2",rlg"l4"], NotTwo, False) , (stmt (u "i3.3") (lg "l6") [ru"a3.3",ru"b3.3",ru"c3.3"], NotTwo, False) , (stmt (u "i3.4") (u "r3.4") [vbool"5",ru"b3.4",ru"c3.4"], NotTwo, True) , (stmt (u "i3.5") (u "r3.5") [ru"a3.5",vnum"a",ru"c3.5"], NotTwo, True) , (stmt (u "i3.6") (u "r3.6") [vdata"$",ru"b3.6",vchar"xy"], NotTwo, True) , (stmt (u "i3.7") (u "r3.7") (replicate 10 (ru "x3.7")), NotTwo, True) , (stmt (u "i3.8") (u "r3.8") (replicate 10 (vug "v")), NotTwo, False) , (stmt (u "i3.9") (u "r3.9") (replicate 10 (vchar "v")), NotTwo, True) , (stmt (u "i3.A") ug (replicate 10 (vchar "vw")), NotTwo, False) , (cmnt "Bottom\rcomment", Drop, True) ] where cmnt = Left stmt i r e = Right $ Statement i r e ru = Resource . Uid lg = LGenerator ug = UGenerator u = Uid rlg = Resource . LGenerator rug = Resource UGenerator vu v t = Value v (Uid t) vlg v l = Value v (LGenerator l) vug v = Value v UGenerator from (S.Resource r) = Uid $ BSC.unpack r vbool v = Value v $ from VS._Boolean vchar v = Value v $ from VS._Character vstr v = Value v $ from VS._String vnum v = Value v $ from VS._Number vdata v = Value v $ from VS._Data