==============================
boolean literals
==============================

true
false

---

(source_file
  (boolean_literal)
  (boolean_literal))

==============================
integer number literals
==============================

0b01
0o01234567
0123456789
123_456_789
0x0123456789_abcdef_ABCDEF

---

(source_file
  (integer_literal)
  (integer_literal)
  (integer_literal)
  (integer_literal)
  (integer_literal))


==============================
float number literals
==============================

0123456789.
.0123456789
0123456789.0123456789

9e10
9E-1
9f10
9f-1

.1e10
1.1e10
1.e10

0x0123456789_abcdef.ABCDEFp0
0x0123456789_abcdef_ABCDEF.p-1
0x.0123456789_abcdef_ABCDEFp1

----

(source_file
  (float_literal)
  (float_literal)
  (float_literal)
  (float_literal)
  (float_literal)
  (float_literal)
  (float_literal)
  (float_literal)
  (float_literal)
  (float_literal)
  (float_literal)
  (float_literal)
  (float_literal))


==============================
character literals
==============================

' '
'o'
'\t'
'\uffff'
'\U10ffff'

---

(source_file
  (character_literal)
  (character_literal)
  (character_literal)
  (character_literal)
  (character_literal))


==============================
string literals
==============================

""
"\""
"foo
 bar"
"this is a \"string\"."
"""this is also a "string"."""
band = "Interpol"
"$band is a cool band"
"$(2π) is a cool number"
"cells interlinked within $("cells interlinked whithin $("cells interlinked whithin one stem")")"

---

(source_file
  (string_literal)
  (string_literal (escape_sequence))
  (string_literal (content))
  (string_literal (content) (escape_sequence) (content) (escape_sequence) (content))
  (string_literal (content))
  (assignment
    (identifier)
    (operator)
    (string_literal (content)))
  (string_literal
    (string_interpolation (identifier))
    (content))
  (string_literal
    (string_interpolation (juxtaposition_expression (integer_literal) (identifier)))
    (content))
  (string_literal
    (content)
    (string_interpolation
      (string_literal
        (content)
        (string_interpolation
          (string_literal (content)))))))


==============================
command string literals
==============================

`pwd`
m`pwd`
`cd $dir`
`echo \`cmd\``
```
echo "\033[31mred\033[m"
```

---

(source_file
  (command_literal (content))
  (prefixed_command_literal
    prefix: (identifier)
    (content))
  (command_literal (content) (string_interpolation (identifier)))
  (command_literal (content) (escape_sequence) (content) (escape_sequence))
  (command_literal
   (content)
   (escape_sequence)
   (content)
   (escape_sequence)
   (content)))


==============================
non-standard string literals
==============================

# FIXME: \s shouldn't be an escape_sequence here
trailing_ws = r"\s+$"
version = v"1.0"
K"\\"

---

(source_file
  (line_comment)
  (assignment
    (identifier)
    (operator)
    (prefixed_string_literal
        prefix: (identifier)
        (content)))
  (assignment
    (identifier)
    (operator)
    (prefixed_string_literal
        prefix: (identifier)
        (content)))
  (prefixed_string_literal
    prefix: (identifier)
    (escape_sequence)))


==============================
comments
==============================

# comment
#= comment =#
#=
comment
=#
x = #= comment =# 1

#=
nested #= comments =# =#
#==#

---

(source_file
  (line_comment)
  (block_comment)
  (block_comment)
  (assignment (identifier) (operator) (block_comment) (integer_literal))
  (block_comment)
  (block_comment))

