简单C语言文法描述

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

标识符 → 下划线 标识符|字母 标识符|数字|字母|下划线

常数表达式 → 条件表达式

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

一元表达式 → 加一运算 一元表达式 | 减一运算 一元表达式|一元运算符 强制转换表达式

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

赋值运算符 → = | 乘法赋值 | 除法赋值 | 求余赋值 | 加法赋值 | 减法赋值

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

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

加法表达式 → 乘法表达式 | 加法表达式 + 乘法表达式 | 加法表达式 - 乘法表达式

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

时间: 2024-10-23 13:11:31

简单C语言文法描述的相关文章

简单c语言文法

<源函数> → <外部声明> | <源程序> <外部声明> <程序> -〉 <外部声明> | <函数定义><外部声明> -〉<头文件> | <变量> | <结构体> <头文件> -〉 #include<文件名><文件名> -〉 stdio.h丨stdlib.h丨string.h<结构体> -〉 <结构体声明〉|<结构

用文法描述词法规则

用文法描述词法规则. 这个概念我不是太懂,但是也说说自己的理解和想法. 首先是文法形式的定义:A-〉B ,A代表的是左部符号,‘-〉’意思是为生成,而B代表的是右部的符号串. 有着终结符号:如0,1:1.组成语言的终止符.2.基本有小写字母组成. 文法(Vn,Vt,P,S) 就比如说:A->a|b|e|Aa|Ae|Ao|A Vn = {A}, Vt ={a,b,c,d,e,0,1} P={A->a|b|e|Aa|Ae|Ao|A} S = A . 其实A-〉Aa 就代表着循环的意思,每进行一次,

Linux命令之dot - 绘制DOT语言脚本描述的图形

本文链接:http://codingstandards.iteye.com/blog/840055 用途说明 Graphviz (Graph Visualization Software的缩写)是一个由AT&T实验室启动的开源工具包,用于绘制DOT语言脚本描述的图形.它也提供了供其它软件使用的库. Graphviz是一个自由软件,其授权为Common Public License.其Mac版本曾经获得2004年的苹果设计奖.Graphviz包括很多命令行工具,dot命令是一个用来将生成的图形转换

编译原理(清华大学出版社)-- 文法和语言 -- 文法和语言的形式定义

规则(重写规则.产生式或生成式) 形如 α→β 或 α::=β 的(α,β)有序对,其中α称为规则的左部,β称为规则的右部,这里的符号 →(::=)读作 "定义为",例如A→a读作 “A定义为a” 文法 G定义为四元组(VN,VT,P,S) 其中VN为非终结符集(语法实体 或 变量):VT终结符集:P为规则(α→β)的集合,α∈(VN∪VT)* ,且至少包含一个非终结符,β∈(VN∪VT)*,VN,VT和P都是非空有穷集 S称为识别符或者开始符,它是一个非终结符,至少要在一条规则中作为

1014 C语言文法定义与C程序的推导过程 程序:冒泡算法C程序(语法树)

1014 C语言文法定义与C程序的推导过程  程序:冒泡算法C程序(语法树)1 阅读并理解提供给大家的C语言文法文件. 2 参考该文件写出一个自己好理解版的现实版的完整版的C语言文法. 3 给出一段C程序,画出用上述文法产生这段C程序的完整语法树. 程序:冒泡算法C程序 点此文字查看原图(完整图片) 1 #include <stdio.h> 2 3 main() 4 { 5 int i,j,temp; 6 int a[10]; 7 8 for(i=0;i<10;i++) 9 scanf

linux内核学习之一 简单c语言反汇编

(我是第一次发技术博客的菜鸟,恳请大家指导!!) 一  由简单c程序生成汇编代码 首先给出本次我们要反汇编的简单c语言程序:(够简单吧~) 在linux环境中使用下面的命令条件编译: 生成汇编文件shiyan1.s: shiyan1.s的部分代码截图: 全部粘贴出来如下: 1 .file "shiyan1.c" 2 .text 3 .globl g 4 .type g, @function 5 g: 6 .LFB0: 7 .cfi_startproc 8 pushl %ebp 9 .c

制作一个类似苹果VFL的格式化语言来描述UIStackView

在项目中总是希望页面上各处的文字,颜色,字体大小甚至各个视图控件布局都能够在发版之后能够修改以弥补一些前期考虑不周,或者根据统计数据能够随时进行调整,当然是各个版本都能够统一变化.看到这样的要求后,第一反应是这样的页面只能改成H5,或者尝试使用React Native来应对这种要求. 既然UIStackView已经提供了一种既先进又简洁的布局思路,为何不通过制作一个类似VFL这样的DSL语言来处理布局.这样不就能够通过下发一串DSL字符串的方式来进行内容样式甚至布局的更换,不用跟版,还能使多版本

用最简单的语言给你解释“什么是股权稀释”

编者按:本文来自简法帮投稿,简法帮,是一家为创业者和初创型企业提供交互性法律文件在线自制服务的互联网企业,致力于为创业者提供零成本.高质量的线上法律服务.创业公司融资过程中的股权稀释是一个非常重要的问题,这篇文章用直白的语言和形象的图标给你答案. 不少创业者在融资的过程中,对股权稀释的问题不太明白,我们希望用最简单的语言解释清楚股权稀释,并通过数字实例为大家图解. 一.融资不等于股权转让 首先,创业者需要明白的是,融资通常是企业融资,企业引入资金做大公司的盘子,投资人取得公司股权成为公司的新股东

snml.exe为简单网络管理语言的解释执行器。本地打包下载:https://files.cnblogs.com/files/snmlsnmpsshtelnetipv6/snml_utf8ipv6.zip

本地打包下载:https://files.cnblogs.com/files/snmlsnmpsshtelnetipv6/snml_utf8ipv6.zip snml.exe为简单网络管理语言的解释执行器. 原文地址:https://www.cnblogs.com/snmlsnmpsshtelnetipv6/p/12381672.html