From 08eb05f23914194c3adcc141664d4c2d7d88978c Mon Sep 17 00:00:00 2001 From: Eduardo Julian Date: Sun, 7 May 2017 15:26:09 -0400 Subject: - Renamed "AST" to "Code". --- stdlib/test/test/lux/data/format/json.lux | 2 +- stdlib/test/test/lux/data/text/regex.lux | 2 +- stdlib/test/test/lux/macro/ast.lux | 33 --------- stdlib/test/test/lux/macro/code.lux | 33 +++++++++ stdlib/test/test/lux/macro/syntax.lux | 114 +++++++++++++++--------------- stdlib/test/tests.lux | 16 +++-- 6 files changed, 102 insertions(+), 98 deletions(-) delete mode 100644 stdlib/test/test/lux/macro/ast.lux create mode 100644 stdlib/test/test/lux/macro/code.lux (limited to 'stdlib/test') diff --git a/stdlib/test/test/lux/data/format/json.lux b/stdlib/test/test/lux/data/format/json.lux index c481fa60e..7acddf750 100644 --- a/stdlib/test/test/lux/data/format/json.lux +++ b/stdlib/test/test/lux/data/format/json.lux @@ -17,7 +17,7 @@ [dict] [list])) [macro #+ with-gensyms] - (macro [ast] + (macro [code] [syntax #+ syntax:] [poly #+ derived:]) ["R" math/random] diff --git a/stdlib/test/test/lux/data/text/regex.lux b/stdlib/test/test/lux/data/text/regex.lux index 64be4766e..62953b20b 100644 --- a/stdlib/test/test/lux/data/text/regex.lux +++ b/stdlib/test/test/lux/data/text/regex.lux @@ -10,7 +10,7 @@ (text [lexer] ["&" regex])) [macro] - (macro [ast] + (macro [code] ["s" syntax #+ syntax:]) ["R" math/random]) lux/test) diff --git a/stdlib/test/test/lux/macro/ast.lux b/stdlib/test/test/lux/macro/ast.lux deleted file mode 100644 index 8670ead71..000000000 --- a/stdlib/test/test/lux/macro/ast.lux +++ /dev/null @@ -1,33 +0,0 @@ -(;module: - lux - (lux [io] - (control monad) - (data [text "T/" Eq] - text/format - [number]) - ["R" math/random] - (macro ["&" ast])) - lux/test) - -(test: "AST" - (with-expansions - [ (do-template [ ] - [(assert (format "Can produce AST node: " ) - (and (T/= (&;to-text )) - (:: &;Eq = )))] - - [(&;bool true) "true"] - [(&;bool false) "false"] - [(&;int 123) "123"] - [(&;real 123.0) "123.0"] - [(&;char #"\n") "#\"\\n\""] - [(&;text "\n") "\"\\n\""] - [(&;tag ["yolo" "lol"]) "#yolo;lol"] - [(&;symbol ["yolo" "lol"]) "yolo;lol"] - [(&;form (list (&;bool true) (&;int 123))) "(true 123)"] - [(&;tuple (list (&;bool true) (&;int 123))) "[true 123]"] - [(&;record (list [(&;bool true) (&;int 123)])) "{true 123}"] - [(&;local-tag "lol") "#lol"] - [(&;local-symbol "lol") "lol"] - )] - ($_ seq ))) diff --git a/stdlib/test/test/lux/macro/code.lux b/stdlib/test/test/lux/macro/code.lux new file mode 100644 index 000000000..2f05ad926 --- /dev/null +++ b/stdlib/test/test/lux/macro/code.lux @@ -0,0 +1,33 @@ +(;module: + lux + (lux [io] + (control monad) + (data [text "T/" Eq] + text/format + [number]) + ["R" math/random] + (macro ["&" code])) + lux/test) + +(test: "Code" + (with-expansions + [ (do-template [ ] + [(assert (format "Can produce Code node: " ) + (and (T/= (&;to-text )) + (:: &;Eq = )))] + + [(&;bool true) "true"] + [(&;bool false) "false"] + [(&;int 123) "123"] + [(&;real 123.0) "123.0"] + [(&;char #"\n") "#\"\\n\""] + [(&;text "\n") "\"\\n\""] + [(&;tag ["yolo" "lol"]) "#yolo;lol"] + [(&;symbol ["yolo" "lol"]) "yolo;lol"] + [(&;form (list (&;bool true) (&;int 123))) "(true 123)"] + [(&;tuple (list (&;bool true) (&;int 123))) "[true 123]"] + [(&;record (list [(&;bool true) (&;int 123)])) "{true 123}"] + [(&;local-tag "lol") "#lol"] + [(&;local-symbol "lol") "lol"] + )] + ($_ seq ))) diff --git a/stdlib/test/test/lux/macro/syntax.lux b/stdlib/test/test/lux/macro/syntax.lux index 41c372e15..f75a7117e 100644 --- a/stdlib/test/test/lux/macro/syntax.lux +++ b/stdlib/test/test/lux/macro/syntax.lux @@ -12,13 +12,13 @@ [error #- fail]) ["R" math/random] [macro] - (macro [ast] + (macro [code] ["s" syntax #+ syntax: Syntax])) lux/test) ## [Utils] (def: (enforced? parser input) - (-> (Syntax []) (List AST) Bool) + (-> (Syntax []) (List Code) Bool) (case (s;run input parser) (#;Right [_ []]) true @@ -27,7 +27,7 @@ false)) (def: (found? parser input) - (-> (Syntax Bool) (List AST) Bool) + (-> (Syntax Bool) (List Code) Bool) (case (s;run input parser) (#;Right [_ true]) true @@ -36,7 +36,7 @@ false)) (def: (is? Eq test parser input) - (All [a] (-> (Eq a) a (Syntax a) (List AST) Bool)) + (All [a] (-> (Eq a) a (Syntax a) (List Code) Bool)) (case (s;run input parser) (#;Right [_ output]) (:: Eq = test output) @@ -70,31 +70,31 @@ (found? (s;this? ( )) (list ( ))) (enforced? (s;this! ( )) (list ( )))))] - ["Can parse Bool syntax." true ast;bool bool;Eq s;bool] - ["Can parse Nat syntax." +123 ast;nat number;Eq s;nat] - ["Can parse Int syntax." 123 ast;int number;Eq s;int] - ["Can parse Deg syntax." .123 ast;deg number;Eq s;deg] - ["Can parse Real syntax." 123.0 ast;real number;Eq s;real] - ["Can parse Char syntax." #"\n" ast;char char;Eq s;char] - ["Can parse Text syntax." "\n" ast;text text;Eq s;text] - ["Can parse Symbol syntax." ["yolo" "lol"] ast;symbol ident;Eq s;symbol] - ["Can parse Tag syntax." ["yolo" "lol"] ast;tag ident;Eq s;tag] + ["Can parse Bool syntax." true code;bool bool;Eq s;bool] + ["Can parse Nat syntax." +123 code;nat number;Eq s;nat] + ["Can parse Int syntax." 123 code;int number;Eq s;int] + ["Can parse Deg syntax." .123 code;deg number;Eq s;deg] + ["Can parse Real syntax." 123.0 code;real number;Eq s;real] + ["Can parse Char syntax." #"\n" code;char char;Eq s;char] + ["Can parse Text syntax." "\n" code;text text;Eq s;text] + ["Can parse Symbol syntax." ["yolo" "lol"] code;symbol ident;Eq s;symbol] + ["Can parse Tag syntax." ["yolo" "lol"] code;tag ident;Eq s;tag] )] ($_ seq (assert "Can parse symbols belonging to the current namespace." (and (match "yolo" - (s;run (list (ast;local-symbol "yolo")) + (s;run (list (code;local-symbol "yolo")) s;local-symbol)) - (fails? (s;run (list (ast;symbol ["yolo" "lol"])) + (fails? (s;run (list (code;symbol ["yolo" "lol"])) s;local-symbol)))) (assert "Can parse tags belonging to the current namespace." (and (match "yolo" - (s;run (list (ast;local-tag "yolo")) + (s;run (list (code;local-tag "yolo")) s;local-tag)) - (fails? (s;run (list (ast;tag ["yolo" "lol"])) + (fails? (s;run (list (code;tag ["yolo" "lol"])) s;local-tag)))) ))) @@ -103,89 +103,89 @@ [ (do-template [ ] [(assert (format "Can parse " " syntax.") (and (match [true 123] - (s;run (list ( (list (ast;bool true) (ast;int 123)))) + (s;run (list ( (list (code;bool true) (code;int 123)))) ( (s;seq s;bool s;int)))) (match true - (s;run (list ( (list (ast;bool true)))) + (s;run (list ( (list (code;bool true)))) ( s;bool))) - (fails? (s;run (list ( (list (ast;bool true) (ast;int 123)))) + (fails? (s;run (list ( (list (code;bool true) (code;int 123)))) ( s;bool))) (match (#;Left true) - (s;run (list ( (list (ast;bool true)))) + (s;run (list ( (list (code;bool true)))) ( (s;alt s;bool s;int)))) (match (#;Right 123) - (s;run (list ( (list (ast;int 123)))) + (s;run (list ( (list (code;int 123)))) ( (s;alt s;bool s;int)))) - (fails? (s;run (list ( (list (ast;real 123.0)))) + (fails? (s;run (list ( (list (code;real 123.0)))) ( (s;alt s;bool s;int))))))] - ["form" s;form ast;form] - ["tuple" s;tuple ast;tuple])] + ["form" s;form code;form] + ["tuple" s;tuple code;tuple])] ($_ seq (assert "Can parse record syntax." (match [true 123] - (s;run (list (ast;record (list [(ast;bool true) (ast;int 123)]))) + (s;run (list (code;record (list [(code;bool true) (code;int 123)]))) (s;record (s;seq s;bool s;int))))) ))) (test: "Assertions" (assert "Can make assertions while parsing." (and (match [] - (s;run (list (ast;bool true) (ast;int 123)) + (s;run (list (code;bool true) (code;int 123)) (s;assert "yolo" true))) - (fails? (s;run (list (ast;bool true) (ast;int 123)) + (fails? (s;run (list (code;bool true) (code;int 123)) (s;assert "yolo" false)))))) (test: "Combinators [Part 1]" ($_ seq - (assert "Can parse any AST." + (assert "Can parse any Code." (match [_ (#;Bool true)] - (s;run (list (ast;bool true) (ast;int 123)) + (s;run (list (code;bool true) (code;int 123)) s;any))) (assert "Can optionally succeed with some parser." (and (match (#;Some +123) - (s;run (list (ast;nat +123)) + (s;run (list (code;nat +123)) (s;opt s;nat))) (match #;None - (s;run (list (ast;int -123)) + (s;run (list (code;int -123)) (s;opt s;nat))))) (assert "Can apply a parser 0 or more times." (and (match (list +123 +456 +789) - (s;run (list (ast;nat +123) (ast;nat +456) (ast;nat +789)) + (s;run (list (code;nat +123) (code;nat +456) (code;nat +789)) (s;some s;nat))) (match (list) - (s;run (list (ast;int -123)) + (s;run (list (code;int -123)) (s;some s;nat))))) (assert "Can apply a parser 1 or more times." (and (match (list +123 +456 +789) - (s;run (list (ast;nat +123) (ast;nat +456) (ast;nat +789)) + (s;run (list (code;nat +123) (code;nat +456) (code;nat +789)) (s;many s;nat))) (match (list +123) - (s;run (list (ast;nat +123)) + (s;run (list (code;nat +123)) (s;many s;nat))) - (fails? (s;run (list (ast;int -123)) + (fails? (s;run (list (code;int -123)) (s;many s;nat))))) (assert "Can use either parser." (and (match 123 - (s;run (list (ast;int 123) (ast;int 456) (ast;int 789)) + (s;run (list (code;int 123) (code;int 456) (code;int 789)) (s;either s;pos-int s;int))) (match -123 - (s;run (list (ast;int -123) (ast;int 456) (ast;int 789)) + (s;run (list (code;int -123) (code;int 456) (code;int 789)) (s;either s;pos-int s;int))) - (fails? (s;run (list (ast;bool true) (ast;int 456) (ast;int 789)) + (fails? (s;run (list (code;bool true) (code;int 456) (code;int 789)) (s;either s;pos-int s;int))))) (assert "Can create the opposite/negation of any parser." - (and (fails? (s;run (list (ast;int 123) (ast;int 456) (ast;int 789)) + (and (fails? (s;run (list (code;int 123) (code;int 456) (code;int 789)) (s;not s;int))) (match [] - (s;run (list (ast;bool true) (ast;int 456) (ast;int 789)) + (s;run (list (code;bool true) (code;int 456) (code;int 789)) (s;not s;int))))) )) @@ -196,59 +196,59 @@ (s;run (list) s;end?)) (match false - (s;run (list (ast;bool true)) + (s;run (list (code;bool true)) s;end?)))) (assert "Can ensure the end has been reached." (and (match [] (s;run (list) s;end!)) - (fails? (s;run (list (ast;bool true)) + (fails? (s;run (list (code;bool true)) s;end!)))) (assert "Can apply a parser N times." (and (match (list 123 456 789) - (s;run (list (ast;int 123) (ast;int 456) (ast;int 789)) + (s;run (list (code;int 123) (code;int 456) (code;int 789)) (s;exactly +3 s;int))) (match (list 123 456) - (s;run (list (ast;int 123) (ast;int 456) (ast;int 789)) + (s;run (list (code;int 123) (code;int 456) (code;int 789)) (s;exactly +2 s;int))) - (fails? (s;run (list (ast;int 123) (ast;int 456) (ast;int 789)) + (fails? (s;run (list (code;int 123) (code;int 456) (code;int 789)) (s;exactly +4 s;int))))) (assert "Can apply a parser at-least N times." (and (match (list 123 456 789) - (s;run (list (ast;int 123) (ast;int 456) (ast;int 789)) + (s;run (list (code;int 123) (code;int 456) (code;int 789)) (s;at-least +3 s;int))) (match (list 123 456 789) - (s;run (list (ast;int 123) (ast;int 456) (ast;int 789)) + (s;run (list (code;int 123) (code;int 456) (code;int 789)) (s;at-least +2 s;int))) - (fails? (s;run (list (ast;int 123) (ast;int 456) (ast;int 789)) + (fails? (s;run (list (code;int 123) (code;int 456) (code;int 789)) (s;at-least +4 s;int))))) (assert "Can apply a parser at-most N times." (and (match (list 123 456 789) - (s;run (list (ast;int 123) (ast;int 456) (ast;int 789)) + (s;run (list (code;int 123) (code;int 456) (code;int 789)) (s;at-most +3 s;int))) (match (list 123 456) - (s;run (list (ast;int 123) (ast;int 456) (ast;int 789)) + (s;run (list (code;int 123) (code;int 456) (code;int 789)) (s;at-most +2 s;int))) (match (list 123 456 789) - (s;run (list (ast;int 123) (ast;int 456) (ast;int 789)) + (s;run (list (code;int 123) (code;int 456) (code;int 789)) (s;at-most +4 s;int))))) (assert "Can apply a parser between N and M times." (and (match (list 123 456 789) - (s;run (list (ast;int 123) (ast;int 456) (ast;int 789)) + (s;run (list (code;int 123) (code;int 456) (code;int 789)) (s;between +3 +10 s;int))) - (fails? (s;run (list (ast;int 123) (ast;int 456) (ast;int 789)) + (fails? (s;run (list (code;int 123) (code;int 456) (code;int 789)) (s;between +4 +10 s;int))))) (assert "Can parse while taking separators into account." (and (match (list 123 456 789) - (s;run (list (ast;int 123) (ast;text "YOLO") (ast;int 456) (ast;text "YOLO") (ast;int 789)) + (s;run (list (code;int 123) (code;text "YOLO") (code;int 456) (code;text "YOLO") (code;int 789)) (s;sep-by (s;this! (' "YOLO")) s;int))) (match (list 123 456) - (s;run (list (ast;int 123) (ast;text "YOLO") (ast;int 456) (ast;int 789)) + (s;run (list (code;int 123) (code;text "YOLO") (code;int 456) (code;int 789)) (s;sep-by (s;this! (' "YOLO")) s;int))))) )) diff --git a/stdlib/test/tests.lux b/stdlib/test/tests.lux index 4cb00c4a7..2b24bd70e 100644 --- a/stdlib/test/tests.lux +++ b/stdlib/test/tests.lux @@ -15,12 +15,14 @@ ["_;" promise] ["_;" stm]) (control ["_;" effect] + ["_;" exception] ["_;" interval] ["_;" pipe] ["_;" cont] ["_;" reader] ["_;" state] - ["_;" thunk]) + ["_;" thunk] + ) (data ["_;" bit] ["_;" bool] ["_;" char] @@ -35,7 +37,6 @@ ["_;" product] ["_;" sum] ["_;" text] - (error ["_;" exception]) (format ["_;" json] ["_;" xml]) (coll ["_;" array] @@ -50,15 +51,17 @@ ["_;" zipper]) ["_;" seq] ["_;" priority-queue] - ["_;" stream]) + ["_;" stream] + ) (text ["_;" format] ["_;" lexer] - ["_;" regex])) + ["_;" regex]) + ) ["_;" math] (math ["_;" simple] (logic ["_;" continuous] ["_;" fuzzy])) - (macro ["_;" ast] + (macro ["_;" code] ["_;" syntax] (poly ["poly_;" eq] ["poly_;" text-encoder] @@ -66,7 +69,8 @@ ["_;" type] (type ["_;" check] ["_;" auto]) - )) + ) + ) (lux (control [contract]) (data [env] [trace] -- cgit v1.2.3