context [ \t]*[^\n] stop "." opsym [\+\-\*\/\^\!\?\:\;\@\#\&\$\=\<\>\~\|\.\,] op ({opsym}{opsym}+) kescape ("\\\"") qescape ("\\\'") aseq [\$_A-Za-z0-9][\\$A-Za-z0-9_]* key (\:{aseq}\:|\#{aseq}\#|\~{aseq}\~|\@{aseq}\@|\.{aseq}\.) kstringelem ({kescape}|[^\"\n]) qstringelem ({qescape}|[^\'\n]) string (\"{kstringelem}+\") qstring (\'{qstringelem}+\') atom ({aseq}|{key}|{qstring})