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

<外部申明>→<头文件><函数声明>|其他声明

<函数体>→<返回值类型><标识符><形参><复合语句>

<返回值类型>→void|char|int|float

<标识符>→<字母>|<标识符><字母>|<标识符><数字>

<字母>→a|b|c|...|z|_

<数字>→0|1|2|3|4|5|6|7|8|9

<形参>→<数据类型> <标识符>

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

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

<复合语句>→<赋值语句>|<条件语句>|<循环语句>

<赋值语句>→<标识符>=<表达式>

E→E + T |E–T|T

T→T*F|T/F|F

F→E|i

<条件语句>→S1|S2

<S1>→if <判断语句><{条件语句}> else <{条件语句}>

<S2>→if <判断语句><{条件语句}>| if <判断式><{条件语句}> S1

<判断语句>→<标识符><逻辑运算符><标识符|数字>

<逻辑运算符>→>|<|=|!|>=|<=

<循环语句>→<for语句>|<while语句>|<do while语句>

<for语句>→for(赋值语句;判断语句; <标识符><D>){语句列表}

D→++|--

<while语句>→while(判断语句){语句列表}

<do while语句>→do{语句列表}while(判断语句)

E→TX

X→(+T|-T)X|ε

T→FY

Y→(*F|/F)Y|ε

F→(E)|i

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

  1. C语言文法

    C语言文法 源程序 → 外部声明 | 子程序(外部声明) 外部声明   → 函数定义| 函数声明 函数定义 → 类型标识符(复合句) 标识符类型 → 无类型 | 字符型 | 整型 | 浮点型 整型→ ...

  2. QParserGenerator的文法文件介绍

    在沉默了数月之后,博主心血来潮想继续介绍QParserGenerator,在这里我们将不再继续介绍任何有关于LALR(1)的算法(那东西只会把你的脑子变成一团浆糊),让我们来看一下QParserGen ...

  3. 文法分类的python实现

    #-*-coding:utf-8-*- G = raw_input("提示输入文法:"); #G为文法 S = G[2] #识别符号S Vn = raw_input("提 ...

  4. c语言简易版文法

    文法 <程序>→<外部声明>|<程序><外部声明> <外部声明>→<函数定义>|<声明> <函数定义>→ ...

  5. 北航 编译实践 PL/0文法

    编译实践-PL\0编译系统实现 姓名:   专业: 计算机科学与技术 学院: 软件学院 提交时间: 2013年12月25日 北京航空航天大学·软件学院 编译实践-PL\0编译系统实现 实验要求 以个人 ...

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

    阅读并理解提供给大家的C语言文法文件. 参考该文件写出一个自己好理解版的现实版的完整版的C语言文法. 给出一段C程序,画出用上述文法产生这段C程序的完整语法树. 程序:冒泡算法C程序 点此文字查看原图 ...

  7. 1029 C语言文法定义与C程序的推导过程

    1 阅读并理解提供给大家的C语言文法文件. 2 参考该文件写出一个自己好理解版的现实版的完整版的C语言文法. 3 给出一段C程序,写出用上述文法产生这段C程序的推导过程. program → exte ...

  8. Neo4查询语言Cypher3.0.7在antlr4下的文法(原创分享)

    本人网上找了很久都没有一个比较好的cypher文法,于是花了一段时间研究cypher和编写基于antlr4下的cypher文法. 希望对想用做cypher相关工具的朋友有一点用,欢迎交流. 珍重声明: ...

  9. 表达式计算器(LL1文法)

    LL(1)文法求算数表达式的值递归子程序法 分析过程: 表达式文法G[E]:E->E+T|E-T|TT->T*F|T/F|T%F|FF->N^F|NN->(E)|NUM|+NU ...

  10. 求LR(0)文法的规范族集和ACTION表、GOTO表的构造算法

    原理 数据结构 // GO private static Map<Map<Integer,String>,Integer> GO = new HashMap<Map< ...

随机推荐

  1. PHP日期与时间

    时间戳是自 1970 年 1 月 1 日(00:00:00 GMT)以来的秒数.它也被称为 Unix 时间戳(Unix Timestamp).Unix时间戳(Unix timestamp),或称Uni ...

  2. VMware下虚拟机的转移

    将虚拟机文件夹整个拷贝到另一台电脑上: 打开.vmx文件 打开即可: 注意:Mac系统的虚拟机要先用unlocker206破解,才能运行OS系统.

  3. javascript数组去重的两个方法

    方法一: 创建一个临时数组,判断目标数组中每个元素是否在临时数组中,如果不在就添加进临时数组,最后return临时数组 <script> var arr=[1,2,3,4,5,1,2,3, ...

  4. 北京电子科技学院(BESTI)实验报告1

    北京电子科技学院(BESTI)实验报告1 课程: 信息安全系统设计基础 班级:1452.1453 姓名:(按贡献大小排名)郑凯杰 .周恩德 学号:(按贡献大小排名)20145314 .20145217 ...

  5. iOS 应用内的系统复制粘贴菜单显示的语言非中文

    在应用的 Info.plist 文件中添加以下代码: <key>CFBundleLocalizations</key> <array> <string> ...

  6. 巴特沃斯(Butterworth)滤波器 (1)

    下面深入浅出讲一下Butterworth原理及其代码编写. 1. 首先考虑一个归一化的低通滤波器(截止频率是1),其幅度公式如下: 当n->∞时,得到一个理想的低通滤波反馈: ω<1时,增 ...

  7. 玩转GIT

    远程代码覆盖本地 解决方法: 1.如果还没有 commit 的话,可以用 git checkout . 这样将使所有代码还原到最后一次 commit 的状态 2.如果已经 commit 了,最简单的方 ...

  8. 【BZOJ】3437: 小P的牧场

    题意 n个点,需要再一些点建立控制站,如果在第\(i\)个建站,贡献为\(a[i]\).假设前一个站为\(j<i\),则\([j+1, i]\)的点的贡献是\(\sum_{k=j+1}^{i} ...

  9. Java_ClassLoader内存溢出-从tomcat的reload说起

    原文链接:http://nius.me/classloader-memory-leak/ 对于j2ee项目,一直使用eclipse的wtp,每次修改代码后,可以自动热部署.简单的项目wtp似乎没什么问 ...

  10. C# 正则表达式

    引用自:http://www.cnblogs.com/stg609/archive/2009/06/03/1492709.html 摘要:正则表达式(Regular Expressions),相信做软 ...