小蚂蚁 发表于 2021-12-7 18:39:22

C++bnf中文版

`C++`巴范语法规则

词分器.字符集
四16进制:
    16进制数 16进制数 16进制数 16进制数
通用字符名:
    \u 四16进制
    \U 四16进制 四16进制

词分器.预令牌
预处理令牌:
    头名
    标识符
    预数字
    符字面
    用户定义符字面 C++0x
    串字面
    用户定义串字面 C++0x
    预处理操作或运算
    非空白字符不能为以上.

词分器.令牌
令牌:
    标识符
    关键字
    字面
    符号令牌见C++标准核心语言问题n.189
    运算子见C++标准核心语言问题n.189

词分器.头
头名:
    <h符序列>
    "q符序列"
h符序列:
    h符
    h符序列 h符
h符:
    除了"新行|>"的其他符
q符序列:
    q符
    q符序列 q符
q符:
    除了"新行|\""的

词分器.预数字
预数字:
    数字
    .数字
    预数字 数字
    预数字 非数字标识符
    预数字 e 正负号
    预数字 E 正负号
    预数字 .

词分器.名
标识符:
    非数字标识符 C++0x
    标识符 非数字标识符 C++0x
    标识符 数字
非数字标识符:
    非数字 C++0x
    通用字符名 C++0x
    其他实现定义字符C++0x
非数字:
    C++0x移除通用字符名
    a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z _(下划线)
数字:
    0 1 2 3 4 5 6 7 8 9

词分器.键
关键字:
    16符型 32符型 常式 推导 无异 空针 静断 线本 对齐为 的对齐 C++0x
    //上面都是C++0x
    导出 C++0x-保留未来用
    类 常 常转 下 默认 删 干 双精 动转 异 枚 显 外 假 浮 对 友 至 如 内联 整 长 可变 名字空间 新 符号 私 保护 公 注册 重转 中 短 整 的大小 静 静转 构 开关 元 本 抛 真 试 又 具型 型名 联 正 用 虚 空 易失 宽符型 当 汇编 动 极 断 若 抓 符

词分器.操作符
符号令牌:
    在C++标准核心语言问题n.189下见预处理操作或运算
运算子:
    在C++标准核心语言问题n.189下见预处理操作或运算
预处理操作或运算:
    { } [ ] # ## () <: :> <% %> %: %:%: ; : ...新 删:: ..* + - * / % ^ & | ~ != < > += -= *= /= %= ^= &= |= << >> <<= >>= == != <= >= && || ++ -- , ->* -> 和 与等 位与 位或 补 不 不等 或 或等 异或 异或等

词分器.字面.种类
字面:
    整字面 符字面 浮字面 串字面 布尔字面
    指针字面 用户定义字面 C++0x

词分器.图标
整字面:
    十进制字面 整后缀 可选
    八进制字面 整后缀 可选
    16进制字面 整后缀 可选
十进制字面:
    非零数字
    十进制字面 数字
八进制字面:
    0
    八进制字面 八进制数字
16进制字面:
    0x 16进制数
    0X 16进制数
    16进制字面 16进制数
非零数字:
    1 2 3 4 5 6 7 8 9
八进制数字:
    0 1 2 3 4 5 6 7
16进制数:
    0 1 2 3 4 5 6 7 8 9 a b c d e f A B C D E F
整后缀:
    正后缀 长后缀 可选
    正后缀 长长后缀 可选 C++0x
    长后缀 正后缀 可选
    长长后缀 正后缀 可选 C++0x
正后缀:
    u U
长后缀:
    l L
长长后缀:
    ll LL C++0x

词分器.符常
符字面:
    'c符序列'
    u'c符序列' C++0x
    U'c符序列' C++0x
    L'c符序列'
c符序列:
    c符
    c符序列 c符
c符:
    除了"\'|\\|\n"符
    转义序列
    通用字符名

转义序列:
    简单转义序列
    八进制转义序列
    16进制转义序列
简单转义序列:
    \"\'"
    \"\""
    \
    \\
    \a
    \b
    \f
    \n
    \r
    \t
    \v

八进制转义序列:
    \八进制数字
    \八进制数字 八进制数字
    \八进制数字 八进制数字 八进制数字

16进制转义序列:
    \x 16进制数
    16进制转义序列 16进制数

词分器.浮常
浮字面:
    分数常数 指数部分 可选 浮动后缀 可选
    数字序列 指数部分 浮动后缀 可选
分数常数:
    数字序列 可选 . 数字序列
    数字序列 .
指数部分:
    e 正负号 可选 数字序列
    E 正负号 可选 数字序列
正负号:
    +
    -
数字序列:
    数字
    数字序列 数字
浮动后缀:
    f l F L

词分器.串
串字面:
    编码前缀 可选 " s符序列 可选 " C++0x
    编码前缀 可选 R 原始串 C++0x
编码前缀:
    u8 u U L C++0x
s符序列:
    s符
    s符序列 s符
s符:
    除了"\"|\\|\n"符
    转义序列
    通用字符名
原始串:
    "d符序列 可选 (r符序列 可选) d符序列 可选"C++0x
r符序列:
    r符 C++0x
    r符序列 r符 C++0x
r符:
    除了")"序 初始d符序列 可选 "\""
d符序列:
    d符 C++0x
    d符序列 d符 C++0x
d符:
    除了"空格|()|\\|水平控制符|\t|\p|\n"等

词分器.极
布尔字面:
    假
    真

词分器.空针
指针字面:
    空针 C++0x

词分器.扩展
用户定义字面:
    用户定义整字面 C++0x
    用户定义浮字面 C++0x
    用户定义串字面 C++0x
    用户定义符字面 C++0x
用户定义整字面:
    十进制字面 用定后缀 C++0x
    八进制字面 用定后缀 C++0x
    16进制字面 用定后缀 C++0x
用户定义浮字面:
    分数常数 指数部分 可选 用定后缀 C++0x
    数字序列 指数部分 用定后缀 C++0x
用户定义串字面:
    串字面 用定后缀 C++0x
用户定义符字面:
    符字面 用定后缀 C++0x
用定后缀:
    标识符 C++0x

基本.链接
翻译单元:
    声明序列 可选

式.主要.一般
主要式:
    字面
    本
    (式)
    标识式
    λ式 C++0x
标识式:
    不合格标识
    合格标识
不合格标识:
    标识符
    符号函数标识
    转换函数标识
    字面符号标识 C++0x
    ~类名
    ~推导型限定器 C++0x
    模板标识
合格标识:
    :: 可选 嵌套名限定器 元 可选 不合格标识
    ::标识符
    ::符号函数标识
    ::字面符号标识 C++0x
    ::模板标识
嵌套名限定器:
    型名::
    名间名::
    推导型限定器::C++0x
    嵌套名限定器 标识符::
    嵌套名限定器 元 可选 简单模板标识::

式.主要.λ
λ式:
    λ引入者 λ声明器 可选 组合句 C++0x
λ引入者:
    [捕捉λ 可选] C++0x
捕捉λ:
    默认取 C++0x
    捕捉列表 C++0x
    默认取 , 捕捉列表 C++0x
默认取:
    & C++0x
    = C++0x
捕捉列表:
    捕捉... 可选 C++0x
    捕捉列表 , 捕捉... 可选 C++0x
捕捉:
    标识符 C++0x
    & 标识符 C++0x
    本 C++0x
λ声明器:
    ( 形参声明语句 )可变 可选 异常规范 可选 属性限定器序列 可选 尾中类型 可选 C++0x

式.提交
后缀式:
    主要式
    后缀式[式]
    后缀式[括号初化列表 可选]C++0x
    后缀式(式列表 可选)
    简单类型限定器(式列表 可选)
    型名限定器(式列表 可选)
    简单类型限定器 括号初化列表 C++0x
    型名限定器 括号初化列表 C++0x
    后缀式.元 可选 标识式
    后缀式->元 可选 标识式
    后缀式.伪析构器名
    后缀式->伪析构器名
    后缀式++
    后缀式--
    动转<型标>(式)
    静转<型标>(式)
    重转<型标>(式)
    常转<型标>(式)
    具型(式)
    具型(型标)
式列表:
    初化器列表
伪析构器名:
    :: 可选 嵌套名限定器 可选 型名::~型名
    :: 可选 嵌套名限定器 元 简单模板标识::~型名 C++0x
    :: 可选 嵌套名限定器 可选~型名
    ~推导型限定器 C++0x

式.一元
一元式:
    后缀式
    ++强转式
    --强转式
    一元符号 强转式
    的大小 一元式
    的大小(型标)
    的大小...(标识符)C++0x
    的对齐(型标)C++0x
    无异式 C++0x
    新式
    删式
一元符号:
    * & + - ! ~

式.新
新式:
    :: 可选 新 新放置 可选 新型标 新初化器 可选
    :: 可选 新 新放置 可选(型标)新初化器 可选
新放置:
    (式列表)
新型标:
    类型限定器序列 新声明器 可选
新声明器:
    针符号 新声明器 可选
    无针新声明器 C++0x
无针新声明器:
    [式]属性限定器序列 可选 C++0x
    无针新声明器[常数式]属性限定器序列 可选 C++0x
新初化器:
    (式列表 可选)
    括号初化列表 C++0x

式.删
删式:
    :: 可选 删 强转式
    :: 可选 删[]强转式

式.一元.无异
无异式:
    无异(式)C++0x

式.转换
强转式:
    一元式
    (型标)强转式

式.成针.操作
成针式:
    强转式
    成针式.*强转式
    成针式->*强转式

式.乘
乘法式:
    成针式
    乘法式*成针式
    乘法式/成针式
    乘法式%成针式

式.加
加式:
    乘法式
    加式+乘法式
    加式-乘法式

式.转移
转移式:
    加式
    转移式<<加式
    转移式>>加式

式.相对
关系式:
    转移式
    关系式<转移式
    关系式>转移式
    关系式<=转移式
    关系式>=转移式

式.等
等式:
    关系式
    等式==关系式
    等式!=关系式

式.位.和
与式:
    等式
    与式&等式

式.异或
异或式:
    与式
    异或式 ^ 与式

式.或
包含或式:
    异或式
    包含或式|异或式

式.日志.和
逻辑与式:
    包含或式
    逻辑与式 && 包含或式

式.日志.或
逻辑或式:
    逻辑与式
    逻辑或式||逻辑与式

式.条件
条件式:
    逻辑或式
    逻辑或式 式:赋值式

式.赋值
赋值式:
    条件式
    逻辑或式 赋值符 初化器语句 C++0x
    抛式
赋值符:
    = *= /= %= += -= >>= <<= &= ^= |=

式.逗号
式:
    赋值式
    式,赋值式

式.常
常数式:
    条件式

语句.语句
语句:
    标签语句
    属性限定器序列 可选 式句 C++0x
    属性限定器序列 可选 组合句 C++0x
    属性限定器序列 可选 选择语句 C++0x
    属性限定器序列 可选 步语句 C++0x
    属性限定器序列 可选 跳语句 C++0x
    声明句
    属性限定器序列 可选 试块

语句.标签
标签语句:
    属性限定器序列 可选 标识符:语句
    属性限定器序列 可选 若 常数式:语句
    属性限定器序列 可选 默认:语句

语句.式
式句:
    式 可选;

语句.块
组合句:
    {语句序列 可选}
语句序列:
    语句
    语句序列 语句

语句.选择
选择语句:
    如(条件)语句
    如(条件)语句 异 语句
    开关(条件)语句
条件:
    式
    属性限定器序列 可选 声明限定器序列 声明器=初化器语句 C++0x
    属性限定器序列 可选 声明限定器序列 声明器 括号初化列表 C++0x

语句.步
步语句:
    当(条件)语句
    干 语句 当(式);
    对(对初化语句 条件 可选;式 可选)语句
    对(对区间声明:对区间初化器)语句 C++0x
对初化语句:
    式句
    简单声明
对区间声明:
    属性限定器序列 可选 类型限定器序列 声明器 C++0x
对区间初化器:
    式
    括号初化列表

语句.跳
跳语句:
    断;
    下;
    中 式 可选;
    中 括号初化列表 可选;C++0x
    至 标识符;

语句.声明
声明句:
    声明块

声明.声明
声明序列:
    声明
    声明序列 声明
声明:
    声明块
    定义函数
    模板声明
    显实例
    显特化
    链接规范
    定义名间
    声明空 C++0x
    声明属性 C++0x
声明块:
    简单声明
    定义汇编
    定义名间别名
    用声明
    用指令
    静断声明 C++0x
    别名声明 C++0x
    暗色枚声明 C++0x

别名声明:
    用 标识符=型标;C++0x

简单声明:
    属性限定器序列 可选 声明限定器序列 可选 初化声明器列表 可选;C++0x
静断声明:
    静断(常数式,串字面);C++0x
声明空:
    ;C++0x
声明属性:
    属性限定器序列;C++0x

声明.特殊
声明限定器:
    存储类限定器
    类型限定器
    函数限定器
    友
    又
    常式 C++0x
声明限定器序列:
    声明限定器 属性限定器序列 可选 C++0x
    声明限定器 声明限定器序列 C++0x

声明.存储类
存储类限定器:
    //动 移除 C++0x
    线本 C++0x
    注册 静 外 可变

声明.函数型.特殊
函数限定器:
    内联
    虚
    显

声明.又
又名:
    标识符

声明.类型
类型限定器:
    尾型限定器
    类限定器
    枚限定器

尾型限定器:
    简单类型限定器
    详述型限定器
    型名限定器
    常易限定器

类型限定器序列:
    类型限定器 属性限定器序列 可选 C++0x
    类型限定器 类型限定器序列

尾型限定器序列:
    尾型限定器 属性限定器序列 可选 C++0x
    尾型限定器 尾型限定器序列 C++0x

字典.类型.简单
简单类型限定器:
    :: 可选 嵌套名限定器 可选 型名
    :: 可选 嵌套名限定器 元 简单模板标识
    16符型 C++0x
    32符型 C++0x
    符 宽符型 极 短 整 长 整 正 浮 双精 空
    动 C++0x
    推导型限定器 C++0x
型名:
    类名
    枚名
    又名
    简单模板标识 C++0x
推导型限定器:
    推导(式)C++0x

声明.类型.详
详述型限定器:
    类键 属性限定器序列 可选:: 可选 嵌套名限定器 可选 标识符
    类键:: 可选 嵌套名限定器 可选 元 可选 简单模板标识
    枚:: 可选 嵌套名限定器 可选 标识符

声明.枚
枚名:
    标识符
枚限定器:
    枚头{枚举器列表 可选}C++0x
    枚头{枚举器列表,}C++0x
枚头:
    枚键 属性限定器序列 可选 标识符 可选 枚基 可选 C++0x
    枚键 属性限定器序列 可选 嵌套名限定器 标识符 枚基 可选 C++0x
暗色枚声明:
    枚键 属性限定器序列 可选 标识符 枚基 可选;C++0x
枚键:
    枚 C++0x
    枚 类 C++0x
    枚 构 C++0x
枚基:
    :类型限定器序列 C++0x
枚举器列表:
    定义枚举器 C++0x
    枚举器列表,定义枚举器 C++0x
定义枚举器:
    枚举器
    枚举器=常数式
枚举器:
    标识符

名字空间.定义
名间名:
    原名间名
    别名名间
原名间名:
    标识符
定义名间:
    定义命名名间
    定义未命名名间
定义命名名间:
    定义原名间
    扩展定义名间
定义原名间:
    内联 可选 名字空间 标识符{名间体}C++0x
扩展定义名间:
    内联 可选 名字空间 原名间名{名间体}C++0x
定义未命名名间:
    内联 可选 名字空间{名间体}
名间体:
    声明序列 可选

名字空间.别名
别名名间:
    标识符
定义名间别名:
    名字空间 标识符=合格名间限定器;
合格名间限定器:
    :: 可选 嵌套名限定器 可选 名间名

名字空间.用声明
用声明:
    用 型名 可选:: 可选 嵌套名限定器 不合格标识;
    用::不合格标识;

名字空间.用指令
用指令:
    属性限定器序列 可选 用 名字空间:: 可选 嵌套名限定器 可选 名间名;

声明.汇编
定义汇编:
    汇编(串字面);

声明.链接
链接规范:
    外 串字面{声明序列 可选}
    外 串字面 声明

声明.属性.语法
属性限定器序列:
    属性限定器 C++0x
    属性限定器序列 属性限定器 C++0x
属性限定器:
    [[属性列表]]C++0x
    对齐限定器 C++0x
对齐限定器:
    对齐为(型标... 可选)C++0x
    对齐为(赋值式... 可选)C++0x
属性列表:
    特性 可选 C++0x
    属性列表,特性 可选 C++0x
    特性...C++0x
    属性列表,特性...C++0x
特性:
    属性令牌 属性实参语句 可选 C++0x
属性令牌:
    标识符 C++0x
    属性域令牌 C++0x
属性域令牌:
    属性名间::标识符 C++0x
属性名间:
    标识符 C++0x
属性实参语句:
    (平衡令牌序列)C++0x
平衡令牌序列:
    平衡令牌 C++0x
    平衡令牌序列 平衡令牌 C++0x
平衡令牌:
    (平衡令牌序列)C++0x
    [平衡令牌序列]C++0x
    {平衡令牌序列}C++0x
    除了"()[]{}"的令牌 C++0x

声明.声明
初化声明器列表:
    初化声明器
    初化声明器列表,初化声明器
初化声明器:
    声明器 初化器 可选
声明器:
    针声明器 C++0x
    无针声明器 形参和限定器 尾中类型 C++0x
针声明器:
    无针声明器 C++0x
    针符号 针声明器 C++0x
无针声明器:
    声明器标识 属性限定器序列 可选 C++0x
    无针声明器 形参和限定器 C++0x
    无针声明器[常数式 可选]属性限定器序列 可选 C++0x
    (针声明器)C++0x
形参和限定器:
    (形参声明语句)属性限定器序列 可选 常易限定器序列 可选 引用限定器 可选 异常规范 可选 C++0x
尾中类型:
    ->尾型限定器序列 抽象声明符 可选 C++0x
针符号:
    *属性限定器序列 可选 常易限定器序列 可选 C++0x
    &属性限定器序列 可选 C++0x
    &&属性限定器序列 可选 C++0x
    :: 可选 嵌套名限定器*属性限定器序列 可选 常易限定器序列 可选 C++0x
常易限定器序列:
    常易限定器
    常易限定器 常易限定器序列
常易限定器:
    常
    易失
引用限定器:
    &C++0x
    &&C++0x
声明器标识:
    ... 可选 标识式 C++0x
    :: 可选 嵌套名限定器 可选 类名 C++0x

声明.名
型标:
    类型限定器序列 抽象声明器 可选
抽象声明符:
    针抽象声明器 C++0x
    无针抽象声明器 可选 形参和限定器 尾中类型 C++0x
    ... C++0x
针抽象声明器:
    无针抽象声明器 C++0x
    针符号 针抽象声明器 可选 C++0x
无针抽象声明器:
    无针抽象声明器 可选 形参和限定器 C++0x
    无针抽象声明器 可选[常数式]属性限定器序列 可选 C++0x
    (针抽象声明器)C++0x

声明.函数型
形参声明语句:
    形参声明列表 可选... 可选
    形参声明列表,...
形参声明列表:
    形参声明
    形参声明列表,形参声明
形参声明:
    属性限定器序列 可选 声明限定器序列 声明器 C++0x
    属性限定器序列 可选 声明限定器序列 声明器=初化器语句 C++0x
    属性限定器序列 可选 声明限定器序列 抽象声明符 可选 C++0x
    属性限定器序列 可选 声明限定器序列 抽象声明符 可选=初化器语句 C++0x

声明.函数型.定义.一般
定义函数:
    属性限定器序列 可选 声明限定器序列 可选 声明器 函数体 C++0x
    属性限定器序列 可选 声明限定器序列 可选 声明器=默认;C++0x
    属性限定器序列 可选 声明限定器序列 可选 声明器=删;C++0x
函数体:
    构造器初化器 可选 组合句 C++0x
    函数试块 C++0x

声明.初化
初化器:
    括等号初化器 C++0x
    (式列表)C++0x
括等号初化器:
    =初化器语句 C++0x
    括号初化列表 C++0x
初化器语句:
    赋值式 C++0x
    括号初化列表 C++0x
初化器列表:
    初化器语句... 可选 C++0x
    初化器列表,初化器语句... 可选 C++0x
括号初化列表:
    {初化器列表, 可选}C++0x
    {}C++0x


类名:
    标识符
    简单模板标识 C++0x
类限定器:
    类头{成员规范 可选}
类头:
    类键 属性限定器序列 可选 类头名 虚类限定器序列 可选 基句 可选 C++0x
    类键 属性限定器序列 可选 基句 可选 C++0x
类头名:
    嵌套名限定器 可选 类名 C++0x
虚类限定器序列:
    虚类限定器 C++0x
    虚类限定器序列 虚类限定器 C++0x
虚类限定器:
    止 C++0x
类键:
    类
    构
    联

类.内存
成员规范:
    成员声明 成员规范 可选
    访问限定器:成员规范 可选
成员声明:
    属性限定器序列 可选 声明限定器序列 可选 成员声明器列表 可选;C++0x
    定义函数; 可选
    用声明
    静断声明 C++0x
    模板声明
    别名声明 C++0x
成员声明器列表:
    成员声明器
    成员声明器列表,成员声明器
成员声明器:
    声明器 虚限定器序列 可选 纯限定寄 可选
    声明器 虚限定器序列 可选 括等号初化器 可选 C++0x
    标识符 可选 属性限定器序列 可选 虚限定器序列 可选:常数式
虚限定器序列:
    虚限定器
    虚限定器序列 虚限定器
虚限定器:
    盖
    止
    新
纯限定器:
    =0

类.继承
基句:
    :基限定器列表
基限定器列表:
    基限定器... 可选 C++0x
    基限定器列表,基限定器... 可选 C++0x
基限定器:
    属性限定器序列 可选 基类型限定器 C++0x
    属性限定器序列 可选 虚 访问限定器 可选 基类型限定器 C++0x
    属性限定器序列 可选 访问限定器 虚 可选 基类型限定器 C++0x
类或推导:
    :: 可选 嵌套名限定器 可选 类名 C++0x
    推导型限定器 C++0x
基类型限定器:
    类或推导 C++0x
访问限定器:
    私
    保护
    公

类.转换.函数型
转换函数标识:
    符号 转换型标识
转换型标识:
    类型限定器序列 转换声明器 可选
转换声明器:
    针符号 转换声明器 可选

类.基.初化
构造器初化器:
    :内存初化器列表
内存初化器列表:
    内存初化器... 可选 C++0x
    内存初化器,内存初化器列表... 可选 C++0x
内存初化器:
    内存初化器标识(式列表 可选)
    内存初化器标识 括号初化列表 C++0x
内存初化器标识:
    类或推导
    标识符

重载.操作
符号函数标识:   见C++标准核心语言问题n.189
    符号 可重载符号
    符号 可重载符号<模板实参列表 可选>
可重载符号:   见C++标准核心语言问题n.189
    新 删 新[] 删[] + - * / % ^ & | ~ != < > += -= *= /= %= ^= &= |= << >> >>= <<= == != <= >= && || ++ -- , ->* -> () []

重载.字面
字面符号标识:
    符号""标识符 C++0x

模板
模板声明:
    元<模板形参列表>声明 C++0x-保留导出关键字,未来用
模板形参列表:
    模板形参
    模板形参列表,模板形参

模板.参数
模板形参:
    类型形参
    形参声明
类型形参:
    类... 可选 标识符 可选 C++0x
    类 标识符 可选=型标
    型名... 可选 标识符 可选 C++0x
    型名 标识符 可选=型标
    元<模板形参列表>类... 可选 标识符 可选 C++0x
    元<模板形参列表>类 标识符 可选=标识式

模板.名
简单模板标识:
    模板名<模板实参列表 可选>C++0x
模板标识:
    简单模板标识 C++0x
    符号函数标识<模板实参列表 可选>C++0x
    字面符号标识<模板实参列表 可选>C++0x
模板名:
    标识符
模板实参列表:
    模板实参... 可选 C++0x
    模板实参列表,模板实参... 可选 C++0x
模板实参:
    常数式 C++0x
    型标 C++0x
    标识式 C++0x

模板.资源
型名限定器:
    型名:: 可选 嵌套名限定器 标识符 C++0x
    型名:: 可选 嵌套名限定器 元 可选 简单模板标识 C++0x

模板.显
显实例:
    外 可选 元 声明 C++0x

模板.解释.特殊
显特化:
    元<>声明

异常
试块:
    试 组合句 处理器序列
函数试块:
    试 构造器初化器 可选 组合句 处理器序列 C++0x
处理器序列:
    处理器
    处理器 处理器序列
处理器:
    抓(声明异常)组合句
声明异常:
    属性限定器序列 可选 类型限定器序列 声明器 C++0x
    属性限定器序列 可选 类型限定器序列 抽象声明符 可选 C++0x
    ... C++0x
抛式:
    抛 赋值式选项

异常.特殊
异常规范:
    动态异常规范 C++0x
    无异规范 C++0x
动态异常规范:
    抛(型标列表 可选)C++0x
型标列表:
    型标... 可选 C++0x
    型标列表,型标... 可选 C++0x
无异规范:
    无异(常数式)C++0x
    无异 C++0x

c++
预处理文件:
    组 可选
组:
    组部分
    组 组部分
组部分:
    如节
    控制行
    文本行 C++0x
    #非指令 C++0x
如节:
    如组 异如组 可选 异组 可选 结束如果行
如组:
    #如 常数式 新行 组 可选
    #如定义 标识符 新行 组 可选
    #如未定义 标识符 新行 组 可选
异如组:
    异如组
    异如组 异如组
异如组:
    #异如 常数式 新行 组 可选
异组:
    #异 新行 组 可选
结束如果行:
    #结束如果 新行
控制行:
    #包含 预令牌 新行
    #定义 标识符 替代列表 新行
    #定义 标识符 左括号 标识符列表 可选)替代列表 新行 C++0x
    #定义 标识符 左括号 标识符列表,...)替代列表 新行 C++0x
    #未定义 标识符 新行
    #行 预令牌 新行
    #错误 预令牌 可选 新行
    #指示 预令牌 可选 新行
    #新行
文本行:
    预令牌 可选 新行 C++0x
非指令:
    预令牌 新行 C++0x
左括号:
    前无空格的(
标识符列表:
    标识符
    标识符列表,标识符
替代列表:
    预令牌 可选
预令牌:
    预处理令牌
    预令牌 预处理令牌
新行:
    新行符
https://blog.51cto.com/u_4139404/4762104
页: [1]
查看完整版本: C++bnf中文版