词法分析1

原创 2018年04月15日 20:41:46

词法记号的属性,属性用来对记号里面的属性加以进一步区分。 


<a1,a2,a3,a4,...,an>成为n元式

a1成为第一元,a2称为第二元,类推。。。。;


比如:position = initial + rate * 60 的记号和属性

<id,指向符号表中position条目的指针>,第二元表示属性

<assign_op>,赋值号--单独作为记号,不需要第二元作为属性加以区分

<id,指向符号表中initial条目的指针>第二元表示属性

<add_op>单独作为记号,不需要第二元作为属性加以区分

<id,指向符号表中rate条目的指针>第二元表示属性

<mul_op>单独作为记号,不需要第二元作为属性加以区分

<number,整数值60>


词法分析结束之后,每次要返回记号和属性。

二、串和语言

-字母表: 符号的有限集合 ,例如    ={0  ,1}

-串: 符号的有穷序列,例如    0110

-语言:字母表上的一个串集  {0,00,000,。。。}

串的运算:

-连接(积) xy,  s空串=空串s=s 

-幂          s的0次方为空,s的i次方=s的i-1次方s


语言上的运算:

-并:L∪M = {s|s∈L或者s∈M}

-连接 : LM={st|s∈L且t∈M},即前一部分部分属于前面,后一部分属于后面

-幂 :L的0次幂是{&},L的i次幂是L的i次幂L

-闭包:L*=L0∪L1∪L1∪....,数字部分指的是 次幂

-正闭包: L+  = L0∪ L1∪...,数字部分指的是 次幂


例题:

L:{A,B,C,D,...,Z,a,b,c,...z},D:{0,1,2,3,...9}

L∪D: 为长度为一的句子,为字母或数字

LD:长度为2的句子,前部分为字母,后部分为数字

L6次方:长度为6的句子,6个符号都是字母

L*:任意长度的字母串,包括空串

D+ : 定义的是无符号整数

L(L∪D)*:就是我们定义的字母开头,后跟字母或数字的标识符的定义。长度不固定,*可以重复多次。

上面的缺点是不便于计算机进行操作处理。

正是由于这样不便于计算机处理,所以,正规式 就正式开始进入视野!!!



正规式 


正规式            定义的语言            备注

&                {&}                    我用&符号代替空的那个符号,目前不知道如何找到那个符号

a                {a}                    a∈ 字母表

(r)|  (s)        L(r)∪L(s)        r,s是正规式

(r)(s)            L(r)L(s)            r,s是正规式

(r)*            (L(r))*                r是正规式

(r)            L(r)                r是正规式


约定:((a)(b)*)|(c) 等价于 ab*|c

例题:

字母表={a,b},计算下式:

-a|b                    {a,b}

-(a|b)(a|b)             {aa,ab,ba,bb}

-aa|ab|ba|bb            {aa,ab,ba,bb}

-a*                        由字母a构成的所有的串集,包括空串

-(a|b)*                    由a和b构成的所有的串,包括空串

-(00|11|((01|10)(00|11)*(01|10)))*       偶数个0和偶数个1构成,符号要求的所有01串,都是该正规式规则下的句子。例如:01001101000010000010111001就是上面正规式的句子。



版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/QQQZSJ/article/details/79952961

Python 数据挖掘与机器学习进阶实训-1

Python 数据挖掘与机器学习进阶实训-1
  • 2017年12月12日 15:42

哈工大编译原理实验1——词法分析

设计实现类高级语言的词法分析器,基本功能如下: (1)    能识别以下几类单词: 标识符(由大小写字母、数字以及下划线组成,但必须以字母或者下划线开头) 关键字(①类型关键字:整型、浮点型、布...
  • wangjianyu0115
  • wangjianyu0115
  • 2016-02-23 16:33:20
  • 1447

词法分析 与 LL(1)语法分析

词法分析lex.h#pragma once#ifndef LEX_H#define LEX_H#include #include #include typedef long PreciseIntege...
  • cxmanzhao
  • cxmanzhao
  • 2011-06-19 13:55:00
  • 1421

编译原理(词法分析+LL(1)分析)完整C#

  • 2015年02月28日 15:24
  • 112KB
  • 下载

LL(1)词法分析程序

程序功能: 一、LL(1)文法合法性的判断 包括: 1.      非终结符是否可以退出空 2.      表达式是否退出空 3.      非终结符的First集合 4.      表达...
  • dingyaguang117
  • dingyaguang117
  • 2012-01-27 23:41:03
  • 1529

LL(1)词法分析器

  • 2015年05月25日 20:40
  • 133KB
  • 下载

编译原理实验(一)PL/0 语言词法分析

PL/0语言词法分析一、 实验目的通过完成词法分析程序,了解词法分析的过程。编制一个读单词程序,对PL/0语言进行词法分析,把输入的字符串形式的源程序分割成一个个单词符号,即基本保留字、标识符、常数、...
  • sinat_37341950
  • sinat_37341950
  • 2018-03-20 18:51:13
  • 98

编译原理 词法分析 源代码

  • 2009年05月18日 22:20
  • 7KB
  • 下载

词法分析和LL(1)分析.rar词法分析和LL(1)分析.rar

  • 2010年03月07日 14:14
  • 649KB
  • 下载

东北大学编译原理实验1 词法分析

  • 2014年06月19日 11:29
  • 181KB
  • 下载
收藏助手
不良信息举报
您举报文章:词法分析1
举报原因:
原因补充:

(最多只允许输入30个字)