标识符字符 ::= "a" | "b" | ... | "z" | "A" | "B" | ... | "Z" | "_" | "0" | "1" | ... | "9" 标识符 ::= <标识符字符> {标识符字符} 模板参数列表内容 ::= {<标识符> ","} <标识符> 模板参数列表 ::= "<" [模板参数列表内容] ">" 结构体定义 ::= "struct" <标识符> [模板参数列表] ("(" "delete" ")" | <函数参数列表>) "{" 结构体内容 "}" ";" 匿名结构体定义 ::= "struct" "{" <结构体内容> "}" <标识符> ";" 类型和变量 ::= <标识符> ":" <类型> 函数参数列表内容 ::= {<类型和变量> ","} <类型和变量> 函数参数列表 ::= "(" [函数参数列表内容] ")" 类型 ::= <函数类型> | <模板参数类型> | (<结构体类型> | <自动识别类型>) ["::" <局部类型>] 局部类型 ::= <结构体类型> ["::" <局部类型>] 结构体类型 ::= <标识符> [类型列表] 类型列表 ::= "<" [<类型> {"," <类型>}] ">" 函数类型 ::= "Fn" "(" <模板参数列表> "," <类型列表> "," 类型 ")" 自动识别类型 ::= "typeof" "(" <值> ")" 值 ::= <基本值> | <基本值> "." <局部值> 基本值 ::= <标识符> | <新实例> | <新函数> | <新公理> | <直接函数调用> 新实例 ::= <结构体类型> [类型列表] <值列表> 新公理 ::= "admit" "<" <类型> ">" "(" ")" 直接函数调用 ::= (<标识符> | <新函数> | <新公理> | <直接函数调用>) [类型列表] <值列表> 局部值 ::= <局部基本值> | <局部基本值> "." <局部值> 局部基本值 ::= <标识符> | <局部直接函数调用> 局部直接函数调用 ::= (<标识符> | <局部直接函数调用>) [类型列表] <值列表> 值列表 ::= "(" [值列表内容] ")" 值列表内容 ::= <值> | <值> "," <类型列表内容> 新函数 ::= "Fn" [模板参数列表] <函数参数列表> "->" <类型> <函数内容> 函数内容 ::= "{" [语句块] "return" <值> ";" "}" 语句块 ::= <语句> | <语句> <语句块> 语句 ::= <变量定义> | <结构体定义> 变量定义 ::= <标识符> "=" <值> ";" 结构体内容 ::= <结构体语句> | <结构体语句> <结构体内容> 结构体语句 ::= ["public"] <语句>