C のトークン

C の字句解析を書いてみて、"-" で始まって次に数字が来たら負数のリテラルとして切ろうとしたら
hoge = mage-1;
とか書いてあるのが hoge = mage -1 ; と切れてしまった。
ありゃりゃと思ったのだけど…… ANSI C ではリテラルは unsigned らしいので、負数のリテラルっていうのがないのだな。
だから
boke = -1;
みたいなのは単項演算子の - が 1 に適用されてるだけなのだと思う。
ちゃんと調べて無いけど多分。