C语言语法

程序-<外部声明>|<程序外部声明>
外部声明-<函数定义>|<定义>
函数定义-<类型标识符> <声明部分语句>
<标识符类型> -<无类型>|<字符>|<整型>|<浮点型>
<声明>-<指针直接声明> | <直接声明>
<指针>-‘*‘|<*指针>
<直接声明> → <标识符> | <直接声明[ ]> | <直接声明[常量表达式]> | <标识符(参数列表)> | <标识符()> | <直接声明 , 标识符列表>
<标识符列表>:<标识符> | <标识符列表 ,标识符>
<常数表达式> → <条件表达式>
<参数列表> → <参数声明> | <参数列表 ,参数声明>
<参数声明> → <说明符声明><标识符>
<复合语句> →<{}>|<{语句列表}>|<{ <声明列表> <语句列表> }>
<声明列表> → <声明> | <声明列表> <声明>
<声明> → <初始化声明> | <初始化声明列表 ,初始化声明>
<初始化声明> → <声明> | <声明=初始化程序>
<初始化程序> → <表达式> | <{初始化程序列表}> | <{初始化程序列表,}>
<初始化程序列表> → <初始化程序> | <初始化程序列表 , 初始化程序>
<语句列表> → <语句> | <语句列表> <语句>
<语句> | <复合语句> | <表达式语句> | <选择语句> | <循环语句> |<跳转语句>
<表达式语句> → <表达式;>
<选择语句> : < IF(表达式)语句> | < IF(表达式)语句 > < ELSE 语句>
<循环语句> → < WHILE(表达式)语句> | < FOR(表达式语句表达式语句)语句> | < FOR(表达式语句表达式语句表达式)语句>
<跳转语句> | <continue;> |<breack;> | <return;> | <return 表达式; >
<赋值表达式> → <条件表达式> | <一元表达式> <赋值操作符> <赋值表达式>
<条件表达式> → <逻辑‘或’表达式> | <逻辑‘或’表达式?> <表达式:> <条件表达式>
<逻辑‘或’表达式> → <逻辑‘与’表达式> | <逻辑‘或’表达式> <‘或’运算> <逻辑‘与’表达式>
<逻辑‘与’表达式> → <逻辑‘或’表达式> | <逻辑‘与’表达式> <‘与’运算> <逻辑‘或’表达式>
<或运算表达式> → <异或表达式> | <或运算表达式‘|’ 异或表达式>
<异或表达式> : <与表达式> | <异或表达式 ^ 与表达式>
<与表达式> : <相等表达式> | <与表达式 & 相等表达式>
<相等表达式> : <关系表达式> | <相等表达式> <等于运算> <关系表达式> | <相等表达式> <不等于运算> <关系表达式>

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

<替换表达式> : <加法表达式> | <替换表达式> <左运算> <加法表达式> | <替换表达式> <右运算> <加法表达式>

<加法表达式> : <乘法表达式> | <加法表达式 + 乘法表达式> | <加法表达式 - 乘法表达式>

<乘法表达式> : <强制转换表达式> | <乘法表达式 * 强制转换表达式> | <乘法表达式 / 强制转换表达式> | <乘法表达式 % 强制转换表达式>

<强制转换表达式> : <一元表达式> | <(类型名称)强制转换表达式>

<一元表达式> : <后缀表达式> | <加一运算> <一元表达式> | <减一运算> <一元表达式> | <一元运算符> <强制转换表达式> | <结构体变量> <一元表达式> | <结构体变量(类型名称)>

<后缀表达式> → : <基本表达式> | <后缀表达式 [ 表达式 ]> | <后缀表达式()> | <后缀表达式(参数表达式列表)> | <后缀表达式 . 标识符> | <后缀表达式> <指针运算> <标识符> | <后缀表达式> <加一运算> | <后缀表达式> <减一运算>

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

<参数表达式列表> : <参数表达式> | <参数表达式列表 , 参数表达式>

<一元运算符> : <&> | <*> | <+> |<-> | <~> | <!>

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

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

<结构体或共用体说明符> : <结构体或共用体> <标识符> <{结构体声明列表}> | <结构体或共用体 { 结构体声明列表 }> | <结构体或共用体> <标识符>

<结构体或共用体> : <结构体> | <共同体>

<结构体声明列表> : <结构体声明> | <结构体声明列表> <结构体声明>

<结构体声明> : <说明符限定符列表> <结构体声明列表;>

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

<结构说明符列表> → <结构说明符> | <结构说明符列表 , 结构说明符>

<结构说明符> → : <说明符> | <:常数表达式> | <说明符 : 常数表达式>

<枚举说明符> → <枚举{枚举器列表}> | <枚举标识符{枚举器列表}> | <枚举标识符>

<枚举器列表> → <枚举器> | <枚举器列表 , 枚举器>

<枚举器> → <标识符> | <标识符 = 常数表达式>

<类型限定符> → <常量> | <变量>

<类型限定符列表> → <类型限定符> | <类型限定符列表> <类型限定符>

<参数类型列表> → <参数列表> | <参数类型列表 , 省略>

<参数列表> → : <参数说明> | <参数列表 , 参数说明>

<类型名称> → <说明符限定符列表> | <说明符限定符列表> <抽象说明符>

<抽象说明符> → <指针> | <直接抽象说明符> | <指针> <直接抽象说明符>

<直接抽象说明符> → <(抽象说明符)> | <[ ]> | <[ 常数表达式 ]> | <直接抽象说明符[ ]> | <直接抽象说明符[ 常数表达式 ]> | <( )> | <(参数类型列表)> | <直接抽象说明符( )> | <直接抽象说明符(参数类型列表)>

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

时间: 2024-12-28 20:44:44

C语言语法的相关文章

UltraEdit 增加语言语法着色

UltraEdit是一个超级好用的文本编辑工具,可以自行添加不同的语言着色配置,实现按语法着色显示.例如Java,JavaScript中的关键字,字符串等显示为不同颜色. 在以往较低的版本中,添加一门语言着色配置需要在wordfile中添加,不但比较繁琐,而且容易出错.在高版本中(比如V18及以上版本),可以讲语言语法着色文件直接拷贝入相应的目录即可. 这里以Fortran语言语法着色配置文件为例,叙述配置步骤: 1.从UltraEdit网站上下载着色配置文件 http://www.ultrae

VEX IR语言语法

/*---------------------------------------------------------------*//*--- High-level IR description ---*//*---------------------------------------------------------------*/ /* Vex IR is an architecture-neutral intermediate representation. Unlike some

C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com

原文:C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 本文由 arthinking 发表于315 天前 ⁄ itzhai.com原创文章 ⁄ C语言 ⁄ 评论数 3 ⁄ 被围观 1,775 views+ 指针数组: 在一个数组中,如果它的元素全部都是指针类

Go语言语法汇总(转)

Go语言语法汇总 分类: 技术2013-09-16 14:21 3007人阅读 评论(0) 收藏 举报 go语言golang并发语法 目录(?)[+] 最近看了看GoLang,把Go语言的语法总结了一下,做个快速参考 数据类型 var varName type,var var1,var2… type,var varName type = Value,var varName1,varName2 type = Value1,Value2,var varName1,varName2=Value1,Va

带你一起学习C语言语法

<带你学C带你飞>第一季讲解内容:C语言语法,我们会讲变量.数组.函数.指针.结构.标准库这样一些纯粹的C语言知识. 基本上你大学第一学期学的就是咱第一季的内容,我知道很多朋友学完C语言一时感觉没什么用?然后大一学完大二就还给体育老师了--咳咳,毕竟现在是一个连程序都要刷颜值的年代--使用C语言,确实不容易写出外观炫酷的程序,但你要知道,往往一个只是好看的程序,其实更需要的是一个优秀的美工. 课程目标 C语言项目开发 适合人群 零基础 课时列表 课时1:第一个程序 课时2:打印 课时3:变量

L脚本语言语法手册 0.10版

L脚本语言语法手册 0.10版 赵亮       简  介 L脚本语言是一个轻量级的,旨在接近自然语言的编程语言,目前支持在中文.英文基础上的编程.并可扩展为任意语种.L脚本语言的语法结构简单,程序结构相对松散,易学易用. 目前L脚本语言仍处于开发初期,功能尚不完善.目前提供了一个简单的源码编辑器,建议使用notepad++或者ultraedit进行源码编辑. 目录 一.        介绍.. 2 二.        注释.. 3 三.        对象定义和引用.. 3 四.       

第01节:Linux 内核中的 C 语言语法扩展

1.1 Linux 内核驱动中的奇怪语法 大家在看一些 GNU 开源软件,或者阅读 Linux 内核.驱动源码时会发现,在 Linux 内核源码中,有大量的 C 程序看起来"怪怪的".说它是C语言吧,貌似又跟教材中的写法不太一样:说它不是 C 语言呢,但是这些程序确确实实是在一个 C 文件中.此时,你肯定怀疑你看到的是一个"假的 C 语言"! 比如,下面的宏定义: #define mult_frac(x, numer, denom)( { typeof(x) quo

每天一点Go语言——Go语言语法基础及基本数据类型

每天一点Go语言--Go语言语法基础及基本数据类型 一.Go语言基础语法 ? 上篇Go语言讲解中谈到了有关Go语言的基本组成结构,该小节就来讲述有关go语言的基础语法.Go语言程序由多个标记组成,如:关键字.标识符.常量.符号.字符串. ? 行分割符--一行表示一个语句结束,无需写":".当然,你可以将多条语句写在一行,并且使用":"号区分,但是不推荐这样写开发代码. ? 注释在本文就不多说了. 标识符 ? 如果说变量是shell入门的第一道关卡,那么可以说,标识符

智语言语法说明

智语言 智语言是一款完全中文的解释编程语言,运行时被翻译成Javascript. 所有Javascript 的语法与组件可以直接使用.智语言精心设计了中文语法部分. 在讲智语言的语法之前我先介绍一下智语言的设计理念.智语言的设计理念,智语言可以表达任何需要电脑(机器人)完成的逻辑. 智语言是一种解释语言可以支持任何的高级语法,让使用者更加舒服, 让使用者感觉像在使用自然语言. 因为解释语言拥有高级特征,所以性能会比其他编译语言性能更低. 庆幸的是现在电脑的计算速度飞快, 解释语言有很大的使用空间

C语言语法知识归纳

一.C语言可以在不同的源文件中定义相同名字的全局变量吗? 不使用static的时候,两个不同的源文件都可以正常编译,但会出现链接错误,原因是有两个地方存在相同的变量,导致编译器无法识别应该使用哪一个. 使用static的时候,你所定义的static变量如果是局部的话,编译的时候编译器会将其重新命名,其他文件就不会使用到这个文件的static变量了,这样就使得只在本文件内有效:如果是全局的话,就全局可见,共享同一块内存空间,即两个文件中全局变量的物理地址相同. 二.C语言中 void *指针与空指