A Rough Grammar For lispy_null Grammatical Productions: Program : Program__item Program__rlist | /* empty */ ; Program__rlist : Program__rlist Program__item | /* empty */ ; Program__item : Apply ; Apply : leftParen identifier ApplyList rightParen ; ApplyList : ApplyList__item ApplyList__rlist | /* empty */ ; ApplyList__rlist : ApplyList__rlist ApplyList__item | /* empty */ ; ApplyList__item : Apply | identifier | number | string | null ; Lexical Rules: "(" {return leftParen;} ")" {return rightParen;} "null" {return null;} [[:alpha:]][[:alnum:]]* {return identifier;} [[:digit:]]+ {return number;} '[^']*' {return string;} [^[:print:]]|[\n[:blank:]] /* ignore */ . {return LEX_ERROR;}