zoukankan      html  css  js  c++  java
  • C语言文法

    源程序 → 外部声明 | 子程序(外部声明)

    外部声明   → 函数定义| 函数声明

    函数定义 → 类型标识符(复合句)

    标识符类型 → 无类型 | 字符型 | 整型 | 浮点型

    整型→ 长整型 | 短整型 | 无符号整型

    声明→ 指针直接声明| 直接声明

    指针 → * | * 指针

    直接声明→ 标识符| 直接声明[ ]| 直接声明[常量表达式]| 标识符(参数列表)| 标识符() | (直接声明 , 标识符列表)

    标识符列表→标识符 | (标识符列表 ,标识符)

    常数表达式→ 条件表达式

    参数列表→ 参数声明| (参数列表 ,参数声明)

    参数声明→ 说明符声明,标识符

    复合语句 → { } | { 语句列表 } | { 声明列表 语句列表 }

    声明列表→ 声明 | 声明列表 声明

    声明→初始化声明| (初始化声明列表 ,初始化声明)

    初始化声明 → 声明| 声明=初始化程序

    初始化程序 → 表达式 | {初始化程序列表} | {初始化程序列表 , }

    初始化程序列表 → 初始化程序 | (初始化程序列表 , 初始化程序)

    语句列表→ 语句| 语句列表

    语句→语句| 复合语句 | 表达式语句 | 选择语句|循环语句|跳转语句

    表达式语句→ 表达式;

    选择语句→ IF(表达式)语句|  IF(表达式)语句 | ELSE 语句

    循环语句→ WHILE(表达式)语句 | FOR(表达式语句;表达式语句)| FOR(表达式语句;表达式语句;表达式语句)

    跳转语句| continue; |breack; | return; | return 表达式;

    表达式→赋值表达式|(表达式, 赋值表达式)

    赋值表达式→条件表达式|一元表达式 (赋值操作符)赋值表达式

    条件表达式 → 逻辑‘或’表达式|逻辑‘或’表达式?表达式:条件表达式

    逻辑‘或’表达式→逻辑‘与’表达式 |逻辑‘或’表达式‘或’运算|逻辑‘与’表达式

    逻辑‘与’表达式→ 逻辑‘或’表达式|逻辑‘与’表达式‘与’运算(逻辑‘或’表达式)

    或运算表达式→异或表达式 |或运算表达式‘|异或表达式

    相等表达式→关系表达式|相等表达式 等于运算 关系表达式| 相等表达式 不等于运算 关系表达式

    关系表达式→替换表达式|关系表达式 替换表达式|关系表达式 替换表达式| 关系表达式<=替换表达式| <关系表达式>=替换表达式

    替换表达式→加法表达式| 减法表达式| 乘法表达式

    加法表达式→乘法表达式>| (加法表达式 + 乘法表达式)|(加法表达式 - 乘法表达式)

    乘法表达式→强制转换表达式| (乘法表达式 * 强制转换表达式)| (乘法表达式 / 强制转换表达式)|(乘法表达式 % 强制转换表达式)

    基本表达式→ 标识符 | 常量 | 字符串|(表达式)

    一元运算符→& | * | + |- | ~ | !

    赋值运算符→ =| 乘法赋值 | 除法赋值|求余赋值|加法赋值|减法赋值|左赋值 |右赋值|与赋值|异或赋值|或赋值

    储存类说明符→typedef(定义类型)| <extern(外部变量)| <static(静态)| auto(自动)| register(寄存器)

    说明符限定符列表→类型说明符 说明符限定符列表 | 类型说明符| 类型限定符 说明符限定符列表 |类型限定符

    结构说明符列表→结构说明符|(结构说明符列表 , 结构说明符)

    结构说明符 → 说明符 | (:常数表达式) | (说明符 : 常数表达式)

    类型限定符 → 常量| 变量

    标记语句→ (标识符 : 语句)| case (常数表达式 : 语句) | default(语句)

  • 相关阅读:
    RuntimeError: An attempt has been made to start a new process before the current
    Expected object of backend CPU but got backend CUDA for argument #2 'weight'
    RuntimeError: multi-target not supported at
    模型load文件时报AttributeError: Can't get attribute 'Cours' on <module '__main__' from 错误
    ArrayList扩容源码分析
    HashMap源码分析(put/get)
    索引优化策略有哪些
    Mysql什么是回表查询和覆盖索引
    MyISAM与InnoDB区别
    使用ReentrantLock实现阻塞队列与交替打印
  • 原文地址:https://www.cnblogs.com/oechen/p/6025570.html
Copyright © 2011-2022 走看看