简易版C语言程序设计语法
源程序 → 外部声明 | 子程序(外部声明)
外部声明 → 函数定义| 函数声明
函数定义 → 类型标识符(复合句)
标识符类型 → 无类型 | 字符型 | 整型 | 浮点型
整型→ 长整型 | 短整型 | 无符号整型
声明→ 指针直接声明| 直接声明
指针 → * | * 指针
直接声明→ 标识符| 直接声明[ ]| 直接声明[常量表达式]| 标识符(参数列表)| 标识符() | (直接声明 , 标识符列表)
标识符列表→标识符 | (标识符列表 ,标识符)
常数表达式→ 条件表达式
参数列表→ 参数声明| (参数列表 ,参数声明)
参数声明→ 说明符声明,标识符
复合语句 → { } | { 语句列表 } | { 声明列表 语句列表 }
声明列表→ 声明 | 声明列表 声明
声明→初始化声明| (初始化声明列表 ,初始化声明)
初始化声明 → 声明| 声明=初始化程序
初始化程序 → 表达式 | {初始化程序列表} | {初始化程序列表 , }
初始化程序列表 → 初始化程序 | (初始化程序列表 , 初始化程序)
语句列表→ 语句| 语句列表
语句→语句| 复合语句 | 表达式语句 | 选择语句|循环语句|跳转语句
表达式语句→ 表达式;
选择语句→ IF(表达式)语句| IF(表达式)语句 | ELSE 语句
循环语句→ WHILE(表达式)语句 | FOR(表达式语句;表达式语句)| FOR(表达式语句;表达式语句;表达式语句)
跳转语句| continue; |break; | return; | return 表达式;
表达式→赋值表达式|(表达式, 赋值表达式)
赋值表达式→条件表达式|一元表达式 (赋值操作符)赋值表达式
条件表达式 → 逻辑‘或’表达式|逻辑‘或’表达式?表达式:条件表达式
逻辑‘或’表达式→逻辑‘与’表达式 |逻辑‘或’表达式‘或’运算|逻辑‘与’表达式
逻辑‘与’表达式→ 逻辑‘或’表达式|逻辑‘与’表达式‘与’运算(逻辑‘或’表达式)
或运算表达式→异或表达式 |或运算表达式‘|异或表达式
相等表达式→关系表达式|相等表达式 等于运算 关系表达式| 相等表达式 不等于运算 关系表达式
关系表达式→替换表达式|关系表达式 替换表达式|关系表达式 替换表达式| 关系表达式<=替换表达式| <关系表达式>=替换表达式
替换表达式→加法表达式| 减法表达式| 乘法表达式
加法表达式→乘法表达式>| (加法表达式 + 乘法表达式)|(加法表达式 - 乘法表达式)
乘法表达式→强制转换表达式| (乘法表达式 * 强制转换表达式)| (乘法表达式 / 强制转换表达式)|(乘法表达式 % 强制转换表达式)
基本表达式→ 标识符 | 常量 | 字符串|(表达式)
一元运算符→& | * | + |- | ~ | !
赋值运算符→ =| 乘法赋值 | 除法赋值|求余赋值|加法赋值|减法赋值|左赋值 |右赋值|与赋值|异或赋值|或赋值
储存类说明符→typedef(定义类型)| <extern(外部变量)| <static(静态)| auto(自动)| register(寄存器)
说明符限定符列表→类型说明符 说明符限定符列表 | 类型说明符| 类型限定符 说明符限定符列表 |类型限定符
结构说明符列表→结构说明符|(结构说明符列表 , 结构说明符)
结构说明符 → 说明符 | (:常数表达式) | (说明符 : 常数表达式)
类型限定符 → 常量| 变量
标记语句→ (标识符 : 语句)| case (常数表达式 : 语句) | default(语句)
简易版C语言程序设计语法的更多相关文章
- 简易版C语言程序语法
<程序> -〉 <外部声明> | <函数定义><外部声明> -〉<头文件> | <变量> | <结构体> <头 ...
- 实验二 简易版C语言文法
<程序>::=begin<语句串>end <语句串>::=<语句>{;<语句>} <语句>::=<赋值语句> < ...
- 武汉科技大学ACM:1009: 华科版C语言程序设计教程(第二版)习题5.12
Problem Description 这天老师照例给小豪出了一道题目:老师给小豪一个字符串,让小豪将该字符串逆序输出. Input 第一行包括一个T,表示有多少组测试数据: 接下来T行,每行包括一个 ...
- 武汉科技大学ACM:1006: 华科版C语言程序设计教程(第二版)例题4.17
Problem Description 输入一个整数,求它的素数因子.并按照格式输出. Input 一个整数n.(2<=n<=100) Output n=a*b*c*... (a,b,c为 ...
- 武汉科技大学ACM:1005: 华科版C语言程序设计教程(第二版)例题5.8
Problem Description 老师给小豪出了一道题目:给你两个整数x和n(-10<=x<=10,1<=n<=10),让你求出x^1+x^2+x^3+……+x^n的结果 ...
- 武汉科技大学ACM:1004: 华科版C语言程序设计教程(第二版)习题5.6
Problem Description 这天老师又给小豪出了一道题目:给你三根长度分别为a,b,c的火柴,让你计算这三跟火柴能组成的三角形的面积. Input 输入每行包括三个数a,b,c. Outp ...
- 武汉科技大学ACM:1003: 华科版C语言程序设计教程(第二版)例题6.6.改编
Problem Description 小明明最喜欢学英语了,英语课从来不翘课,但是英语却一直没学好,因为上课一直在睡觉.为什么会睡觉呢,因为他觉得英文单词太长了.现在小明明有一个很长很长很长的单词, ...
- 武汉科技大学ACM:1002: 华科版C语言程序设计教程(第二版)例题6.6
Problem Description 明天就要英语考试了,小明明正在挑灯夜 战背单词.小明明发现单词很难背,背一个忘一个.经过仔细研究,小明明发现单词难背的原因是因为某个字符的出现,破坏了整个单词的 ...
- 武汉科技大学ACM:1001: 华科版C语言程序设计教程(第二版)习题6.7
Problem Description 输出杨辉三角前n行. Input 输入一个数n(n <= 9) Output 输出杨辉三角前n行.(注意行末不能有多余的空格,数字以%3d的格式输出) S ...
随机推荐
- HDU 4113 Construct the Great Wall(插头dp)
好久没做插头dp的样子,一开始以为这题是插头,状压,插头,状压,插头,状压,插头,状压,无限对又错. 昨天看到的这题. 百度之后发现没有人发题解,hust也没,hdu也没discuss...在acm- ...
- .NET程序员转Java不完全指南
首先要声明一点,“转”字并不包含那种语言牛B的意思. 然后要声明一点,“转”字仅限于企业应用开发的语言的转. 假设各种数据库切换无代沟, 假设各种WEB客户端技术无障碍. 1.搭建环境,IDE主流是e ...
- BOM and Event Source
EventSource: var test = function(){ var btn = event.srcElement; var str += btn.type + ":" ...
- Knockout.js随手记(4)
动态绑定下拉列表 在<select> data-bind的options选项如果绑定到ko.observableArray(),就可以动态新增选项效果,也就是可以利用其完成常见的级联效果的 ...
- [译]:Orchard入门——使用标签管理内容
原文链接:Organizing Content Using Tags 在Orchard中,内容项可以使用标签来分类,同时,通过格式为 ~/tags/tag-name 的url可以直接查看包含对应标签关 ...
- [译]:Orchard入门——手动安装Orchard
原文链接:Manually Installing Orchard 文章内容基于Orchard 1.8版本 本文将演示通过zip安装包安装Orchard所需要的步骤. 本文包括如下三种不同的Orchar ...
- Could not open Selected VM debug port (8700) (转)
Could not open Selected VM debug port (8700) 2014年11月14日 ⁄ 综合 ⁄ 共 446字 ⁄ 字号 小 中 大 ⁄ 评论关闭 在运行项目的时候, ...
- [leetcode] 题型整理之查找
1. 普通的二分法查找查找等于target的数字 2. 还可以查找小于target的数字中最小的数字和大于target的数字中最大的数字 由于新的查找结果总是比旧的查找结果更接近于target,因此只 ...
- HDU 1712 ACboy needs your help(分组背包)
题意:给你n的课程组,每个课程组有m个课程,每个课程有一个完成时间与价值.问在m天内每组课程组最多选择一个,这样可以得到的最大价值是多少 题解:分组背包,其实就是每个课程组进行01背包,再在课程组内部 ...
- Leetcode Simplify Path
Given an absolute path for a file (Unix-style), simplify it. For example,path = "/home/", ...