实验2.正规式的定义与应用 编译原理实验报告


    实验2 正规式定义应
    实验目
    1 熟悉正规式构造方法
    2 熟悉字符串中识特定字符串方法
    3 复文件操作
    二 实验容求
    已知段C语言程序:
    #include stdioh
    int gcd(int k){
    int m
    mk+2
    return m
    }

    main(){ *main function*
    int i mainy1
    i mainy +gcd(j)
    printf(i d \n i)
    }














    求:
    1 面C程序容文件保存
    2 请构造出识面C程序中关键字mainintreturn正规式
    3 正规式编写段代码作子程序
    4 遍写程序调子程序完成关键字字符串mainintreturn识
    5 指出关键字首字符处行号列号出出现时第次出现该结果输出屏幕保存文件中格式:
    main 2 1
    三 实验原理(包括实验算法软件结构框图流程框图)


    四 源程序(交盘)

    package byyl
    import javaioFileNotFoundException
    import javaioFileReader
    import javaioFileWriter
    import javaioIOException
    import javautilArrayList
    import javautilList

    class StringPosition{
    private int row
    private int column
    private String s
    private int count出现次数
    public StringPosition(int rowint columnString s) {
    TODO Autogenerated constructor stub
    thisrow row
    thiscolumn column
    thiss s
    count 1
    }
    public int getRow() {
    return row
    }
    public void setRow(int row) {
    thisrow row
    }
    public int getColumn() {
    return column
    }
    public void setColumn(int column) {
    thiscolumn column
    }
    public String getS() {
    return s
    }
    public void setS(String s) {
    thiss s
    }
    public int getCount() {
    return count
    }
    设置出现次数
    public void setCount(int count){
    thiscount count
    }

    显示信息
    public void showInfor(){
    String content 关键词:+s+\n行:+row+ 列:+column+ 次数:+count
    Systemoutprintln(content)
    byyllsyprintStringInfor(content)
    }
    }
    public class byyllsy {
    public static String getContent(){
    String str null
    try {
    FileReader fr new FileReader(cdeftxt)
    char[] data new char[1024]

    int len 0
    try {
    while ((lenfrread(data 0datalength))>0) {
    str new String(data0len)
    }
    } catch (IOException e) {
    TODO Autogenerated catch block
    eprintStackTrace()
    Systemoutprintln(文件读写错误)
    }
    frclose()
    } catch (FileNotFoundException e) {
    TODO Autogenerated catch block
    eprintStackTrace()
    Systemoutprintln(文件存)
    } catch (IOException e) {
    TODO Autogenerated catch block
    eprintStackTrace()
    }
    return str
    }
    分析文件存储子串
    public static List analysieString(String fileName){
    List strList new ArrayList()
    int row1column0
    char [] chararray new char[1024]
    chararray[0]''判断否值
    int count 0
    try {
    FileReader fr new FileReader(fileName)
    int temp1
    int i 0
    while (true) {
    temp frread()
    char c (char) temp
    碰回车行数加1列数变0
    column++
    if (c'\n') {
    row++
    column0
    }
    if (isSpace(c)&&temp1) {
    chararray[i]c
    i++
    }
    判断否注释
    else if(c''){
    temp frread()
    c (char) temp
    if (c'*') {
    while (true) {
    temp frread()
    c (char) temp
    if (c'*') {
    if (c'') {
    break
    }
    else if (temp1) {
    break
    }
    }
    }
    }
    }
    else if((isSpace(c)&&chararray[0]'')){
    String s new String(chararray0i)
    strListadd(new StringPosition(row columni s))
    chararray[0]''
    i0
    }
    else if ((temp1&&chararray[0]'')) {
    String s new String(chararray0i)
    strListadd(new StringPosition(row columni s))
    break
    }
    else if((temp1&&chararray[0]'')) {
    break
    }
    }
    frclose()关闭流释放资源

    } catch (FileNotFoundException e) {
    TODO Autogenerated catch block
    eprintStackTrace()
    Systemoutprintln(文件存)
    } catch (IOException e) {
    TODO Autogenerated catch block
    eprintStackTrace()
    }
    return strList
    }

    判断否空格换行tab键
    public static boolean isSpace(char c){
    if (c' '||c'('||c9|c'\n') {
    return true
    }
    else
    return false
    }
    通字符串查找出应位置
    public static List selectByString(String nameList strlist){
    ArrayList subsp new ArrayList()
    int count 1记录次数
    for (StringPosition stringPosition strlist) {
    if(stringPositiongetS()equals(name)){
    subspadd(stringPosition)
    stringPositionsetCount(count)
    count++
    }
    }
    return subsp
    }
    写入文件保存
    public static void printStringInfor(String content){
    FileWriter fw null
    try {
    fw new FileWriter(showtxt true)
    } catch (IOException e) {
    TODO Autogenerated catch block
    eprintStackTrace()
    }
    try {
    fwappend(content+\n)
    fwclose()
    } catch (IOException e) {
    TODO Autogenerated catch block
    eprintStackTrace()
    }
    }

    关键字显示
    public static void showKey(String key){
    List strlist analysieString(cdeftxt)
    List sublist selectByString(key strlist)
    for (StringPosition stringPosition sublist) {
    stringPositionshowInfor()
    }
    }
    public static void main(String[] args) {
    TODO Autogenerated method stub

    showKey(main)
    showKey(return)
    showKey(int)
    }
    }

    五 程序运行结果


    六 实验总结(包括实验心实验中问题解决办法)

    文档香网(httpswwwxiangdangnet)户传

    《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
    该内容是文档的文本内容,更好的格式请下载文档

    下载文档到电脑,查找使用更方便

    文档的实际排版效果,会与网站的显示效果略有不同!!

    需要 2 香币 [ 分享文档获得香币 ]

    下载文档

    相关文档

    《编译原理》课程实验报告

    《编译原理》课程实验报告题 目: 词法分析器实验 专 业: 计算机科学与技术 班 级: 1班 学 号: ...

    3年前   
    625    0

    编译原理语法分析实验报告

    编译原理语法分析实验报告软工班一、 实验内容二、 实验目的三、 实验要求四、 程序流程图l 主函数;l scanner();l irparser()函数l yucu() /*语句串分析*/l...

    2年前   
    937    0

    编译原理实验报告LR(1)分析法

    河南工业大学实验报告课 程 编译原理 实验名称 实验四 LR(1)分析法 一. 实验目的 1.掌握LR(1)分析法的基本原理; 2.掌握LR(1)分析表的构...

    2年前   
    1043    0

    编译原理实验报告LL(1)分析法

    课 程 编译原理 实验名称 实验二 LL(1)分析法 实验目的 1.掌握LL(1)分析法的基本原理; 2.掌握LL(1)分析表的构造方法; 3.掌握LL(1...

    1年前   
    398    0

    编译原理实验报告(一)词法分析程序

     编译原理实验报告(一) ----词法分析程序【目的要求】 通过设计编制调试一个具体的词法分析程序,加深对词法分析原理的...

    3年前   
    766    0

    编译原理实验报告3-LL(1)文法构造

    实验3 LL(1)文法构造一、实验目的熟悉LL(1)文法的分析条件,了解LL(1)文法的构造方法。 二、实验内容1、编制一个能够将一个非LL(1)文法转换为LL(1)文法;2、消除左递归;3...

    2年前   
    297    0

    《数据库原理及应用》实验报告

     数据库原理及应用 实验报告 实验课程: 学 号: 学生姓名: ...

    5年前   
    4468    0

    编译原理实验指导书

    目 录相关问题说明 1实验题 2实验1 词法分析(2课时) 3实验2 语法分析(2课时) 5实验3 语义分析(2课时) 7实验4 代码生成(2课时) 9参考书目 11相关问题说明本课程共有4个...

    3年前   
    579    0

    SQL数据的定义实验报告

    实验1、数据定义班级:计自班 姓名: 学号:1、 实验目的熟悉SQL的数据定义语言,能够熟练地使用SQL语句来创建和更改基本表,创建和取消索引。2、 实验内容l 用SSMS创建...

    2年前   
    623    0

    编译原理-实验报告2-递归下降分析法

    计算机硬件实验室实验报告姓名学号班 级成 绩 设备名称及软件环境递归下降分析一、实验目的: 根据某一文法编制调试递归下降分析程序,以便对任意输入的符号串进行分析。本次实验的目的...

    3年前   
    595    0

    大学微型计算机原理及应用本科实验报告

    本科实验报告课程名称: 微型计算机原理及应用 实验项目: 多位十进制数相加 实验地点: 博学馆四层微机实验室 专业班级: ...

    1年前   
    391    0

    嵌入式系统原理与设计实验报告

    嵌 入 式 系 统 实 验 报 告指导教师: 学科专业: 班 级: 学 号: 姓 名: 2014年X月前 言从20世纪七十年代单片机的出现到各式各样的嵌...

    1年前   
    300    0

    厢式干燥实验报告

    厢式干燥实验一、实验目的与要求1、了解对流厢式干燥器的结构、工艺流程及操作方法;2、了解常压干燥设备的构造,基本流程和操作;3、掌握物料干燥速率的测定方法,并作出恒定条件下的干燥速率曲线;4、...

    2年前   
    680    0

    计算机组成原理实验报告

    计算机组织与体系结构实 验 报 告评 语:成绩教 师: 年 月 日班 级: ________学 号: __________...

    1年前   
    430    0

    计算机组成原理实验报告 (2)

    计 算 机 组 成 原 理 实 验 报 告Computer Organization Lab Reports__________________________________________...

    1年前   
    474    0

    计算机组成原理实验报告 (1)

    郑州航空工业管理学院计算机科学与应用系实验报告课 程 名: 计算机组成原理 学 号: 姓 名: ...

    1年前   
    382    0

    数据结构实验报告《三、串及其应用》

    数据结构实验报告- - - - 串及其应用之文学研究助手 专业班级: 电信班 ...

    3年前   
    1298    0

    计算机应用基础实验报告

    目的:理解微型计算机的结构和工作原理,掌握组装一台微型计算机所需的硬件由几分钟组成,并学会配置微机硬件配置。

    6年前   
    3375    0

    编译原理实验3-4预测分析表方法

    实验3-4 预测分析表方法班级:_ _ 学号:_ _ 姓名:_ _ 得分:_ _一、实验目的理解预测分析表方法的实现原理。二、实验内容: ...

    1年前   
    314    0

    编译原理课后习题答案

    编译原理课后习题答案Chapter 11.解答:程序设计语言:程序设计语言是遵守一定规范的、描述“计算”(Computing)过程的形式语言。一般可以划分为低级语言和高级语言两大类。低级语言是...

    1年前   
    596    0

    文档贡献者

    文***品

    贡献于2023-03-20

    下载需要 2 香币 [香币充值 ]
    亲,您也可以通过 分享原创文档 来获得香币奖励!
    下载文档

    该用户的其他文档