===
[Literal] text
===
> "Test"
> """
 this is multiline
 """
---
(unison
    (watch_expression (literal_text))
    (watch_expression (literal_text)))
===
[Literal] Nat
===
x = 123
---
(unison
    (term_declaration
        (term_definition
            (regular_identifier)
            (kw_equals)
            (nat))))
===
[Literal] Nat (hex)
===
x = 0x003
---
(unison
    (term_declaration
        (term_definition
            (regular_identifier)
            (kw_equals)
            (literal_hex))))
===
[Literal] Int
===
x = -9223372036854775808
---
(unison
    (term_declaration
        (term_definition
            (regular_identifier)
            (kw_equals)
            (int))))
===
[Literal] Float
===
x = 1.6777216
---
(unison
    (term_declaration
        (term_definition
            (regular_identifier)
            (kw_equals)
            (float))))
===
[Literal] Char
===
x = ?a
x = ?\n
---
(unison
    (term_declaration (term_definition (regular_identifier) (kw_equals) (literal_char)))
    (term_declaration (term_definition (regular_identifier) (kw_equals) (literal_char))))
===
[Literal] Boolean
===
x = true
---
(unison
    (term_declaration
        (term_definition
            (regular_identifier)
            (kw_equals)
            (literal_boolean))))
===
[Literal] Byte
===
x = 0xsdeadbeef
---
(unison
    (term_declaration
        (term_definition
            (regular_identifier)
            (kw_equals)
            (literal_byte))))
===
[Literal] list literal
===
x = [1, 2, 3]
---
(unison
    (term_declaration
        (term_definition
            (regular_identifier)
            (kw_equals)
            (literal_list
                (open_bracket)
                (nat)
                (nat)
                (nat)
                (close_bracket)))))
===
[Literal] function
===
y = x -> x + 2
---
(unison
    (term_declaration
        (term_definition
            (regular_identifier)
            (kw_equals)
            (literal_function
                (regular_identifier)
                (arrow_symbol)
                (regular_identifier)
                (operator)
                (nat)))))
===
[Literal] tuple
===
x = (true, true, false)
---
(unison
    (term_declaration
        (term_definition
            (regular_identifier)
            (kw_equals)
            (tuple_or_parenthesized
                (literal_boolean)
                (literal_boolean)
                (literal_boolean)))))
===
[Literal] unit
===
x = ()
---
(unison
    (term_declaration
        (term_definition
            (regular_identifier)
            (kw_equals)
            (tuple_or_parenthesized))))
===
[Literal] termLink
===
x = termLink aUnisonTerm
---
(unison
    (term_declaration
        (term_definition
            (regular_identifier)
            (kw_equals)
            (literal_termlink
                (kw_termlink)
                (regular_identifier)))))
===
[Literal] typeLink
===
> typeLink Optional
> typeLink ##Foo.bar
---
(unison
    (watch_expression (literal_typelink (kw_typelink) (regular_identifier)))
    (watch_expression (literal_typelink (kw_typelink) (built_in_hash))))
===
[Literal] Nat
===
x = 1
---
(unison
    (term_declaration
        (term_definition
            (regular_identifier)
            (kw_equals)
            (nat))))
===
[Literal] numbers
===
x = 1.0
x = +1
x = -1
x = +1.0
x = -1.0
x = 1e3
x = 1e+3
x = 1e-3
x = +1e3
x = +1e+3
x = +1e-3
x = -1e3
x = -1e+3
x = -1e-3
x = 1.2e3
x = 1.2e+3
x = 1.2e-3
x = +1.2e3
x = +1.2e+3
x = +1.2e-3
x = -1.2e3
x = -1.2e+3
x = -1.2e-3
---
(unison
    (term_declaration (term_definition (regular_identifier) (kw_equals) (float)))
    (term_declaration (term_definition (regular_identifier) (kw_equals) (int)))
    (term_declaration (term_definition (regular_identifier) (kw_equals) (int)))
    (term_declaration (term_definition (regular_identifier) (kw_equals) (float)))
    (term_declaration (term_definition (regular_identifier) (kw_equals) (float)))
    (term_declaration (term_definition (regular_identifier) (kw_equals) (float)))
    (term_declaration (term_definition (regular_identifier) (kw_equals) (float)))
    (term_declaration (term_definition (regular_identifier) (kw_equals) (float)))
    (term_declaration (term_definition (regular_identifier) (kw_equals) (float)))
    (term_declaration (term_definition (regular_identifier) (kw_equals) (float)))
    (term_declaration (term_definition (regular_identifier) (kw_equals) (float)))
    (term_declaration (term_definition (regular_identifier) (kw_equals) (float)))
    (term_declaration (term_definition (regular_identifier) (kw_equals) (float)))
    (term_declaration (term_definition (regular_identifier) (kw_equals) (float)))
    (term_declaration (term_definition (regular_identifier) (kw_equals) (float)))
    (term_declaration (term_definition (regular_identifier) (kw_equals) (float)))
    (term_declaration (term_definition (regular_identifier) (kw_equals) (float)))
    (term_declaration (term_definition (regular_identifier) (kw_equals) (float)))
    (term_declaration (term_definition (regular_identifier) (kw_equals) (float)))
    (term_declaration (term_definition (regular_identifier) (kw_equals) (float)))
    (term_declaration (term_definition (regular_identifier) (kw_equals) (float)))
    (term_declaration (term_definition (regular_identifier) (kw_equals) (float)))
    (term_declaration (term_definition (regular_identifier) (kw_equals) (float))))
===
[Literal] escape sequences
===
> "\0 \a \b \f \n \r \t \v \s \\ \' \""
---
(unison (watch_expression (literal_text)))
===
[Literal] illegal float
===
> 1.7976931348623157E+309
---
(unison (watch_expression (float)))
