C语言词法分析
主要作用:将文件拆分成token
构造DFA自动机
常量
数字常量
整型
| 进制 | 字符串形式 | 默认形式 | 后缀l | 后缀ll | 后缀u | 后缀ul | 后缀ull |
|---|---|---|---|---|---|---|---|
| 十进制 | [0-9]+[u]{1,0}[l]{0,1,2}) | int | long | long long | unsigned int | unsigned long | unsigned long long |
| 十六进制 | 0x[0-9a-zA-Z]+[u]{1,0}[l]{0,1,2}) | int | long | long long | unsigned int | unsigned long | unsigned long long |
浮点数
| 表达形式 | 字符串形式 | 默认形式 | 后缀f | 后缀l |
|---|---|---|---|---|
| 实数 | [0-9]+.[0-9]*[lf]或.[0-9]+[lf] | double | float | long double |
| 科学计数法 | [0-9]+.[0-9]*[lf]e[+-]?[0-9]+或.[0-9]+[lf]e[+-]?[0-9]+ | double | float | long double |
字符常量
| 表达形式 | 形式 | 默认形式 |
|---|---|---|
| 单字符 | 'char' | char |
| 转义字符 | '{'"?\ abfnrtv}' | char |
| 十六进制表示 | '\x十六进制' | char |
| 八进制表示 | '\八进制' | char |
wchar_t暂时不支持,仅支持ASCII。
字符串常量
符号
[] () {} . ->
++ -- & * + - ~ !
/ % << >> < > <= >= == != ^ | && ||
? : ; ...
= *= /= %= += -= <<= >>= &= ^= |=
, # ##
<: :> <% %> %: %:%:
关键字
auto break case char const continue default do double
else enum extern float for goto if inline int long
register restrict return short signed sizeof static struct switch
typedef union unsigned void volatile while
_Bool _Complex _Imaginary
效果
可对自身完成自检