【编译原理】LL(1)分析法:C/C++实现

2024-06-04 4849阅读

【编译原理】LL(1)分析法:C/C++实现 第1张 🔖墨香寄清辞:空谷幽篁风动,梦中仙鹤月明。 辗转千秋豪情在,乘风翱翔志不移。

【编译原理】LL(1)分析法:C/C++实现 第2张

【编译原理】LL(1)分析法:C/C++实现 第3张

目录

1. 编译原理之LL(1)分析法概念

1.1 编译原理

1.2 LL(1)分析法

2. LL(1)分析法

2.1 实验目的

2.2 实验要求

2.3 实验内容

2.3.1 实验解决代码

2.3.2 运行结果

2.3.3 详细代码分析

2.3.3.1 init()函数

2.3.3.2 analyse()函数

2.4 实验心得


1. 编译原理之LL(1)分析法概念

1.1 编译原理

编译原理是计算机科学领域的一个重要分支,它研究如何将高级编程语言的源代码转化成计算机能够执行的机器代码或中间代码的过程。编译原理涵盖了编译器的设计和实现,其中编译器是一种将源代码翻译成目标代码的软件工具。编译器的主要任务包括语法分析、词法分析、语义分析、优化和代码生成等环节。

1.2 LL(1)分析法

LL(1)分析法是一种常用的自顶向下的语法分析方法,用于分析和解释编程语言或其他形式的文本。LL(1)代表"Left-to-Right, Leftmost derivation, 1 symbol lookahead",这表示了分析器的工作方式和限制条件,通常用于编程语言的语法分析,编写编译器或解释器。主要步骤包括构建LL(1)文法、构建LL(1)分析表和使用递归下降分析或预测分析器等算法来分析输入文本。

🔥 资源获取:关注公众号【科创视野】回复  LL分析法源码

🔥 相关博文:编译原理之逆波兰式的产生及计算:C/C++实现(附源码+详解!)


2. LL(1)分析法

2.1 实验目的

(1)加深对预测分析LL(1)分析法的理解;

(2)根据某一文法编制调试LL(1)分析程序,以便对任意输入的符号串分析。


2.2 实验要求

实验规定对下列文法,用LL(1)分析法对任意输入的符号串进行分析,具体文法如下:

(1)E::=TG

(2)G::=+TG

(3)G::=ε

(4)T::=FS

(5)S::=*FS

(6)S::=ε

(7)F::=(E)

(8)F::=i

若输入串为

i+i*i#

则输出:

【编译原理】LL(1)分析法:C/C++实现 第4张​​

LL(1)的分析表:

   i

   +

   *

  (

    )

   #

    说    明

 E

   e

   e

Select(E→TG)={(,i}

 G

g

g1

g1

Select (G→+TG)={+}

Select (G→є)={#,)}

 T

   t

 t

Select (T→FS)={(,i}

 S

s1

   s

  s1

  s1

Select (S→*FS)={*}Select (S→є)={#,) +}

 F

  f1

   F

Select (F→(E))={(}

Select (F→i)={i}

参考代码(不完整):

do/*读入分析串*/
{
    scanf("%c",&ch);
    if ((ch!='i') &&(ch!='+') &&(ch!='*')&&(ch!='(')&&(ch!=')')&&(ch!='#'))
    {
        printf("输入串中有非法字符\n");
        exit(1);
    }
    B[j]=ch;
    j++;
}while(ch!='#');
l=j;/*分析串长度*/
ch=B[0];/*当前分析字符*/
A[top]='#'; A[++top]='E';/*'#','E'进栈*/
printf("步骤\t\t分析栈 \t\t剩余字符 \t\t所用产生式 \n");
do
{
    x=A[top--];/*x为当前栈顶字符*/
    printf("%d",k++);
    printf("\t\t");
}   
for(j=0;j

    免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

    目录[+]