Cコンパイラ作成入門のメモ #4 (Step6, 7)

はじめに

こちらをやってみたときのメモを書いていく。

www.sigbus.info

今回はStep6, 7

Commit

Step6

https://github.com/lvlnaga/9cc/commit/0dd18e522522b32fd049d74d5fdd023eddced843

Step7

https://github.com/lvlnaga/9cc/commit/e89c0bbd2f42a5a409211f38822f7d1b8bc6c45b

調べたこと

startswith

コード

bool startswith(char *p, char *q)
{
  return memcmp(p, q, strlen(q)) == 0;
}

詳細

  • 文字列が特定のフラグメントで開始しているどうかを確認
    • トークナイズするために、期待する文字列一致すれば true, 一致してなければfalseを返す関数を用意している
  • Javaとかでは用意されている関数の模様。

参考

JavaのstartsWith、endsWithメソッドの使い方を現役エンジニアが解説【初心者向け】 | TechAcademyマガジン

【Python】startswith・endswith(指定文字で始まる?終わる?) | 鎖プログラム (pg-chain.com)

思ったこと

  • 変更は大きいが変更している内容はおおよそ理解できた。
  • ただ、これを自分で考えて開発できるかというとそんな気はしない。
    • 引き出しが増えればこのパターンとかを引き出せる様になるのかな。