# 修改標記解析器

在了解變數該如何實作之後，我們緊接著來實作吧。但是突然就要實作任意長的變數有點太難了，所以在這步我們把變數限定在小寫1個字，變數`a`為 RBP-8、變數`b`為 RBP-16、變數`c`為 RBP-24，讓所有的變數以常駐方式存在。因為英文字母有26個字，函式被呼叫時我們把 RSP 往下推26×8也就是208個 bytes，保留所有1個字的變數空間。

馬上來實作看看吧。首先從標記解析器著手，在至今為止文法的元素以外，讓其可以對1個字的變數作標記解析。為此，我們得追加新的標記型態。變數名稱可以從`str`讀入，所以不需要在`Token`型中增加新的成員。最終，`Token`型如下所示：

```c
enum {
  TK_RESERVED, // 符號
  TK_IDENT,    // 識別符號
  TK_NUM,      // 整數標記
  TK_EOF,      // 代表輸入結束的標記
} TokenKind;
```

修改標記解析器，讓其可以對小寫英文字母建立`TK_IDENT`型的標記。只要對標記解析器加上如下的`if`敘述即可：

```c
if ('a' <= *p && *p <= 'z') {
  cur = new_token(TK_IDENT, cur, p++);
  cur->len = 1;
  continue;
}
```
