C语言文法分析

<源函数> → <外部声明> | <源程序> <外部声明>

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

<函数定义> → <类型标识符> <声明部分语句>

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

<声明>  <指针直接声明> | <直接声明>

<指针> → < * > | < * 指针>

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

<标识符列表> : <标识符> | <标识符列表 ,标识符>

<常数表达式> → <条件表达式>

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

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

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

<声明列表> → <声明> | <声明列表> <声明>

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

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

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

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

<语句列表> → <语句> | <语句列表> <语句>

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

<表达式语句> → <表达式;>

<选择语句> : < IF(表达式)语句> | < IF(表达式)语句 > < ELSE 语句>

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

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

<表达式> : <赋值表达式> | <表达式, 赋值表达式>

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

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

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

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

<或运算表达式> → <异或表达式> | <或运算表达式‘|’ 异或表达式>

<异或表达式> : <与表达式> | <异或表达式 ^ 与表达式>

<与表达式> : <相等表达式> | <与表达式 & 相等表达式>

<相等表达式> : <关系表达式> | <相等表达式> <等于运算> <关系表达式> | <相等表达式> <不等于运算> <关系表达式>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

时间: 2024-10-10 13:54:19

C语言文法分析的相关文章

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

词法与文法分析程序

1.词法与文法分析程序功能:   主要语句:begin<语句串>end 输入单词串,以“#”结束,如果是文法正确的句子,则输出成功信息,打印“成功”,否则输出“错误”. 2.符号与种别码对照表: 单词符号 种别码 单词符号 种别码 begin 1 : 17 if 2 := 18 then 3 < 20 while 4 <= 21 do 5 <> 22 end 6 > 23 l(l|d)* 10 >= 24 dd* 11 = 25 + 13 ; 26 - 14

文法分析与递归下降分析

C语言程序--〉main函数,调用数据库|函数声明|函数定义 Main函数--〉函数定义变量|调用函数 函数声明--〉函数名.参数.函数类型 定义变量--〉函数类型 函数类型--〉void| CHAR| INT| FLOAT 定义--〉定义变量|调用函数 参数--〉参数类型.参数名 参数类型--〉void| CHAR| INT| FLOAT 易c语言文法 <程序> -〉 <外部声明> | <函数定义> <外部声明> -〉<头文件> | <变

R语言︱情感分析—词典型代码实践(最基础)(一)

笔者寄语:词典型情感分析对词典要求极高,词典中的词语需要人工去选择,但是这样的选择会很有目标以及针对性.本文代码大多来源于<数据挖掘之道>的情感分析章节.本书中还提到了监督算法式的情感分析,可见博客: R语言︱情感分析-基于监督算法R语言实现笔记. 可以与博客 R语言︱词典型情感分析文本操作技巧汇总(打标签.词典与数据匹配等)对着看. 词典型情感分析大致有以下几个步骤: 训练数据集.neg/pos情感词典.分词+数据清洗清洗(一.二.三级清洗步骤).计算情感得分.模型评价 ----------

Wikioi上的C语言试题分析【2014.7.22】

Question [1] 题目描述 Description 输入两个整数A和B,输出他们的和 输入描述 Input Description 输入为一行,包含两个整数A,B.数据保证A与B都在2^31-1的范围内 输出描述 Output Description 输入A与B的和,数据保证A与B的和在2^31-1的范围内 样例输入 Sample Input 1 3 样例输出 Sample Output 4 pass code: #include <stdio.h> int main() { int

R语言文本分析(2)

R语言文本分析(2) 在获得了数据之后,通常需要对文本中的每个词出现的频次进行统计,以便获得出现频次较高的词汇.当然,在英文中,冠词以及be动词可能是出现次数最多的一部分词汇了,后续的学习和处理中通常需要将这部分的词汇移除之后再进行处理. 初学者,先统计之,后续处理以待明天. 下面代码,简单统计频次,进行排序,找出指定词汇出现的频次,绘制在文本中出现的时间,并根据章节对novel进行分节处理. 代码来自上篇提到的书. # 使用table统计每个单词出现的频数 moby.freqs <- tabl

自然语言分析工具Hanlp依存文法分析python使用总结(附带依存关系英文简写的中文解释)

最近在做一个应用依存文法分析来提取文本中各种关系的词语的任务.例如:text='新中国在马克思的思想和恩格斯的理论阔步向前': ps:这里马克思和恩格斯原来我是用的毛zd和邓xp,但是系统说这两个名字违规了........我很爱国的好不好!!!!!! 我需要提取这个text中的并列的两个关系,从文中分析可知,"马克思的思想"和"恩格斯的理论"是两个并列关系的短语,所以想要将其提取出来: 首先大致了解一下依存文法分析的前提条件,将句子分词并进行词性标注,这一步非常关键

c语言程序的文法分析

C语言程序--〉main函数,调用数据库|函数声明|函数定义 Main函数--〉函数定义变量|调用函数 函数声明--〉函数名.参数.函数类型 定义变量--〉函数类型 函数类型--〉void| CHAR| INT| FLOAT 定义--〉定义变量|调用函数 参数--〉参数类型.参数名 参数类型--〉void| CHAR| INT| FLOAT

关于c语言的文法分析问题

<程序>  ->   <声明> | <程序> <函数> <声明>  ->   #include<stdio.h>|#include<string.h>|............ <函数>  ->   <修饰符> <标识符> <形参> <复合语句> <修饰符>->   void | char | int | double <