grammar Pheme::Grammar; rule TOP { + } rule list { \( [ | | ] \) } rule special_form { + } rule application { + } rule cons { + } # quoted_string has to come first rule list_item { | | | } token empty_list { ? \(\) } token atom { [ | ]? <-[\ \n\r\(\)]>+ } token quoted_string { } token quote { ' } token symbol_tag { \# } token ws { [ [ ; \N+ ]? \s+ ]* } token special { (if | cond | define | lambda | quote) }