
2、收集整理资料。即收集尽可能多的相关经济信息,同时对所收集的大量资料进行整理、归纳,找出与预测对象有关的各因素之间的相互依存关系。
3、选择预测方法。即进行定性和定量分析。
4、分析判断。
5、检查验证。即将本期实际发生数与前期预测数进行比较,计算并分析差异,以便在本期预测中加以改进。
6、修正预测值。
7、报告预测结论。
越哥,我来答啦,分给我吧O(∩_∩)O哈哈~/* 1 E →TE′2 E′ →+TE`
3 E′ →ε
4 T → FT′
5 T′ → * FT′
6 T′ →ε
7 F →(E)
8 F →id
FIRST(E) = FIRST(T) = FIRST(F) = { ( , id }
FIRST(E′) = {+, ε}
FRIST(T′) = {*, ε}FOLLOW(E) = FOLLOW(E′) = { ), $}
FOLLOW(T) = FOLLOW (T′) = { +, ), $}
FOLLOW(F) = {+, *, ), $} */#include <stdio.h>
#include <tchar.h>
#include <string.h>int main(int argc, char* argv[])
{
char syn[15] //语法栈
int top //栈顶指针
char lookahead //当前单词
char exp[50]//表达式区
int m =0 //表达式指针
char s[4][5]={"id","+","*","("} //表中有空白的符号
char string[3]={'E','T','F'} //表中有同步记号的的非终结符
int ll1[7][6]={
{1,0,0,1,9,9}, //LL(1)分析表,9表示同步记号,第6行是#,第7行是)
{0,2,0,0,3,3},
{4,9,0,4,9,9},
{0,6,5,0,6,6},
{8,9,9,7,9,9},
{12,12,12,12,12,10},
{13,13,13,13,11,13}}
int i,j //表行和列
int code //表项
printf("******************语法分析器********************\n")
printf("please input your expression:\n")
scanf("%s",exp)
top=1
lookahead=exp[m++]
syn[0]='#'
syn[1]='E'
while(1)
{
switch(syn[top])//行
{
case 'E':i=0break
case 'e':i=1break
case 'T':i=2break
case 't':i=3break
case 'F':i=4break
case '#':i=5break
case ')':i=6break
}
switch(lookahead) //列
{
case 'i':j=0break
case '+':j=1break
case '*':j=2break
case '(':j=3break
case ')':j=4break
case '#':j=5break
}
code=ll1[i][j]
if(code==10)
{ printf("语法分析结束\n")
break}
else
{
switch(code)
{
case 0:
{
printf("出错,用户多输入了%s,跳过%s\n",s[j],s[j])
if(j==0)
{lookahead=exp[m++]<br>lookahead=exp[m++]}
else
lookahead=exp[m++]
break
}
case 1:{printf("E →TE′\n")syn[top]='e'syn[top+1]='T'top++break}
case 2:{printf("E′ →+TE`\n")syn[top+1]='T'top++lookahead=exp[m++]break}
case 3:{printf("E′ →ε\n")syn[top]='\0'top--break}
case 4:{printf("T → FT′\n")syn[top]='t'syn[top+1]='F'top++break}
case 5:{printf("T′ → * FT′\n")syn[top+1]='F'top++lookahead=exp[m++]break}
case 6:{printf("T′ →ε\n")syn[top]='\0'top--break}
case 7:{printf("F →(E)\n")syn[top]=')'syn[top+1]='E'top++lookahead=exp[m++]break}
case 8:{printf("F →id\n")syn[top]='\0'top--lookahead=exp[m++]lookahead=exp[m++]break}
case 9:{printf("d栈,d出非终结符%c,用户少输入了一个id\n",string[i/2])syn[top]='\0'top--break}
case 11:{syn[top]='\0'top--lookahead=exp[m++]break}
case 13:{printf("d栈,d出终结符 ) ,用户少输入了一个右括号\n")syn[top]='\0'top--break}
}
}
}
return 0
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)