实验一:词法分析一、实验目的通过设计一个具体的词法分析程序,加深对词法分析原理的理解。
并掌握在对程序设计语言源程序进行扫描过程中将其分解为各类单词的词法分析方法。
编制一个读单词过程,从输入的源程序中,识别出各个具有独立意义的单词,即基本保留字、标识符、常数、运算符、分隔符五大类。
并依次输出各个单词的内部编码及单词符号自身值。
二、实验预习提示1、 词法分析器的功能和输出格式词法分析器的功能是输入源程序,输出单词符号。
词法分析器的单词符号常常表示成以下的二元式(单词种别码,单词符号的属性值)。
本实验中,采用的是一类符号对应一个种别码的方式。
2、 单词的BNF表示---_----_----_-+---_--等等3、 模块结构(见课本P95-96)(可根据自己的理解适当修改)三、实验过程和指导:(一) 准备:1. 阅读课本有关章节,明确语言的语法,写出基本保留字、标识符、常数、运算符、分隔符和程序例。
2. 初步编制好程序。
3. 准备好多组测试数据。
(二) 上机:(三) 程序要求:1. 要求用C++Builder或者Dephi或者VC、VB等可视化编程工具编写;
要求有界面(即一般windows下应用程序界面)。
2. 输入为某语言源代码。
程序输入/输出示例:如源程序为C语言。
输入如下一段:main(){inta,b;a=10;b=a+20;}要求输出如下(并以文件形式输出)。
(2,”main”)(5,”(“)(5,”)“)(5,”{“}(1,”int”)(2,”a”)(5,”,”)(2,”b”)(5,”;”)(2,”a”)(4,”=”)(3,”10”)(5,”;”)(2,”b”)(4,”=”)(2,”a”)(4,”+”)(3,”20”)(5,”;”)(5,”}“)注:为右大括号要求(可根据实际情况加以扩充和修改):识别保留字:if、int、for、while、do、return、break、continue等等,单词种别码为1。
其他的标识符,单词种别码为2。
常数为无符号数,单词种别码为3。
运算符包括:+、-、*、/、=、>、=、<=、!=;
单词种别码为4。
分隔符包括:“,”“;
”“(”“)”“{”“}”等等,单词种别码为5。
(四) 程序思路(仅供参考):0. 定义部分:定义常量、变量、数据结构。
1. 初始化:从文件将源程序输入到字符缓冲区中。
2. 取单词前:去掉多余空白。
调用过程GETNB();3. 提取字符组成单词,利用课本P97图4.5转换图构造单词扫描过程SCAN(),需要根据实际情况加以修改。
4. 判断单词的种别码,调用过程LOOKUP();5. 显示(导出)结果。
2024/10/19 0:44:54 433KB 编译原理 词法分析实验
1
假设M个生产者和N个消费者共享一个具有K(K大于1)个缓冲区的循环缓冲结构BUFFER(提示:可以用一个循环队列或一个整型数组来表示),并设置两个指针IN和OUT,其中IN指向生产者线程当前可用的空缓冲区的在BUFFER中的下标,OUT指向消费者线程当前可用的满缓冲区在BUFFER中的下标。
生产者线程和消费者线程并发执行,当无空缓冲区时,生产者线程阻塞;
当无满缓冲区时消费者线程阻塞,并且多个生产者线程对IN的使用必须互斥,多个消费者线程对OUT的使用也必须互斥
2024/10/18 17:47:39 5KB 生产者消费者
1
ENVI  ENVI(TheEnvironmentforVisualizingImages)是美国ITTVisualInformationSolutions公司的旗舰产品。
ENVI由遥感领域的科学家采用IDL开发的一套功能强大的遥感图像处理软件;
它是快速、便捷、准确地从地理空间影像中提取信息的首屈一指的软件解决方案,它提供先进的,人性化的使用工具来方便用户读取、准备、探测、分析和共享影像中的信息。
今天,众多的影像分析师和科学家选择ENVI来从地理空间影像中提取信息。
已经广泛应用于科研、环境保护、气象、石油矿产勘探、农业、林业、医学、国防&安全、地球科学、公用设施管理、遥感工程、水利、海洋,测绘勘察和城市与区域规划等行业。
  创建于1977年的RSI(现为ITTVisualInformationSolutions公司)已经成功地为其用户提供了超过30年的科学可视化软件服务。
目前ITTVisualInformationSolutions的用户数超过150,000,遍布于80个国家与地区。
从2000年开始连续三年,ENVI被美国国家影像制图局(NIMA)等权威机构组织的Passfind项目遥感影像系统评比当中被评为“最佳的遥感目标识别软件”。
2004年RSI公司并入上市公司ITT公司,并于2006年5月正式成立ITTVisualInformationSolutions公司,ENVI&IDL的发展步伐更加有利与快捷,更多的新功能与算法加进到新版本中。
  强大的影像显示、处理和分析系统  ENVI包含齐全的遥感影像处理功能:常规处理、几何校正、定标、多光谱分析、高光谱分析、雷达分析、地形地貌分析、矢量应用、神经网络分析、区域分析、GPS联接、正射影象图生成、三维图像生成、丰富的可供二次开发调用的函数库、制图、数据输入/输出等功能组成了图像处理软件中非常全面的系统。
  ENVI对于要处理的图像波段数没有限制,可以处理最先进的卫星格式,如Landsat7、IKONOS、SPOT,RADARSAT,NASA,NOAA,EROS和TERRA,并准备接受未来所有传感器的信息。
  强大的多光谱影像处理功能  ENVI能够充分提取图像信息,具备全套完整的遥感影像处理工具,能够进行文件处理、图像增强、掩膜、预处理、图像计算和统计,完整的分类及后处理工具,及图像变换和滤波工具、图像镶嵌、融合等功能。
ENVI遥感影像处理软件具有丰富完备的投影软件包,可支持各种投影类型。
同时,ENVI还创造性地将一些高光谱数据处理方法用于多光谱影像处理,可更有效地进行知识分类、土地利用动态监测。
  更便捷地集成栅格和矢量数据  ENVI包含所有基本的遥感影像处理功能,如:校正、定标、波段运算、分类、对比增强、滤波、变换、边缘检测及制图输出功能,并可以加注汉字。
ENVI具有对遥感影像进行配准和正射校正的功能,可以给影像添加地图投影,并与各种GIS数据套合。
ENVI的矢量工具可以进行屏幕数字化、栅格和矢量叠合,建立新的矢量层、编辑点、线、多边形数据,缓冲区分析,创建并编辑属性并进行相关矢量层的属性查询。
  ENVI的集成雷达分析工具助您快速处理雷达数据  用ENVI完整的集成式雷达分析工具可以快速处理雷达SAR数据,提取CEOS信息并浏览RADARSAT和ERS-1数据。
用天线阵列校正、斜距校正、自适应滤波等功能提高数据的利用率。
纹理分析功能还可以分段分析SAR数据。
ENVI还可以处理极化雷达数据,用户可以从SIR-C和AIRSAR压缩数据中选择极化和工作频率,用户还可以浏览和比较感兴趣区的极化信号,并创建幅度图像和相位图像。
  地形分析工具  ENVI具有三维地形可视分析及动画飞行功能,能按用户制定路径飞行,并能将动画序列输出为MPEG文件格式,便于用户演示成果。
  准备您的影像  ENVI提供了自动预处理工具,可以快速、轻松地预处理影像,以便进行查看浏览或其他分析。
通过ENVI,您可以对影像进行以下处理:  •正射校正  •影像配准  •影像定标  •大气校正  •创建矢量叠加  •确定感兴趣区域(ROIs)  •创建数字高程模型(DEMs)  •影像融合,掩膜和镶嵌  •调整大小,旋转,或数据类型转换  探测影像  ENVI提供了一个直观的用户界面和易用的工具,让您轻松、快速地浏览和探测影像。
您可以使用ENVI完成的工作包括:浏览大型数据集和元数据,对影像进行视觉对比,创建强大的3D场景,创建散点图,探测像素特征等。
  分析影像  ENVI提供了业界领先的图像处理功能,方便您从事各种用途的信息提取。
ENVI提供了一套完整的经科学实践证明的成熟工具来帮助您分析影像。
  数据分析工具  ENVI包括一套综合数据分析工具,通过实践证明的成熟算法快速、便捷、准确地分析图像。
  •创建地理空间统计资料,如自相关系数和协方差  •计算影像统计信息,如平均值、最小/最大值、标准差  •提取线性特征  •合成雷达影像  •主成分计算  •变化检测  •空间特征测量  •地形建模和特征提取  •应用通用或自定义的滤波器  •执行自定义的波段和光谱数学函数  光谱分析工具  光谱分析通过像素在不同波长范围上的反应,来获取有关物质的信息。
ENVI拥有目前最先进的,易于使用的光谱分析工具,能够很容易地进行科学的影像分析。
ENVI的光谱分析工具包括以下功能:  •监督和非监督方法进行影像分类  •使用强大的光谱库识别光谱特征  •检测和识别目标  •识别感兴趣的特征  •对感兴趣物质的分析和制图  •执行像素级和亚像素级的分析  •使用分类后处理工具完善分类结果  •使用植被分析工具计算森林健康度  共享您的信息  ENVI能轻松地整合现有的工作流,让您能在任何环境中与同事们分享地图和报告。
所处理的图像可以输出成常见的矢量格式和栅格影像便于协同和演示。
  自定义您的地理空间影像应用  ENVI建立于一个强大的开发语言—IDL之上。
IDL允许对其特性和功能进行扩展或自定义,以符合用户的具体要求。
这个强大而灵活的平台,可以让您创建批处理、自定义菜单、添加自己的算法和工具,甚至将C++和Java代码集成到您的工具中等。
  自2007年起,与著名的GIS厂商ESRI公司开展全面战略合作,ENVIReaderforArcGIS模块让ArcGIS系列软件全面支持ENVI的数据格式,最新版本ENVI4.5完全支持ArcGIS的Geodatabase等。
2024/10/15 19:08:32 2.72MB envi
1
有界缓冲区内设有20个存储单元,放入/取出的数据项设定为1~20这20个整型数。
1.每个生产者和消费者对有界缓冲区进行操作后,即时显示有界缓冲区的全部内容、当前指针位置和生产者/消费者线程的标识符;
2.生产者和消费者各有两个以上;
3.多个生产者或多个消费者之间须共享对缓冲区进行操作的函数代码。
1
GDI+SDK参考(翻译版本)序言 4目标 4适用范围 4适用读者 4运行环境 4文档组织 4相关主题 4GDI+的安全考虑 6检验构造函数调用成功与否 6分配缓冲区 6错误校验 8线程同步 9相关主题 10关于GDI+ 11GDI+介绍 11GDI+概览 11GDI+的三个组成部分 11基于类的接口架构 12GDI+提供了哪些新东西? 12新特征 12编程模式的改变 15线条、曲线和图形 19矢量图概览 19钢笔、线条和矩形 20椭圆和弧 22多边形 22基数样条 23贝塞尔样条 24路径 25画刷和填充图形 27开放与闭合曲线 29区域 30裁剪 31路径平直化 32线条和曲线的抗锯齿功能 32图象、位图和图元文件 33位图类型 34图元文件 37绘制、定位和复制图片 39裁剪和缩放图象 40坐标系统和转换 42坐标系统类型 42以矩阵来表示转换 44全局和局部转换 48图形容器 51使用GDI+ 56使用入门 56绘制线条 56绘制字符串 58使用钢笔绘制线条和形状 59使用钢笔绘制线条和矩形 59设置钢笔的宽度和对齐方式 60绘制具有线帽的线条 61联接线条 62绘制自定义虚线 62绘制用纹理填充的线条 63使用画笔填充形状 63用纯色填充形状 64用阴影图案填充形状 64用图像纹理填充形状 64在形状中平铺图像 65用渐变色填充形状 68使用图像、位图和图元文件 68加载和显示位图 68加载和显示图元文件 69记录图元文件 69剪裁和缩放图像 71旋转、反射和扭曲图像 72缩放时使用插值模式控制图像质量 73创建缩略图像 75采用高速缓存位图来提高性能 76通过避免自动缩放改善性能 76读取图像元数据 77使用图像编码器和解码器 83列出已安装的编码器 83列出已安装的解码器 84获取解码器的类标识符 86获取编码器的参数列表 88将BMP图像转换为PNG图像 100设定JPEG的压缩等级 101对JPEG图像进行无损变换 102创建和保存多帧图像 105从多帧图像中复制单帧 107Alpha混合线条和填充 109绘制不透明和半透明的线条 109用不透明和半透明的画笔绘制 110使用复合模式控制Alpha混合 111使用颜色矩阵设置图像中的Alpha值 112设置单个象素的alpha值 114使用字体和文本 115构造字体系列和字体 115绘制文本 116格式化文本 117枚举已安装的字体 120创建专用的字体集合 122获取字体规格 126对文本使用消除锯齿效果 130构造并绘制曲线 131绘制基数样条曲线 131绘制贝塞尔样条 133用渐变画刷填充形状 134创建线性渐变 134创建路径渐变 137将Gamma校正应用于渐变 144构造并绘制路径 145使用线条、曲线和形状创建图形 145填充开放式图形 147使用图形容器 147管理Graphics对象的状态 148使用嵌套的Graphics容器 151变换 154使用世界变换 154为什么变换顺序非常重要 155使用区域 156对区域使用点击检测 156对区域使用剪辑 157对图像重新着色 158使用颜色矩阵对单色进行变换 158转换图像颜色 160缩放颜色 161旋转颜色 164剪取颜色 166使用颜色重映射表 168打印 169将GDI+输出至打印机 169显示一个打印对话框 172通过提供打印机句柄优化打印 173附录:GDI+参考 176
2024/10/10 11:31:03 1.75MB GDI+ GDI+中文 GDI+帮助
1
Trubka是内置的KafkaCLI工具,可为您提供所需的一切管理,查询和解决您的Kafka群集。
消耗来自Kafka的和纯文本消息。
将协议缓冲区和纯文本消息发布到Kafka。
文献资料致谢特别感谢JoshuaHumphries构建了引人入胜的软件包。
我还要提及一些我用来构建Trubka的令人惊叹的库和软件包:由Shopify队和由AlecThomasNaveenMahalingam的diskvBrian由达斯汀·萨林斯(DastinSallings)由NoahMitchellHashimoto的
2024/9/14 20:41:58 240KB cli golang kafka protobuf
1
SignalFx客户端库该存储库包含用于检测Java应用程序和向SignalFx报告指标的库。
您将需要一个SignalFx帐户和组织API令牌才能使用它们。
有关SignalFx的更多信息并创建帐户,请访问。
我们建议使用CodahaleMetrics3.0+版通过Java发送指标。
您还可以使用YammerMetrics2.0.x(CodahaleMetrics的早期版本)。
有关CodahaleMetrics库的更多信息,请访问。
您也可以使用模块signalfx-java使用协议缓冲区将指标直接发送到SignalFx,而无需使用Codahale或Yammer指标。
2024/9/9 22:21:20 145KB java monitoring metrics codahale-metrics
1
Delphi实现的环形缓冲区,有详细的注释说明和示意图,请大家给提出更为高效,简单的改进意见。
添加可以自动扩展大小的功能
2024/9/8 16:42:25 369KB delphi 环形 缓冲区
1
封装leaflet地图前端框架,方便实用,有测量,坐标转换,图形绘制和编辑,缓冲区分析等功能
2024/8/23 13:54:02 756KB node es6 GIS
1
(1)创建生产者和消费者线程在Windows2000环境下,创建一个控制台进程,在此进程中创建n个线程来模拟生产者或者消费者。
这些线程的信息由本程序定义的“测试用例文件”中予以指定。
该文件的格式和含义如下:31P32P43C414P25C3124第一行说明程序中设置几个临界区,其余每行分别描述了一个生产者或者消费者线程的信息。
每一行的各字段间用Tab键隔开。
不管是消费者还是生产者,都有一个对应的线程号,即每一行开始字段那个整数。
第二个字段用字母P或者C区分是生产者还是消费者。
第三个字段表示在进入相应线程后,在进行生产和消费动作前的休眠时间,以秒计时;
这样做的目的是可以通过调整这一列参数,控制开始进行生产和消费动作的时间。
如果是代表生产者,则该行只有三个字段。
如果代表消费者,则该行后边还有若干字段,代表要求消费的产品所对应的生产者的线程号。
所以务必确认这些对应的线程号存在并且该线程代表一个生产者。
(2)生产和消费的规则在按照上述要求创建线程进行相应的读写操作时,还需要符合以下要求:①共享缓冲区存在空闲空间时,生产者即可使用共享缓冲区。
②从上边的测试数据文件例子可以看出,某一生产者生产一个产品后,可能不止一个消费者,或者一个消费者多次地请求消费该产品。
此时,只有当所有的消费需求都被满足以后,该产品所在的共享缓冲区才可以被释放,并作为空闲空间允许新的生产者使用。
③每个消费者线程的各个消费需求之间存在先后顺序。
例如上述测试用例文件包含一行信息“5C3l24”,可知这代表一个消费者线程,该线程请求消费1,2,4号生产者线程生产的产品。
而这种消费是有严格顺序的,消费1号线程产品的请求得到满足后才能继续往下请求2号生产者线程的产品。
④要求在每个线程发出读写操作申请、开始读写操作和结束读写操作时分别显示提示信息。
(3)相关基础知识本实验所使用的生产者和消费者模型具有如下特点:本实验的多个缓冲区不是环形循环的,也不要求按顺序访问。
生产者可以把产品放到目前某一个空缓冲区中。
消费者只消费指定生产者的产品。
在测试用例文件中指定了所有的生产和消费的需求,只有当共享缓冲区的数据满足了所有关于它的消费需求后,此共享缓冲区才可以作为空闲空间允许新的生产者使用。
本实验在为生产者分配缓冲区时各生产者间必须互斥,此后各个生产者的具体生产活动可以并发。
而消费者之间只有在对同一产品进行消费时才需要互斥,同时它们在消费过程结束时需要判断该消费对象是否已经消费完毕并清除该产品。
Windows用来实现同步和互斥的实体。
在Windows中,常见的同步对象有:信号量(Semaphore)、互斥量(Mutex)、临界段(CriticalSection)等。
使用这些对象都分为三个步骤,一是创建或者初始化:接着请求该同步对象,随即进入临界区,这一步对应于互斥量的上锁;
最后释放该同步对象,这对应于互斥量的解锁。
这些同步对象在一个线程中创建,在其他线程中都可以使用,从而实现同步互斥。
2024/7/25 19:35:19 1.63MB 多线程同步生产者和消费者问题
1
共 160 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡