tricu

An interpreted language for exploring Tree Calculus
Log | Files | Refs | README | LICENSE

lexer-demo.json (12866B)


      1 {
      2   "id": "lexer",
      3   "source": "!import 6aa33a710955e5746f322775b9078f57ba4145f6b723ff4b76a292285e919823 *\n!import 14282088469cc420dd014700da06998f6bb8dcf990fc885a464c0a1e1858e20d *\n!import 816df1a32853750a1254112aff8ae8c55ca86bf70e809d226969ab1d43a6688b *\n!import 7f87549d587fa8c3be88af0ea988db3adcc3b35f1ffb48973553491b075614db as N\n!export scanWord\n!export scanWhitespace\n\n-- Positioned prefix scans, not whole-input parsers. The remainder begins\n-- at the first nonmatching character. Positions count source characters,\n-- not UTF-8 bytes or display columns: only LF advances the line.\n-- Edit a predicate below and evaluate scanWord \"hello,world\" to compare.\n-- scanWhitespace accepts space, LF and tab, but deliberately not CR.\nreport reply = (let\n  payload = parserReplyPayload reply\n  end = snd payload\n  in [\n    [\"matched\" 0 (fst payload)]\n    [\"remaining\" 0 (parserReplyRest reply)]\n    [\"line\" 1 (lexerPositionLine end)]\n    [\"column\" 1 (lexerPositionColumn end)]\n    [\"offset\" 1 (lexerPositionOffset end)]\n    [\"consumed\" 2 (parserReplyConsumed reply)]])\n\nscan predicate text = report (lexerMapScan reverse\n  (lexerScanWhile text lexerStart [] predicate (state character : pair character state)))\nscanWord text = scan (character : N.inRange character 97 122) text\nscanWhitespace text = scan (character : or? (equal? character 32)\n  (or? (equal? character 9) (equal? character 10))) text\n",
      4   "hash": "e756a481b3056a2e76f50316ccf77bfab8b15727b7bec899580c2eb919e668b2",
      5   "mode": "pure",
      6   "compilerSha256": "d70de875988dfa309f2c167992928866f88b08af351918b8c7b5d88c541c6e94",
      7   "sourceSha256": "ec68af4102c16ef56be01e78a3288bea57af71ca57ab35374a0d12005b5a10a1",
      8   "haskellCases": [
      9     {
     10       "export": "scanWord",
     11       "arguments": [
     12         "220202021020210210022102021020202102100220202102102021021002202021021020210210022102102102102021021002202021021020210022102102102021021021002210210210210202102100220210202021021021002202021021020210210022020210202021021000"
     13       ],
     14       "input": null,
     15       "terminal": "",
     16       "result": "222210202102102021021002210202020202102100220202102021021021002210210202020210210022020202102021021002210202102020210210022020210202021021000202220202021020210210022102021020202102100220202102102021021002202021021020210210022102102102102021021000022220210202021021021002210202102020210210022102021021020210210022102020202021021002210202021020210210022021021021020210210022102020210202102100220210210210202102100221021021020202102100020222020210210202100221021021020210210210022102102102102021021002202102020210210210022020210210202102100220202102020210210000222202021021020210210022102020210202102100220210210210202102100221020210202021021000221002210002222102102020202102100221021021021020210210022020210210202102100221020210202102102100221020210210202102100220210210210202102100022100220210210002222102102102102021021002202102102020210210022021021020202102100221021020202102102100221020210202021021002202021020210210210002210022102021000222210210202020210210022102102102102021021002202102102102021021002210210202021021021002210202102021021021002210202102102021021002210202102020210210022020210202021021000220210021000",
     17       "record": {
     18         "matched": "hello",
     19         "remaining": ",world",
     20         "line": 1,
     21         "column": 6,
     22         "offset": 5,
     23         "consumed": true
     24       }
     25     },
     26     {
     27       "export": "scanWord",
     28       "arguments": [
     29         "0"
     30       ],
     31       "input": null,
     32       "terminal": "",
     33       "result": "22221020210210202102100221020202020210210022020210202102102100221021020202021021002202020210202102100221020210202021021002202021020202102100020200222202102020210210210022102021020202102100221020210210202102100221020202020210210022102020210202102100220210210210202102100221020202102021021002202102102102021021002210210210202021021000202002222020210210202102100221020202102021021002202102102102021021002210202102020210210002210022100022221021020202021021002210210210210202102100220202102102021021002210202102021021021002210202102102021021002202102102102021021000221002210002222102102102102021021002202102102020210210022021021020202102100221021020202102102100221020210202021021002202021020210210210002210020022221021020202021021002210210210210202102100220210210210202102100221021020202102102100221020210202102102100221020210210202102100221020210202021021002202021020202102100022021002000",
     34       "record": {
     35         "matched": "",
     36         "remaining": "",
     37         "line": 1,
     38         "column": 1,
     39         "offset": 0,
     40         "consumed": false
     41       }
     42     },
     43     {
     44       "export": "scanWord",
     45       "arguments": [
     46         "22020202102020210022102021020202102100220202102102021021002202021021020210210022102102102102021021000"
     47       ],
     48       "input": null,
     49       "terminal": "",
     50       "result": "222210202102102021021002210202020202102100220202102021021021002210210202020210210022020202102021021002210202102020210210022020210202021021000202002222021020202102102100221020210202021021002210202102102021021002210202020202102100221020202102021021002202102102102021021002210202021020210210022021021021020210210022102102102020210210002022202020210202021002210202102020210210022020210210202102100220202102102021021002210210210210202102100002222020210210202102100221020202102021021002202102102102021021002210202102020210210002210022100022221021020202021021002210210210210202102100220202102102021021002210202102021021021002210202102102021021002202102102102021021000221002210002222102102102102021021002202102102020210210022021021020202102100221021020202102102100221020210202021021002202021020210210210002210020022221021020202021021002210210210210202102100220210210210202102100221021020202102102100221020210202102102100221020210210202102100221020210202021021002202021020202102100022021002000",
     51       "record": {
     52         "matched": "",
     53         "remaining": "Hello",
     54         "line": 1,
     55         "column": 1,
     56         "offset": 0,
     57         "consumed": false
     58       }
     59     },
     60     {
     61       "export": "scanWord",
     62       "arguments": [
     63         "2210202020202102100220210202020210210022102102020202102100221020202102021021021000"
     64       ],
     65       "input": null,
     66       "terminal": "",
     67       "result": "2222102021021020210210022102020202021021002202021020210210210022102102020202102100220202021020210210022102021020202102100220202102020210210002022210202020202102100220210202020210210022102102020202102100002222021020202102102100221020210202021021002210202102102021021002210202020202102100221020202102021021002202102102102021021002210202021020210210022021021021020210210022102102102020210210002022210202021020210210210000222202021021020210210022102020210202102100220210210210202102100221020210202021021000221002210002222102102020202102100221021021021020210210022020210210202102100221020210202102102100221020210210202102100220210210210202102100022100220202100022221021021021020210210022021021020202102100220210210202021021002210210202021021021002210202102020210210022020210202102102100022100221021000222210210202020210210022102102102102021021002202102102102021021002210210202021021021002210202102021021021002210202102102021021002210202102020210210022020210202021021000220210021000",
     68       "record": {
     69         "matched": "abc",
     70         "remaining": "\u00e9",
     71         "line": 1,
     72         "column": 4,
     73         "offset": 3,
     74         "consumed": true
     75       }
     76     },
     77     {
     78       "export": "scanWhitespace",
     79       "arguments": [
     80         "220202020202100220210202100221020202100221021021020210210210022102102102102021021002202102020210210210022020210202021021000"
     81       ],
     82       "input": null,
     83       "terminal": "",
     84       "result": "222210202102102021021002210202020202102100220202102021021021002210210202020210210022020202102021021002210202102020210210022020210202021021000202220202020202100220210202100221020202100002222021020202102102100221020210202021021002210202102102021021002210202020202102100221020202102021021002202102102102021021002210202021020210210022021021021020210210022102102102020210210002022210210210202102102100221021021021020210210022021020202102102100220202102020210210000222202021021020210210022102020210202102100220210210210202102100221020210202021021000221002202100022221021020202021021002210210210210202102100220202102102021021002210202102021021021002210202102102021021002202102102102021021000221002202100022221021021021020210210022021021020202102100220210210202021021002210210202021021021002210202102020210210022020210202102102100022100221021000222210210202020210210022102102102102021021002202102102102021021002210210202021021021002210202102021021021002210202102102021021002210202102020210210022020210202021021000220210021000",
     85       "record": {
     86         "matched": " \n\t",
     87         "remaining": "word",
     88         "line": 2,
     89         "column": 2,
     90         "offset": 3,
     91         "consumed": true
     92       }
     93     },
     94     {
     95       "export": "scanWhitespace",
     96       "arguments": [
     97         "2202102021002202102021002210202102020210210022021021021020210210022020210202021021000"
     98       ],
     99       "input": null,
    100       "terminal": "",
    101       "result": "22221020210210202102100221020202020210210022020210202102102100221021020202021021002202020210202102100221020210202021021002202021020202102100020222021020210022021020210000222202102020210210210022102021020202102100221020210210202102100221020202020210210022102020210202102100220210210210202102100221020202102021021002202102102102021021002210210210202021021000202221020210202021021002202102102102021021002202021020202102100002222020210210202102100221020202102021021002202102102102021021002210202102020210210002210022102100022221021020202021021002210210210210202102100220202102102021021002210202102021021021002210202102102021021002202102102102021021000221002210002222102102102102021021002202102102020210210022021021020202102100221021020202102102100221020210202021021002202021020210210210002210022021000222210210202020210210022102102102102021021002202102102102021021002210210202021021021002210202102021021021002210202102102021021002210202102020210210022020210202021021000220210021000",
    102       "record": {
    103         "matched": "\n\n",
    104         "remaining": "end",
    105         "line": 3,
    106         "column": 1,
    107         "offset": 2,
    108         "consumed": true
    109       }
    110     },
    111     {
    112       "export": "scanWhitespace",
    113       "arguments": [
    114         "2210202102100220210202100221021021020210210210022102102102102021021002202102020210210210022020210202021021000"
    115       ],
    116       "input": null,
    117       "terminal": "",
    118       "result": "22221020210210202102100221020202020210210022020210202102102100221021020202021021002202020210202102100221020210202021021002202021020202102100020200222202102020210210210022102021020202102100221020210210202102100221020202020210210022102020210202102100220210210210202102100221020202102021021002202102102102021021002210210210202021021000202221020210210022021020210022102102102021021021002210210210210202102100220210202021021021002202021020202102100002222020210210202102100221020202102021021002202102102102021021002210202102020210210002210022100022221021020202021021002210210210210202102100220202102102021021002210202102021021021002210202102102021021002202102102102021021000221002210002222102102102102021021002202102102020210210022021021020202102100221021020202102102100221020210202021021002202021020210210210002210020022221021020202021021002210210210210202102100220210210210202102100221021020202102102100221020210202102102100221020210210202102100221020210202021021002202021020202102100022021002000",
    119       "record": {
    120         "matched": "",
    121         "remaining": "\r\nword",
    122         "line": 1,
    123         "column": 1,
    124         "offset": 0,
    125         "consumed": false
    126       }
    127     },
    128     {
    129       "export": "scanWhitespace",
    130       "arguments": [
    131         "221020202102021021021000"
    132       ],
    133       "input": null,
    134       "terminal": "",
    135       "result": "2222102021021020210210022102020202021021002202021020210210210022102102020202102100220202021020210210022102021020202102100220202102020210210002020022220210202021021021002210202102020210210022102021021020210210022102020202021021002210202021020210210022021021021020210210022102020210202102100220210210210202102100221021021020202102100020222102020210202102102100002222020210210202102100221020202102021021002202102102102021021002210202102020210210002210022100022221021020202021021002210210210210202102100220202102102021021002210202102021021021002210202102102021021002202102102102021021000221002210002222102102102102021021002202102102020210210022021021020202102100221021020202102102100221020210202021021002202021020210210210002210020022221021020202021021002210210210210202102100220210210210202102100221021020202102102100221020210202102102100221020210210202102100221020210202021021002202021020202102100022021002000",
    136       "record": {
    137         "matched": "",
    138         "remaining": "\u00e9",
    139         "line": 1,
    140         "column": 1,
    141         "offset": 0,
    142         "consumed": false
    143       }
    144     }
    145   ]
    146 }