diff options
Diffstat (limited to 'stdlib/source/library/lux/control/parser/code.lux')
-rw-r--r-- | stdlib/source/library/lux/control/parser/code.lux | 106 |
1 files changed, 52 insertions, 54 deletions
diff --git a/stdlib/source/library/lux/control/parser/code.lux b/stdlib/source/library/lux/control/parser/code.lux index d58874cf4..4e31cb1b4 100644 --- a/stdlib/source/library/lux/control/parser/code.lux +++ b/stdlib/source/library/lux/control/parser/code.lux @@ -24,8 +24,8 @@ (def: (un_paired pairs) (All (_ a) (-> (List [a a]) (List a))) (case pairs - #.End #.End - {#.Item [[x y] pairs']} (list& x y (un_paired pairs')))) + {.#End} {.#End} + {.#Item [[x y] pairs']} (list& x y (un_paired pairs')))) (type: .public Parser (//.Parser (List Code))) @@ -40,30 +40,30 @@ (Parser Code) (function (_ tokens) (case tokens - #.End - {#try.Failure "There are no tokens to parse!"} + {.#End} + {try.#Failure "There are no tokens to parse!"} - {#.Item [t tokens']} - {#try.Success [tokens' t]}))) + {.#Item [t tokens']} + {try.#Success [tokens' t]}))) (def: .public next (Parser Code) (function (_ tokens) (case tokens - #.End - {#try.Failure "There are no tokens to parse!"} + {.#End} + {try.#Failure "There are no tokens to parse!"} - {#.Item next _} - {#try.Success [tokens next]}))) + {.#Item next _} + {try.#Success [tokens next]}))) (template [<query> <check> <type> <tag> <eq> <desc>] - [(with_expansions [<failure> (as_is {#try.Failure ($_ text\composite "Cannot parse " <desc> (remaining_inputs tokens))})] + [(with_expansions [<failure> (as_is {try.#Failure ($_ text\composite "Cannot parse " <desc> (remaining_inputs tokens))})] (def: .public <query> (Parser <type>) (function (_ tokens) (case tokens - {#.Item [[_ {<tag> x}] tokens']} - {#try.Success [tokens' x]} + {.#Item [[_ {<tag> x}] tokens']} + {try.#Success [tokens' x]} _ <failure>))) @@ -72,45 +72,44 @@ (-> <type> (Parser Any)) (function (_ tokens) (case tokens - {#.Item [[_ {<tag> actual}] tokens']} + {.#Item [[_ {<tag> actual}] tokens']} (if (\ <eq> = expected actual) - {#try.Success [tokens' []]} + {try.#Success [tokens' []]} <failure>) _ <failure>))))] - [bit bit! Bit #.Bit bit.equivalence "bit"] - [nat nat! Nat #.Nat nat.equivalence "nat"] - [int int! Int #.Int int.equivalence "int"] - [rev rev! Rev #.Rev rev.equivalence "rev"] - [frac frac! Frac #.Frac frac.equivalence "frac"] - [text text! Text #.Text text.equivalence "text"] - [identifier identifier! Name #.Identifier name.equivalence "identifier"] - [tag tag! Name #.Tag name.equivalence "tag"] + [bit bit! Bit .#Bit bit.equivalence "bit"] + [nat nat! Nat .#Nat nat.equivalence "nat"] + [int int! Int .#Int int.equivalence "int"] + [rev rev! Rev .#Rev rev.equivalence "rev"] + [frac frac! Frac .#Frac frac.equivalence "frac"] + [text text! Text .#Text text.equivalence "text"] + [identifier identifier! Name .#Identifier name.equivalence "identifier"] ) (def: .public (this! code) (-> Code (Parser Any)) (function (_ tokens) (case tokens - {#.Item [token tokens']} + {.#Item [token tokens']} (if (code\= code token) - {#try.Success [tokens' []]} - {#try.Failure ($_ text\composite "Expected a " (code.format code) " but instead got " (code.format token) + {try.#Success [tokens' []]} + {try.#Failure ($_ text\composite "Expected a " (code.format code) " but instead got " (code.format token) (remaining_inputs tokens))}) _ - {#try.Failure "There are no tokens to parse!"}))) + {try.#Failure "There are no tokens to parse!"}))) (template [<query> <check> <tag> <eq> <desc>] - [(with_expansions [<failure> (as_is {#try.Failure ($_ text\composite "Cannot parse " <desc> (remaining_inputs tokens))})] + [(with_expansions [<failure> (as_is {try.#Failure ($_ text\composite "Cannot parse " <desc> (remaining_inputs tokens))})] (def: .public <query> (Parser Text) (function (_ tokens) (case tokens - {#.Item [[_ {<tag> ["" x]}] tokens']} - {#try.Success [tokens' x]} + {.#Item [[_ {<tag> ["" x]}] tokens']} + {try.#Success [tokens' x]} _ <failure>))) @@ -119,16 +118,15 @@ (-> Text (Parser Any)) (function (_ tokens) (case tokens - {#.Item [[_ {<tag> ["" actual]}] tokens']} + {.#Item [[_ {<tag> ["" actual]}] tokens']} (if (\ <eq> = expected actual) - {#try.Success [tokens' []]} + {try.#Success [tokens' []]} <failure>) _ <failure>))))] - [local_identifier local_identifier! #.Identifier text.equivalence "local identifier"] - [ local_tag local_tag! #.Tag text.equivalence "local tag"] + [local_identifier local_identifier! .#Identifier text.equivalence "local identifier"] ) (template [<name> <tag> <desc>] @@ -137,46 +135,46 @@ (-> (Parser a) (Parser a))) (function (_ tokens) (case tokens - {#.Item [[_ {<tag> members}] tokens']} + {.#Item [[_ {<tag> members}] tokens']} (case (p members) - {#try.Success [#.End x]} {#try.Success [tokens' x]} - _ {#try.Failure ($_ text\composite "Parser was expected to fully consume " <desc> (remaining_inputs tokens))}) + {try.#Success [{.#End} x]} {try.#Success [tokens' x]} + _ {try.#Failure ($_ text\composite "Parser was expected to fully consume " <desc> (remaining_inputs tokens))}) _ - {#try.Failure ($_ text\composite "Cannot parse " <desc> (remaining_inputs tokens))})))] + {try.#Failure ($_ text\composite "Cannot parse " <desc> (remaining_inputs tokens))})))] - [form #.Form "form"] - [variant #.Variant "variant"] - [tuple #.Tuple "tuple"] + [form .#Form "form"] + [variant .#Variant "variant"] + [tuple .#Tuple "tuple"] ) (def: .public end! (Parser Any) (function (_ tokens) (case tokens - #.End {#try.Success [tokens []]} - _ {#try.Failure ($_ text\composite "Expected list of tokens to be empty!" (remaining_inputs tokens))}))) + {.#End} {try.#Success [tokens []]} + _ {try.#Failure ($_ text\composite "Expected list of tokens to be empty!" (remaining_inputs tokens))}))) (def: .public end? (Parser Bit) (function (_ tokens) - {#try.Success [tokens (case tokens - #.End true - _ false)]})) + {try.#Success [tokens (case tokens + {.#End} true + _ false)]})) (def: .public (result parser inputs) (All (_ a) (-> (Parser a) (List Code) (Try a))) (case (parser inputs) - {#try.Failure error} - {#try.Failure error} + {try.#Failure error} + {try.#Failure error} - {#try.Success [unconsumed value]} + {try.#Success [unconsumed value]} (case unconsumed - #.End - {#try.Success value} + {.#End} + {try.#Success value} _ - {#try.Failure (|> unconsumed + {try.#Failure (|> unconsumed (list\each code.format) (text.interposed ", ") (text\composite "Unconsumed inputs: "))}))) @@ -195,5 +193,5 @@ result (//.or parser ..any)] (case result - {#.Left _} (//.failure (text\composite "Did NOT expect to parse code: " (code.format sample))) - {#.Right output} (in output)))) + {.#Left _} (//.failure (text\composite "Did NOT expect to parse code: " (code.format sample))) + {.#Right output} (in output)))) |