======
symbol
======

:foo

---

(program (symbol))

================
scope resolution
================

Foo::bar

---

(program (scope_resolution_expression (identifier) (identifier)))

============
subscripting
============

foo[bar]

---

(program (subscript_expression (identifier) (identifier)))

===============
vacuous literal
===============

()

---

(program)

===================
yield without value
===================

yield

---

(program (yield))

=====
yield
=====

yield foo

---

(program (yield (identifier)))

===
not
===

not foo

---

(program (not (identifier)))

===
and
===

foo and bar

---

(program (and (identifier) (identifier)))

===
or
===

foo or bar

---

(program (or (identifier) (identifier)))

========
defined?
========

defined? foo

---

(program (defined (identifier)))

======
symbol
======

:foo

---

(program (symbol))

================
scope resolution
================

Foo::bar

---

(program (scope_resolution_expression (identifier) (identifier)))

============
subscripting
============

foo[bar]

---

(program (subscript_expression (identifier) (identifier)))

===============
vacuous literal
===============

()

---

(program)

===================
yield without value
===================

yield

---

(program (yield))

=====
yield
=====

yield foo

---

(program (yield (identifier)))

===
not
===

not foo

---

(program (not (identifier)))

===
and
===

foo and bar

---

(program (and (identifier) (identifier)))

===
or
===

foo or bar

---

(program (or (identifier) (identifier)))

====================
and or associativity
====================

a or b and c

---

(program (and (or (identifier) (identifier)) (identifier)))

========
defined?
========

defined? foo

---

(program (defined (identifier)))

Test the associativity of and/or.
Test the associativity of and/or.
