Note: ccc is no longer an active project. The successor is subc-llvm.
- 存储类声明说明符(
extern、static、auto、register、typedef) - 类型限定符(
const、volatile、restrict) - 声明说明符(
char、short、int、long) - 指针说明符(
*) - 直接说明符(
[]、()) - 结构体说明符(
struct or union {struct-declaration*}、struct or union tag{struct-declaration*}) - 枚举说明符
- 函数声明符(
inline)
- if-else
- switch-case-default
- while
- do-while
- for
- goto-label
- break
- continue
- blockStmt
- 逗号表达式(
,) - 赋值表达式(
=) - 赋值表达式(
+=、-=、*=、/=、%=、<<=、>>=、&=、|=、^=) - 条件表达式(
?:) - 逻辑或表达式(
||) - 逻辑与表达式(
&&) - 按位或表达式(
|) - 按位异或表达式(
^) - 按位与表达式(
&) - 相等表达式(
==、!=) - 关系表达式(
>、>=、<、<=) - 移位表达式(
<<、>>) - 加法表达式(
+、-) - 乘法表达式(
*、/) - 乘法表达式(
%) - case表达式 (
(type-name) unary-expression) - 一元表达式(
+、-、&、*) - 一元表达式(
++、- -) - 一元表达式(
~、!) - 一元表达式(
sizeof unary-expression) - 一元表达式(
sizeof (type-name)) - 后缀表达式(
[ ]、( )、.、→) - 后缀表达式(
++、- -) - 基本表达式(
id、num、(Expr)、StmtExpr)
- 整数解析(八进制、十进制、十六进制、后缀)
- 浮点数解析 (后缀)
- 字符解析(包含转义字符)
- 字符串解析(包含转义字符)
- 标识符(包含关键字)
- 运算符、标点符号、分界符
- Linux
- MacOSX
- X86-64