程序->外部声明 | 程序 外部声明

程序->外部声明A'

A'->外部声明A'|ε

外部声明->修饰符 变量名 形参

修饰符->void | int | char | float

形参->修饰符A'

A'->函数名|指针 变量名

函数名->L | IL | ID

函数名->LA'

A'->LA'|DA'|ε

L->a|b|c|...|z

D->0|1|2|...|9

指针->’*’A'

A'-> ε| 指针

函数->外部声明 函数主体 | main() 函数主体|函数 外部声明 函数主体

函数主体->内部声明 语句列表 | 语句列表

内部声明->修饰符A'| 变量名 ';' | ';'

A'->变量名 内部声明 | 指针 变量名

语句列表->语句列表A'

A'->条件语句 | 赋值语句

赋值语句->变量名 '=' E

变量名-〉函数名

E-〉EA'| T

A'->+T|-T

T->TB'|F

B'->*F|/F

F->PC'

C'->PC'|ε

P->(E)|i

条件语句->条件语句1|条件语句2

条件语句1->if 条件 条件语句1 else 条件语句1 | 语句列表

条件语句2->if 条件| if 条件 条件语句1 else 条件语句2

C语言文法 LL(1)文法的更多相关文章

  1. 编译原理(一)绪论概念&文法与语言

    绪论概念&文法与语言 以老师PPT为标准,借鉴部分教材内容,AlvinZH学习笔记. 绪论基本概念 1. 低级语言:字位码.机器语言.汇编语言.与特定的机器有关,功效高,但使用复杂.繁琐.费时 ...

  2. NLTK学习笔记(八):文法--词关系研究的工具

    [TOC] 对于一门语言来说,一句话有无限可能.问题是我们只能通过有限的程序来分析结构和含义.尝试将"语言"理解为:仅仅是所有合乎文法的句子的大集合.在这个思路的基础上,类似于 w ...

  3. 《编译原理》-用例题理解-自顶向下语法分析及 FIRST,FOLLOW,SELECT集,LL(1)文法

    <编译原理>-用例题理解-自顶向下语法分析及 FIRST,FOLLOW,SELECT集,LL(1)文法 此编译原理确定某高级程序设计语言编译原理,理论基础,学习笔记 本笔记是对教材< ...

  4. NLP(五) 词性标注和文法

    NLTK内置词性标注器 用nltk.pos_tag()函数进行词性标注 import nltk nltk.download('averaged_perceptron_tagger') simpleSe ...

  5. 编译原理:LL(1)文法的判断,递归下降分析程序

    1. 文法 G(S): (1)S -> AB (2)A ->Da|ε (3)B -> cC (4)C -> aADC |ε (5)D -> b|ε 验证文法 G(S)是不 ...

  6. FIRST集合、FOLLOW集合及LL(1)文法求法

    FIRST集合 定义 可从α推导得到的串的首符号的集合,其中α是任意的文法符号串. 规则 计算文法符号 X 的 FIRST(X),不断运用以下规则直到没有新终结符号或 ε可以被加入为止 : (1)如果 ...

  7. 递归转手工栈处理的一般式[C语言]

    是任意形式的递归,是化解的一般式. 主题所谓的“递归调用化解为栈处理”,意思是,将递归函数调用化解为“一个由stack_push stack_pop stack_top等函数调用组成的循环式子”.这里 ...

  8. C# 语言规范_版本5.0 (第2章 词法结构)

    1. 词法结构 1.1 程序 C# 程序 (program) 由一个或多个源文件 (source file) 组成,源文件的正式名称是编译单元 (compilation unit)(第 9.1 节). ...

  9. <编译原理 - 函数绘图语言解释器(2)语法分析器 - python>

    <编译原理 - 函数绘图语言解释器(2)语法分析器 - python> 背景 编译原理上机实现一个对函数绘图语言的解释器 - 用除C外的不同种语言实现 设计思路: 设计函数绘图语言的文法, ...

随机推荐

  1. 数据库 MySQL安装图解

    MySQL安装图解 一.MYSQL的安装 1.打开下载的mysql安装文件,双击运行mysql-5.5.40-win32.msi. 2.选择安装类型,有"Typical(默认)". ...

  2. Yii2使用教程

    安装 中文文档:http://www.yiichina.com/doc/guide/2.0/start-installation 1,安装 这里我直接下载归档文件,压缩包安装了.composer各种麻 ...

  3. --------------- Target-----------------

    熟悉Java EE相关技术和框架(包括Java语言/Struts/Spring/iBatis/hibernet等):熟悉熟悉Spring,Struts,iBatis及至少一种Java 应用服务器如to ...

  4. MyBatis缓存禁用失败

    问题:MyBatis缓存无法禁用,同一个session的select查询结果一样,但是数据库其实已改变. 尝试达到想要的目的: 1.msgmapper.xml里的select标签加上 <sele ...

  5. Gamemaker Studio运行时弹出打开窗口导致无法启动的错误

    Desc 初次使用遇到一个问题,点击Run的时候并没有运行当前工程而是弹出一个打开窗体 Steam里面相同问题描述:Compile error 后续才得知是要选择data.win,但是这个文件根本就没 ...

  6. [Docker] Docker简介

    一.简介 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间 ...

  7. [sqoop1.99.7] sqoop入门-下载、安装、运行和常用命令

    一.简介 Apache Sqoop is a tool designed for efficiently transferring data betweeen structured, semi-str ...

  8. Java EE : 二、图解 Cookie(小甜饼)

    目录 Java EE : 一.图解Http协议 Java EE : 二.图解 Cookie(小甜饼) Java EE : 三.图解Session(会话) 概述 一.概述 二.详细介绍Cookie 传输 ...

  9. 递归算法(三)——多项分布问题

    问题 一个枪手打靶,靶从外向内有1-10分(考虑脱靶得0分),打十枪,求枪手最后得90分的概率. 解决思路 一.穷举 考虑10重for循环,累计十次得分和为90者,求得概率.该法通用性差,效率低,但容 ...

  10. Java—数组

    1 声明数组变量   dataType[] arrayRefVar; 2 实例数组         double[] myArray; 3 创建数组         arrayRefVar =new ...