mini-Pythonインタープリタその3

expression_stmtとassignment_stmtをparseの件について悩んでいたが、一晩寝たら解決策を思いついた。

  1. identifierはsubscriptionに含まれているのだからassignment_stmtはそのままparseできる。
  2. expression_stmtもassignment_stmtも先頭はprimaryになりうるのでexpressionとしてparseしてあげればよい。
  3. expressionとして処理した後にtokenが"="ならばassignment_stmt、そうでなければexpression_stmt
  4. assignment_stmtのはずがidentifierかsubscriptionでなければエラー

これでいける気がする。

あとの課題はTokenや構文木の情報の受け渡しについて設計ミスが出てきたのでTokenizerを書き直すこと。はじめっから指示された仕様で書いておけばよかった……



diaryやblogで他人に読ませるように問題点を書くと、思考が整理できて早く問題解決できるね。はてなに書かなかったら多分ギブしてた……w