当前位置:三九宝宝网 → 宝宝教育 → 学龄段教育 → 正文

编译原理LL1语法分析的例子谁有

更新:02-25 整理:39baobao.com
字体:

[归纳概括的原理分析]对资料的归纳概括能力是申论考查的主要能力之一,那么我们如何才能对申论材料做好归纳概括这个环节,进而有效地提出针对性的策略呢?对此,人事考试网的专家提出归纳概括的原理分析...+阅读

/******************************************* ********************************************/ #include#include#include/*******************************************/ int count=0; /*分解的产生式的个数*/ int number; /*所有终结符和非终结符的总数*/ char start; /*开始符号*/ char termin[50]; /*终结符号*/ char non_ter[50]; /*非终结符号*/ char v[50]; /*所有符号*/ char left[50]; /*左部*/ char right[50][50]; /*右部*/ char first[50][50],follow[50][50]; /*各产生式右部的FIRST和左部的FOLLOW集合*/ char first1[50][50]; /*所有单个符号的FIRST集合*/ char select[50][50]; /*各单个产生式的SELECT集合*/ char f[50],F[50]; /*记录各符号的FIRST和FOLLOW是否已求过*/ char empty[20]; /*记录可直接推出^的符号*/ char TEMP[50]; /*求FOLLOW时存放某一符号串的FIRST集合*/ int validity=1; /*表示输入文法是否有效*/ int ll=1; /*表示输入文法是否为LL

(1)文法*/ int M[20][20]; /*分析表*/ char choose; /*用户输入时使用*/ char empt[20]; /*求_emp()时使用*/ char fo[20]; /*求FOLLOW集合时使用*/ /******************************************* 判断一个字符是否在指定字符串中 ********************************************/ int in(char c,char *p) { int i; if(strlen(p)==0) return(0); for(i=0;;i++) { if(p[i]==c) return

(1); /*若在,返回1*/ if(i==strlen(p)) return(0); /*若不在,返回0*/ } } /******************************************* 得到一个不是非终结符的符号 ********************************************/ char c() { char; while(in(c,non_ter)==1) c++; return(c); } /******************************************* 分解含有左递归的产生式 ********************************************/ void recur(char *point) { /*完整的产生式在point[]中*/ int j,m=0,n=3,k; char temp[20],ch; ch=c(); /*得到一个非终结符*/ k=strlen(non_ter); non_ter[k]=ch; non_ter[k+1]='\0'; for(j=0;j

关于LL1文法

(1)first(E)={(,i},first(D)={+,-,ε},first(T)={(,i},first(S)={*,/,ε}

first(F)={(,i}

follow(E)={#,)},follow(D)={#,)},follow(T)={+,-,#,)} follow(S)={+,-,#,)} follow(F)={*,/,+,-,#,)}

(2)select(E->TD)=FIRST(TD)={(,i}

SELECT(E->+TD)={+}

SELECT(E->-TD)={-}

SELECT(E->;ε)={#,)}

SELECT(T->FS)={(,i}

SELECT(S->*FS)={*}

SELECT(S->/FS)={/}

SELECT(S->;ε)={+,-,#,)}

SELECT(F->(E))={(}

SELECT(F->i)={i}

预测分析表:

+ - * / ( ) i #

E ->+TD ->-TD ->TD ->;ε ->TD ->;ε

D

T ->FS ->FS

S ->;ε ->;ε ->*FS ->/FS ->(E) ->;ε ->;ε

F ->i

(3)i/i-i的分析过程:

步骤 输入串 剩余串 移进或规约

1 # i/i-i#

2 #i /i-i# E->TD

3 #DT ......

...

剩余的只要按照书上的步骤填就行了。

本文地址:https://www.39baobao.com/show/31_127268.html

以上内容来自互联网,请自行判断内容的正确性。若本站收录的信息无意侵犯了贵司版权,请联系我们,我们会及时处理和回复,谢谢.

以下为关联文档:

德语语法德语句子的语法分析通常我们在阅读一篇汉语或是英语的文章的时候,并不需要多少语法的知识,而是根据句子中每个词或词组的意义,进行一定的分析和联想,从而理解整个句子的意思,进而理解篇章的内容。这...

聚类分析的分析原理是什么聚类分析是研究“物以类聚”的一种科学有效的方法。做聚类分析时,出于不同的目的和要求,可以选择不同的统计量和聚类方法。 系统聚类是目前应用最为广泛的一种聚类方法,其基本...

如何学好编译原理对于你将来有很大前途,对于你的思维开拓有很大帮助。更主要能帮你学习很多算法已经更好更快的掌握新的语言。从长远角度看的话有帮助,但是从近的看,如果你就业啊之类的就没什么...

如何学好程序设计语言编译原理诚求1.明确学习目的 学习编程对大多数IT业人员来说都是非常有用的。学编程,做一名编程人员,从个人角度讲,可以解决在软件使用中所遇到的问题,改进现有软件,可以为自己找到一份理想的...

光谱分析的原理分析原理是将光源辐射出的待测元素的特征光谱通过样品的蒸汽中待测元素的基态原子所吸收,由发射光谱被减弱的程度,进而求得样品中待测元素的含量,它符合郎珀-比尔定律 A= -lg I...

编译原理中词法分析和语法分析的任务分别是什么编译原理中,语法规则和词法规则不同之处在于:规则主要识别单词,而语法主要识别多个单词组成的句子。 词法分析和词法分析程序: 词法分析阶段是编译过程的第一个阶段。这个阶段...

编译原理语法分析程序#include#include#include#include#includeusing namespace std;struct Node1{ char vn; char vt; char s[10];}MAP[20];//存储分析预测表每个位置对应的终结符,非终结符,产生...

编译原理简单文法归约计算编译原理中的语法和文法是不一样的,但却融会贯通。在计算机科学中,文法是编译原理的基础,是描述一门程序设计语言和实现其编译器的方法。文法分成四种类型,即0型、1型、2型和3型...

编译原理文法题目首先扩展文法为: 1) S1->S 2) S->aS 3) S->bS 4) S->a 则: I0 = Closure({S1->.S})={S1->.S,S->.aS,S->.bS,S->.a} go(I0,S) = Closure({S1->S.})={S1->S.} = I1 go(I0,a) = C...