aboutsummaryrefslogtreecommitdiff
path: root/stdlib
diff options
context:
space:
mode:
authorEduardo Julian2022-06-14 21:28:23 -0400
committerEduardo Julian2022-06-14 21:28:23 -0400
commitda79da086a028a55130fbbbc5e08ed0ce736ff96 (patch)
tree3cca77c0271a65e29c5d8057d3837db3e330e359 /stdlib
parent3a81232c2367df2416f62f651259ff9297abc7d4 (diff)
New "parser" hierarchy. [Part 2]
Diffstat (limited to 'stdlib')
-rw-r--r--stdlib/source/format/lux/data/binary.lux55
-rw-r--r--stdlib/source/library/lux/data/format/tar.lux8
-rw-r--r--stdlib/source/library/lux/extension.lux7
-rw-r--r--stdlib/source/library/lux/tool/compiler.lux10
-rw-r--r--stdlib/source/library/lux/tool/compiler/language/lux.lux8
-rw-r--r--stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/directive/jvm.lux72
-rw-r--r--stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/common_lisp/common.lux8
-rw-r--r--stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/common_lisp/host.lux39
-rw-r--r--stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/js/common.lux8
-rw-r--r--stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/js/host.lux7
-rw-r--r--stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/jvm/common.lux10
-rw-r--r--stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/jvm/host.lux278
-rw-r--r--stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/lua/common.lux8
-rw-r--r--stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/lua/host.lux7
-rw-r--r--stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/php/common.lux8
-rw-r--r--stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/php/host.lux7
-rw-r--r--stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/python/common.lux8
-rw-r--r--stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/python/host.lux7
-rw-r--r--stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/r/common.lux8
-rw-r--r--stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/r/host.lux7
-rw-r--r--stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/ruby/common.lux8
-rw-r--r--stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/ruby/host.lux7
-rw-r--r--stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/scheme/common.lux8
-rw-r--r--stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/scheme/host.lux7
-rw-r--r--stdlib/source/library/lux/tool/compiler/meta/archive.lux10
-rw-r--r--stdlib/source/library/lux/tool/compiler/meta/archive/module/descriptor.lux8
-rw-r--r--stdlib/source/library/lux/tool/compiler/meta/archive/module/document.lux6
-rw-r--r--stdlib/source/library/lux/tool/compiler/meta/archive/registry.lux8
-rw-r--r--stdlib/source/library/lux/tool/compiler/meta/archive/signature.lux6
-rw-r--r--stdlib/source/library/lux/tool/compiler/meta/import.lux8
-rw-r--r--stdlib/source/library/lux/tool/compiler/meta/io/archive.lux8
-rw-r--r--stdlib/source/parser/lux/data/binary.lux (renamed from stdlib/source/library/lux/control/parser/binary.lux)4
-rw-r--r--stdlib/source/parser/lux/tool/compiler/language/lux/synthesis.lux (renamed from stdlib/source/library/lux/control/parser/synthesis.lux)7
-rw-r--r--stdlib/source/test/lux/control/parser.lux4
-rw-r--r--stdlib/source/test/lux/control/parser/binary.lux392
-rw-r--r--stdlib/source/test/lux/data/binary.lux376
-rw-r--r--stdlib/source/test/lux/data/format/tar.lux6
-rw-r--r--stdlib/source/test/lux/extension.lux20
-rw-r--r--stdlib/source/test/lux/tool.lux7
-rw-r--r--stdlib/source/test/lux/tool/compiler/language/lux/synthesis.lux (renamed from stdlib/source/test/lux/control/parser/synthesis.lux)129
-rw-r--r--stdlib/source/test/lux/tool/compiler/meta/archive/module/descriptor.lux7
-rw-r--r--stdlib/source/test/lux/tool/compiler/meta/archive/module/document.lux7
-rw-r--r--stdlib/source/test/lux/tool/compiler/meta/archive/registry.lux7
-rw-r--r--stdlib/source/test/lux/tool/compiler/meta/archive/signature.lux7
-rw-r--r--stdlib/source/test/lux/tool/compiler/meta/export.lux7
-rw-r--r--stdlib/source/test/lux/tool/compiler/meta/import.lux7
46 files changed, 801 insertions, 840 deletions
diff --git a/stdlib/source/format/lux/data/binary.lux b/stdlib/source/format/lux/data/binary.lux
index e29a737ce..a0b96a581 100644
--- a/stdlib/source/format/lux/data/binary.lux
+++ b/stdlib/source/format/lux/data/binary.lux
@@ -7,10 +7,9 @@
[monad (.only Monad do)]
[equivalence (.only Equivalence)]]
[control
+ ["<>" parser (.open: "[1]#[0]" monad)]
["[0]" pipe]
- ["[0]" function]
- ["<>" parser (.open: "[1]#[0]" monad)
- ["</>" binary (.only Offset Size Parser)]]]
+ ["[0]" function]]
[data
["[0]" product]
[text
@@ -30,8 +29,8 @@
["n" nat]
["[0]" i64]
["[0]" frac]]]]]
- [\\unsafe
- ["[0]" / (.only Binary)]])
+ ["[0]" \\unsafe (.only Binary)]
+ ["</>" \\parser (.only Offset Size Parser)])
(with_template [<name> <extension> <post>]
[(def: <name>
@@ -59,7 +58,7 @@
(def: .public (instance [size mutation])
(-> Specification Binary)
- (|> size /.empty [0] mutation product.right))
+ (|> size \\unsafe.empty [0] mutation product.right))
(def: .public monoid
(Monoid Specification)
@@ -87,10 +86,10 @@
[(n#+ <size> offset)
(<write> offset value binary)])]))]
- [bits_8 </>.size_8 /.has_8!]
- [bits_16 </>.size_16 /.has_16!]
- [bits_32 </>.size_32 /.has_32!]
- [bits_64 </>.size_64 /.has_64!]
+ [bits_8 </>.size_8 \\unsafe.has_8!]
+ [bits_16 </>.size_16 \\unsafe.has_16!]
+ [bits_32 </>.size_32 \\unsafe.has_32!]
+ [bits_64 </>.size_64 \\unsafe.has_64!]
)
(def: .public (or left right)
@@ -103,7 +102,7 @@
[(.++ caseS)
(function (_ [offset binary])
(|> binary
- (/.has_8! offset <number>)
+ (\\unsafe.has_8! offset <number>)
[(.++ offset)]
caseT))])])
([0 .#Left left]
@@ -146,30 +145,30 @@
[size
(function (_ [offset binary])
[(n#+ size offset)
- (/.copy! (n.min size (/.size value))
- 0
- value
- offset
- binary)])]))
+ (\\unsafe.copy! (n.min size (\\unsafe.size value))
+ 0
+ value
+ offset
+ binary)])]))
(with_template [<name> <bits> <size> <write>]
[(def: .public <name>
(Writer Binary)
(let [mask (..mask <size>)]
(function (_ value)
- (let [size (|> value /.size (i64.and mask))
+ (let [size (|> value \\unsafe.size (i64.and mask))
size' (n#+ <size> size)]
[size'
(function (_ [offset binary])
[(n#+ size' offset)
(|> binary
(<write> offset size)
- (/.copy! size 0 value (n#+ <size> offset)))])]))))]
+ (\\unsafe.copy! size 0 value (n#+ <size> offset)))])]))))]
- [binary_8 ..bits_8 </>.size_8 /.has_8!]
- [binary_16 ..bits_16 </>.size_16 /.has_16!]
- [binary_32 ..bits_32 </>.size_32 /.has_32!]
- [binary_64 ..bits_64 </>.size_64 /.has_64!]
+ [binary_8 ..bits_8 </>.size_8 \\unsafe.has_8!]
+ [binary_16 ..bits_16 </>.size_16 \\unsafe.has_16!]
+ [binary_32 ..bits_32 </>.size_32 \\unsafe.has_32!]
+ [binary_64 ..bits_64 </>.size_64 \\unsafe.has_64!]
)
(with_template [<name> <binary>]
@@ -209,10 +208,10 @@
[(n#+ <size> offset)]
mutation))])))]
- [sequence_8 </>.size_8 /.has_8!]
- [sequence_16 </>.size_16 /.has_16!]
- [sequence_32 </>.size_32 /.has_32!]
- [sequence_64 </>.size_64 /.has_64!]
+ [sequence_8 </>.size_8 \\unsafe.has_8!]
+ [sequence_16 </>.size_16 \\unsafe.has_16!]
+ [sequence_32 </>.size_32 \\unsafe.has_32!]
+ [sequence_64 </>.size_64 \\unsafe.has_64!]
)
(def: .public maybe
@@ -248,7 +247,7 @@
[(.++ caseS)
(function (_ [offset binary])
(|> binary
- (/.has_8! offset <number>)
+ (\\unsafe.has_8! offset <number>)
[(.++ offset)]
caseT))])])
([0 .#Primitive (..and ..text (..list again))]
@@ -282,7 +281,7 @@
[(.++ caseS)
(function (_ [offset binary])
(|> binary
- (/.has_8! offset <number>)
+ (\\unsafe.has_8! offset <number>)
[(.++ offset)]
caseT))])])
([0 .#Bit ..bit]
diff --git a/stdlib/source/library/lux/data/format/tar.lux b/stdlib/source/library/lux/data/format/tar.lux
index 29e03f5cd..1c75474cf 100644
--- a/stdlib/source/library/lux/data/format/tar.lux
+++ b/stdlib/source/library/lux/data/format/tar.lux
@@ -5,16 +5,16 @@
[abstract
[monad (.only do)]]
[control
+ ["<>" parser]
["[0]" pipe]
["[0]" try (.only Try)]
- ["[0]" exception (.only exception:)]
- ["<>" parser (.only)
- ["<[0]>" binary (.only Parser)]]]
+ ["[0]" exception (.only exception:)]]
[data
["[0]" product]
["[0]" binary (.only Binary)
["[1]!" \\unsafe]
- ["[0]" \\format (.only Writer) (.open: "[1]#[0]" monoid)]]
+ ["[0]" \\format (.only Writer) (.open: "[1]#[0]" monoid)]
+ ["<[1]>" \\parser (.only Parser)]]
["[0]" text (.only Char)
["%" \\format (.only format)]
[encoding
diff --git a/stdlib/source/library/lux/extension.lux b/stdlib/source/library/lux/extension.lux
index 51ca6a3d3..424cfcba8 100644
--- a/stdlib/source/library/lux/extension.lux
+++ b/stdlib/source/library/lux/extension.lux
@@ -5,8 +5,7 @@
["[0]" monad]]
[control
["<>" parser (.open: "[1]#[0]" monad)
- ["<c>" code (.only Parser)]
- ["<s>" synthesis]]]
+ ["<c>" code (.only Parser)]]]
[data
["[0]" product]
[collection
@@ -20,7 +19,9 @@
[language
[lux
[analysis
- ["<a>" \\parser]]]]]]]])
+ ["<a>" \\parser]]
+ [synthesis
+ ["<s>" \\parser]]]]]]]])
(type: Declaration
(Record
diff --git a/stdlib/source/library/lux/tool/compiler.lux b/stdlib/source/library/lux/tool/compiler.lux
index 7e1bfc2c3..2912dc635 100644
--- a/stdlib/source/library/lux/tool/compiler.lux
+++ b/stdlib/source/library/lux/tool/compiler.lux
@@ -2,14 +2,14 @@
[library
[lux (.except Module Code)
[control
+ ["<>" parser (.only)]
["[0]" try (.only Try)]
- ["[0]" exception (.only exception:)]
- ["<>" parser (.only)
- ["<[0]>" binary (.only Parser)]]]
+ ["[0]" exception (.only exception:)]]
[data
["[0]" text]
- [binary (.only Binary)
- [\\format (.only Writer)]]]
+ ["[0]" binary (.only Binary)
+ [\\format (.only Writer)]
+ ["<[1]>" \\parser (.only Parser)]]]
[world
["[0]" file (.only Path)]]]]
[/
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux.lux b/stdlib/source/library/lux/tool/compiler/language/lux.lux
index a5c8c9167..084348037 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux.lux
@@ -2,11 +2,11 @@
[library
[lux (.except)
[control
- ["<>" parser (.only)
- ["<[0]>" binary (.only Parser)]]]
+ ["<>" parser]]
[data
- [binary
- ["_" \\format (.only Writer)]]]
+ ["[0]" binary
+ ["_" \\format (.only Writer)]
+ ["<[1]>" \\parser (.only Parser)]]]
[meta
["[0]" version]]]]
["[0]" /
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/directive/jvm.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/directive/jvm.lux
index 957b2339d..41076ca66 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/directive/jvm.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/directive/jvm.lux
@@ -9,8 +9,7 @@
["[0]" try (.only Try) (.open: "[1]#[0]" functor)]
["[0]" exception]
["<>" parser (.open: "[1]#[0]" monad)
- ["<[0]>" code (.only Parser)]
- ["<[0]>" synthesis]]]
+ ["<[0]>" code (.only Parser)]]]
[data
["[0]" product]
[binary (.only Binary)
@@ -64,12 +63,13 @@
["[1]" artifact]]]]
[language
[lux
- ["[0]" synthesis (.only Synthesis)]
["[0]" generation]
["[0]" directive (.only Handler Bundle)]
["[0]" analysis (.only Analysis)
["[0]A" type]
["[0]A" scope]]
+ ["[0]" synthesis (.only Synthesis)
+ ["<[1]>" \\parser]]
[phase
[generation
[jvm
@@ -689,16 +689,16 @@
(try#each (|>> (\\format.result class.writer)
[name])
(class.class version.v6_0
- (all modifier#composite
- class.public
- modifier)
- (name.internal name)
- {.#Some signature}
- (..class_name super)
- (list#each ..class_name interfaces)
- fields
- methods
- sequence.empty))))
+ (all modifier#composite
+ class.public
+ modifier)
+ (name.internal name)
+ {.#Some signature}
+ (..class_name super)
+ (list#each ..class_name interfaces)
+ fields
+ methods
+ sequence.empty))))
(def: (mock_value valueT)
(-> (Type Value) (Bytecode Any))
@@ -906,16 +906,16 @@
bytecode (<| (at ! each (\\format.result class.writer))
phase.lifted
(class.class version.v6_0
- (all modifier#composite
- class.public
- inheritance)
- (name.internal name)
- {.#Some type_declaration}
- (..class_name super)
- (list#each ..class_name interfaces)
- (list#each ..field_definition fields)
- (list#each product.right methods)
- sequence.empty))
+ (all modifier#composite
+ class.public
+ inheritance)
+ (name.internal name)
+ {.#Some type_declaration}
+ (..class_name super)
+ (list#each ..class_name interfaces)
+ (list#each ..field_definition fields)
+ (list#each product.right methods)
+ sequence.empty))
_ (..save_class! name bytecode all_dependencies)]
(in directive.no_requirements)))]))
@@ -945,19 +945,19 @@
[bytecode (<| (at ! each (\\format.result class.writer))
phase.lifted
(class.class version.v6_0
- (all modifier#composite
- class.public
- class.abstract
- class.interface)
- (name.internal name)
- {.#Some (signature.inheritance (list#each type.signature parameters)
- (type.signature $Object)
- (list#each type.signature supers))}
- (name.internal "java.lang.Object")
- (list#each ..class_name supers)
- (list)
- (list#each ..method_declaration method_declarations)
- sequence.empty))
+ (all modifier#composite
+ class.public
+ class.abstract
+ class.interface)
+ (name.internal name)
+ {.#Some (signature.inheritance (list#each type.signature parameters)
+ (type.signature $Object)
+ (list#each type.signature supers))}
+ (name.internal "java.lang.Object")
+ (list#each ..class_name supers)
+ (list)
+ (list#each ..method_declaration method_declarations)
+ sequence.empty))
artifact_id (generation.learn_custom name unit.none)
.let [artifact [name bytecode]]
_ (generation.execute! artifact)
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/common_lisp/common.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/common_lisp/common.lux
index 9452e620b..c0c04d708 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/common_lisp/common.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/common_lisp/common.lux
@@ -4,10 +4,9 @@
[abstract
["[0]" monad (.only do)]]
[control
+ ["<>" parser]
["[0]" function]
- ["[0]" try]
- ["<>" parser (.only)
- ["<s>" synthesis (.only Parser)]]]
+ ["[0]" try]]
[data
["[0]" product]
["[0]" text (.only)
@@ -33,8 +32,9 @@
["[1][0]" runtime (.only Operation Phase Handler Bundle Generator)]
["[1][0]" case]]]
[//
- ["[0]" synthesis (.only %synthesis)]
["[0]" generation]
+ ["[0]" synthesis (.only %synthesis)
+ ["<s>" \\parser (.only Parser)]]
[///
["[1]" phase]]]]])
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/common_lisp/host.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/common_lisp/host.lux
index 2b7bb2062..79e422867 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/common_lisp/host.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/common_lisp/host.lux
@@ -1,37 +1,12 @@
(.using
[library
- [lux (.except)
- [abstract
- ["[0]" monad (.only do)]]
- [control
- ["[0]" function]
- ["<>" parser (.only)
- ["<s>" synthesis (.only Parser)]]]
- [data
- [collection
- ["[0]" dictionary]
- ["[0]" list]]
- [text
- ["%" \\format (.only format)]]]
- [target
- ["_" common_lisp (.only Var Expression)]]]]
- ["[0]" //
- ["[1][0]" common (.only custom)]
- ["//[1]" ///
- ["/" bundle]
- ["/[1]" //
- ["[0]" extension]
- [generation
- [extension (.only Nullary Unary Binary Trinary
- nullary unary binary trinary)]
- ["[0]" reference]
- ["//" common_lisp
- ["[1][0]" runtime (.only Operation Phase Handler Bundle
- with_vars)]]]
- ["/[1]" //
- ["[0]" generation]
- ["//[1]" ///
- ["[1][0]" phase]]]]]])
+ [lux (.except)]]
+ [////
+ ["/" bundle]
+ [//
+ [generation
+ [common_lisp
+ [runtime (.only Bundle)]]]]])
(def: .public bundle
Bundle
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/js/common.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/js/common.lux
index 0b40aa0d3..f83d48372 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/js/common.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/js/common.lux
@@ -4,9 +4,8 @@
[abstract
["[0]" monad (.only do)]]
[control
- ["[0]" try]
- ["<>" parser (.only)
- ["<s>" synthesis (.only Parser)]]]
+ ["<>" parser]
+ ["[0]" try]]
[data
["[0]" product]
[collection
@@ -35,7 +34,8 @@
["[1][0]" loop]
["[1][0]" function]]]
[//
- ["[0]" synthesis (.only %synthesis)]
+ ["[0]" synthesis (.only %synthesis)
+ ["<s>" \\parser (.only Parser)]]
[///
["[1]" phase (.open: "[1]#[0]" monad)]]]]])
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/js/host.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/js/host.lux
index da40355f3..0c3a868ae 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/js/host.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/js/host.lux
@@ -4,9 +4,8 @@
[abstract
["[0]" monad (.only do)]]
[control
- ["[0]" function]
- ["<>" parser (.only)
- ["<s>" synthesis (.only Parser)]]]
+ ["<>" parser]
+ ["[0]" function]]
[data
[collection
["[0]" dictionary]
@@ -27,6 +26,8 @@
with_vars)]]]
["/[1]" //
["[0]" generation]
+ [synthesis
+ ["<s>" \\parser (.only Parser)]]
["//[1]" ///
["[1][0]" phase]]]]]])
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/jvm/common.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/jvm/common.lux
index 7d035fe2f..44e2b7c41 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/jvm/common.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/jvm/common.lux
@@ -4,10 +4,9 @@
[abstract
["[0]" monad (.only do)]]
[control
+ ["<>" parser]
["[0]" try]
- ["[0]" exception (.only exception:)]
- ["<>" parser (.only)
- ["<[0]>" synthesis (.only Parser)]]]
+ ["[0]" exception (.only exception:)]]
[data
["[0]" product]
[collection
@@ -37,7 +36,8 @@
["[1]extension" /]
["[1][0]" bundle]]
[//
- ["/[1][0]" synthesis (.only Synthesis %synthesis)]
+ ["[0]" synthesis (.only Synthesis %synthesis)
+ ["<[1]>" \\parser (.only Parser)]]
[///
["[1]" phase]
[meta
@@ -54,7 +54,7 @@
(handler extension_name phase archive input')
{try.#Failure error}
- (/////.except /////extension.invalid_syntax [extension_name //////synthesis.%synthesis input]))))
+ (/////.except /////extension.invalid_syntax [extension_name synthesis.%synthesis input]))))
(def: $Boolean (type.class "java.lang.Boolean" (list)))
(def: $Double (type.class "java.lang.Double" (list)))
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/jvm/host.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/jvm/host.lux
index 30ef58a77..e08b2aba8 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/jvm/host.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/jvm/host.lux
@@ -4,10 +4,9 @@
[abstract
["[0]" monad (.only do)]]
[control
+ ["<>" parser]
["[0]" maybe (.open: "[1]#[0]" functor)]
- ["[0]" exception (.only exception:)]
- ["<>" parser (.only)
- ["<[0]>" synthesis (.only Parser)]]]
+ ["[0]" exception (.only exception:)]]
[data
["[0]" product]
[binary
@@ -64,8 +63,9 @@
[analysis
["/" jvm]]]
["/[1]" //
- ["[1][0]" synthesis (.only Synthesis Path %synthesis)]
["[1][0]" generation]
+ ["[0]" synthesis (.only Synthesis Path %synthesis)
+ ["<[1]>" \\parser (.only Parser)]]
[analysis (.only Environment)
["[0]" complex]]
[///
@@ -653,7 +653,7 @@
(at //////.monad in (_.getstatic (type.class class (list)) field :unboxed:)))]))
(def: unitG
- (_.string //////synthesis.unit))
+ (_.string synthesis.unit))
(def: put::static
Handler
@@ -823,22 +823,22 @@
(def: .public (hidden_method_body arity body)
(-> Nat Synthesis Synthesis)
- (with_expansions [<oops> (panic! (%.format (%.nat arity) " " (//////synthesis.%synthesis body)))]
+ (with_expansions [<oops> (panic! (%.format (%.nat arity) " " (synthesis.%synthesis body)))]
(case [arity body]
(^.or [0 _]
[1 _])
body
- (pattern [2 {//////synthesis.#Control {//////synthesis.#Branch {//////synthesis.#Let _ 2 (//////synthesis.tuple (list _ hidden))}}}])
+ (pattern [2 {synthesis.#Control {synthesis.#Branch {synthesis.#Let _ 2 (synthesis.tuple (list _ hidden))}}}])
hidden
- [_ {//////synthesis.#Control {//////synthesis.#Branch {//////synthesis.#Case _ path}}}]
+ [_ {synthesis.#Control {synthesis.#Branch {synthesis.#Case _ path}}}]
(loop (again [path (is Path path)])
(case path
- {//////synthesis.#Seq _ next}
+ {synthesis.#Seq _ next}
(again next)
- (pattern {//////synthesis.#Then (//////synthesis.tuple (list _ hidden))})
+ (pattern {synthesis.#Then (synthesis.tuple (list _ hidden))})
hidden
_
@@ -852,43 +852,43 @@
(-> Path Path))
(function (again it)
(case it
- (^.or {//////synthesis.#Pop}
- {//////synthesis.#Access _})
+ (^.or {synthesis.#Pop}
+ {synthesis.#Access _})
it
- {//////synthesis.#Bind it}
- {//////synthesis.#Bind (-- it)}
+ {synthesis.#Bind it}
+ {synthesis.#Bind (-- it)}
- {//////synthesis.#Bit_Fork when then else}
- {//////synthesis.#Bit_Fork when
- (again then)
- (maybe#each again else)}
+ {synthesis.#Bit_Fork when then else}
+ {synthesis.#Bit_Fork when
+ (again then)
+ (maybe#each again else)}
(^.with_template [<tag>]
[{<tag> [head tail]}
- {<tag> [(revised //////synthesis.#then again head)
- (list#each (revised //////synthesis.#then again) tail)]}])
- ([//////synthesis.#I64_Fork]
- [//////synthesis.#F64_Fork]
- [//////synthesis.#Text_Fork])
+ {<tag> [(revised synthesis.#then again head)
+ (list#each (revised synthesis.#then again) tail)]}])
+ ([synthesis.#I64_Fork]
+ [synthesis.#F64_Fork]
+ [synthesis.#Text_Fork])
(^.with_template [<tag>]
[{<tag> left right}
{<tag> (again left) (again right)}])
- ([//////synthesis.#Seq]
- [//////synthesis.#Alt])
+ ([synthesis.#Seq]
+ [synthesis.#Alt])
- {//////synthesis.#Then it}
- {//////synthesis.#Then (without_fake_parameter it)})))
+ {synthesis.#Then it}
+ {synthesis.#Then (without_fake_parameter it)})))
(def: .public (without_fake_parameter it)
(-> Synthesis Synthesis)
(case it
- {//////synthesis.#Simple _}
+ {synthesis.#Simple _}
it
- {//////synthesis.#Structure it}
- {//////synthesis.#Structure
+ {synthesis.#Structure it}
+ {synthesis.#Structure
(case it
{complex.#Variant it}
{complex.#Variant (revised complex.#value without_fake_parameter it)}
@@ -896,8 +896,8 @@
{complex.#Tuple it}
{complex.#Tuple (list#each without_fake_parameter it)})}
- {//////synthesis.#Reference it}
- {//////synthesis.#Reference
+ {synthesis.#Reference it}
+ {synthesis.#Reference
(case it
{//////reference.#Variable it}
{//////reference.#Variable
@@ -911,64 +911,64 @@
{//////reference.#Constant _}
it)}
- {//////synthesis.#Control it}
- {//////synthesis.#Control
+ {synthesis.#Control it}
+ {synthesis.#Control
(case it
- {//////synthesis.#Branch it}
- {//////synthesis.#Branch
+ {synthesis.#Branch it}
+ {synthesis.#Branch
(case it
- {//////synthesis.#Exec before after}
- {//////synthesis.#Exec (without_fake_parameter before)
- (without_fake_parameter after)}
+ {synthesis.#Exec before after}
+ {synthesis.#Exec (without_fake_parameter before)
+ (without_fake_parameter after)}
- {//////synthesis.#Let value register body}
- {//////synthesis.#Let (without_fake_parameter value)
- (-- register)
- (without_fake_parameter body)}
+ {synthesis.#Let value register body}
+ {synthesis.#Let (without_fake_parameter value)
+ (-- register)
+ (without_fake_parameter body)}
- {//////synthesis.#If when then else}
- {//////synthesis.#If (without_fake_parameter when)
- (without_fake_parameter then)
- (without_fake_parameter else)}
+ {synthesis.#If when then else}
+ {synthesis.#If (without_fake_parameter when)
+ (without_fake_parameter then)
+ (without_fake_parameter else)}
- {//////synthesis.#Get members record}
- {//////synthesis.#Get members
- (without_fake_parameter record)}
+ {synthesis.#Get members record}
+ {synthesis.#Get members
+ (without_fake_parameter record)}
- {//////synthesis.#Case value path}
- {//////synthesis.#Case (without_fake_parameter value)
- (without_fake_parameter#path without_fake_parameter path)})}
+ {synthesis.#Case value path}
+ {synthesis.#Case (without_fake_parameter value)
+ (without_fake_parameter#path without_fake_parameter path)})}
- {//////synthesis.#Loop it}
- {//////synthesis.#Loop
+ {synthesis.#Loop it}
+ {synthesis.#Loop
(case it
- {//////synthesis.#Scope [//////synthesis.#start start
- //////synthesis.#inits inits
- //////synthesis.#iteration iteration]}
- {//////synthesis.#Scope [//////synthesis.#start (-- start)
- //////synthesis.#inits (list#each without_fake_parameter inits)
- //////synthesis.#iteration iteration]}
+ {synthesis.#Scope [synthesis.#start start
+ synthesis.#inits inits
+ synthesis.#iteration iteration]}
+ {synthesis.#Scope [synthesis.#start (-- start)
+ synthesis.#inits (list#each without_fake_parameter inits)
+ synthesis.#iteration iteration]}
- {//////synthesis.#Again _}
+ {synthesis.#Again _}
it)}
- {//////synthesis.#Function it}
- {//////synthesis.#Function
+ {synthesis.#Function it}
+ {synthesis.#Function
(case it
- {//////synthesis.#Abstraction [//////synthesis.#environment environment
- //////synthesis.#arity arity
- //////synthesis.#body body]}
- {//////synthesis.#Abstraction [//////synthesis.#environment (list#each without_fake_parameter environment)
- //////synthesis.#arity arity
- //////synthesis.#body body]}
+ {synthesis.#Abstraction [synthesis.#environment environment
+ synthesis.#arity arity
+ synthesis.#body body]}
+ {synthesis.#Abstraction [synthesis.#environment (list#each without_fake_parameter environment)
+ synthesis.#arity arity
+ synthesis.#body body]}
- {//////synthesis.#Apply [//////synthesis.#function function
- //////synthesis.#arguments arguments]}
- {//////synthesis.#Apply [//////synthesis.#function (without_fake_parameter function)
- //////synthesis.#arguments (list#each without_fake_parameter arguments)]})})}
+ {synthesis.#Apply [synthesis.#function function
+ synthesis.#arguments arguments]}
+ {synthesis.#Apply [synthesis.#function (without_fake_parameter function)
+ synthesis.#arguments (list#each without_fake_parameter arguments)]})})}
- {//////synthesis.#Extension name parameters}
- {//////synthesis.#Extension name (list#each without_fake_parameter parameters)}))
+ {synthesis.#Extension name parameters}
+ {synthesis.#Extension name (list#each without_fake_parameter parameters)}))
(def: overriden_method_definition
(Parser [(Environment Synthesis) (/.Overriden_Method Synthesis)])
@@ -1003,24 +1003,24 @@
(-> Path Path))
(function (again path)
(case path
- (pattern (//////synthesis.path/then bodyS))
- (//////synthesis.path/then (normalize bodyS))
+ (pattern (synthesis.path/then bodyS))
+ (synthesis.path/then (normalize bodyS))
(^.with_template [<tag>]
[(pattern {<tag> leftP rightP})
{<tag> (again leftP) (again rightP)}])
- ([//////synthesis.#Alt]
- [//////synthesis.#Seq])
+ ([synthesis.#Alt]
+ [synthesis.#Seq])
(^.with_template [<tag>]
[{<tag> _}
path])
- ([//////synthesis.#Pop]
- [//////synthesis.#Bind]
- [//////synthesis.#Access])
+ ([synthesis.#Pop]
+ [synthesis.#Bind]
+ [synthesis.#Access])
- {//////synthesis.#Bit_Fork when then else}
- {//////synthesis.#Bit_Fork when (again then) (maybe#each again else)}
+ {synthesis.#Bit_Fork when then else}
+ {synthesis.#Bit_Fork when (again then) (maybe#each again else)}
(^.with_template [<tag>]
[{<tag> [[exampleH nextH] tail]}
@@ -1028,9 +1028,9 @@
(list#each (function (_ [example next])
[example (again next)])
tail)]}])
- ([//////synthesis.#I64_Fork]
- [//////synthesis.#F64_Fork]
- [//////synthesis.#Text_Fork]))))
+ ([synthesis.#I64_Fork]
+ [synthesis.#F64_Fork]
+ [synthesis.#Text_Fork]))))
(type: Mapping
(Dictionary Synthesis Variable))
@@ -1042,62 +1042,62 @@
(^.with_template [<tag>]
[(pattern <tag>)
body])
- ([{//////synthesis.#Simple _}]
- [(//////synthesis.constant _)])
+ ([{synthesis.#Simple _}]
+ [(synthesis.constant _)])
- (pattern (//////synthesis.variant [lefts right? sub]))
- (//////synthesis.variant [lefts right? (again sub)])
+ (pattern (synthesis.variant [lefts right? sub]))
+ (synthesis.variant [lefts right? (again sub)])
- (pattern (//////synthesis.tuple members))
- (//////synthesis.tuple (list#each again members))
+ (pattern (synthesis.tuple members))
+ (synthesis.tuple (list#each again members))
- (pattern (//////synthesis.variable var))
+ (pattern (synthesis.variable var))
(|> mapping
(dictionary.value body)
(maybe.else var)
- //////synthesis.variable)
+ synthesis.variable)
- (pattern (//////synthesis.branch/case [inputS pathS]))
- (//////synthesis.branch/case [(again inputS) (normalize_path again pathS)])
+ (pattern (synthesis.branch/case [inputS pathS]))
+ (synthesis.branch/case [(again inputS) (normalize_path again pathS)])
- (pattern (//////synthesis.branch/exec [this that]))
- (//////synthesis.branch/exec [(again this) (again that)])
+ (pattern (synthesis.branch/exec [this that]))
+ (synthesis.branch/exec [(again this) (again that)])
- (pattern (//////synthesis.branch/let [inputS register outputS]))
- (//////synthesis.branch/let [(again inputS) register (again outputS)])
+ (pattern (synthesis.branch/let [inputS register outputS]))
+ (synthesis.branch/let [(again inputS) register (again outputS)])
- (pattern (//////synthesis.branch/if [testS thenS elseS]))
- (//////synthesis.branch/if [(again testS) (again thenS) (again elseS)])
+ (pattern (synthesis.branch/if [testS thenS elseS]))
+ (synthesis.branch/if [(again testS) (again thenS) (again elseS)])
- (pattern (//////synthesis.branch/get [path recordS]))
- (//////synthesis.branch/get [path (again recordS)])
+ (pattern (synthesis.branch/get [path recordS]))
+ (synthesis.branch/get [path (again recordS)])
- (pattern (//////synthesis.loop/scope [offset initsS+ bodyS]))
- (//////synthesis.loop/scope [offset (list#each again initsS+) (again bodyS)])
+ (pattern (synthesis.loop/scope [offset initsS+ bodyS]))
+ (synthesis.loop/scope [offset (list#each again initsS+) (again bodyS)])
- (pattern (//////synthesis.loop/again updatesS+))
- (//////synthesis.loop/again (list#each again updatesS+))
+ (pattern (synthesis.loop/again updatesS+))
+ (synthesis.loop/again (list#each again updatesS+))
- (pattern (//////synthesis.function/abstraction [environment arity bodyS]))
- (//////synthesis.function/abstraction [(list#each (function (_ captured)
- (case captured
- (pattern (//////synthesis.variable var))
- (|> mapping
- (dictionary.value captured)
- (maybe.else var)
- //////synthesis.variable)
+ (pattern (synthesis.function/abstraction [environment arity bodyS]))
+ (synthesis.function/abstraction [(list#each (function (_ captured)
+ (case captured
+ (pattern (synthesis.variable var))
+ (|> mapping
+ (dictionary.value captured)
+ (maybe.else var)
+ synthesis.variable)
- _
- captured))
- environment)
- arity
- bodyS])
+ _
+ captured))
+ environment)
+ arity
+ bodyS])
- (pattern (//////synthesis.function/apply [functionS inputsS+]))
- (//////synthesis.function/apply [(again functionS) (list#each again inputsS+)])
+ (pattern (synthesis.function/apply [functionS inputsS+]))
+ (synthesis.function/apply [(again functionS) (list#each again inputsS+)])
- {//////synthesis.#Extension [name inputsS+]}
- {//////synthesis.#Extension [name (list#each again inputsS+)]})))
+ {synthesis.#Extension [name inputsS+]}
+ {synthesis.#Extension [name (list#each again inputsS+)]})))
(def: $Object
(type.class "java.lang.Object" (list)))
@@ -1273,11 +1273,11 @@
local_mapping (|> environment
list.enumeration
(list#each (function (_ [foreign_id capture])
- [(//////synthesis.variable/foreign foreign_id)
+ [(synthesis.variable/foreign foreign_id)
(|> global_mapping
(dictionary.value capture)
maybe.trusted)]))
- (dictionary.of_list //////synthesis.hash))]
+ (dictionary.of_list synthesis.hash))]
[ownerT name
strict_fp? annotations vars
self_name arguments returnT exceptionsT
@@ -1292,7 +1292,7 @@
... Combine them.
list#conjoint
... Remove duplicates.
- (set.of_list //////synthesis.hash)
+ (set.of_list synthesis.hash)
set.list))
(def: (global_mapping total_environment)
@@ -1302,7 +1302,7 @@
list.enumeration
(list#each (function (_ [id capture])
[capture {//////variable.#Foreign id}]))
- (dictionary.of_list //////synthesis.hash)))
+ (dictionary.of_list synthesis.hash)))
(def: (method_definition phase archive artifact_id method)
(-> Phase Archive artifact.ID (/.Overriden_Method Synthesis) (Operation (Resource Method)))
@@ -1353,14 +1353,14 @@
bytecode (<| (at ! each (\\format.result class.writer))
//////.lifted
(class.class version.v6_0 (all modifier#composite class.public class.final)
- (name.internal anonymous_class_name)
- {.#None}
- (name.internal (..reflection super_class))
- (list#each (|>> ..reflection name.internal) super_interfaces)
- (foreign.variables total_environment)
- (list.partial (..with_anonymous_init class total_environment super_class inputsTI)
- methods!)
- (sequence.sequence)))
+ (name.internal anonymous_class_name)
+ {.#None}
+ (name.internal (..reflection super_class))
+ (list#each (|>> ..reflection name.internal) super_interfaces)
+ (foreign.variables total_environment)
+ (list.partial (..with_anonymous_init class total_environment super_class inputsTI)
+ methods!)
+ (sequence.sequence)))
.let [artifact [anonymous_class_name bytecode]]
_ (//////generation.execute! artifact)
_ (//////generation.save! artifact_id {.#None} artifact)]
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/lua/common.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/lua/common.lux
index d3d7c76d6..c454fc422 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/lua/common.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/lua/common.lux
@@ -4,10 +4,9 @@
[abstract
["[0]" monad (.only do)]]
[control
+ ["<>" parser]
["[0]" function]
- ["[0]" try]
- ["<>" parser (.only)
- ["<s>" synthesis (.only Parser)]]]
+ ["[0]" try]]
[data
["[0]" product]
["[0]" text
@@ -38,8 +37,9 @@
["[1][0]" loop]
["[1][0]" function]]]
[//
- ["[0]" synthesis (.only %synthesis)]
["[0]" generation]
+ ["[0]" synthesis (.only %synthesis)
+ ["<s>" \\parser (.only Parser)]]
[///
["[1]" phase (.open: "[1]#[0]" monad)]]]]])
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/lua/host.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/lua/host.lux
index f2a8e2938..4ed8013ca 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/lua/host.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/lua/host.lux
@@ -4,9 +4,8 @@
[abstract
["[0]" monad (.only do)]]
[control
- ["[0]" function]
- ["<>" parser (.only)
- ["<s>" synthesis (.only Parser)]]]
+ ["<>" parser]
+ ["[0]" function]]
[data
[collection
["[0]" dictionary]
@@ -30,6 +29,8 @@
with_vars)]]]
["/[1]" //
["[0]" generation]
+ [synthesis
+ ["<s>" \\parser (.only Parser)]]
["//[1]" ///
["[1][0]" phase]]]]]])
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/php/common.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/php/common.lux
index 898a3e8b0..384736271 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/php/common.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/php/common.lux
@@ -4,10 +4,9 @@
[abstract
["[0]" monad (.only do)]]
[control
+ ["<>" parser]
["[0]" function]
- ["[0]" try]
- ["<>" parser (.only)
- ["<s>" synthesis (.only Parser)]]]
+ ["[0]" try]]
[data
["[0]" product]
["[0]" text (.only)
@@ -33,7 +32,8 @@
["[1][0]" runtime (.only Operation Phase Handler Bundle Generator)]
["[1][0]" case]]]
[//
- ["[0]" synthesis (.only %synthesis)]
+ ["[0]" synthesis (.only %synthesis)
+ ["<s>" \\parser (.only Parser)]]
["[0]" generation]
[///
["[1]" phase]]]]])
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/php/host.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/php/host.lux
index 353c6d055..535f01072 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/php/host.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/php/host.lux
@@ -4,9 +4,8 @@
[abstract
["[0]" monad (.only do)]]
[control
- ["[0]" function]
- ["<>" parser (.only)
- ["<s>" synthesis (.only Parser)]]]
+ ["<>" parser]
+ ["[0]" function]]
[data
[collection
["[0]" dictionary]
@@ -30,6 +29,8 @@
with_vars)]]]
["/[1]" //
["[0]" generation]
+ [synthesis
+ ["<s>" \\parser (.only Parser)]]
["//[1]" ///
["[1][0]" phase]]]]]])
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/python/common.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/python/common.lux
index 933f52e74..ef6d301bc 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/python/common.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/python/common.lux
@@ -4,10 +4,9 @@
[abstract
["[0]" monad (.only do)]]
[control
+ ["<>" parser]
["[0]" function]
- ["[0]" try]
- ["<>" parser (.only)
- ["<[0]>" synthesis (.only Parser)]]]
+ ["[0]" try]]
[data
["[0]" product]
["[0]" text (.only)
@@ -40,8 +39,9 @@
["[1][0]" loop]]]
[//
[analysis (.only)]
- ["[0]" synthesis (.only %synthesis)]
["[0]" generation]
+ ["[0]" synthesis (.only %synthesis)
+ ["<[1]>" \\parser (.only Parser)]]
[///
["[1]" phase (.open: "[1]#[0]" monad)]]]]])
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/python/host.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/python/host.lux
index e62529746..7ec9d1083 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/python/host.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/python/host.lux
@@ -4,9 +4,8 @@
[abstract
["[0]" monad (.only do)]]
[control
- ["[0]" function]
- ["<>" parser (.only)
- ["<s>" synthesis (.only Parser)]]]
+ ["<>" parser]
+ ["[0]" function]]
[data
["[0]" text (.only)
["%" \\format]]
@@ -29,6 +28,8 @@
with_vars)]]]
["/[1]" //
["[0]" generation]
+ [synthesis
+ ["<s>" \\parser (.only Parser)]]
["//[1]" ///
["[1][0]" phase]]]]]])
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/r/common.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/r/common.lux
index 530f76072..facbc2e58 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/r/common.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/r/common.lux
@@ -4,10 +4,9 @@
[abstract
["[0]" monad (.only do)]]
[control
+ ["<>" parser]
["[0]" function]
- ["[0]" try]
- ["<>" parser (.only)
- ["<s>" synthesis (.only Parser)]]]
+ ["[0]" try]]
[data
["[0]" product]
["[0]" text (.only)
@@ -33,7 +32,8 @@
["[1][0]" runtime (.only Operation Phase Handler Bundle Generator)]
["[1][0]" case]]]
[//
- ["[0]" synthesis (.only %synthesis)]
+ ["[0]" synthesis (.only %synthesis)
+ ["<s>" \\parser (.only Parser)]]
["[0]" generation]
[///
["[1]" phase]]]]])
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/r/host.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/r/host.lux
index d03538b0b..8facd6a1a 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/r/host.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/r/host.lux
@@ -4,9 +4,8 @@
[abstract
["[0]" monad (.only do)]]
[control
- ["[0]" function]
- ["<>" parser (.only)
- ["<s>" synthesis (.only Parser)]]]
+ ["<>" parser]
+ ["[0]" function]]
[data
[collection
["[0]" dictionary]
@@ -30,6 +29,8 @@
with_vars)]]]
["/[1]" //
["[0]" generation]
+ [synthesis
+ ["<s>" \\parser (.only Parser)]]
["//[1]" ///
["[1][0]" phase]]]]]])
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/ruby/common.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/ruby/common.lux
index 07d25add0..6cdacfa40 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/ruby/common.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/ruby/common.lux
@@ -4,10 +4,9 @@
[abstract
["[0]" monad (.only do)]]
[control
+ ["<>" parser]
["[0]" function]
- ["[0]" try]
- ["<>" parser (.only)
- ["<s>" synthesis (.only Parser)]]]
+ ["[0]" try]]
[data
["[0]" product]
["[0]" text (.only)
@@ -38,8 +37,9 @@
["[1][0]" case]
["[1][0]" loop]]]
[//
- ["[0]" synthesis (.only %synthesis)]
["[0]" generation]
+ ["[0]" synthesis (.only %synthesis)
+ ["<s>" \\parser (.only Parser)]]
[///
["[1]" phase (.open: "[1]#[0]" monad)]]]]])
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/ruby/host.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/ruby/host.lux
index 7dcf5c1cb..89638f972 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/ruby/host.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/ruby/host.lux
@@ -4,9 +4,8 @@
[abstract
["[0]" monad (.only do)]]
[control
- ["[0]" function]
- ["<>" parser (.only)
- ["<s>" synthesis (.only Parser)]]]
+ ["<>" parser]
+ ["[0]" function]]
[data
[collection
["[0]" dictionary]
@@ -30,6 +29,8 @@
with_vars)]]]
["/[1]" //
["[0]" generation]
+ [synthesis
+ ["<s>" \\parser (.only Parser)]]
["//[1]" ///
["[1][0]" phase]]]]]])
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/scheme/common.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/scheme/common.lux
index 0ed822b89..5d4801be1 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/scheme/common.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/scheme/common.lux
@@ -4,10 +4,9 @@
[abstract
["[0]" monad (.only do)]]
[control
+ ["<>" parser]
["[0]" function]
- ["[0]" try]
- ["<>" parser (.only)
- ["<s>" synthesis (.only Parser)]]]
+ ["[0]" try]]
[data
["[0]" product]
["[0]" text
@@ -33,8 +32,9 @@
["[1][0]" runtime (.only Operation Phase Handler Bundle Generator)]
["[1][0]" case]]]
[//
- ["[0]" synthesis (.only %synthesis)]
["[0]" generation]
+ ["[0]" synthesis (.only %synthesis)
+ ["<s>" \\parser (.only Parser)]]
[///
["[1]" phase]]]]])
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/scheme/host.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/scheme/host.lux
index f14556827..862df2607 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/scheme/host.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/scheme/host.lux
@@ -4,9 +4,8 @@
[abstract
["[0]" monad (.only do)]]
[control
- ["[0]" function]
- ["<>" parser (.only)
- ["<s>" synthesis (.only Parser)]]]
+ ["<>" parser]
+ ["[0]" function]]
[data
[collection
["[0]" dictionary]
@@ -30,6 +29,8 @@
with_vars)]]]
["/[1]" //
["[0]" generation]
+ [synthesis
+ ["<s>" \\parser (.only Parser)]]
["//[1]" ///
["[1][0]" phase]]]]]])
diff --git a/stdlib/source/library/lux/tool/compiler/meta/archive.lux b/stdlib/source/library/lux/tool/compiler/meta/archive.lux
index fd47dbe30..92c263466 100644
--- a/stdlib/source/library/lux/tool/compiler/meta/archive.lux
+++ b/stdlib/source/library/lux/tool/compiler/meta/archive.lux
@@ -5,16 +5,16 @@
["[0]" equivalence (.only Equivalence)]
["[0]" monad (.only do)]]
[control
+ ["<>" parser]
["[0]" maybe]
["[0]" try (.only Try)]
["[0]" exception (.only exception:)]
- ["[0]" function]
- ["<>" parser (.only)
- ["<[0]>" binary (.only Parser)]]]
+ ["[0]" function]]
[data
["[0]" product]
- [binary (.only Binary)
- ["[0]" \\format (.only Writer)]]
+ ["[0]" binary (.only Binary)
+ ["[0]" \\format (.only Writer)]
+ ["<[1]>" \\parser (.only Parser)]]
["[0]" text (.only)
["%" \\format (.only format)]]
[collection
diff --git a/stdlib/source/library/lux/tool/compiler/meta/archive/module/descriptor.lux b/stdlib/source/library/lux/tool/compiler/meta/archive/module/descriptor.lux
index 75934414f..b661a1587 100644
--- a/stdlib/source/library/lux/tool/compiler/meta/archive/module/descriptor.lux
+++ b/stdlib/source/library/lux/tool/compiler/meta/archive/module/descriptor.lux
@@ -4,13 +4,13 @@
[abstract
[equivalence (.only Equivalence)]]
[control
- ["<>" parser (.only)
- ["<[0]>" binary (.only Parser)]]]
+ ["<>" parser]]
[data
["[0]" product]
["[0]" text]
- [binary
- ["[0]" \\format (.only Writer)]]
+ ["[0]" binary
+ ["[0]" \\format (.only Writer)]
+ ["<[1]>" \\parser (.only Parser)]]
[collection
["[0]" set (.only Set)]]]
[macro
diff --git a/stdlib/source/library/lux/tool/compiler/meta/archive/module/document.lux b/stdlib/source/library/lux/tool/compiler/meta/archive/module/document.lux
index 684277ae4..ef3073cca 100644
--- a/stdlib/source/library/lux/tool/compiler/meta/archive/module/document.lux
+++ b/stdlib/source/library/lux/tool/compiler/meta/archive/module/document.lux
@@ -4,14 +4,14 @@
[abstract
[monad (.only do)]]
[control
+ ["<>" parser]
["[0]" try (.only Try)]
- ["[0]" exception (.only exception:)]
- ["<>" parser (.only)
- [binary (.only Parser)]]]
+ ["[0]" exception (.only exception:)]]
[data
[collection
["[0]" dictionary (.only Dictionary)]]
["[0]" binary
+ [\\parser (.only Parser)]
["[1]" \\format (.only Writer)]]]
[type (.only sharing)
[primitive (.except)]]]]
diff --git a/stdlib/source/library/lux/tool/compiler/meta/archive/registry.lux b/stdlib/source/library/lux/tool/compiler/meta/archive/registry.lux
index ffe3b439f..0f15e8ca7 100644
--- a/stdlib/source/library/lux/tool/compiler/meta/archive/registry.lux
+++ b/stdlib/source/library/lux/tool/compiler/meta/archive/registry.lux
@@ -4,15 +4,15 @@
[abstract
[monad (.only do)]]
[control
+ ["<>" parser]
["[0]" pipe]
["[0]" maybe (.open: "[1]#[0]" functor)]
- ["[0]" exception (.only exception:)]
- ["<>" parser (.only)
- ["<[0]>" binary (.only Parser)]]]
+ ["[0]" exception (.only exception:)]]
[data
["[0]" product]
["[0]" binary
- ["[1]" \\format (.only Writer)]]
+ ["[1]" \\format (.only Writer)]
+ ["<[1]>" \\parser (.only Parser)]]
["[0]" text (.only)
["%" \\format (.only format)]]
[collection
diff --git a/stdlib/source/library/lux/tool/compiler/meta/archive/signature.lux b/stdlib/source/library/lux/tool/compiler/meta/archive/signature.lux
index c4d347c21..ac6a22c49 100644
--- a/stdlib/source/library/lux/tool/compiler/meta/archive/signature.lux
+++ b/stdlib/source/library/lux/tool/compiler/meta/archive/signature.lux
@@ -4,12 +4,12 @@
[abstract
[equivalence (.only Equivalence)]]
[control
- ["<>" parser (.only)
- ["<[0]>" binary (.only Parser)]]]
+ ["<>" parser]]
[data
["[0]" product]
["[0]" binary
- ["[1]" \\format (.only Writer)]]
+ ["[1]" \\format (.only Writer)]
+ ["<[1]>" \\parser (.only Parser)]]
["[0]" text (.only)
["%" \\format (.only format)]]]
[math
diff --git a/stdlib/source/library/lux/tool/compiler/meta/import.lux b/stdlib/source/library/lux/tool/compiler/meta/import.lux
index 977d0536c..dec6dde3b 100644
--- a/stdlib/source/library/lux/tool/compiler/meta/import.lux
+++ b/stdlib/source/library/lux/tool/compiler/meta/import.lux
@@ -4,14 +4,14 @@
[abstract
["[0]" monad (.only Monad do)]]
[control
+ ["<>" parser]
["[0]" try (.only Try)]
["[0]" exception (.only exception:)]
[concurrency
- ["[0]" async (.only Async)]]
- ["<>" parser (.only)
- ["<[0]>" binary]]]
+ ["[0]" async (.only Async)]]]
[data
- [binary (.only Binary)]
+ ["[0]" binary (.only Binary)
+ ["<[1]>" \\parser]]
["[0]" text (.only)
["%" \\format]]
[collection
diff --git a/stdlib/source/library/lux/tool/compiler/meta/io/archive.lux b/stdlib/source/library/lux/tool/compiler/meta/io/archive.lux
index 90afd44d8..a192cf58a 100644
--- a/stdlib/source/library/lux/tool/compiler/meta/io/archive.lux
+++ b/stdlib/source/library/lux/tool/compiler/meta/io/archive.lux
@@ -5,14 +5,14 @@
[abstract
["[0]" monad (.only Monad do)]]
[control
+ ["<>" parser]
["[0]" try (.only Try)]
[concurrency
- ["[0]" async (.only Async) (.open: "[1]#[0]" monad)]]
- ["<>" parser (.only)
- ["<[0]>" binary (.only Parser)]]]
+ ["[0]" async (.only Async) (.open: "[1]#[0]" monad)]]]
[data
- [binary (.only Binary)]
["[0]" product]
+ ["[0]" binary (.only Binary)
+ ["<[1]>" \\parser (.only Parser)]]
["[0]" text (.open: "[1]#[0]" equivalence)
["%" \\format (.only format)]]
[collection
diff --git a/stdlib/source/library/lux/control/parser/binary.lux b/stdlib/source/parser/lux/data/binary.lux
index 98d23b610..1a49d5315 100644
--- a/stdlib/source/library/lux/control/parser/binary.lux
+++ b/stdlib/source/parser/lux/data/binary.lux
@@ -7,6 +7,7 @@
[hash (.only Hash)]
[monad (.only do)]]
[control
+ ["//" parser (.open: "[1]#[0]" monad)]
["[0]" try (.only Try)]
["[0]" exception (.only exception:)]]
[data
@@ -28,8 +29,7 @@
[math
[number
["n" nat]
- ["[0]" frac]]]]]
- ["[0]" // (.open: "[1]#[0]" monad)])
+ ["[0]" frac]]]]])
(type: .public Offset
Nat)
diff --git a/stdlib/source/library/lux/control/parser/synthesis.lux b/stdlib/source/parser/lux/tool/compiler/language/lux/synthesis.lux
index 9e73bf80c..c6537531f 100644
--- a/stdlib/source/library/lux/control/parser/synthesis.lux
+++ b/stdlib/source/parser/lux/tool/compiler/language/lux/synthesis.lux
@@ -4,6 +4,7 @@
[abstract
[monad (.only do)]]
[control
+ ["//" parser]
["[0]" try (.only Try)]
["[0]" exception (.only exception:)]]
[data
@@ -26,9 +27,9 @@
[arity (.only Arity)]
[language
[lux
- [analysis (.only Environment)]
- ["/" synthesis (.only Synthesis Abstraction)]]]]]]]
- ["[0]" //])
+ [analysis (.only Environment)]]]]]]]
+ [\\library
+ ["[0]" / (.only Synthesis Abstraction)]])
(exception: .public (cannot_parse [input (List Synthesis)])
(exception.report
diff --git a/stdlib/source/test/lux/control/parser.lux b/stdlib/source/test/lux/control/parser.lux
index 3b9029fca..cca247004 100644
--- a/stdlib/source/test/lux/control/parser.lux
+++ b/stdlib/source/test/lux/control/parser.lux
@@ -28,12 +28,10 @@
[\\library
["[0]" / (.only Parser)]]
["[0]" /
- ["[1][0]" binary]
["[1][0]" cli]
["[1][0]" code]
["[1][0]" environment]
["[1][0]" json]
- ["[1][0]" synthesis]
["[1][0]" tree]
["[1][0]" type]
["[1][0]" xml]])
@@ -384,12 +382,10 @@
..combinators_1
..combinators_2
- /binary.test
/cli.test
/code.test
/environment.test
/json.test
- /synthesis.test
/tree.test
/type.test
/xml.test
diff --git a/stdlib/source/test/lux/control/parser/binary.lux b/stdlib/source/test/lux/control/parser/binary.lux
deleted file mode 100644
index e8caa2dc9..000000000
--- a/stdlib/source/test/lux/control/parser/binary.lux
+++ /dev/null
@@ -1,392 +0,0 @@
-(.using
- [library
- [lux (.except)
- ["_" test (.only Test)]
- ["[0]" type]
- [abstract
- [equivalence (.only Equivalence)]
- [predicate (.only Predicate)]
- [monad (.only do)]]
- [control
- ["[0]" pipe]
- ["[0]" maybe]
- ["[0]" try]
- ["[0]" exception]
- ["<>" parser]]
- [data
- ["[0]" sum]
- ["[0]" bit]
- ["[0]" binary (.only)
- ["[0]" \\format]]
- ["[0]" text (.open: "[1]#[0]" equivalence)
- ["%" \\format (.only format)]
- [encoding
- ["[0]" utf8]]]
- [collection
- ["[0]" list]
- ["[0]" sequence]
- ["[0]" set]]]
- [macro
- ["^" pattern]
- ["[0]" code]]
- [math
- ["[0]" random (.only Random)]
- [number
- ["n" nat]
- ["[0]" i64]
- ["[0]" int]
- ["[0]" rev]
- ["[0]" frac]]]
- [meta
- ["[0]" symbol]]]]
- [\\library
- ["[0]" /]])
-
-(def: !expect
- (template (_ <expectation> <computation>)
- [(case <computation>
- <expectation>
- true
-
- _
- false)]))
-
-(def: segment_size 10)
-
-(def: (utf8_conversion_does_not_alter? value)
- (Predicate Text)
- (|> value
- (at utf8.codec encoded)
- (at utf8.codec decoded)
- (pipe.case
- {try.#Success converted}
- (text#= value converted)
-
- {try.#Failure error}
- false)))
-
-(def: random_text
- (Random Text)
- (random.only ..utf8_conversion_does_not_alter?
- (random.unicode ..segment_size)))
-
-(def: random_symbol
- (Random Symbol)
- (random.and ..random_text ..random_text))
-
-(def: location_equivalence
- (Equivalence Location)
- (implementation
- (def: (= [expected_module expected_line expected_column]
- [sample_module sample_line sample_column])
- (and (text#= expected_module sample_module)
- (n.= expected_line sample_line)
- (n.= expected_column sample_column)))))
-
-(def: random_location
- (Random Location)
- (all random.and
- ..random_text
- random.nat
- random.nat))
-
-(def: random_code
- (Random Code)
- (random.rec
- (function (_ again)
- (let [random_sequence (do [! random.monad]
- [size (at ! each (n.% 2) random.nat)]
- (random.list size again))]
- (all random.and
- ..random_location
- (is (Random (Code' (Ann Location)))
- (all random.or
- random.bit
- random.nat
- random.int
- random.rev
- random.safe_frac
- ..random_text
- ..random_symbol
- random_sequence
- random_sequence
- random_sequence
- )))))))
-
-(def: random_type
- (Random Type)
- (let [(open "[0]") random.monad]
- (all random.either
- (in .Nat)
- (in .List)
- (in .Code)
- (in .Type))))
-
-(def: size
- Test
- (<| (_.for [/.Size])
- (`` (all _.and
- (~~ (with_template [<size> <parser> <format>]
- [(do [! random.monad]
- [expected (at ! each (i64.and (i64.mask <size>))
- random.nat)]
- (_.coverage [<size> <parser> <format>]
- (|> (\\format.result <format> expected)
- (/.result <parser>)
- (!expect (^.multi {try.#Success actual}
- (n.= (.nat expected)
- (.nat actual)))))))]
-
- [/.size_8 /.bits_8 \\format.bits_8]
- [/.size_16 /.bits_16 \\format.bits_16]
- [/.size_32 /.bits_32 \\format.bits_32]
- [/.size_64 /.bits_64 \\format.bits_64]
- ))))))
-
-(def: binary
- Test
- (`` (all _.and
- (~~ (with_template [<parser> <format>]
- [(do [! random.monad]
- [expected (at ! each (at utf8.codec encoded) (random.ascii ..segment_size))]
- (_.coverage [<parser> <format>]
- (|> (\\format.result <format> expected)
- (/.result <parser>)
- (!expect (^.multi {try.#Success actual}
- (at binary.equivalence = expected actual))))))]
-
- [/.binary_8 \\format.binary_8]
- [/.binary_16 \\format.binary_16]
- [/.binary_32 \\format.binary_32]
- [/.binary_64 \\format.binary_64]
- )))))
-
-(def: utf8
- Test
- (`` (all _.and
- (~~ (with_template [<parser> <format>]
- [(do [! random.monad]
- [expected (random.ascii ..segment_size)]
- (_.coverage [<parser> <format>]
- (|> (\\format.result <format> expected)
- (/.result <parser>)
- (!expect (^.multi {try.#Success actual}
- (at text.equivalence = expected actual))))))]
-
- [/.utf8_8 \\format.utf8_8]
- [/.utf8_16 \\format.utf8_16]
- [/.utf8_32 \\format.utf8_32]
- [/.utf8_64 \\format.utf8_64]
- [/.text \\format.text]
- )))))
-
-(def: sequence
- Test
- (`` (all _.and
- (~~ (with_template [<parser> <format>]
- [(do [! random.monad]
- [expected (random.sequence ..segment_size random.nat)]
- (_.coverage [<parser> <format>]
- (|> expected
- (\\format.result (<format> \\format.nat))
- (/.result (<parser> /.nat))
- (!expect (^.multi {try.#Success actual}
- (at (sequence.equivalence n.equivalence) = expected actual))))))]
-
- [/.sequence_8 \\format.sequence_8]
- [/.sequence_16 \\format.sequence_16]
- [/.sequence_32 \\format.sequence_32]
- [/.sequence_64 \\format.sequence_64]
- )))))
-
-(def: simple
- Test
- (`` (all _.and
- (~~ (with_template [<parser> <format> <random> <equivalence>]
- [(do [! random.monad]
- [expected <random>]
- (_.coverage [<parser> <format>]
- (|> expected
- (\\format.result <format>)
- (/.result <parser>)
- (!expect (^.multi {try.#Success actual}
- (at <equivalence> = expected actual))))))]
-
- [/.bit \\format.bit random.bit bit.equivalence]
- [/.nat \\format.nat random.nat n.equivalence]
- [/.int \\format.int random.int int.equivalence]
- [/.rev \\format.rev random.rev rev.equivalence]))
- (do [! random.monad]
- [expected random.frac]
- (_.coverage [/.frac \\format.frac]
- (|> expected
- (\\format.result \\format.frac)
- (/.result /.frac)
- (!expect (^.multi {try.#Success actual}
- (or (at frac.equivalence = expected actual)
- (and (frac.not_a_number? expected)
- (frac.not_a_number? actual))))))))
- (do [! random.monad]
- [expected (at ! each (|>> (i64.and (i64.mask /.size_8))
- (n.max 2))
- random.nat)]
- (_.coverage [/.not_a_bit]
- (|> expected
- (\\format.result \\format.bits_8)
- (/.result /.bit)
- (!expect (^.multi {try.#Failure error}
- (exception.match? /.not_a_bit error))))))
- )))
-
-(def: complex
- Test
- (`` (all _.and
- (~~ (with_template [<parser> <format> <random> <equivalence>]
- [(do [! random.monad]
- [expected <random>]
- (_.coverage [<parser> <format>]
- (|> expected
- (\\format.result <format>)
- (/.result <parser>)
- (!expect (^.multi {try.#Success actual}
- (at <equivalence> = expected actual))))))]
-
- [/.location \\format.location random_location location_equivalence]
- [/.code \\format.code random_code code.equivalence]
- [/.type \\format.type random_type type.equivalence]
- ))
- (~~ (with_template [<parser_coverage> <parser> <coverage_format> <format> <random> <equivalence>]
- [(do [! random.monad]
- [expected <random>]
- (_.coverage [<parser_coverage> <coverage_format>]
- (|> expected
- (\\format.result <format>)
- (/.result <parser>)
- (!expect (^.multi {try.#Success actual}
- (at <equivalence> = expected actual))))))]
-
- [/.maybe (/.maybe /.nat) \\format.maybe (\\format.maybe \\format.nat) (random.maybe random.nat) (maybe.equivalence n.equivalence)]
- [/.list (/.list /.nat) \\format.list (\\format.list \\format.nat) (random.list ..segment_size random.nat) (list.equivalence n.equivalence)]
- [/.set (/.set n.hash /.nat) \\format.set (\\format.set \\format.nat) (random.set n.hash ..segment_size random.nat) set.equivalence]
- [/.symbol /.symbol \\format.symbol \\format.symbol ..random_symbol symbol.equivalence]))
- (do [! random.monad]
- [expected (at ! each (list.repeated ..segment_size) random.nat)]
- (_.coverage [/.set_elements_are_not_unique]
- (|> expected
- (\\format.result (\\format.list \\format.nat))
- (/.result (/.set n.hash /.nat))
- (!expect (^.multi {try.#Failure error}
- (exception.match? /.set_elements_are_not_unique error))))))
- (do [! random.monad]
- [expected (random.or random.bit random.nat)]
- (_.coverage [/.or \\format.or]
- (|> expected
- (\\format.result (\\format.or \\format.bit \\format.nat))
- (/.result (is (/.Parser (Either Bit Nat))
- (/.or /.bit /.nat)))
- (!expect (^.multi {try.#Success actual}
- (at (sum.equivalence bit.equivalence n.equivalence) =
- expected
- actual))))))
- (do [! random.monad]
- [tag (at ! each (|>> (i64.and (i64.mask /.size_8))
- (n.max 2))
- random.nat)
- value random.bit]
- (_.coverage [/.invalid_tag]
- (|> [tag value]
- (\\format.result (\\format.and \\format.bits_8 \\format.bit))
- (/.result (is (/.Parser (Either Bit Nat))
- (/.or /.bit /.nat)))
- (!expect (^.multi {try.#Failure error}
- (exception.match? /.invalid_tag error))))))
- (do [! random.monad]
- [expected (random.list ..segment_size random.nat)]
- (_.coverage [/.rec \\format.rec \\format.and \\format.any]
- (|> expected
- (\\format.result (\\format.rec (|>> (\\format.and \\format.nat)
- (\\format.or \\format.any))))
- (/.result (is (/.Parser (List Nat))
- (/.rec
- (function (_ again)
- (/.or /.any
- (<>.and /.nat
- again))))))
- (!expect (^.multi {try.#Success actual}
- (at (list.equivalence n.equivalence) =
- expected
- actual))))))
- )))
-
-(def: .public test
- Test
- (<| (_.covering /._)
- (_.for [/.Parser])
- (`` (all _.and
- (_.coverage [/.result /.any
- \\format.no_op \\format.instance]
- (|> (\\format.instance \\format.no_op)
- (/.result /.any)
- (!expect {try.#Success _})))
- (do [! random.monad]
- [data (at ! each (at utf8.codec encoded) (random.ascii ..segment_size))]
- (_.coverage [/.binary_was_not_fully_read]
- (|> data
- (/.result /.any)
- (!expect (^.multi {try.#Failure error}
- (exception.match? /.binary_was_not_fully_read error))))))
- (do [! random.monad]
- [expected (at ! each (at utf8.codec encoded) (random.ascii ..segment_size))]
- (_.coverage [/.segment \\format.segment \\format.result]
- (|> expected
- (\\format.result (\\format.segment ..segment_size))
- (/.result (/.segment ..segment_size))
- (!expect (^.multi {try.#Success actual}
- (at binary.equivalence = expected actual))))))
- (do [! random.monad]
- [data (at ! each (at utf8.codec encoded) (random.ascii ..segment_size))]
- (_.coverage [/.end?]
- (|> data
- (/.result (do <>.monad
- [pre /.end?
- _ (/.segment ..segment_size)
- post /.end?]
- (in (and (not pre)
- post))))
- (!expect {try.#Success #1}))))
- (do [! random.monad]
- [to_read (at ! each (n.% (++ ..segment_size)) random.nat)
- data (at ! each (at utf8.codec encoded) (random.ascii ..segment_size))]
- (_.coverage [/.Offset /.offset]
- (|> data
- (/.result (do <>.monad
- [start /.offset
- _ (/.segment to_read)
- offset /.offset
- _ (/.segment (n.- to_read ..segment_size))
- nothing_left /.offset]
- (in (and (n.= 0 start)
- (n.= to_read offset)
- (n.= ..segment_size nothing_left)))))
- (!expect {try.#Success #1}))))
- (do [! random.monad]
- [to_read (at ! each (n.% (++ ..segment_size)) random.nat)
- data (at ! each (at utf8.codec encoded) (random.ascii ..segment_size))]
- (_.coverage [/.remaining]
- (|> data
- (/.result (do <>.monad
- [_ (/.segment to_read)
- remaining /.remaining
- _ (/.segment (n.- to_read ..segment_size))
- nothing_left /.remaining]
- (in (and (n.= ..segment_size
- (n.+ to_read remaining))
- (n.= 0 nothing_left)))))
- (!expect {try.#Success #1}))))
- ..size
- ..binary
- ..utf8
- ..sequence
- ..simple
- ..complex
- ))))
diff --git a/stdlib/source/test/lux/data/binary.lux b/stdlib/source/test/lux/data/binary.lux
index 50a3f786f..691b6ff55 100644
--- a/stdlib/source/test/lux/data/binary.lux
+++ b/stdlib/source/test/lux/data/binary.lux
@@ -3,30 +3,401 @@
[lux (.except)
[ffi (.only)]
["_" test (.only Test)]
+ ["[0]" type]
[abstract
[equivalence (.only Equivalence)]
+ [predicate (.only Predicate)]
["[0]" monad (.only do)]
["[0]" enum]
[\\specification
["$[0]" equivalence]
["$[0]" monoid]]]
[control
+ ["<>" parser]
+ ["[0]" pipe]
+ ["[0]" maybe]
["[0]" try (.only Try)]
["[0]" exception (.only Exception)]]
[data
+ ["[0]" sum]
+ ["[0]" bit]
+ ["[0]" text (.open: "[1]#[0]" equivalence)
+ ["%" \\format (.only format)]
+ [encoding
+ ["[0]" utf8]]]
[collection
["[0]" list (.open: "[1]#[0]" functor)]
+ ["[0]" sequence]
+ ["[0]" set]
[array
[\\unsafe (.only)]]]]
+ [macro
+ ["^" pattern]
+ ["[0]" code]]
[math
["[0]" random (.only Random)]
[number
["n" nat]
- ["[0]" i64]]]]]
+ ["[0]" i64]
+ ["[0]" int]
+ ["[0]" rev]
+ ["[0]" frac]]]
+ [meta
+ ["[0]" symbol]]]]
[\\library
["[0]" / (.only) (.open: "[1]#[0]" equivalence)
["!" \\unsafe]
- ["[0]" \\format]]])
+ ["[0]" \\format]
+ ["[0]" \\parser]]])
+
+(def: !expect
+ (template (_ <expectation> <computation>)
+ [(case <computation>
+ <expectation>
+ true
+
+ _
+ false)]))
+
+(def: segment_size 10)
+
+(def: (utf8_conversion_does_not_alter? value)
+ (Predicate Text)
+ (|> value
+ (at utf8.codec encoded)
+ (at utf8.codec decoded)
+ (pipe.case
+ {try.#Success converted}
+ (text#= value converted)
+
+ {try.#Failure error}
+ false)))
+
+(def: random_text
+ (Random Text)
+ (random.only ..utf8_conversion_does_not_alter?
+ (random.unicode ..segment_size)))
+
+(def: random_symbol
+ (Random Symbol)
+ (random.and ..random_text ..random_text))
+
+(def: location_equivalence
+ (Equivalence Location)
+ (implementation
+ (def: (= [expected_module expected_line expected_column]
+ [sample_module sample_line sample_column])
+ (and (text#= expected_module sample_module)
+ (n.= expected_line sample_line)
+ (n.= expected_column sample_column)))))
+
+(def: random_location
+ (Random Location)
+ (all random.and
+ ..random_text
+ random.nat
+ random.nat))
+
+(def: random_code
+ (Random Code)
+ (random.rec
+ (function (_ again)
+ (let [random_sequence (do [! random.monad]
+ [size (at ! each (n.% 2) random.nat)]
+ (random.list size again))]
+ (all random.and
+ ..random_location
+ (is (Random (Code' (Ann Location)))
+ (all random.or
+ random.bit
+ random.nat
+ random.int
+ random.rev
+ random.safe_frac
+ ..random_text
+ ..random_symbol
+ random_sequence
+ random_sequence
+ random_sequence
+ )))))))
+
+(def: random_type
+ (Random Type)
+ (let [(open "[0]") random.monad]
+ (all random.either
+ (in .Nat)
+ (in .List)
+ (in .Code)
+ (in .Type))))
+
+(def: size
+ Test
+ (<| (_.for [\\parser.Size])
+ (`` (all _.and
+ (~~ (with_template [<size> <parser> <format>]
+ [(do [! random.monad]
+ [expected (at ! each (i64.and (i64.mask <size>))
+ random.nat)]
+ (_.coverage [<size> <parser> <format>]
+ (|> (\\format.result <format> expected)
+ (\\parser.result <parser>)
+ (!expect (^.multi {try.#Success actual}
+ (n.= (.nat expected)
+ (.nat actual)))))))]
+
+ [\\parser.size_8 \\parser.bits_8 \\format.bits_8]
+ [\\parser.size_16 \\parser.bits_16 \\format.bits_16]
+ [\\parser.size_32 \\parser.bits_32 \\format.bits_32]
+ [\\parser.size_64 \\parser.bits_64 \\format.bits_64]
+ ))))))
+
+(def: binary
+ Test
+ (`` (all _.and
+ (~~ (with_template [<parser> <format>]
+ [(do [! random.monad]
+ [expected (at ! each (at utf8.codec encoded) (random.ascii ..segment_size))]
+ (_.coverage [<parser> <format>]
+ (|> (\\format.result <format> expected)
+ (\\parser.result <parser>)
+ (!expect (^.multi {try.#Success actual}
+ (at /.equivalence = expected actual))))))]
+
+ [\\parser.binary_8 \\format.binary_8]
+ [\\parser.binary_16 \\format.binary_16]
+ [\\parser.binary_32 \\format.binary_32]
+ [\\parser.binary_64 \\format.binary_64]
+ )))))
+
+(def: utf8
+ Test
+ (`` (all _.and
+ (~~ (with_template [<parser> <format>]
+ [(do [! random.monad]
+ [expected (random.ascii ..segment_size)]
+ (_.coverage [<parser> <format>]
+ (|> (\\format.result <format> expected)
+ (\\parser.result <parser>)
+ (!expect (^.multi {try.#Success actual}
+ (at text.equivalence = expected actual))))))]
+
+ [\\parser.utf8_8 \\format.utf8_8]
+ [\\parser.utf8_16 \\format.utf8_16]
+ [\\parser.utf8_32 \\format.utf8_32]
+ [\\parser.utf8_64 \\format.utf8_64]
+ [\\parser.text \\format.text]
+ )))))
+
+(def: sequence
+ Test
+ (`` (all _.and
+ (~~ (with_template [<parser> <format>]
+ [(do [! random.monad]
+ [expected (random.sequence ..segment_size random.nat)]
+ (_.coverage [<parser> <format>]
+ (|> expected
+ (\\format.result (<format> \\format.nat))
+ (\\parser.result (<parser> \\parser.nat))
+ (!expect (^.multi {try.#Success actual}
+ (at (sequence.equivalence n.equivalence) = expected actual))))))]
+
+ [\\parser.sequence_8 \\format.sequence_8]
+ [\\parser.sequence_16 \\format.sequence_16]
+ [\\parser.sequence_32 \\format.sequence_32]
+ [\\parser.sequence_64 \\format.sequence_64]
+ )))))
+
+(def: simple
+ Test
+ (`` (all _.and
+ (~~ (with_template [<parser> <format> <random> <equivalence>]
+ [(do [! random.monad]
+ [expected <random>]
+ (_.coverage [<parser> <format>]
+ (|> expected
+ (\\format.result <format>)
+ (\\parser.result <parser>)
+ (!expect (^.multi {try.#Success actual}
+ (at <equivalence> = expected actual))))))]
+
+ [\\parser.bit \\format.bit random.bit bit.equivalence]
+ [\\parser.nat \\format.nat random.nat n.equivalence]
+ [\\parser.int \\format.int random.int int.equivalence]
+ [\\parser.rev \\format.rev random.rev rev.equivalence]))
+ (do [! random.monad]
+ [expected random.frac]
+ (_.coverage [\\parser.frac \\format.frac]
+ (|> expected
+ (\\format.result \\format.frac)
+ (\\parser.result \\parser.frac)
+ (!expect (^.multi {try.#Success actual}
+ (or (at frac.equivalence = expected actual)
+ (and (frac.not_a_number? expected)
+ (frac.not_a_number? actual))))))))
+ (do [! random.monad]
+ [expected (at ! each (|>> (i64.and (i64.mask \\parser.size_8))
+ (n.max 2))
+ random.nat)]
+ (_.coverage [\\parser.not_a_bit]
+ (|> expected
+ (\\format.result \\format.bits_8)
+ (\\parser.result \\parser.bit)
+ (!expect (^.multi {try.#Failure error}
+ (exception.match? \\parser.not_a_bit error))))))
+ )))
+
+(def: complex
+ Test
+ (`` (all _.and
+ (~~ (with_template [<parser> <format> <random> <equivalence>]
+ [(do [! random.monad]
+ [expected <random>]
+ (_.coverage [<parser> <format>]
+ (|> expected
+ (\\format.result <format>)
+ (\\parser.result <parser>)
+ (!expect (^.multi {try.#Success actual}
+ (at <equivalence> = expected actual))))))]
+
+ [\\parser.location \\format.location random_location location_equivalence]
+ [\\parser.code \\format.code random_code code.equivalence]
+ [\\parser.type \\format.type random_type type.equivalence]
+ ))
+ (~~ (with_template [<parser_coverage> <parser> <coverage_format> <format> <random> <equivalence>]
+ [(do [! random.monad]
+ [expected <random>]
+ (_.coverage [<parser_coverage> <coverage_format>]
+ (|> expected
+ (\\format.result <format>)
+ (\\parser.result <parser>)
+ (!expect (^.multi {try.#Success actual}
+ (at <equivalence> = expected actual))))))]
+
+ [\\parser.maybe (\\parser.maybe \\parser.nat) \\format.maybe (\\format.maybe \\format.nat) (random.maybe random.nat) (maybe.equivalence n.equivalence)]
+ [\\parser.list (\\parser.list \\parser.nat) \\format.list (\\format.list \\format.nat) (random.list ..segment_size random.nat) (list.equivalence n.equivalence)]
+ [\\parser.set (\\parser.set n.hash \\parser.nat) \\format.set (\\format.set \\format.nat) (random.set n.hash ..segment_size random.nat) set.equivalence]
+ [\\parser.symbol \\parser.symbol \\format.symbol \\format.symbol ..random_symbol symbol.equivalence]))
+ (do [! random.monad]
+ [expected (at ! each (list.repeated ..segment_size) random.nat)]
+ (_.coverage [\\parser.set_elements_are_not_unique]
+ (|> expected
+ (\\format.result (\\format.list \\format.nat))
+ (\\parser.result (\\parser.set n.hash \\parser.nat))
+ (!expect (^.multi {try.#Failure error}
+ (exception.match? \\parser.set_elements_are_not_unique error))))))
+ (do [! random.monad]
+ [expected (random.or random.bit random.nat)]
+ (_.coverage [\\parser.or \\format.or]
+ (|> expected
+ (\\format.result (\\format.or \\format.bit \\format.nat))
+ (\\parser.result (is (\\parser.Parser (Either Bit Nat))
+ (\\parser.or \\parser.bit \\parser.nat)))
+ (!expect (^.multi {try.#Success actual}
+ (at (sum.equivalence bit.equivalence n.equivalence) =
+ expected
+ actual))))))
+ (do [! random.monad]
+ [tag (at ! each (|>> (i64.and (i64.mask \\parser.size_8))
+ (n.max 2))
+ random.nat)
+ value random.bit]
+ (_.coverage [\\parser.invalid_tag]
+ (|> [tag value]
+ (\\format.result (\\format.and \\format.bits_8 \\format.bit))
+ (\\parser.result (is (\\parser.Parser (Either Bit Nat))
+ (\\parser.or \\parser.bit \\parser.nat)))
+ (!expect (^.multi {try.#Failure error}
+ (exception.match? \\parser.invalid_tag error))))))
+ (do [! random.monad]
+ [expected (random.list ..segment_size random.nat)]
+ (_.coverage [\\parser.rec \\format.rec \\format.and \\format.any]
+ (|> expected
+ (\\format.result (\\format.rec (|>> (\\format.and \\format.nat)
+ (\\format.or \\format.any))))
+ (\\parser.result (is (\\parser.Parser (List Nat))
+ (\\parser.rec
+ (function (_ again)
+ (\\parser.or \\parser.any
+ (<>.and \\parser.nat
+ again))))))
+ (!expect (^.multi {try.#Success actual}
+ (at (list.equivalence n.equivalence) =
+ expected
+ actual))))))
+ )))
+
+(def: \\parser
+ Test
+ (<| (_.covering \\parser._)
+ (_.for [\\parser.Parser])
+ (`` (all _.and
+ (_.coverage [\\parser.result \\parser.any
+ \\format.no_op \\format.instance]
+ (|> (\\format.instance \\format.no_op)
+ (\\parser.result \\parser.any)
+ (!expect {try.#Success _})))
+ (do [! random.monad]
+ [data (at ! each (at utf8.codec encoded) (random.ascii ..segment_size))]
+ (_.coverage [\\parser.binary_was_not_fully_read]
+ (|> data
+ (\\parser.result \\parser.any)
+ (!expect (^.multi {try.#Failure error}
+ (exception.match? \\parser.binary_was_not_fully_read error))))))
+ (do [! random.monad]
+ [expected (at ! each (at utf8.codec encoded) (random.ascii ..segment_size))]
+ (_.coverage [\\parser.segment \\format.segment \\format.result]
+ (|> expected
+ (\\format.result (\\format.segment ..segment_size))
+ (\\parser.result (\\parser.segment ..segment_size))
+ (!expect (^.multi {try.#Success actual}
+ (at /.equivalence = expected actual))))))
+ (do [! random.monad]
+ [data (at ! each (at utf8.codec encoded) (random.ascii ..segment_size))]
+ (_.coverage [\\parser.end?]
+ (|> data
+ (\\parser.result (do <>.monad
+ [pre \\parser.end?
+ _ (\\parser.segment ..segment_size)
+ post \\parser.end?]
+ (in (and (not pre)
+ post))))
+ (!expect {try.#Success #1}))))
+ (do [! random.monad]
+ [to_read (at ! each (n.% (++ ..segment_size)) random.nat)
+ data (at ! each (at utf8.codec encoded) (random.ascii ..segment_size))]
+ (_.coverage [\\parser.Offset \\parser.offset]
+ (|> data
+ (\\parser.result (do <>.monad
+ [start \\parser.offset
+ _ (\\parser.segment to_read)
+ offset \\parser.offset
+ _ (\\parser.segment (n.- to_read ..segment_size))
+ nothing_left \\parser.offset]
+ (in (and (n.= 0 start)
+ (n.= to_read offset)
+ (n.= ..segment_size nothing_left)))))
+ (!expect {try.#Success #1}))))
+ (do [! random.monad]
+ [to_read (at ! each (n.% (++ ..segment_size)) random.nat)
+ data (at ! each (at utf8.codec encoded) (random.ascii ..segment_size))]
+ (_.coverage [\\parser.remaining]
+ (|> data
+ (\\parser.result (do <>.monad
+ [_ (\\parser.segment to_read)
+ remaining \\parser.remaining
+ _ (\\parser.segment (n.- to_read ..segment_size))
+ nothing_left \\parser.remaining]
+ (in (and (n.= ..segment_size
+ (n.+ to_read remaining))
+ (n.= 0 nothing_left)))))
+ (!expect {try.#Success #1}))))
+ ..size
+ ..binary
+ ..utf8
+ ..sequence
+ ..simple
+ ..complex
+ ))))
(def: equivalence
(Equivalence \\format.Specification)
@@ -263,4 +634,5 @@
..test|unsafe
..\\format
+ ..\\parser
))))
diff --git a/stdlib/source/test/lux/data/format/tar.lux b/stdlib/source/test/lux/data/format/tar.lux
index ba81d4153..16bf8fb62 100644
--- a/stdlib/source/test/lux/data/format/tar.lux
+++ b/stdlib/source/test/lux/data/format/tar.lux
@@ -5,14 +5,14 @@
[abstract
[monad (.only do)]]
[control
+ ["<>" parser (.only)]
["[0]" maybe]
["[0]" try]
- ["[0]" exception]
- ["<>" parser (.only)
- ["<b>" binary]]]
+ ["[0]" exception]]
[data
["[0]" product]
["[0]" binary (.open: "[1]#[0]" equivalence monoid)
+ ["<b>" \\parser]
["[0]" \\format]]
["[0]" text (.open: "[1]#[0]" equivalence)
["%" \\format (.only format)]
diff --git a/stdlib/source/test/lux/extension.lux b/stdlib/source/test/lux/extension.lux
index 70984d45e..30accf1b0 100644
--- a/stdlib/source/test/lux/extension.lux
+++ b/stdlib/source/test/lux/extension.lux
@@ -21,8 +21,7 @@
[control
["[0]" try (.open: "[1]#[0]" functor)]
["<>" parser (.only)
- ["<[0]>" code]
- ["<[0]>" synthesis]]]
+ ["<[0]>" code]]]
[data
["[0]" product]
["[0]" binary (.only)
@@ -46,12 +45,13 @@
["[0]" unit]]]
[language
[lux
- ["[0]" synthesis]
["[0]" generation]
["[0]" directive]
["[0]" analysis (.only)
["[0]" type]
["<[1]>" \\parser]]
+ ["[0]" synthesis (.only)
+ ["<[1]>" \\parser]]
[phase
[generation
(~~ (.for "JVM" (~~ (.these ["[0]" jvm
@@ -159,13 +159,13 @@
(try.else (binary.empty 0))
(try#each (binaryF.result class.writer))
(class.class version.v6_0 class.public
- (name.internal $class)
- {.#None}
- (name.internal "java.lang.Object")
- (list)
- (list)
- (list)
- sequence.empty)))
+ (name.internal $class)
+ {.#None}
+ (name.internal "java.lang.Object")
+ (list)
+ (list)
+ (list)
+ sequence.empty)))
@.js (js.comment commentary
(js.statement (js.string commentary)))
@.python (python.comment commentary
diff --git a/stdlib/source/test/lux/tool.lux b/stdlib/source/test/lux/tool.lux
index 542b33921..217647f2e 100644
--- a/stdlib/source/test/lux/tool.lux
+++ b/stdlib/source/test/lux/tool.lux
@@ -12,9 +12,7 @@
[lux
... ["[1][0]" syntax]
["[1][0]" analysis]
- ["[1][0]" synthesis
- ["[1]/[0]" simple]
- ["[1]/[0]" access]]
+ ["[1][0]" synthesis]
["[1][0]" phase
["[1]/[0]" extension]
["[1]/[0]" analysis]
@@ -37,8 +35,7 @@
/reference.test
/phase.test
/analysis.test
- /synthesis/simple.test
- /synthesis/access.test
+ /synthesis.test
/meta/archive.test
/meta/cli.test
/meta/export.test
diff --git a/stdlib/source/test/lux/control/parser/synthesis.lux b/stdlib/source/test/lux/tool/compiler/language/lux/synthesis.lux
index 9f765d0a5..38d846740 100644
--- a/stdlib/source/test/lux/control/parser/synthesis.lux
+++ b/stdlib/source/test/lux/tool/compiler/language/lux/synthesis.lux
@@ -31,8 +31,10 @@
[lux
[analysis (.only Environment)]
["[0]" synthesis (.only Synthesis)]]]]]]]
- [\\library
- ["[0]" /]])
+ ["[0]" \\parser]
+ ["[0]" /
+ ["[1][0]" simple]
+ ["[1][0]" access]])
(def: !expect
(template (_ <pattern> <value>)
@@ -70,24 +72,24 @@
dummy (|> <random> (random.only (|>> (at <equivalence> = expected) not)))]
(all _.and
(_.coverage [<query>]
- (|> (/.result <query> (list (<synthesis> expected)))
+ (|> (\\parser.result <query> (list (<synthesis> expected)))
(!expect (^.multi {try.#Success actual}
(at <equivalence> = expected actual)))))
(_.coverage [<check>]
- (and (|> (/.result (<check> expected) (list (<synthesis> expected)))
+ (and (|> (\\parser.result (<check> expected) (list (<synthesis> expected)))
(!expect {try.#Success _}))
- (|> (/.result (<check> expected) (list (<synthesis> dummy)))
+ (|> (\\parser.result (<check> expected) (list (<synthesis> dummy)))
(!expect (^.multi {try.#Failure error}
- (exception.match? /.cannot_parse error))))))
+ (exception.match? \\parser.cannot_parse error))))))
))]
- [/.bit /.this_bit random.bit synthesis.bit bit.equivalence]
- [/.i64 /.this_i64 random.i64 synthesis.i64 i64.equivalence]
- [/.f64 /.this_f64 random.safe_frac synthesis.f64 frac.equivalence]
- [/.text /.this_text (random.unicode 1) synthesis.text text.equivalence]
- [/.local /.this_local random.nat synthesis.variable/local n.equivalence]
- [/.foreign /.this_foreign random.nat synthesis.variable/foreign n.equivalence]
- [/.constant /.this_constant ..random_constant synthesis.constant symbol.equivalence]
+ [\\parser.bit \\parser.this_bit random.bit synthesis.bit bit.equivalence]
+ [\\parser.i64 \\parser.this_i64 random.i64 synthesis.i64 i64.equivalence]
+ [\\parser.f64 \\parser.this_f64 random.safe_frac synthesis.f64 frac.equivalence]
+ [\\parser.text \\parser.this_text (random.unicode 1) synthesis.text text.equivalence]
+ [\\parser.local \\parser.this_local random.nat synthesis.variable/local n.equivalence]
+ [\\parser.foreign \\parser.this_foreign random.nat synthesis.variable/foreign n.equivalence]
+ [\\parser.constant \\parser.this_constant ..random_constant synthesis.constant symbol.equivalence]
))
)))
@@ -99,107 +101,116 @@
expected_i64 random.i64
expected_f64 random.safe_frac
expected_text (random.unicode 1)]
- (_.coverage [/.tuple]
- (and (|> (/.result (/.tuple (all <>.and /.bit /.i64 /.f64 /.text))
- (list (synthesis.tuple (list (synthesis.bit expected_bit)
- (synthesis.i64 expected_i64)
- (synthesis.f64 expected_f64)
- (synthesis.text expected_text)))))
+ (_.coverage [\\parser.tuple]
+ (and (|> (\\parser.result (\\parser.tuple (all <>.and \\parser.bit \\parser.i64 \\parser.f64 \\parser.text))
+ (list (synthesis.tuple (list (synthesis.bit expected_bit)
+ (synthesis.i64 expected_i64)
+ (synthesis.f64 expected_f64)
+ (synthesis.text expected_text)))))
(!expect (^.multi {try.#Success [actual_bit actual_i64 actual_f64 actual_text]}
(and (at bit.equivalence = expected_bit actual_bit)
(at i64.equivalence = expected_i64 actual_i64)
(at frac.equivalence = expected_f64 actual_f64)
(at text.equivalence = expected_text actual_text)))))
- (|> (/.result (/.tuple (all <>.and /.bit /.i64 /.f64 /.text))
- (list (synthesis.text expected_text)))
+ (|> (\\parser.result (\\parser.tuple (all <>.and \\parser.bit \\parser.i64 \\parser.f64 \\parser.text))
+ (list (synthesis.text expected_text)))
(!expect (^.multi {try.#Failure error}
- (exception.match? /.cannot_parse error)))))))
+ (exception.match? \\parser.cannot_parse error)))))))
(do [! random.monad]
[arity random.nat
expected_environment ..random_environment
expected_body (random.unicode 1)]
- (_.coverage [/.function]
- (and (|> (/.result (/.function arity /.text)
- (list (synthesis.function/abstraction [expected_environment arity (synthesis.text expected_body)])))
+ (_.coverage [\\parser.function]
+ (and (|> (\\parser.result (\\parser.function arity \\parser.text)
+ (list (synthesis.function/abstraction [expected_environment arity (synthesis.text expected_body)])))
(!expect (^.multi {try.#Success [actual_environment actual_body]}
(and (at (list.equivalence synthesis.equivalence) =
expected_environment
actual_environment)
(at text.equivalence = expected_body actual_body)))))
- (|> (/.result (/.function arity /.text)
- (list (synthesis.text expected_body)))
+ (|> (\\parser.result (\\parser.function arity \\parser.text)
+ (list (synthesis.text expected_body)))
(!expect (^.multi {try.#Failure error}
- (exception.match? /.cannot_parse error)))))))
+ (exception.match? \\parser.cannot_parse error)))))))
(do [! random.monad]
[arity random.nat
expected_environment ..random_environment
expected_body (random.unicode 1)]
- (_.coverage [/.wrong_arity]
- (|> (/.result (/.function (++ arity) /.text)
- (list (synthesis.function/abstraction [expected_environment arity (synthesis.text expected_body)])))
+ (_.coverage [\\parser.wrong_arity]
+ (|> (\\parser.result (\\parser.function (++ arity) \\parser.text)
+ (list (synthesis.function/abstraction [expected_environment arity (synthesis.text expected_body)])))
(!expect (^.multi {try.#Failure error}
- (exception.match? /.wrong_arity error))))))
+ (exception.match? \\parser.wrong_arity error))))))
(do [! random.monad]
[arity (at ! each (|>> (n.% 10) ++) random.nat)
expected_offset random.nat
expected_inits (random.list arity random.bit)
expected_body (random.unicode 1)]
- (_.coverage [/.loop]
- (and (|> (/.result (/.loop (<>.many /.bit) /.text)
- (list (synthesis.loop/scope [expected_offset
- (list#each (|>> synthesis.bit) expected_inits)
- (synthesis.text expected_body)])))
+ (_.coverage [\\parser.loop]
+ (and (|> (\\parser.result (\\parser.loop (<>.many \\parser.bit) \\parser.text)
+ (list (synthesis.loop/scope [expected_offset
+ (list#each (|>> synthesis.bit) expected_inits)
+ (synthesis.text expected_body)])))
(!expect (^.multi {try.#Success [actual_offset actual_inits actual_body]}
(and (at n.equivalence = expected_offset actual_offset)
(at (list.equivalence bit.equivalence) =
expected_inits
actual_inits)
(at text.equivalence = expected_body actual_body)))))
- (|> (/.result (/.loop (<>.many /.bit) /.text)
- (list (synthesis.text expected_body)))
+ (|> (\\parser.result (\\parser.loop (<>.many \\parser.bit) \\parser.text)
+ (list (synthesis.text expected_body)))
(!expect (^.multi {try.#Failure error}
- (exception.match? /.cannot_parse error)))))))
+ (exception.match? \\parser.cannot_parse error)))))))
))
-(def: .public test
+(def: \\parser
Test
- (<| (_.covering /._)
- (_.for [/.Parser])
+ (<| (_.covering \\parser._)
+ (_.for [\\parser.Parser])
(all _.and
(do [! random.monad]
[expected (at ! each (|>> synthesis.i64) random.i64)]
- (_.coverage [/.result /.any]
- (|> (/.result /.any (list expected))
+ (_.coverage [\\parser.result \\parser.any]
+ (|> (\\parser.result \\parser.any (list expected))
(!expect (^.multi {try.#Success actual}
(at synthesis.equivalence = expected actual))))))
- (_.coverage [/.empty_input]
- (|> (/.result /.any (list))
+ (_.coverage [\\parser.empty_input]
+ (|> (\\parser.result \\parser.any (list))
(!expect (^.multi {try.#Failure error}
- (exception.match? /.empty_input error)))))
+ (exception.match? \\parser.empty_input error)))))
(do [! random.monad]
[expected (at ! each (|>> synthesis.i64) random.i64)]
- (_.coverage [/.unconsumed_input]
- (|> (/.result /.any (list expected expected))
+ (_.coverage [\\parser.unconsumed_input]
+ (|> (\\parser.result \\parser.any (list expected expected))
(!expect (^.multi {try.#Failure error}
- (exception.match? /.unconsumed_input error))))))
+ (exception.match? \\parser.unconsumed_input error))))))
(do [! random.monad]
[dummy (at ! each (|>> synthesis.i64) random.i64)]
- (_.coverage [/.end /.expected_empty_input]
- (and (|> (/.result /.end (list))
+ (_.coverage [\\parser.end \\parser.expected_empty_input]
+ (and (|> (\\parser.result \\parser.end (list))
(!expect {try.#Success _}))
- (|> (/.result /.end (list dummy))
+ (|> (\\parser.result \\parser.end (list dummy))
(!expect (^.multi {try.#Failure error}
- (exception.match? /.expected_empty_input error)))))))
+ (exception.match? \\parser.expected_empty_input error)))))))
(do [! random.monad]
[dummy (at ! each (|>> synthesis.i64) random.i64)]
- (_.coverage [/.end?]
- (and (|> (/.result /.end? (list))
+ (_.coverage [\\parser.end?]
+ (and (|> (\\parser.result \\parser.end? (list))
(!expect {try.#Success #1}))
- (|> (/.result (<>.before /.any /.end?) (list dummy))
+ (|> (\\parser.result (<>.before \\parser.any \\parser.end?) (list dummy))
(!expect {try.#Success #0})))))
- (_.for [/.cannot_parse]
+ (_.for [\\parser.cannot_parse]
(all _.and
..simple
..complex
))
)))
+
+(def: .public test
+ Test
+ (all _.and
+ ..\\parser
+
+ /simple.test
+ /access.test
+ ))
diff --git a/stdlib/source/test/lux/tool/compiler/meta/archive/module/descriptor.lux b/stdlib/source/test/lux/tool/compiler/meta/archive/module/descriptor.lux
index cc9093286..6d2acbc82 100644
--- a/stdlib/source/test/lux/tool/compiler/meta/archive/module/descriptor.lux
+++ b/stdlib/source/test/lux/tool/compiler/meta/archive/module/descriptor.lux
@@ -7,13 +7,12 @@
[\\specification
["$[0]" equivalence]]]
[control
- ["[0]" try (.open: "[1]#[0]" functor)]
- [parser
- ["<[0]>" binary]]]
+ ["[0]" try (.open: "[1]#[0]" functor)]]
[data
["[0]" text (.open: "[1]#[0]" equivalence)]
["[0]" binary
- ["[1]" \\format]]]
+ ["[1]" \\format]
+ ["<[1]>" \\parser]]]
[math
["[0]" random (.only Random) (.open: "[1]#[0]" monad)]]]]
[\\library
diff --git a/stdlib/source/test/lux/tool/compiler/meta/archive/module/document.lux b/stdlib/source/test/lux/tool/compiler/meta/archive/module/document.lux
index e36561063..4f25ec351 100644
--- a/stdlib/source/test/lux/tool/compiler/meta/archive/module/document.lux
+++ b/stdlib/source/test/lux/tool/compiler/meta/archive/module/document.lux
@@ -7,12 +7,11 @@
[control
["[0]" pipe]
["[0]" try (.open: "[1]#[0]" functor)]
- ["[0]" exception]
- [parser
- ["<[0]>" binary]]]
+ ["[0]" exception]]
[data
["[0]" binary
- ["[1]F" \\format]]]
+ ["[1]F" \\format]
+ ["<[1]>" \\parser]]]
[math
["[0]" random]
[number
diff --git a/stdlib/source/test/lux/tool/compiler/meta/archive/registry.lux b/stdlib/source/test/lux/tool/compiler/meta/archive/registry.lux
index a3dfe0677..3cd46c9c8 100644
--- a/stdlib/source/test/lux/tool/compiler/meta/archive/registry.lux
+++ b/stdlib/source/test/lux/tool/compiler/meta/archive/registry.lux
@@ -6,14 +6,13 @@
[monad (.only do)]]
[control
["[0]" maybe (.open: "[1]#[0]" functor)]
- ["[0]" try (.open: "[1]#[0]" functor)]
- [parser
- ["<[0]>" binary]]]
+ ["[0]" try (.open: "[1]#[0]" functor)]]
[data
["[0]" product]
["[0]" text]
["[0]" binary
- ["[1]" \\format]]
+ ["[1]" \\format]
+ ["<[1]>" \\parser]]
[collection
["[0]" sequence (.only Sequence)]
["[0]" set (.only Set)]
diff --git a/stdlib/source/test/lux/tool/compiler/meta/archive/signature.lux b/stdlib/source/test/lux/tool/compiler/meta/archive/signature.lux
index 15db5b167..2586666ee 100644
--- a/stdlib/source/test/lux/tool/compiler/meta/archive/signature.lux
+++ b/stdlib/source/test/lux/tool/compiler/meta/archive/signature.lux
@@ -7,14 +7,13 @@
[\\specification
["$[0]" equivalence]]]
[control
- ["[0]" try (.open: "[1]#[0]" functor)]
- [parser
- ["<[0]>" binary]]]
+ ["[0]" try (.open: "[1]#[0]" functor)]]
[data
["[0]" bit (.open: "[1]#[0]" equivalence)]
["[0]" text (.open: "[1]#[0]" equivalence)]
["[0]" binary
- ["[1]F" \\format]]]
+ ["[1]F" \\format]
+ ["<[1]>" \\parser]]]
[math
["[0]" random (.only Random)]]]]
[\\library
diff --git a/stdlib/source/test/lux/tool/compiler/meta/export.lux b/stdlib/source/test/lux/tool/compiler/meta/export.lux
index 1fb6d3a2d..134f62058 100644
--- a/stdlib/source/test/lux/tool/compiler/meta/export.lux
+++ b/stdlib/source/test/lux/tool/compiler/meta/export.lux
@@ -8,15 +8,14 @@
["[0]" pipe]
["[0]" try (.open: "[1]#[0]" functor)]
[concurrency
- ["[0]" async]]
- [parser
- ["<[0]>" binary]]]
+ ["[0]" async]]]
[data
["[0]" product]
- ["[0]" binary (.only Binary) (.open: "[1]#[0]" equivalence)]
["[0]" bit (.open: "[1]#[0]" equivalence)]
[format
["[0]" tar]]
+ ["[0]" binary (.only Binary) (.open: "[1]#[0]" equivalence)
+ ["<[1]>" \\parser]]
["[0]" text (.open: "[1]#[0]" equivalence)
["%" \\format (.only format)]
[encoding
diff --git a/stdlib/source/test/lux/tool/compiler/meta/import.lux b/stdlib/source/test/lux/tool/compiler/meta/import.lux
index c37686e03..c5d2ce2b1 100644
--- a/stdlib/source/test/lux/tool/compiler/meta/import.lux
+++ b/stdlib/source/test/lux/tool/compiler/meta/import.lux
@@ -9,14 +9,13 @@
["[0]" try (.open: "[1]#[0]" functor)]
["[0]" exception]
[concurrency
- ["[0]" async]]
- [parser
- ["<[0]>" binary]]]
+ ["[0]" async]]]
[data
["[0]" product]
["[0]" bit (.open: "[1]#[0]" equivalence)]
["[0]" binary (.only Binary) (.open: "[1]#[0]" equivalence)
- ["[0]" \\format]]
+ ["[0]" \\format]
+ ["<[1]>" \\parser]]
["[0]" format
["[0]" tar (.only Tar)]]
["[0]" text (.open: "[1]#[0]" equivalence)