]> Repositorios git - scryer-prolog.git/commitdiff
Replaced raw_chars//1 in library(pio) with seq//1 in library(dcgs).
authorpanasenco <[email protected]>
Sun, 25 Apr 2021 21:53:37 +0000 (14:53 -0700)
committerpanasenco <[email protected]>
Sun, 25 Apr 2021 21:53:37 +0000 (14:53 -0700)
src/lib/dcgs.pl
src/lib/pio.pl
src/tests/json/test_json.pl

index 07b82b951188d0cb8f617dedbb5f74e90a90a6ad..e1751d8c852cb8bbbb81a2b50c8dcf0647e2417a 100644 (file)
@@ -1,7 +1,9 @@
 :- module(dcgs,
           [op(1105, xfy, '|'),
                   phrase/2,
-                  phrase/3]).
+                  phrase/3,
+                   seq//1,
+                   seqq//1]).
 
 :- use_module(library(error)).
 :- use_module(library(lists), [append/3]).
@@ -178,3 +180,11 @@ user:term_expansion(Term0, Term) :-
     nonvar(Term0),
     dcg_rule(Term0, (Head :- Body)),
     Term = (Head :- Body).
+
+% Describes a sequence
+seq([]) --> [].
+seq([E|Es]) --> [E], seq(Es).
+
+% Describes a sequence of sequences
+seqq([]) --> [].
+seqq([Es|Ess]) --> seq(Es), seqq(Ess).
index 9e57dabe85f93ffc6898bcd78064e65386afb5e0..1df9a796e50a6998ebcc06feacb26e465f2f1465 100644 (file)
@@ -1,6 +1,5 @@
 :- module(pio, [phrase_from_file/2,
-                phrase_from_file/3,
-                raw_chars//1]).
+                phrase_from_file/3]).
 
 :- use_module(library(dcgs)).
 :- use_module(library(error)).
@@ -44,15 +43,3 @@ reader_step(Stream, Pos, Xs0) :-
             partial_string(Cs, Xs0, Xs),
             stream_to_lazy_list(Stream, Xs)
         ).
-
-/*  Relate a character list to itself greedily - for reading raw file contents using `phrase_from_file/2`
-    A quick benchmark:
-    Greedy (recurse first):
-    ?- time(phrase_from_file(raw_chars(_), '/mnt/544KB.json')).
-       % CPU time: 22.471 seconds   
-    Generous (empty list first):
-    ?- time(phrase_from_file(raw_chars(_), '/mnt/544KB.json')).
-       % CPU time: 44.119 seconds
-*/
-raw_chars([C|Cs]) --> [C], raw_chars(Cs).
-raw_chars([]) --> [].
index e03a3cfdcab2e068ff9cf1c8fbd0a3e49cfc96c9..e41688ca6a0872bb28a48ee5547bbdf1afe5149b 100644 (file)
@@ -42,7 +42,7 @@ minify_sample_json :-
 
 test_json_minify :-
     test_path("pass_everything.min.json", MinPath),
-    once(phrase_from_file(raw_chars(RefChars), MinPath)),
+    once(phrase_from_file(seq(RefChars), MinPath)),
     name_parse("pass_everything.json", Json),
     time(once(phrase(json_chars(Json), MinChars))),
     RefChars = MinChars.