精华内容
下载资源
问答
  • 语法分析器实验报告

    2015-08-25 09:07:15
    语法分析器报告及其代码、是在词法分析器实验之后的一次实验、过程详细。
  • 编译原理语法分析器实验报告
  • 编译原理语法分析器实验报告 编译原理语法分析器实验报告编译原理语法分析器实验报告编译原理语法分析器实验报告编译原理语法分析器实验报告
  • 非常非常不错的语法分析器实验报告 语法分析器 实验报告 词法分析器 编译原理
  • 计算机专业数据结构课程语法分析器实验报告,内容详尽,欢迎传阅下载
  • 编译原理词法分析器语法分析器实验报告软件
  • 编译原理实验词法分析器实现,里面有整个项目文件,还有实验报告。cg平台测试满分,vs编译器也是可以通过编译的,其他编译器可能需要改一下,不会改的私信我。
  • 编译原里语法分析器实验报告,欢迎大家下载阿...
  • 本文档为编译原理语法分析器实验报告,含有实现代码,也含有词法分析器的影子。
  • ll1语法分析器实验报告.doc 南京信息工程大学实验(实习)报告实验(实习)名称LL(1)文法语法分析设计实验(实习)日期11月28日得分指导教师林美华系计算机专业计算机科学与技术年级2011班次计科3班姓名王欣学号...

    41528d3028836879cd698677c3999917.gifll1语法分析器实验报告.doc

    南京信息工程大学实验(实习)报告实验(实习)名称LL(1)文法语法分析设计实验(实习)日期11月28日得分指导教师林美华系计算机专业计算机科学与技术年级2011班次计科3班姓名王欣学号20112308915一.实验目的1.熟悉判断LL(1)文法的方法及对某一输入串的分析过程。2.学会构造表达式文法的预测分析表。二.实验内容编写一个语法分析程序,对于给定的输入串,能够判断识别该串是否为给定文法的句型。三.实验步骤从键盘读入输入串,并判断正误;若无误,由程序自动构造FIRST、FOLLOW集以及SELECT集合,判断是否为LL(1)文法;若符合LL(1)文法,由程序自动构造LL(1)分析表;由算法判断输入符号串是否为该文法的句型【源代码】INCLUDE“STDIOH“INCLUDE“STDLIBH“DEFINEMAXRULENUM8DEFINEMAXVNNUM5DEFINEMAXVTNUM5DEFINEMAXSTACKDEPTH20DEFINEMAXPLENGTH20DEFINEMAXSTLENGTH50STRUCTPRNODE/产生式右部结构/{INTRCURSOR/右部序号/STRUCTPRNODENEXT}STRUCTPNODE/产生式结点结构/{INTLCURSOR/左部符号序号/INTRLENGTH/右部长度//注当RLENGTH1时,RCURSOR1为空产生式/STRUCTPRNODERHEAD/右部结点头指针/}CHARVNMAXVNNUM1/非终结符集/INTVNNUMCHARVTMAXVTNUM1/终结符集/INTVTNUMSTRUCTPNODEPMAXRULENUM/产生式/INTPNUM/产生式实际个数/CHARBUFFERMAXPLENGTH1CHARCH/符号或STRINGCH/CHARSTMAXSTLENGTH/要分析的符号串/STRUCTCOLLECTNODE/集合元素结点结构/{INTNVT/在终结符集中的下标/STRUCTCOLLECTNODENEXT}STRUCTCOLLECTNODEFIRSTMAXVNNUM1/FIRST集/STRUCTCOLLECTNODEFOLLOWMAXVNNUM1/FOLLOW集/INTANALYSETABLEMAXVNNUM1MAXVTNUM11/预测分析表存放为产生式的编号,1用于存放结束符,多1用于存放1/INTANALYSESTACKMAXSTACKDEPTH1/分析栈/INTTOPANALYSE/分析栈顶//INTREVERSESTACKMAXSTACKDEPTH1/颠倒顺序栈//INTTOPREVERSE/倒叙栈顶/VOIDINIT/初始化/INTINDEXCHCHARCH/返回VN在VN表中的位置100、VT在VT表中的位置,1表示未找到/VOIDVT/输入终结符/VOIDVN/输入非终结符/VOIDSHOWCHARRAYCHARCOLLECT,INTNUM/输出VN或VT的内容/VOIDP/产生式输入/BOOLCHECKPCHARST/判断产生式正确性/VOIDFIRSTINTU/计算FIRST集,UXX/VOIDADDFIRSTINTU,INTNCH/加入FIRST集/BOOLHAVEEMPTYINTNVN/判断FIRST集中是否有空1/VOIDFOLLOWINTV/计算FOLLOW集/VOIDADDFOLLOWINTV,INTNCH,INTKIND/加入FOLLOW集,KIND0表加入FOLLOW集,KIND1加入FIRST集/VOIDSHOWCOLLECTSTRUCTCOLLECTNODECOLLECT/输出FIRST或FOLLOW集/VOIDFIRSTFOLLOW/计算FIRST和FOLLOW/VOIDCREATEAT/构造预测分析表/VOIDSHOWAT/输出分析表/VOIDIDENTIFYCHARST/主控程序,为操作方便//分析过程显示操作为本行变换所用,与教程的显示方式不同/VOIDINITSTACK/初始化栈及符号串/VOIDSHOWSTACK/显示符号栈中内容/VOIDPOP/栈顶出栈/VOIDPUSHINTR/使用产生式入栈操作/INCLUDE“LL1H“VOIDMAINVOID{CHARTODO,CHINITVNVTPGETCHARFIRSTFOLLOWPRINTF“所得FIRST集为“SHOWCOLLECTFIRSTPRINTF“所得FOLLOW集为“SHOWCOLLECTFOLLOWCREATEATSHOWATTODO Y WHILE Y TODO{PRINTF“\N是否继续进行句型分析Y/N“TODOGETCHARWHILE Y TODOTODOGETCHAR}IF Y TODO{INTIINITSTACKPRINTF“请输入符号串以结束“CHGETCHARI0WHILE CHPTNEXTNULLPIRHEADPTN4WHILE \0 BUFFERN{QTPRNODEMALLOCSIZEOFPRNODEQTRCURSORINDEXCHBUFFERNQTNEXTNULLPTNEXTQTPTQTN}PIRLENGTHN3I/调试时使用/}ELSEPRINTF“输入符号含非法在成分,请重新输入\N“}}/判断产生式正确性/BOOLCHECKPCHARST{INTNIF100INDEXCHST0RETURNFALSEIF ST1RETURNFALSEIF ST2RETURNFALSEFORN3 \0 STNN{IF1INDEXCHSTNRETURNFALSE}RETURNTRUE}/FIRSTFORI0IPTRCURSOR{/注此处因编程出错,使空产生式时RLENGTH同样是1,故此处同样可处理空产生式/ADDFIRSTU,PTRCURSORBREAK}ELSE{IFNULLFIRSTPTRCURSOR100{FIRSTPTRCURSOR}ADDFIRSTU,PTRCURSORIFHAVEEMPTYPTRCURSOR{BREAK}ELSE{PTPTNEXT}}J}IFJPIRLENGTH/当产生式右部都能推出空时/ADDFIRSTU,1}}}/加入FIRST集/VOIDADDFIRSTINTU,INTNCH/当数值小于100时NCH为VT//当处理非终结符时,ADDFIRST不添加空项1/{STRUCTCOLLECTNODEPT,QTINTCH/用于处理VN/PTNULLQTNULLIFNCHNVTNCHBREAKELSE{QTPTPTPTNEXT}}IFNULLPT{PTSTRUCTCOLLECTNODEMALLOCSIZEOFSTRUCTCOLLECTNODEPTNVTNCHPTNEXTNULLIFNULLFIRSTU100{FIRSTU100PT}ELSE{QTNEXTPT/QT指向FIRST集的最后一个元素/}PTPTNEXT}}ELSE{PTFIRSTNCH100WHILENULLPT{CHPTNVTIF1CH{ADDFIRSTU,CH}PTPTNEXT}}}/判断FIRST集中是否有空1/BOOLHAVEEMPTY

    展开全文
  • 递归下降语法分析器实验报告编译原理实验报告题目: 递归下降语法分析器学 院 计算机科学与技术专 业 xxxxxxxxxxxxxxxx学 号 xxxxxxxxxxxx姓 名 宁剑指导教师 xx20xx年xx月xx日递归下降语法分析器一、实验目的?...

    递归下降语法分析器实验报告

    编译原理实验报告

    题目: 递归下降语法分析器

    学 院 计算机科学与技术

    专 业 xxxxxxxxxxxxxxxx

    学 号 xxxxxxxxxxxx

    姓 名 宁剑

    指导教师 xx

    20xx年xx月xx日

    递归下降语法分析器

    一、实验目的?

    ???? 了解语法分析的内部工作原理,通过在本次实验中运用一定的编程技巧,掌握对表达式进行处理的一种方法。

    算术表达式的文法可以是可以根据需要适当改变:

    →E+E|E-E|E*E|E/E|(E)|i

    ??? ?根据递归下降分析法或预测分析法 ,对表达式进行语法分析 ,判断一个表达式是否正确 。

    (1) 准备:1. 阅读课本有关章节,确定算术表达式的文法(设计出预测分析表2. 考虑好设计方案;3. 设计出模块结构 、测试数据,初步编制好程序。

    (2) 上机调试,发现错误,分析错误,再修改完善。教师根据学生的设计方案与学生进行探讨,以修改方案和代码 。

    (3)改造后的文法:E→E+T|E-T|T

    T→TF|T/F|F

    F→F^|P

    P→c |id| (E)

    四、实验环境?

    计算机 VC++软件#include

    #include

    #include

    #include

    #include

    void error();

    void terror();

    void Scanner();

    char sym=' ';

    int i=0;

    char strToken[30]={""};

    FILE *in;

    void E();

    void E1();

    void F();

    void Retract(char str[30]){

    for(int j=0;j<30;j++){

    str[j]=0;

    }

    }

    void Scanner(){

    sym=fgetc(in);

    if (isspace(sym)){

    while(1){

    if(isspace(sym)){

    sym=fgetc(in);

    }

    else break;

    }

    }

    if(isdigit(sym)){

    while(1){

    if (isdigit(sym)){

    strToken[i]=sym;

    i++;

    sym=fgetc(in);

    }

    else{

    printf("%s",strToken);

    i=0;

    Retract(strToken);

    fseek(in,-2,1);

    sym=fgetc(in);

    break;

    }

    }

    }

    else{

    if(sym=='+'){

    printf("+");

    }

    else if(sym=='-'){

    printf("-");

    }

    else if(sym=='*'){

    printf("*");

    }

    else if(sym=='/'){

    printf("/");

    }

    else if(sym=='^'){

    printf("^");

    }

    else if(sym=='('){

    printf("(");

    }

    else if(sym==')'){

    printf(")");

    }

    }

    }

    void F(){

    if(isdigit(sym)){

    Scanner();

    }

    else if (sym=='('){

    Scanner();

    E();

    if(sym==')'){

    Scanner();

    }

    else error();

    }

    else terror();

    }

    void T1(){

    if(sym=='*'||sym=='/'||sym=='^'){

    Scanner();

    F();

    T1();

    }

    }

    void T(){

    F();

    T1();

    }

    void E1(){

    if (sym=='+'||sym=='-'){

    Scanner();

    T();

    E1();

    }

    }

    void E(){

    T();

    E1();

    }

    void error(){

    printf("\nThis is a wrong phrase!\n");

    exit(0);

    }

    void terror(

    展开全文
  • 一个关于语法分析器的编译原理实验报告 二、实验目的 1、 了解形式语言基础及其文法运算; 2、 熟悉语法分析原理及4种常用的语法分析方法; 其中: 四种算法为 (1)设计算术表达式的递归下降子程序分析算法 (2)...
  • 语法分析程序实验报告 流程图 源程序 运行结果
  • 编译原理的语法分析器实验报告,用的是递归下降分析法
  • 语法分析实验报告

    2018-05-15 15:30:38
    通过设计、编写、调试一个递归下降语法分析程序,实现对词法分析程序所提供的单词序列进行语法检查和结构分析,掌握递归下降语法分析方法。
  • c语言语法分析器 输入------------ 表达式 输出------------ 表达式语法是否正确
  • 北京邮电大学大三编译原理课程的实验内容,里面是语法分析实验报告,ll(1)和lr(1)的,zsbd,zsbdzsbd
  • 词法分析语法分析实验报告及源码 词法分析器 语法分析器
  • 用c语言实现的语法分析器,包括实验报告和代码。
  • 编译原理语法分析实验的实验报告 较详细 如果需要配套的源代码可以在我上传的资源中找
  • CMM语言语法分析实验报告 语法分析器是用C++语言写的
  • 通过C语言编写一个语法分析器采用递归下降分析法编写语法分析程序及LL(1)语法分析法编写语法分析程序。附上实验报告

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,901
精华内容 4,360
关键字:

语法分析器实验报告