1506200056肖志伟-实验一

合集下载

17-18学年度第二学期15物理本《近代物理实验1》运行表(2)

17-18学年度第二学期15物理本《近代物理实验1》运行表(2)

2
3 3.11-3.17
3 4 5 1 2
周四第5-7节 杨鹏月 14:30-17:00 周一第9-11节 陈彬旭 19:00-21:30 周二第7-9节 侯哲 16:30-19:00
侯欣宇 曾繁学
4 3.18-3.24
3 4 5 1 2
周二第10-12节 王依婷 19:30-22:00 周四第3节10:00彭泽辉 邱奥
王一丞
周四第5-7节 游思佳 14:30-17:00 周一第9-11节 陈梦云 19:00-21:30 周二第7-9节 杨馨 16:30-19:00
张玲 黄新亮
5 3.25-3.31
3 4 5
周二第10-12节 贾少茹 19:30-22:00 周四第3节10:00邵梭楠 王国玉 梁孟嘉 杨一介
周四第5-7节 赵小琴 14:30-17:00
3 4 5 1 2
周四第5-7节 张鑫雅 14:30-17:00 周一第9-11节 陈茹 19:00-21:30 周二第7-9节 李飞 16:30-19:00
ቤተ መጻሕፍቲ ባይዱ胡蓉
李宝宝
9 4.22-4.28
3 4 5 1 2
周二第10-12节 周晓云 19:30-22:00
钟丽娟 王一明 卫较霞
周四第3节10:00-
3 4 5 1 2
周四第5-7节 王一惠 14:30-17:00 周一第9-11节 高春雨 19:00-21:30 周二第7-9节 马雨鑫 16:30-19:00 周二第10-12节 莫朝什 19:30-22:00 周四第3节10:00-
12 5.13-5.19
3 4 5
周四第5-7节 朱亚琦 14:30-17:00
全息 技术
符小清 高春雨 何木养 罗诗琪 马雨鑫 宋文文 刘瑞芳 莫朝什 南全伟 徐飘 张元尧 文三伟 胡靖楠 朱亚琦

2012新城实验学校生物实验操作技能测试组考方案

2012新城实验学校生物实验操作技能测试组考方案

新城实验学校2010级初中生物实验操作技能考试组考方案为了进一步提高我校实验教学水平,加强学生实践动手能力和创新能力的培养,全面落实素质教育和新课程标准,根据《娄底市2012 年初中毕业学业水平考试和高中阶段学校招生考试工作实施方案双娄教发》﹝2012﹞13 号)及《娄底市2010级初中学生理化生实验操作技能考试(考核)实施方案》(娄教通[2 012 ] 75 号)和我校实际情况,特制定本方案。

一、考试组织与管理1、领导小组组长:李定云副组长:曹双飞曹敏成员:康国庆、张星、胡伏明、罗文惠、李炎芳、朱美花、胡晓君监督员栏目中第一位监考老师为该监考组组长,本次考试所设实验员、联络员由各校自定。

要求与职责考点主任:负责考点全面工作,组织完成考点考前一切准备工作,保证人员到位和制度落实,及时处理考试期间发生的问题,确保考试工作顺利进行。

考点副主任:主管考点考务全面工作。

负责考务工作人员培训;制定各考室《考试场次与时间安排表》、编排各考室《实验操作技能考试分组安排表》、印制《实验操作技能考试成绩计分表》、《缺考学生名单登记表》和《**学校2010级初中学生实验操作技能考试成绩汇总表》;检查落实考点宣传栏、考室、考务工作办公室、候考室的布置和实验器材的准备;严格执行《考试程序》的各项规定,保证考试各环节人员到位、工作到位。

联络员:负责考室布置;负责召集考生进入候考室,组织考生抽签,并将抽签结果(实验组号)填写到《实验操作技能考试成绩计分表》上并交考务员;引导考生进入考室;负责考试信号发布;负责维持考场周围秩序。

工作地点在候考室。

考务员:负责考务工作室的器具准备和布置;负责试卷管理;负责向考室提供并回收(含装订)考试试卷、《实验操作技能考试成绩计分表》;负责做好考生缺考统计;负责考生成绩登录。

工作地点在实验室讲台前。

实验员:负责考试前实验器材准备和调试、考试期间实验仪器的更换与实验耗材的补充,协助监考员处理考试期间考生实验操作偶发事件,帮助解决考试中出现的仪器、药品等问题,负责考室的管理。

2012级综合实验安排

2012级综合实验安排

2012级基础化学实验(综合)安排2014学年春季学期2014.2.24---2014.5.28注:学时数:72学时学分:2学分人数:357人,(化学A 43,B44,C42,D46,E44,F44,2+2班49,临床29,交换生,16)时间:每次14.5学时,周三8:30-19:00点;1-5组:178人,A(43人)、B(44人)、C(42人),2+2(49人);6-10组:179人,D(46人)、E(44人)、F(44人)、交换(16人)2012级基础化学实验(综合)分组名单2014.2.24---2014.5.28第1组:A 30人奥斯曼·麦麦提图尔荪、白惠珍、蔡鸿韵、蔡菁菁、蔡思颖、曹陈陈、曹振坤、陈包棋、陈保利、陈丹丹、陈冠任、陈浩聪、陈娟、陈开乾、陈坤宇、陈敏鹏、陈少敏、陈世杆、陈伟宾、陈伟亮、陈晓、陈笑、陈咏林、陈镇豪、陈智鹏、程映艺、崔伟强、邓才栋、邓海权、邓杰仁第2组:A 13人+ B 17人=30邓智容、迪力亚尔·肉孜、董嘉乐、杜诚、杜飞、杜钊夷、范志颖、方博馨、方栩岸、封亮廷、冯凌宇、冯伟仪、高苏、龚浩、龚恒业;关玉婷、郭锦轩、何杨鹏、赫兰齐、洪尧舜、胡庆坤、胡雅洁、胡亦清、胡瑜雯、胡禹、胡志涛、黄发文、黄海燕、黄浩然、黄佳楠第3组:B 27人+C 3人黄嘉琛、黄健、黄靖雯、黄俊健、黄礼博、黄宁宇、黄倩、黄秋忆、黄森传、黄文俊、黄智翔、简郸、简俊华、姜沛林、姜语嫣、揭丽萍、柯曙昶、孔莉、寇俊玮、旷实、赖嘉俊、赖鹏、赖欣宜、雷皓宇、黎海波、黎嘉成、李博;李超、李传发、李浩强第4组:C 30人李洪顺、李锦胜、李镜聪、李凯婷、李康华、李鹏日、李奇连、李倩茹、李松、李瑜、李朕、李子程、练宇飞、梁豪、梁婷钰、梁炎君、梁志樵、梁紫薇、廖海焜、廖焕妍、廖天华、林佳盛、林景、林俊轩、林霖活、林锐燕、林淑玲、林艳铃、林致远、刘虎城第5组:C 9人+(2+2)21=30刘嘉豪、刘俊杰、刘乃嘉、刘瑞、刘小珍、刘衍溢、刘逸章、刘勇江、刘昱;柏慧、曹灿、曹露露、陈斯杰、陈雨豪、邓儒、付子恩、傅占鳌、郭美杉、何子睿、贺一鸣、黄俊彦、黄颖妍、江佳骏、黎思远、李健斌、李垚、梁邦、廖蕾、廖明慧、林嘉芬第六组:(2+2)28人刘若辰、龙映汐、马晓江、潘筱琳、彭俊琦、邱瑞鑫、邱宇恒、石宸宇、宋冠和、覃诗薇、涂于洁、王晨雅、王岩琦、夏永祥、杨盛祚、杨星云、曾芯祎、张涵、张鸣桐、张小平蓉、张孝静、张子寒、周健航、庄浩彬、陈瀚、左嘉睿、王戈夫、龚豪第七组:D 30人刘远红、卢莉丽、陆如岚、陆志涛、吕飞逸、罗柏彬、罗美嫦、骆嘉莹、马奇柠、马文杰、玛依拉·贾尔肯、毛润东、毛旭宏、孟珊、缪泳锋、潘东优、潘辉、秦何荣、区绮雯、饶梦华、饶子龙、沈长宇、舒欣、宋雯雯、苏权飞、苏伟庆、粟梦琪、孙林颖、孙若邻、孙帅第八组:D 16人+E14人=30孙仪玮、孙正、覃玉莲、滕军、田毅、万里祺、汪玉好、王家强、王建雄、王剑儒、王莉、王珊珊、王沈晗、王帅、王烁宇、王潇洋、王晓建、王筱湛、王益辰、韦彪、魏佳良、魏永锋、温家熙、文思嘉、巫珊珊、巫意婷、吴豪忠、吴金伦、吴韶桐、吴思贤第九组:E 30人吴炜臻、吴文林、吴文清、吴小锋、吴颖楠、伍泽雄、奚亚男、肖华、谢思颖、谢政、辛芳园、熊凯、徐丽容、徐雅伦、徐颖、许汉健、许文涵、许晓瑾、鄢慈航、颜世超、颜星、杨慕紫、杨祎然、杨毅杰、杨湛、叶惠婷、叶慧桐、叶立志、易孔阳、易秘第十组:F 30人易鹏晖、游凤仪、余贵成、俞勇、郁瑾、袁博、曾鹏坤、曾茜子、曾伟振、曾宪文、詹梦怡、张杰、张靖雯、张妹三、张民康、张熙悦、张轩赫、张雅琪、张运发、张湛垚、张昭、张志华、张志铭、赵锦德、赵鹏钰、赵曦、赵勇、郑炳坤、郑皓翔、郑嘉颖第十一组:F 14人+交换16人=30郑亮、郑雨涵、钟振鹏、周晗、周嘉泓、周略、周宁、周瑞飞、周伟、周文凯、周止若、朱休明、朱益昆、曾俊钊、彭棵、周昊宇、麦嘉华、张璐、张廉昌、袁李怡文、蒋志、钟天立、刘寅可、栾自鸿、耿朔天、巫尚杰、翟河科、张之涵、方正松、方日华第十二组:临床29人陈柏林、陈斌锋、陈东亮、陈志宏、邓茜文、郭少燕、何炎炯、黎坚德、李姝翮、梁玮昊、廖舒敏、林藩雄、刘铭杰、刘瑶、陆思多、庞立春、石益、孙旭琪、王昕、吴锦杰、伍明劲、谢鸿玉、张浩培、张汝思、章颖、郑瑞映、郑杏芳、钟娴、周华强。

六年级科学第一学期实验成绩

六年级科学第一学期实验成绩

2011-2012年度第一学期六年级科学实验考核成绩 六(2) 六(3) 成绩 考号 姓名 成绩 考号 姓名
A A A A A A A A A A A A A A A A A A A A A A A A A A A A B A A A B A B B A A 6201 6201 6201 6201 6201 6201 6201 6201 6201 6201 6201 6201 6201 6201 6201 6201 6201 6201 6201 6201 6201 6201 6201 6201 6201 6201 6201 6201 6201 6201 6201 6201 6201 6201 6201 6201 6201 6201 6201 王帝彦 张建晨 陈占武 王 建 袁钰鑫 孙海鑫 陈 龙 宋方圆 高慧红 孙欢 冯雨欣 刘 冰 张玉杰 张英伟 孙鑫 郑海坤 孙帅杰 王成明 杜佳伟 王 粲 郑欣悦 孟雪薇 张浩天 高玉红 王 丹 王安琪 穆雨辰 郑雨萌 张翔宇 王 雪 孙 悦 孙玉虎 张 爱 倪丽然 孙广全 刘湘君 孙晓龙 赵金月 孟祥新 A A A A A C A A A A A A A A B A A A B A A A A A A A A A A A A B A A A A A A B 6301 6302 6303 6304 6305 6306 6307 6308 6309 6310 6311 6312 6313 6314 6315 6316 6317 6318 6319 6320 6321 6322 6323 6324 6325 6326 6327 6328 6329 6330 6331 6332 6333 6334 6335 6336 6337 6338 6339 张 宇 李 斌 赵晓钟 郑鹏飞 武坤鹏 白一帆 陈雪蕊 倪 雪 倪丽梦 刘凤英 李志恒 周建南 赵泽 张建杰 高思佳 吴波 孙永祺 黄欣怡 袁国富 马多军 王启慧 首月盟 刘 冲 刘春波 张 新 孙建双 郑萌萌 孙川越 倪思宇 陈慧仪 王家辉 高 楠 高 天 王玖玥 袁月婷 倪宏伟 白金鹏 郑 泽 袁冠娜

第一届微生物实验技能大赛复试名单(1) (1)

第一届微生物实验技能大赛复试名单(1) (1)

131170院 2015年11月11日
性别 女 男 女 女 男 男 男 男 男 男 女 男 男 女 女 女 女 女 女 男 男 男
学号
专业
学院
1310304225 海洋技术
海生学院
1310304204 海洋技术
海生学院
1310306214 生物工程
海生学院
1310306222 生物工程
海生学院
1210306106 生物工程
海生学院
1210306228 生物工程
海生学院
1210306210 生物工程
海生学院
1310306106 生物工程
海生学院
1210306124 生物工程
海生学院
1210306112 生物工程
海生学院
1310306122 生物工程
海生学院
1310306134 生物工程
海生学院
1210306212 生物工程
海生学院
1310305213 食品科学与工程 海生学院
1310305129 食品科学与工程 海生学院
1360301211 化学工程与工艺 化学化工学院
1510303103 制药工程 化学化工学院
1510303223 制药工程 化学化工学院
1510303115 制药工程 化学化工学院
1311702133 环保设备工程 环境学院
1311702129 环保设备工程 环境学院
第一届微生物实验技能大赛复试名单
序号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
姓名 高凡 徐李金 林欣文 王莲 邓涛 董志强 黄巍巍 李以晨 刘团飞 沈苏 王梦瑶 王普泽 张加杰 柳婧 宋亚青 崔青青 葛凤琴 倪炳茹 杨奕 白云 王亚强 翟安迪

2019生物实验操作考核方案及考务册

2019生物实验操作考核方案及考务册

2019年亳州市八年级生物实验操作考试亳州市谯城区城父中心中学考场考务册亳州市谯城区城父中心中学2019年5月2019年城父中心中学八年级生物实验操作技能考试实施方案一、指导思想为进一步促进初中生物的实验教学,提高学生的实验操作能力,培养学生的创新精神和实践能力,全面推进素质教育,根据谯教电函[2019]73号“关于印发《谯城区2019年八年级生物学科实验操作技能考试实施方案》的通知”精神,结合我校实际,制定本方案。

二、领导机构主考:邓士化(校长)副主考:蒋成良(副校长)李树林(树林学校校长)考务:刘峰(教务主任)成员:王明亮周凤奇王显魁蒋超木加强蒋晓磊蒋凤侠路传玉三、考核时间与对象1、考查时间:2019年5月30日2、考查对象:八年级学生四、考核范围、内容和方式(一)考核范围:课程标准和现行初中生物教材中要求学生掌握的实验,根据《亳州市初中生物实验操作考核范围》,选取7个考题供考生随机抽签选考其中一个实验,7个考核题目为:1、显微镜的使用2、制作洋葱鳞片叶内表皮细胞临时装片3、观察菜豆种子的结构4、用显微镜观察人血的永久图片5、观察人体的一种组织6、生物进化主要历程“拼图游戏”7、探究水分对植物种子萌发的影响(二)考核内容:依据课程标准及教材,以掌握基本实验原理和仪器的使用为基准点,考核学生对实验现象的观察、实验仪器的使用及简单的实验问题分析等基本实验技能。

考核内容的选取应有所侧重,并适合学生在规定的时间内完成。

(三)考核方式:1、在考核范围内选择7个实验进行命题。

2、考生抽签选题安排考试当天,以准考证号为序,28人一组,以抽签方式把考生安排在“AB CDEFG”七个组别中,每个组别的学生人数大致相同(每组4人)。

抽签结果引领员统一安排,工作人员把考生带入考场安排到指定位置进行考试(每位考生的考号、组别、座位号)。

五、考核成绩评定1、监考员根据评分卷各项评分细则为考生打分,并在最后给出一个总分。

10级物理实验分组表(周六到周日)

10级物理实验分组表(周六到周日)
东华理工大学物理实验分组表
课程:物理实验 班级:10203101-2/10203501 序号 学号 姓名 性别 1 1020310101 徐芳红 女 男 2 1020310102 曹杰 男 3 1020310103 赵洋 女 4 1020310104 邓羚 男 5 1020310105 苏恒 男 6 1020310106 向强 7 1020310107 廖国平 男 8 1020310108 李丽思 女 男 9 1020310109 叶操 10 1020310110 吴立星 男 11 1020310112 彭熙龙 男 女 12 1020310113 高陶 13 1020310114 王海平 男 男 14 1020310115 郭伟 15 1020310116 熊尚潇 男 16 1020310117 华恩祥 男 17 1020310118 郭烈娟 女 18 1020310119 罗满华 男 19 1020310120 汪建华 男 20 1020310121 袁仁政 男 男 21 1020310122 张文 22 1020310123 王刘文 男 23 1020310124 周佩瑶 女 24 1020310125 曾云嵘 男 25 1020310126 黄亚冬 男 26 1020310127 龚慧珊 女 男 27 1020310128 程卫 28 1020310129 龚泰松 男 29 1020310130 段雄德 男 30 1020310131 任晓平 男 31 1020310132 陈远富 男 32 1020310133 李鹏飞 男 男 33 1020310134 杨佑 女 34 1020310135 李华 35 1020310136 刘元龙 男 男 36 1020310137 王超 37 1020310138 罗永明 男 38 1020310139 李腾尧 男 39 1020310140 代哲伦 男 40 1020310141 陈日恒 男 41 1020310201 吴昊橙 男 男 42 1020310202 高翔 43 1020310203 何宝南 男 男 44 1020310204 高彬 45 1020310205 邓建国 男 46 1020310206 程加辉 男 2011 -2012学年第 一 学期

实验讲义

实验讲义
2.加速度的测量
在气垫导轨上,设置两个光电门,其间距为S。使受到水平恒力作用的滑块(做匀加速直线运动)依次通过这两个光电门,计数器可以显示出滑块分别通过这两个光电门的时间Δt1、Δt2。由(2)可知,滑块滑过第一个光电门的速度为 ,滑块滑过第二个光电门的速度为 ,则滑块的加速度为:
(3)
3.验证牛顿第二定律
物体受外力作用时,物体所获速度的方向与合外力的方向相同。这就时牛顿第二定律。其数学表达式为:
(4)
上式说明,验证牛顿第二定律需分两步:
1.验证当物体 一定时,物体所获得的加速度 与其所受合外力 成正比;
2.验证合外力 一定时,物体的加速度与其质量 成反比。
静态法:若导轨完全水平平直且放置水平,则滑块应能静止在任意的导轨位置上,或在某位置来回运动。如滑块总是向右运动,则说明左端高,应调节导轨左端底部的单脚螺丝,使左端下降,直到滑块能静止或在某位置来回运动为止。反之亦然。
动态法:将滑块轻轻从左向右推动,若经过第一光电门的时间 略小于通过第二个光电门的时间 ,则导轨基本水平。否则需调单脚螺丝使 略小于 即可。
出的红外光被遮光片遮住而无法照到接收器上,此时接收器
图2
(如光电二极管)产生一个脉冲信号。在滑块经过光电门旁的整个过程中,遮光片两次挡光,则接收器共产生两个脉冲信号,通过计数器可以测出这两个脉冲信号之间的时间间隔 。设二次遮光片间的遮光距离为 ,则平均速度为 ,当速度变化不大,或 较小时,这个平均速度就可认为是滑块通过光电门中间的瞬时速度。
5.自拟实验步骤和记录表格
6.分析实验误差产生的原因并提出改进方法。
六、复习思考题
1.本实验从哪两个方面来验证牛顿第二定律?
2.本实验滑块所受外来如何产生?其大小与那些因素有关?写出计算公式。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

广州大学学生实验报告一、实验目的学生运用编译原理的知识在实验技能和方法小组设计实验方案并加以实现。

二、基本知识1、完整的编译过程2、LR分析法三、实验环境1、Windows操作系统2、C++语言四、实验要求运用编译原理知识,经检验,该程序能正确运行。

五、实验内容完成一个相对完整的编译器,该编译完成对变量类型(整数/浮点数)定义、赋值、四则运算、逻辑运算、跳转与循环控制功能。

其输入是源程序(参见“一个四则运算源程序示例”),输出是所有变量的最终值。

要求:(1)输入任意一个正确的文法G[S],都能分析,并得出一个等价的LL(1)文法G[E];(2)根据该LL(1)文法G[E]的文法规则建立LL(1)分析表;(3)输出输入串分析过程。

其分析过程。

六、实验代码及实验截图实验代码如下:(2)根据该LL(1)文法G[E]的文法规则建立LL(1)分析表;(3)输出输入串分析过程。

其分析过程。

#define _CRT_SECURE_NO_DEPRECATE#include <iostream>#include <cstring>#include <cstdio>#include <algorithm>#include <cstdlib>#include <vector>#include <string>#include <cctype>#include <map>#include <set>#include <stack>#define MAX 507using namespace std;map<string, set<char> > first;map<string, set<char> > follow;map<string, int> VN_dic;vector<WF> VN_set;bool used[MAX];class WF{public:string left;set<string> right;WF(char s[]){left = s;}void print(){printf("%s->", left.c_str());set<string>::iterator it = right.begin();if (right.begin() != right.end()){printf("%s", it->c_str());it++;}for (; it != right.end(); it++)printf("|%s", it->c_str());puts("");}void insert(char s[]){right.insert(s);}};void dfs(int x){if (used[x]) return;used[x] = 1;string& left = VN_set[x].left;set<string>& right = VN_set[x].right;set<string>::iterator it = right.begin();for (; it != right.end(); it++)for (int i = 0; i < it->length(); i++){if (!isupper(it->at(i)) && it->at(i) != '\''){first[left].insert(it->at(i));break;}if (isupper(it->at(i))){int y;if (i != it->length() - 1 && it->at(i + 1) == '\'')y = VN_dic[it->substr(i, 2)] - 1;else y = VN_dic[it->substr(i, 1)] - 1;string& tleft = VN_set[y].left;dfs(y);set<char>& temp = first[tleft];set<char>::iterator it1 = temp.begin();bool flag = true;for (; it1 != temp.end(); it1++){if (*it1 == '~') flag = false;first[left].insert(*it1);}if (flag) break;}else continue;}}void make_first(){memset(used, 0, sizeof(used));for (int i = 0; i < VN_set.size(); i++)dfs(i);#define DEBUG#ifdef DEBUGputs("***************FIRST集***********************");map<string, set<char> >::iterator it = first.begin();for (; it != first.end(); it++){printf("FIRST(%s)={", it->first.c_str());set<char> & temp = it->second;set<char>::iterator it1 = temp.begin();bool flag = false;for (; it1 != temp.end(); it1++){if (flag) printf(",");printf("%c", *it1);flag = true;}puts("}");}#endif}void append(const string& str1, const string& str2){set<char>& from = follow[str1];set<char>& to = follow[str2];set<char>::iterator it = from.begin();for (; it != from.end(); it++)to.insert(*it);}void make_follow(){while (true){bool goon = false;for (int i = 0; i < VN_set.size(); i++){string& left = VN_set[i].left;set<string>& right = VN_set[i].right;set<string>::iterator it = right.begin();for (; it != right.end(); it++){bool flag = true;const string& str = *it;for (int j = it->length() - 1; j >= 0; j--){if (str[j] == '\''){int x = VN_dic[it->substr(j - 1, 2)] - 1;if (flag){int tt = follow[it->substr(j - 1, 2)].size();append(left, it->substr(j - 1, 2));int tt1 = follow[it->substr(j - 1, 2)].size();if (tt1 > tt) goon = true;if (!VN_set[x].right.count("~"))flag = false;}for (int k = j + 1; k < it->length(); k++){if (isupper(str[k])){string id;if (k != it->length() - 1 && str[k + 1] == '\'')id = it->substr(k, 2);else id = it->substr(k, 1);set<char>& from = first[id];set<char>& to = follow[it->substr(j - 1, 2)];int tt = to.size();set<char>::iterator it1 = from.begin();for (; it1 != from.end(); it1++)if (*it1 != '~')to.insert(*it1);int tt1 = follow[it->substr(j - 1, 2)].size();if (tt1 > tt) goon = true;if (!VN_set[VN_dic[id] - 1].right.count("~"))break;}else if (str[k] != '\''){int tt = follow[it->substr(j - 1, 2)].size();follow[it->substr(j - 1, 2)].insert(str[k]);int tt1 = follow[it->substr(j - 1, 2)].size();if (tt1 > tt)goon = true;break;}else continue;}j--;}else if (isupper(str[j])){int x = VN_dic[it->substr(j, 1)] - 1;if (flag){int tt = follow[it->substr(j, 1)].size();append(left, it->substr(j, 1));if (!VN_set[x].right.count("~"))flag = false;int tt1 = follow[it->substr(j, 1)].size();if (tt1 > tt) goon = true;}for (int k = j + 1; k < it->length(); k++){if (isupper(str[k])){string id;if (k != it->length() - 1 && str[k + 1] == '\'')id = it->substr(k, 2);else id = it->substr(k, 1);set<char>& from = first[id];set<char>& to = follow[it->substr(j, 1)];set<char>::iterator it1 = from.begin();int tt = follow[it->substr(j, 1)].size();for (; it1 != from.end(); it1++)if (*it1 != '~')to.insert(*it1);int tt1 = follow[it->substr(j, 1)].size();if (tt1 > tt) goon = true;if (!VN_set[VN_dic[id] - 1].right.count("~"))break;}else if (str[k] != '\''){int tt = follow[it->substr(j, 1)].size();follow[it->substr(j, 1)].insert(str[k]);int tt1 = follow[it->substr(j, 1)].size();if (tt1 > tt) goon = true;break;}else continue;}}else flag = false;}}}if (!goon) break;}#define DEBUG#ifdef DEBUGputs("****************FOLLOW集**********************");map<string, set<char> >::iterator it = follow.begin();for (; it != follow.end(); it++){printf("FOLLOW(%s)={", it->first.c_str());set<char> & temp = it->second;temp.insert('#');set<char>::iterator it1 = temp.begin();bool flag = false;for (; it1 != temp.end(); it1++){if (flag) printf(",");printf("%c", *it1);flag = true;}puts("}");}#endif}vector<map<char, string> > predict_table;//检查一个字符是否属于一个字符串的FIRST集合bool check_first(const string& text, char ch){for (int i = 0; i < text.length(); i++){bool hasEmpty = false;if (!isupper(text[i]) && text[i] != '\''){if (text[i] != ch) return false;else return true;}else if (isupper(text[i])){string temp;if (i != text.length() - 1 && text[i + 1] == '\'')temp = text.substr(i, 2);elsetemp = text.substr(i, 1);set<char>& dic = first[temp];set<char>::iterator it = dic.begin();for (; it != dic.end(); it++){if (*it == '~') hasEmpty = true;if (*it == ch) return true;}if (!hasEmpty) break;}else continue;}return false;}//检查一个字符是否属于一个字符串的FOLLOW集合bool check_follow(const string& text, char ch){set<char>& dic = follow[text];set<char>::iterator it = dic.begin();for (; it != dic.end(); it++)if (*it == ch) return true;return false;}void make_table(){map<char, string> temp;vector<char> letter;bool vis[500];memset(vis, 0, sizeof(vis));for (int i = 0; i < VN_set.size(); i++){set<string>& right = VN_set[i].right;set<string>::iterator it = right.begin();for (; it != right.end(); it++)for (int j = 0; j < it->length(); j++)if (!isupper(it->at(j)) && it->at(j) != '\''){if (vis[it->at(j)]) continue;vis[it->at(j)] = true;letter.push_back(it->at(j));}}for (int i = 0; i < VN_set.size(); i++){temp.clear();string& left = VN_set[i].left;set<string>& right = VN_set[i].right;set<string>::iterator it = right.begin();for (; it != right.end(); it++)for (int j = 0; j < letter.size(); j++){//cout << *it << " " << letter[j] << endl;if (check_first(*it, letter[j])){//cout << "YES" << endl;temp[letter[j]] = *it;}if (it->at(0) == '~' && check_follow(left, letter[j]))temp[letter[j]] = *it;}predict_table.push_back(temp);}#define DEBUG#ifdef DEBUGfor (int i = 0; i <= (letter.size() + 1) * 10; i++)printf("-");puts("");printf("|%9s", "|");for (int i = 0; i < letter.size(); i++)printf("%5c%5s", letter[i], "|");puts("");for (int i = 0; i <= (letter.size() + 1) * 10; i++)printf("-");puts("");for (int i = 0; i < VN_set.size(); i++){printf("|%5s%4s", VN_set[i].left.c_str(), "|");for (int j = 0; j < letter.size(); j++)if (predict_table[i].count(letter[j]))printf("%7s%3s", predict_table[i][letter[j]].c_str(), "|");else printf("%10s", "|");puts("");for (int i = 0; i <= (letter.size() + 1) * 10; i++)printf("-");puts("");}#endif}void print(int steps, stack<string> stk, string src, string wf, int x){printf("%-10d", steps);string out = "";while (!stk.empty()){out = stk.top() + out;stk.pop();}printf("#%-9s", out.c_str());out = "";for (int i = x; i < src.length(); i++)out += src[i];printf("%-10s", (out + "#").c_str());printf("%-10s\n", wf.c_str());}void analyse(const string& src){stack<string> stk;stk.push("E");int steps = 0;int idx = 0;printf("%-10s%-10s%-10s%-10s\n", "步骤", "符号栈", "输入串", "所用产生式");while (!stk.empty()){string u = stk.top();string tmp = "";stk.pop();if (!isupper(u[0])){if (idx == src.length() && u[0] == '~');else if (src[idx] == u[0])idx++;}else{int x = VN_dic[u] - 1;tmp = predict_table[x][src[idx]];for (int i = tmp.length() - 1; i >= 0; i--){if (tmp[i] == '\''){string v = tmp.substr(i - 1, 2);stk.push(v);i--;}else{string v = tmp.substr(i, 1);stk.push(v);}}tmp = u + "->" + tmp;}print(steps++, stk, src, tmp, idx);}}int main(){int n;char s[MAX];while (cin >> n){for (int i = 0; i < n; i++){cin >> s;int len = strlen(s), j;for (j = 0; j < len; j++)if (s[j] == '-') break;s[j] = 0;if (!VN_dic[s]){VN_set.push_back(s);VN_dic[s] = VN_set.size();}int x = VN_dic[s] - 1;VN_set[x].insert(s + j + 2);}make_first();make_follow();make_table();string in = "i*i+i";analyse(in);}}实验截图如下:输入串First集Follow集分析过程七、实验分析本实验是综合实验,输入文法后,将其放入容器进行处理,完成输入操作。

相关文档
最新文档