=====================
Test Empty String Arg
=====================

node ""

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (string)))))

================
Test Single Prop
================

node prop="val"

---

    (document
      (node
        (identifier)
        (node_field
          (prop
            (identifier)
            (value
              (string
                (string_fragment)))))))

==============
Test Node Type
==============

(type)node

---

    (document
      (node
        (type
          (identifier))
        (identifier)))

==================
Test Block Comment
==================

node "arg"

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (string
              (string_fragment))))))

=====================
Test Raw String Quote
=====================

node "a\"b"

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (string
              (string_fragment
                (escape)))))))

==================
Test Arg Null Type
==================

node (type)null

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (type
              (identifier))
            (keyword)))))

=========================
Test Semicolon Terminated
=========================

node1

---

    (document
      (node
        (identifier)))

=====================================
Test Slashdash Arg Before Newline Esc
=====================================

node

---

    (document
      (node
        (identifier)))

=================
Test Repeated Arg
=================

node "arg" "arg"

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (string
              (string_fragment))))
        (node_field
          (value
            (string
              (string_fragment))))))

===================
Test Arg False Type
===================

node (type)false

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (type
              (identifier))
            (keyword
              (boolean))))))

==================
Test Arg True Type
==================

node (type)true

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (type
              (identifier))
            (keyword
              (boolean))))))

===================
Test Commented Node
===================

node_2

---

    (document
      (node
        (identifier)))

============
Test Escline
============

node "arg"

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (string
              (string_fragment))))))

=========================
Test Raw String Backslash
=========================

node "\\n"

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (string
              (string_fragment
                (escape)))))))

========================
Test Preserve Node Order
========================

node2
node5
node1

---

    (document
      (node
        (identifier))
      (node
        (identifier))
      (node
        (identifier)))

========================
Test Slashdash Only Node
========================



---

    (document)

=========================
Test Empty Quoted Node Id
=========================

"" "arg"

---

    (document
      (node
        (identifier
          (string))
        (node_field
          (value
            (string
              (string_fragment))))))

=================
Test Boolean Prop
=================

node prop1=true prop2=false

---

    (document
      (node
        (identifier)
        (node_field
          (prop
            (identifier)
            (value
              (keyword
                (boolean)))))
        (node_field
          (prop
            (identifier)
            (value
              (keyword
                (boolean)))))))

===========================
Test Slashdash In Slashdash
===========================

node2

---

    (document
      (node
        (identifier)))

==============================
Test Newlines In Block Comment
==============================

node "arg"

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (string
              (string_fragment))))))

===================================
Test Slashdash Only Node With Space
===================================



---

    (document)

===================
Test Prop Zero Type
===================

node key=(type)0

---

    (document
      (node
        (identifier)
        (node_field
          (prop
            (identifier)
            (value
              (type
                (identifier))
              (number))))))

=============================
Test Preserve Duplicate Nodes
=============================

node
node

---

    (document
      (node
        (identifier))
      (node
        (identifier)))

=====================
Test Prop String Type
=====================

node key=(type)"str"

---

    (document
      (node
        (identifier)
        (node_field
          (prop
            (identifier)
            (value
              (type
                (identifier))
              (string
                (string_fragment)))))))

=============================
Test Unusual Chars In Bare Id
=============================

foo123~!@#$%^&*.:'|?+ "weeee"

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (string
              (string_fragment))))))

=================
Test Just Newline
=================



---

    (document)

=====================
Test Quoted Node Name
=====================

"0node"

---

    (document
      (node
        (identifier
          (string
            (string_fragment)))))

=================
Test Numeric Prop
=================

node prop=10.0

---

    (document
      (node
        (identifier)
        (node_field
          (prop
            (identifier)
            (value
              (number
                (decimal)))))))

=======================================
Test Unusual Bare Id Chars In Quoted Id
=======================================

foo123~!@#$%^&*.:'|?+ "weeee"

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (string
              (string_fragment))))))

======================
Test Only Line Comment
======================



---

    (document)

==============
Test Null Prop
==============

node prop=null

---

    (document
      (node
        (identifier)
        (node_field
          (prop
            (identifier)
            (value
              (keyword))))))

=========================
Test Escline Line Comment
=========================

node "arg" "arg2\n"

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (string
              (string_fragment))))
        (node_field
          (value
            (string
              (string_fragment
                (escape)))))))

===========================
Test Only Line Comment Crlf
===========================



---

    (document)

==============
Test Tab Space
==============

node

---

    (document
      (node
        (identifier)))

================
Test Numeric Arg
================

node 15.7

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (number
              (decimal))))))

==========================
Test Esc Newline In String
==========================

node "hello\nworld"

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (string
              (string_fragment
                (escape)))))))

====================
Test All Node Fields
====================

node {
    inner_node
}

---

    (document
      (node
        (identifier)
        (node_children
          (node
            (identifier)))))

============================
Test Slashdash Node In Child
============================

node1

---

    (document
      (node
        (identifier)))

==========
Test Empty
==========



---

    (document)

=====================
Test Hex Leading Zero
=====================

node 1

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (number)))))

======================
Test Positive Exponent
======================

node 1.0E+10

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (number
              (decimal)
              (exponent))))))

============================
Test Null Prefix In Prop Key
============================

node null_id=1

---

    (document
      (node
        (identifier)
        (node_field
          (prop
            (identifier)
            (value
              (number))))))

============================
Test Int Multiple Underscore
============================

node 1234

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (number)))))

==============================
Test Block Comment Before Node
==============================

node

---

    (document
      (node
        (identifier)))

=================
Test Escline Node
=================

node1
node2

---

    (document
      (node
        (identifier))
      (node
        (identifier)))

=====================
Test Quoted Prop Name
=====================

node "0prop"="val"

---

    (document
      (node
        (identifier)
        (node_field
          (prop
            (identifier
              (string
                (string_fragment)))
            (value
              (string
                (string_fragment)))))))

==========================
Test Raw String Just Quote
==========================

node "\""

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (string
              (string_fragment
                (escape)))))))

==============
Test Prop Type
==============

node key=(type)true

---

    (document
      (node
        (identifier)
        (node_field
          (prop
            (identifier)
            (value
              (type
                (identifier))
              (keyword
                (boolean)))))))

====================
Test Blank Node Type
====================

("")node

---

    (document
      (node
        (type
          (identifier
            (string)))
        (identifier)))

==========
Test Octal
==========

node 16434824

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (number)))))

===================
Test Slashdash Prop
===================

node "arg"

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (string
              (string_fragment))))))

====================
Test Leading Newline
====================

node

---

    (document
      (node
        (identifier)))

===========================
Test Slashdash Raw Prop Key
===========================

node

---

    (document
      (node
        (identifier)))

==================
Test Repeated Prop
==================

node prop=11

---

    (document
      (node
        (identifier)
        (node_field
          (prop
            (identifier)
            (value
              (number))))))

==================
Test Raw Prop Type
==================

node key=(type)true

---

    (document
      (node
        (identifier)
        (node_field
          (prop
            (identifier)
            (value
              (type
                (identifier))
              (keyword
                (boolean)))))))

=====================
Test Leading Zero Int
=====================

node 11

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (number)))))

===================
Test Commented Line
===================

node_2

---

    (document
      (node
        (identifier)))

============================
Test Slashdash Repeated Prop
============================

node arg="correct"

---

    (document
      (node
        (identifier)
        (node_field
          (prop
            (identifier)
            (value
              (string
                (string_fragment)))))))

========================
Test Underscore In Octal
========================

node 342391

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (number)))))

=============
Test Zero Int
=============

node 0

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (number)))))

================
Test Empty Child
================

node

---

    (document
      (node
        (identifier)))

===========================
Test Null Prefix In Bare Id
===========================

null_id

---

    (document
      (node
        (identifier)))

===============================
Test Binary Trailing Underscore
===============================

node 2

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (number)))))

====================
Test Commented Child
====================

node "arg"

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (string
              (string_fragment))))))

=============================
Test Block Comment After Node
=============================

node "arg"

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (string
              (string_fragment))))))

====================
Test Raw String Prop
====================

node_1 prop="arg\\n"
node_2 prop="\"arg\"\\n"
node_3 prop="#\"arg\"#\\n"

---

    (document
      (node
        (identifier)
        (node_field
          (prop
            (identifier)
            (value
              (string
                (string_fragment
                  (escape)))))))
      (node
        (identifier)
        (node_field
          (prop
            (identifier)
            (value
              (string
                (string_fragment
                  (escape)
                  (escape)
                  (escape)))))))
      (node
        (identifier)
        (node_field
          (prop
            (identifier)
            (value
              (string
                (string_fragment
                  (escape)
                  (escape)
                  (escape))))))))

============
Test Only Cr
============



---

    (document)

=====================
Test Quoted Node Type
=====================

("type/")node

---

    (document
      (node
        (type
          (identifier
            (string
              (string_fragment))))
        (identifier)))

===============
Test Node False
===============

node false

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (keyword
              (boolean))))))

=======================
Test Sci Notation Large
=======================

node prop=1.23E+1000

---

    (document
      (node
        (identifier)
        (node_field
          (prop
            (identifier)
            (value
              (number
                (decimal)
                (exponent)))))))

==================
Test Arg Zero Type
==================

node (type)0

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (type
              (identifier))
            (number)))))

===========================
Test Empty Child Whitespace
===========================

node

---

    (document
      (node
        (identifier)))

==============================
Test Semicolon Separated Nodes
==============================

node1
node2

---

    (document
      (node
        (identifier))
      (node
        (identifier)))

=======================
Test Semicolon In Child
=======================

node1 {
    node2
}

---

    (document
      (node
        (identifier)
        (node_children
          (node
            (identifier)))))

=========================
Test Prop Raw String Type
=========================

node key=(type)"str"

---

    (document
      (node
        (identifier)
        (node_field
          (prop
            (identifier)
            (value
              (type
                (identifier))
              (string
                (string_fragment)))))))

==========================
Test Block Comment Newline
==========================



---

    (document)

====================
Test Blank Prop Type
====================

node key=("")true

---

    (document
      (node
        (identifier)
        (node_field
          (prop
            (identifier)
            (value
              (type
                (identifier
                  (string)))
              (keyword
                (boolean)))))))

========================
Test Slashdash Full Node
========================



---

    (document)

=============================
Test False Prefix In Prop Key
=============================

node false_id=1

---

    (document
      (node
        (identifier)
        (node_field
          (prop
            (identifier)
            (value
              (number))))))

======================
Test Negative Exponent
======================

node 1.0E-10

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (number
              (decimal)
              (exponent))))))

===============
Test Single Arg
===============

node "arg"

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (string
              (string_fragment))))))

=============================
Test Raw String Multiple Hash
=============================

node "\"#\"##"

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (string
              (string_fragment
                (escape)
                (escape)))))))

================
Test Boolean Arg
================

node false true

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (keyword
              (boolean))))
        (node_field
          (value
            (keyword
              (boolean))))))

========================
Test Arg Raw String Type
========================

node (type)"str"

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (type
              (identifier))
            (string
              (string_fragment))))))

===================================
Test Nested Multiline Block Comment
===================================

node "arg"

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (string
              (string_fragment))))))

=================
Test Positive Int
=================

node 10

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (number)))))

====================
Test Prop Float Type
====================

node key=(type)2.5E+10

---

    (document
      (node
        (identifier)
        (node_field
          (prop
            (identifier)
            (value
              (type
                (identifier))
              (number
                (decimal)
                (exponent)))))))

=============
Test Arg Type
=============

node (type)"arg"

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (type
              (identifier))
            (string
              (string_fragment))))))

============================
Test Trailing Underscore Hex
============================

node 1194684

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (number)))))

=========================
Test Nested Block Comment
=========================

node "arg"

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (string
              (string_fragment))))))

====================
Test Quoted Arg Type
====================

node ("type/")10

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (type
              (identifier
                (string
                  (string_fragment))))
            (number)))))

====================
Test Nested Comments
====================

node "arg"

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (string
              (string_fragment))))))

==============================
Test Raw String Just Backslash
==============================

"\\"

---

    (document
      (node
        (identifier
          (string
            (string_fragment
              (escape))))))

===================
Test Commented Prop
===================

node "arg"

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (string
              (string_fragment))))))

=======================
Test Crlf Between Nodes
=======================

node1
node2

---

    (document
      (node
        (identifier))
      (node
        (identifier)))

=============
Test Null Arg
=============

node null

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (keyword)))))

=====================
Test Leading Zero Oct
=====================

node 1

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (number)))))

=======================
Test Raw String Newline
=======================

node "\nhello\nworld\n"

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (string
              (string_fragment
                (escape)
                (escape)
                (escape)))))))

==========================
Test Empty Child Same Line
==========================

node

---

    (document
      (node
        (identifier)))

=================
Test Just Node Id
=================

node

---

    (document
      (node
        (identifier)))

==============
Test Same Args
==============

node "whee" "whee"

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (string
              (string_fragment))))
        (node_field
          (value
            (string
              (string_fragment))))))

==========================
Test Empty Quoted Prop Key
==========================

node ""="empty"

---

    (document
      (node
        (identifier)
        (node_field
          (prop
            (identifier
              (string))
            (value
              (string
                (string_fragment)))))))

==========================
Test Esc Unicode In String
==========================

node "hello\nworld"

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (string
              (string_fragment
                (escape)))))))

===========
Test Binary
===========

node 2

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (number)))))

================
Test All Escapes
================

node "\"\\/\b\f\n\r\t"

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (string
              (string_fragment
                (escape)
                (escape)
                (escape)
                (escape)
                (escape)
                (escape)
                (escape)))))))

====================
Test Arg String Type
====================

node (type)"str"

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (type
              (identifier))
            (string
              (string_fragment))))))

===================
Test Quoted Numeric
===================

node prop="10.0"

---

    (document
      (node
        (identifier)
        (node_field
          (prop
            (identifier)
            (value
              (string
                (string_fragment)))))))

===========================
Test Underscore In Exponent
===========================

node 1.0E-100

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (number
              (decimal)
              (exponent))))))

==============================
Test Trailing Underscore Octal
==============================

node 83

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (number)))))

====================
Test Prop False Type
====================

node key=(type)false

---

    (document
      (node
        (identifier)
        (node_field
          (prop
            (identifier)
            (value
              (type
                (identifier))
              (keyword
                (boolean)))))))

========================
Test Leading Zero Binary
========================

node 1

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (number)))))

===================
Test Raw String Arg
===================

node_1 "arg\\n"
node_2 "\"arg\\n\"and stuff"
node_3 "#\"arg\\n\"#and stuff"

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (string
              (string_fragment
                (escape))))))
      (node
        (identifier)
        (node_field
          (value
            (string
              (string_fragment
                (escape)
                (escape)
                (escape))))))
      (node
        (identifier)
        (node_field
          (value
            (string
              (string_fragment
                (escape)
                (escape)
                (escape)))))))

================================
Test Empty Child Different Lines
================================

node

---

    (document
      (node
        (identifier)))

======================
Test Binary Underscore
======================

node 2

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (number)))))

===================
Test Blank Arg Type
===================

node ("")10

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (type
              (identifier
                (string)))
            (number)))))

========================
Test Parse All Arg Types
========================

node 1 1.0 1.0E+10 1.0E-10 1 7 2 "arg" "arg\\\\" true false null

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (number)))
        (node_field
          (value
            (number
              (decimal))))
        (node_field
          (value
            (number
              (decimal)
              (exponent))))
        (node_field
          (value
            (number
              (decimal)
              (exponent))))
        (node_field
          (value
            (number)))
        (node_field
          (value
            (number)))
        (node_field
          (value
            (number)))
        (node_field
          (value
            (string
              (string_fragment))))
        (node_field
          (value
            (string
              (string_fragment
                (escape)
                (escape)))))
        (node_field
          (value
            (keyword
              (boolean))))
        (node_field
          (value
            (keyword
              (boolean))))
        (node_field
          (value
            (keyword)))))

============================
Test True Prefix In Prop Key
============================

node true_id=1

---

    (document
      (node
        (identifier)
        (node_field
          (prop
            (identifier)
            (value
              (number))))))

==========================
Test Semicolon After Child
==========================

node {
    childnode
}

---

    (document
      (node
        (identifier)
        (node_children
          (node
            (identifier)))))

==========================
Test Slashdash Empty Child
==========================

node

---

    (document
      (node
        (identifier)))

========================
Test Underscore In Float
========================

node 11.0

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (number
              (decimal))))))

======================
Test Underscore In Int
======================

node 10

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (number)))))

=====================
Test Quoted Prop Type
=====================

node key=("type/")true

---

    (document
      (node
        (identifier)
        (node_field
          (prop
            (identifier)
            (value
              (type
                (identifier
                  (string
                    (string_fragment))))
              (keyword
                (boolean)))))))

==================
Test Commented Arg
==================

node "arg2"

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (string
              (string_fragment))))))

====================
Test Nested Children
====================

node1 {
    node2 {
        node
    }
}

---

    (document
      (node
        (identifier)
        (node_children
          (node
            (identifier)
            (node_children
              (node
                (identifier)))))))

==============
Test Node True
==============

node true

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (keyword
              (boolean))))))

==============================
Test Slashdash Negative Number
==============================

node 2.0

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (number
              (decimal))))))

===============
Test Just Space
===============



---

    (document)

==============================
Test Asterisk In Block Comment
==============================

node

---

    (document
      (node
        (identifier)))

============
Test Hex Int
============

node 207698809136909011942886895

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (number)))))

==========================
Test Newline Between Nodes
==========================

node1
node2

---

    (document
      (node
        (identifier))
      (node
        (identifier)))

==========
Test Emoji
==========

node "😀"

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (string
              (string_fragment))))))

====================================
Test Slashdash Arg After Newline Esc
====================================

node "arg2"

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (string
              (string_fragment))))))

==============================
Test Only Line Comment Newline
==============================



---

    (document)

===============
Test String Arg
===============

node "arg"

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (string
              (string_fragment))))))

===========================
Test Arg And Prop Same Name
===========================

node "arg" arg="val"

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (string
              (string_fragment))))
        (node_field
          (prop
            (identifier)
            (value
              (string
                (string_fragment)))))))

=====================
Test Multiline String
=====================

node " hey\neveryone\nhow goes?\n"

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (string
              (string_fragment
                (escape)
                (escape)
                (escape)))))))

=================
Test Negative Int
=================

node -10 prop=-15

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (number)))
        (node_field
          (prop
            (identifier)
            (value
              (number))))))

======================
Test Multiline Comment
======================

node "arg"

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (string
              (string_fragment))))))

==================
Test Prop Hex Type
==================

node key=(type)16

---

    (document
      (node
        (identifier)
        (node_field
          (prop
            (identifier)
            (value
              (type
                (identifier))
              (number))))))

===============
Test Zero Float
===============

node 0.0

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (number
              (decimal))))))

========
Test Hex
========

node 12379813812177893520

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (number)))))

===========
Test R Node
===========

r "arg"

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (string
              (string_fragment))))))

=============
Test Zero Arg
=============

node 0

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (number)))))

========================
Test Semicolon Separated
========================

node1
node2

---

    (document
      (node
        (identifier))
      (node
        (identifier)))

===============
Test Bare Emoji
===============

😁 "happy!"

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (string
              (string_fragment))))))

===========================
Test Underscore In Fraction
===========================

node 1.02

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (number
              (decimal))))))

====================
Test Multiline Nodes
====================

node "arg1" "arg2"

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (string
              (string_fragment))))
        (node_field
          (value
            (string
              (string_fragment))))))

==============================
Test Slashdash Node With Child
==============================



---

    (document)

=================
Test Arg Hex Type
=================

node (type)16

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (type
              (identifier))
            (number)))))

==================
Test Trailing Crlf
==================

node

---

    (document
      (node
        (identifier)))

===================
Test Prop Null Type
===================

node key=(type)null

---

    (document
      (node
        (identifier)
        (node_field
          (prop
            (identifier)
            (value
              (type
                (identifier))
              (keyword))))))

================
Test String Prop
================

node prop="val"

---

    (document
      (node
        (identifier)
        (node_field
          (prop
            (identifier)
            (value
              (string
                (string_fragment)))))))

=======================
Test Sci Notation Small
=======================

node prop=1.23E-1000

---

    (document
      (node
        (identifier)
        (node_field
          (prop
            (identifier)
            (value
              (number
                (decimal)
                (exponent)))))))

========================
Test No Decimal Exponent
========================

node 1E+10

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (number
              (exponent))))))

=================
Test Raw Arg Type
=================

node (type)true

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (type
              (identifier))
            (keyword
              (boolean))))))

==============
Test Two Nodes
==============

node1
node2

---

    (document
      (node
        (identifier))
      (node
        (identifier)))

===========================
Test True Prefix In Bare Id
===========================

true_id

---

    (document
      (node
        (identifier)))

============================
Test False Prefix In Bare Id
============================

false_id

---

    (document
      (node
        (identifier)))

===========================
Test Raw String Hash No Esc
===========================

node "#"

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (string
              (string_fragment))))))

==================
Test Raw Node Type
==================

(type)node

---

    (document
      (node
        (type
          (identifier))
        (identifier)))

==================
Test Raw Node Name
==================

"\\node"

---

    (document
      (node
        (identifier
          (string
            (string_fragment
              (escape))))))

========================
Test Hex Int Underscores
========================

node 737894400291

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (number)))))

=======================
Test Just Block Comment
=======================



---

    (document)

===================
Test Arg Float Type
===================

node (type)2.5

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (type
              (identifier))
            (number
              (decimal))))))

=======================================
Test Block Comment Before Node No Space
=======================================

node

---

    (document
      (node
        (identifier)))

====================
Test Same Name Nodes
====================

node
node

---

    (document
      (node
        (identifier))
      (node
        (identifier)))

===================
Test Negative Float
===================

node -1.0 key=-10.0

---

    (document
      (node
        (identifier)
        (node_field
          (value
            (number
              (decimal))))
        (node_field
          (prop
            (identifier)
            (value
              (number
                (decimal)))))))

====================
Test Slashdash Child
====================

node

---

    (document
      (node
        (identifier)))

===================
Test Prop True Type
===================

node key=(type)true

---

    (document
      (node
        (identifier)
        (node_field
          (prop
            (identifier)
            (value
              (type
                (identifier))
              (keyword
                (boolean)))))))

===============
Test Just Child
===============

node {
    inner_node
}

---

    (document
      (node
        (identifier)
        (node_children
          (node
            (identifier)))))


