高级语言及其文法(一)
迪丽瓦拉
2024-06-03 17:32:55
0次

目录

语言概述

单词(token)

语句(sentence)

程序(program)

语言(language)

基本定义

字母表(alphabet)

字母表的乘积

字母表的n次幂

字母表的闭包

句子 

出现(occurrence)


语言概述

单词(token)

按照一定规则由字符(character)组成的串。字符则是由大小写英文字符,各种运算符和分隔符组成的ASCII字符集。

语句(sentence)

或被称为句子。按照一定规则由单词组成的串。

程序(program)

按照一定规则由语句组成的串。

语言(language)

语句的集合。

基本定义

字母表(alphabet)

一个非空集合,字母表中的元素称为该字母表的一个字母(letter),或者字符(character)。

这个字母表和我们常说的ABCD...Z那个字母表不太一样。"0,1",“+,-,*,/"甚至是换行符"\n"都可以构成字母表,以下列出几个字母表作为例子。

{a,b,c,d,A,B,C,..,Z}

{0,1}

{+,-,*,/,!,&,=,<,>,\n,\t}

需要注意的是,字母表中的字符应满足整体性和可辨认性(可理解为不可重复性)。

整体性是指假设现在有个字母表中有“\n",它属于单个字符,是不能被拆分为”\"和"n"的。

而可辨认性也很简单,就是一个字母表内不能出现相同的字母。比如{a,b,a}构成一个句子ab,你没法辨认区分出现的到底是第一个a还是第二个a。

字母表的乘积

直接两两相乘就行

{0,1} {0,1}={00,01,10,11}

需要注意的是字母表乘积不满足乘法交换律,例子如下

{a,b,c} {0,1}={a0,a1,b0,b1,c0,c1}

{0,1} {a,b,c}={0a,0b,0c,1a,1b,1c}

字母表的n次幂

设\sum_{}^{}是一个字母表,它的n次幂递归定义为

\left\{\begin{matrix} \sum ^0={\varepsilon } & & \\ \sum^n=\sum^{n-1}\sum,n\geq1 & & \end{matrix}\right.

其中,\varepsilon是由\sum_{}^{}中的0个字符组成的。这个概念可以类比于集合里的空集\oslash。但{\varepsilon}并不是空集,因为实际上\varepsilon也算一个字符串,只不过\varepsilon是一个长度为0的空字符串。  

这个n代表什么呢?假设给个字母表{a,b,c},那么n=3就是字母表挑2个字符出来,然后两两组合(包括与它本身)的所有集合,即{aa,ab,ac,ba,bb,bc,ca,bc,cc}。也就是{a,b,c}与{a,b,c}相乘,这也符合它的定义。

字母表的闭包

闭包有两种,一种是正闭包,另一种是克林闭包(Kleene closure)。

以下是它们的定义

正闭包

\sum{}^+=\sum \cup \sum{}^2 \cup \sum{}^3 \cup ...

克林闭包

\sum{}^*=\sum{}^0 \cup \sum{}^+

克林闭包的字母表就比正闭包多了个\varepsilon,没了。举个例子就明白了

\\ \{0,1\}^+=\{0,1,00,01,10,11,000,001,010,......\}\\ \{0,1\}^*=\{\varepsilon ,0,1,00,01,10,11,000,001,010,......\}

句子 

又被称为字(word),行(line),串(string),字符行,字符串。

当给定一个字母表以及它的克林闭包时,x若属于它的克林闭包,那么x就被称为字母表上的一个句子。\varepsilon被称为字母表上的一个空句子(null)。比如在下面这个克林闭包中,01就是字母表上的一个句子。

\sum{}^*=\{\varepsilon ,0,1,00,01,...\}

出现(occurrence)

给定一个字母表,对于克林闭包中所有的x,y,当a属于字母表时,句子xay中的a称为a在该句子中的一个出现(occurrence)。(这里出现是作为一个名词来使用的,而不是作为动词使用。)

不难理解,还是上面那个字母表。从克林闭包中取出x,y。再从字母表中取出a。将xay组合在一起构成句子时,如果xay也属于克林闭包,那么有以下三种定义

1.当x=\varepsilon,a的这个出现为字符串xay的首字符,也就是”第一个出现是该字符串的第一个字符“。

2.当y=\varepsilon,a的这个出现为字符串xay的尾字符,也就是”第n个出现是该字符串的最后一个字符“。

3.如果a的某个出现是字符串xay的第n个字符,则y的首字符的这个出现是字符串的第n+1个字符。

\sum{}=\{0,1\}

\sum{}^*=\{\varepsilon ,0,1,00,01,...\}

定义三这话有点绕。比如x=001,y=110,a=0。xay=0010110。a的第三个出现是xay的第四个字符。y的首字符的出现就是字符串的第五个字符。那如果字母表是这种呢?

\sum{}=\{00,11\}

\sum{}^*=\{\varepsilon ,00,11,0011,1100,...\}

一样的,假设取x=0011,y=1100,a=00。xay=0011001100。a的第二个出现是xay的第三个字符“00”,y的首字符“11”仍然是字符串的第五个字符。

相关内容

热门资讯

不夜重庆·打卡夜经济地标丨夜购... 编者按:夜经济,是城市活力的鲜活底色,也是重庆聚力建设国际消费中心城市的新引擎。国庆假期,上游新闻推...
10月1日至4日,湖北A级旅游... 10月4日晚,湖北省文化和旅游厅公布2026年国庆节第四天全省假日文旅市场情况:全省大部分地区天气由...
辽宁朝阳文旅赴京,邀请北京游客... 10月3日,正值国庆黄金周出游热潮高涨之际,辽宁省朝阳市文化旅游和广播电视局携全域优质文旅资源、特色...
“千万年薪招聘NPC”冲上热搜... 山西晋城司徒小镇豪掷3000万,计划招聘百名NPC(非玩家角色),最高开出千万年薪,凭借短视频热度未...
1390岁的塔长啥样?主播带你... 现代快报讯(记者 姜振军)“屏幕前的朋友们大家好,我是果果!”“大家好,我是提子!”10月4日下午,...
江苏淮安:老厂房变身国庆文旅新...   国庆期间,江苏省淮安市清江浦区红旗纸箱厂老厂房经改造,成为复古工业主题沉浸式互动剧场,上演沉浸式...
临港国庆享盛景 藏蓝护航假日游 国庆长假,临港地区文旅盛宴轮番上演,海昌海洋公园、耀雪冰雪世界、滴水湖烟花秀、国风嘉年华、上海天文馆...
国庆黄金周过半!成都市郫都区文... 封面新闻记者 秦怡10月4日,国庆黄金周进入“下半程”。封面新闻记者从成都市郫都区文体旅局了解到,今...
约满,限流!全国多处景区发布公... 来源:应急管理部今天是国庆假期第4天假期过半你在哪里耍?不少热门景区人潮涌动开启“人从众”模式四川、...
年轻态里玩转“电影+”,“星海... 海边草坪变身露天影院,市集、懒人沙发、海风交织成浪漫的观影记忆。10月1日至3日,“星海拾光·电影奇...