diff --git a/结构表.txt b/结构表.txt new file mode 100644 index 0000000..6febf22 --- /dev/null +++ b/结构表.txt @@ -0,0 +1,59 @@ +结构体定义 = 关键词struct + 标识符 + (空 | 模板参数列表) + 函数参数列表 + 左花括号 + 结构体内容 + 右花括号 + 分号 + +匿名结构体定义 = 关键词struct + 左花括号 + 结构体内容 + 右花括号 + 标识符 + 分号 + +模板参数列表 = 左尖括号 + (空 | 模板参数列表内容) + 右尖括号 + +模板参数列表内容 = 标识符 | (标识符 + 逗号 + 模板参数列表内容) + +函数参数列表 = 左圆括号 + (空 | 函数参数列表内容) + 右圆括号 + +函数参数列表内容 = 类型和变量 | (类型和变量 + 逗号 + 函数参数列表内容) + +类型和变量 = 标识符 + 冒号 + 类型 + +类型 = 函数类型 | 模板参数类型 | ((结构体类型 | 自动识别类型) + (空 | (冒号冒号 + 局部类型)) + +局部类型 = 结构体类型 + (空 | (冒号冒号 + 局部类型)) + +结构体类型 = 标识符 + (空 | 类型列表) + +类型列表 = 左尖括号 + (空 | 类型列表内容) + 右尖括号 + +类型列表内容 = 类型 | (类型 + 逗号 + 类型列表内容) + +函数类型 = 关键词Fn + 左圆括号 + 模板参数列表 + 逗号 + 类型列表 + 逗号 + 类型 + 右圆括号 + +自动识别类型 = 关键词typeof + 左括号 + 值 + 右括号 + +值 = 基本值 | (基本值 + 点 + 局部值) + +基本值 = 标识符 | 新实例 | 新函数 | 直接函数调用 + +新实例 = 结构体类型 + (空 | 类型列表) + 值列表 + +直接函数调用 = (标识符 | 新函数 | 直接函数调用) + (空 | 类型列表) + 值列表 + +局部值 = 局部基本值 | (局部基本值 + 点 + 局部值) + +局部基本值 = 标识符 | 局部直接函数调用 + +局部直接函数调用 = (标识符 | 局部直接函数调用) + (空 | 类型列表) + 值列表 + +值列表 = 左圆括号 + (空 | 值列表内容) + 右圆括号 + +值列表内容 = 值 | (值 + 逗号 + 类型列表内容) + +新函数 = 关键词Fn + (空 | 模板参数列表) + 函数参数列表 + 箭头 + 类型 + 函数内容 + +函数内容 = 左花括号 + (空 | 语句块) + 关键词return + 值 + 分号 + 右花括号 + +语句块 = 语句 | (语句 + 语句块) + +语句 = 变量定义 | 结构体定义 + +变量定义 = 标识符 + 等号 + 值 + 分号 + +结构体内容 = 结构体语句 | (结构体语句 + 结构体内容) + +结构体语句 = (空 | 关键词public) + 语句 \ No newline at end of file