实验报告二 (编程语言分析及其应用)

实验目的与要求:
目的:设计与实现简易编程语言及其分析算法,包括简易tensor编程语言的设计与实现、简易tensor语言的类型分析与检测。通过语言分析的应用实验,熟练掌握编程语言的设计和分析以及相关基本思想,如语法分析、语义分析、类型检测等思想;通过实现简单tensor语言的实践,进一步培养具备解决复杂计算机工程问题设计/开发的实践能力。

有两个题目,二选一。

第一题:关于Tensor的编程设计

本实验分为两部分,如下所示

第一部分:简易tensor编程语言的设计和实现

tensor(张量,多维数据数组)是大多数机器学习采用的数据结构。本实验拟设计一种支持tensor的简易编程语言,主要功能如下:

(1)数据:随机生成,one,zero,多层列表

(2)操作:

(2.1)数据生成:算术操作:加法+,乘法(点乘.,叉乘*)

(2.2)形状操作:shape,reshape,size

(2.3)切片操作:slice

(2.4)输出操作:print

(2.5)卷积操作(选做):conv

(2.6)会话与图计算(选做):session,run

(3)条件语句:其中条件为整数的比较,其他情况可选做

程序运行要求:输入一段tensor简易语言程序,分析并运行程序

提示:先分析语法(文法设计),再实现计算功能(语义设计)

第二部分:简易tensor语言的类型检测

目前简易tensor语言主要有两种数据类型,即整数和tensor,其中tensor的纬度会影响数据的操作。请设计一个简易tensor语言的类型检测器,当给定一个tensor程序,分析程序中每个语句的可见变量的类型并输出。以下是一个示例:

    y=1;  //输出y: int

    x=[1,2]; //输出y: int, x: tensor(2)

    y=[[3,4,5],[6,7,8]]; //输出x: tensor(2), y: tensor(2,3)

    z=x*y; //输出x: tensor(2), y: tensor(2,3), z: tensor(3)

    print(z);  //输出x: tensor(2), y: tensor(2,3), z: tensor(3)

    y=[[3,4],[5,6],[7,8]]; //输出x: tensor(2), y: tensor(3,2), z: tensor(3)

    z=x*y  //有错误,x的纬度和y的纬度不匹配

第二题:关于 lisp语言解释器和分组加密算法语言

本实验分为两部分,如下所示

第一部分:Lisp 语言解释器

Lisp 是一种函数式编程语言,每一个表达式都可以计算出一个结果。Lisp 表达式 有两种形式——原子或列表。所谓原子,简单的讲就是一个字符串,可以使用的字符有 大小写英文字母、数字和 +-*/!?=<>_ ;而列表则是由若干个表达式和一对括号在两侧括起构成。

原子的例子:


    12

    +

    John

    Burger

列表的例子:

    (f a b c)

    (define x (+ 2 3))

(+ 1 1)

在本题中,基本数据有自然数和布尔值,基本的函数有四个:加减乘除(整除),还有一些Lisp 预先定义好的函数eq?,define,lambda,cond。

(1)程序分析与解释:

(1.1)输入从标准输入读入数据。一段 Lisp 程序,其中每行是一个表达式。

(1.2)输出到标准输出。对于 Lisp 程序中每一行的表达式,相应输出一行。

如果该表达式发生语法错误或者语义错误,则输出syntax error或semantic error;如果使用了 define 函数则输出 define ,否则输出该表达式的值。

(2)类型检测

(2.1)输入从标准输入读入数据。一段 Lisp 程序,其中每行是一个表达式。

(2.2)输出到标准输出。对于 Lisp 程序中每一行的表达式,相应输出一行。

如果该表达式发生语法错误或者语义错误,则输出syntax error或semantic error;如果使用了 define 函数则输出其定义的值的类型(int,boolean,fun),否则输出该表达式的值的类型。


第二部分:分组加密算法语言

分组加密算法大都是由一些基本的操作组成,比如置换、S 盒等等。再加上一些简单的逻辑控制语句,就可以清晰地描述出该算法的内部结构。基于此,本实验拟设计了一种简单的语言,用来描述分组加密算法的逻辑结构。

该语言的结构大致如下:

变量声明部分

BEGIN

加密算法部分

END

一、变量声明部分

该语言仅有两种变量,分别为二进制串变量和循环控制变量。在此处声明的变量均为二进制串变量,格式为:变量名 (长度),例如:

state(64)

key(10)

tmp(5)

beta(20)

循环控制变量为整数类型,变量名仅为一个小写英文字母,因此总共只有 26 个循环控制变量,不需要声明即可在加密算法部分直接使用。

二、加密算法部分

在这一部分顿顿设计了三种句法,分别为赋值、循环和分组。

试实现一个分组加密器,可以把顿顿的代码转化为相应的加密程序。即根据输入的置换表、S 盒、代码,对若干组明文和密钥进行加密,输出相应的密文。

(1)输入格式:

从标准输入读入数据。

第一行包含用空格分隔的两个整数 n 和 m,表示有 n 个置换表 和m个S盒,保证0 ≤ n,m ≤ 10,然后依次输入这些置换表和S盒。

每个置换表占两行,第一行包含用空格分隔的两个正整数 a 和 b,分别表示该置换 表对应输入、输出二进制串的长度,保证 1 ≤ a, b ≤ 64;第二行 b 个用空格分隔的整数, 其中每个整数都在 [0, a) 范围内,表示该置换表的内容。

每个 S 盒占两行,第一行包含用空格分隔的两个正整数 c 和 d,分别表示该 S 盒对 应输入、输出二进制串的长度,保证 1 ≤ c, d ≤ 8;第二行 2c 个用空格分隔的整数,其 中每个整数都在 [0, 2d ) 范围内,表示该 S 盒的内容。

从第 2 + 2n + 2m 行开始,输入顿顿的代码。END 位于代码最后一行,可以借此判 读是否读入了全部代码。

接下来一行包含一个正整数 k,表示有 k 组数据需要加密,保证 k ≤ 10。

在最后的 2k 行里,每两行包含一组加密数据,其中第一行为明文、第二行为密钥, 皆以 01 串的形式给出。

(2)输出格式

输出到标准输出。

串表示相应的密文。 01 行,每行一个 k 输出

实验报告统一命名为: 深大2019编程语言-学号-姓名-实验报告二.doc
本次实验除了实验报告,还需提交程序,把所有程序打包成以下文档
深大2019编程语言-学号-姓名-实验报告二(程序).zip
截止日期:2019.7.3

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,634评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,951评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,427评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,770评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,835评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,799评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,768评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,544评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,979评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,271评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,427评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,121评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,756评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,375评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,579评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,410评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,315评论 2 352

推荐阅读更多精彩内容