關于不良品分析程序與回饋 王雄獅(LCD制技部)
一、說明:初步分析步驟
1.將異常品初步分類成固定及非固定點.
1-1.固定點:紀錄異常品模號及位置.
1-2.非固定點:紀錄異常批號.
2.于電測機、光桌及顯微鏡下將異常情況作初步分析
2-1.確認異常品原因為前制程或后制程造成.
2-2.無法確認異常品原因時勿下結論,只反映現象及初步分析內容
3.回饋資訊
3-1.異常批號
3-2.異常照片(正常品與異常品比對、光桌或電測機為顯示情況)
二、細項分步驟
语法分析上机报告
020789 周磊
1. 目的:通过设计、编制、调试一个具体的语法分析程序,加深对语法分析原理的理解,并掌握算符优先分析方法,提高编写编译程序功能模块的能力。
2. 要求:使用C语言编写,提交实习报告一份,其中应包括:问题描述、详细设计、源程序代码和运行结果等。
3. 题目:给出算符优先文法G如下所示:
(1) E→E+T│E-T│T
(2) T→T*F│T/F│F
(3) F→P↑F│P
(4) P→(E)│i
(1) 写出该文法的优先关系矩阵;
编写一个算符优先语法分析器,输入为算术表达式,输出为语法分析结果。
(2)编写一个算符优先语法分析器,输入为算术表达式,输出为语法分析结果。
4.分析
该程序可分为如下几步:
(1)读入文法
(2)判断正误
(3)若无误,判断是否为算符优先文法
(4)若是,构造分析表;
(5)由总控算法判断输入符号串是否为该文法的句型。
5.流程图
6. 源程序
# include "stdio.h" # include "malloc.h"
struct Lchar{ char char_ch; struct Lchar *next;
}Lchar,*p,*h,*temp,*top,*base;
int table[8][8]={{1,1,-1,-1,-1,1,-1,1},
{1,1,-1,-1,-1,1,-1,1},
{1,1,1,1,-1,1,-1,1},
{1,1,1,1,-1,1,-1,1},
{-1,-1,-1,-1,-1,-1,-1,0},
{1,1,1,1,0,1,0,1},
{1,1,1,1,0,1,0,1},
{-1,-1,-1,-1,-1,0,-1,-1}};
/*存储算符优先关系表,大于为1,小于或等于为-1,其它为0表示出错*/
char curchar;
char curcmp;
int right;/*设置开关项,当出错时为0*/
int i,j;
int k;/*比较字符在栈的位置*/
void push(char pchar)/*入栈函数*/
{
temp=malloc(sizeof(Lchar));
temp->char_ch=pchar;
temp->next=top;
top=temp;
}
void pop(void)/*出栈函数*/
{
if(top->char_ch!='#')
top=top->next;
}
int changchartoint(char ch)/*将字符转为数字,以得到算符优先值*/
{
int t;
switch(ch)
{
case '+':t=0;break;
case '-':t=1;break;
case '*':t=2;break;
case '/':t=3;break;
case '(':t=4;break;
case ')':t=5;break; case 'i':t=6;break; case '#':t=7;
}
return t;
}
void dosome(void) {
k=1;
for(;;)
{
curchar=h->char_ch; temp=top;
for(;;)
{
if(temp->char_ch=='N') {
temp=temp->next; k++;
}
else
{
curcmp=temp->char_ch; break;
}
}
printf("\n%d\t%d\t",table[i][j],k); temp=top;
for(;;)/*打印栈*/
{
printf("%c",temp->char_ch); if(temp->char_ch=='#') break;
else
temp=temp->next; }
printf("\t");
temp=h;
for(;;)/*打印待比较的字符*/ {
printf("%c",temp->char_ch);
if(temp->char_ch=='#')
break;
else
temp=temp->next;
}
i=changchartoint(curcmp);
j=changchartoint(curchar);
if(table[i][j]==0)/*算符优先值为空*/
{
printf("\n%d\t%d\t%c\t%c\terror1",table[i][j],k,curcmp,curchar); right=0;
break;
}
else/*算符优先值不为空*/
{
if(table[i][j]<0)/*算符优先值为-1,移进*/
{
if(curchar=='#')/*待比较字符为空*/
{
if(k==2)/*当前比较字符在栈的位置为两个元素*/ break;
else
{
printf("\n%d\t%d\t%c\t%c\terror2",table[i][j],k,curcmp,curchar);
right=0;
break;
}
}
push(curchar);
k=1;
curcmp=curchar;
h=h->next;
}
else/*算符优先值为1,归约*/
{
if(curcmp=='i')/*当前比较为i,出栈一次*/
pop();
else/*当前比较不为i,出栈三次*/
{
pop();
pop();
pop();
}
push('N');/*归约到N*/
k=1;
}
}
}
}
void main(void)
{
char ch;
right=1;
base=malloc(sizeof(Lchar));
base->next=NULL;
base->char_ch='#';
top=base;
h=malloc(sizeof(Lchar));
h->next=NULL;
p=h;
do{ /*输入待比较字符串,以'#'结束*/
ch=getch();
putch(ch);
if(ch=='i'||ch=='+'||ch=='-'||ch=='*'||ch=='/'||ch=='('||ch==')'||ch=='#')
{
temp=malloc(sizeof(Lchar));
temp->next=NULL;
temp->char_ch=ch;
h->next=temp;
h=h->next;
}
else
{
temp=p->next;
printf("\nInput a wrong char!Input again:\n"); for(;;)
{
if (temp!=NULL)
printf("%c",temp->char_ch); else
break;
temp=temp->next;
}
}
}while(ch!='#');/*输入待比较字符串,以'#'结束*/ p=p->next;
h=p;
dosome();/*开始识别*/
if(right)
printf("\nOK!\n");
else
printf("\nError!\n");
getch();
}
7.程序运行结果显示
运行语法分析.exe,输入待处理的算术表达式,如果输入有误,程序会自动报错,并且会自动保留已输入的正确部分。
输入完成,按#号结束,产生运行结果。
關于不良品分析程序與回饋王雄獅LCD制技部一說明初步分析步驟1將異常品初步分類成固定及非固定點11固定點紀錄異常品模號及位置12非…
DefectiveproductsinvestigationreportThedescriptionofdefectiveproductsOnJan6…
常熟市艾鑫依塑胶包装有限公司不良品报告年月日报告编号BLP说明1表格适用范围来料包括原料和产品检验本公司内生产过程中查检发现不合格…
不良品分析报告以27为例进行不良品分析一电检不良品分析一LCM检测岗位记录二处理意见二外观检不良品分析一LCM检测岗位记录二处理意…
8月份不良品分析报告1音圈变形回线原因1漆包线来料不良2操作人员酒精加的过多2线路板歪原因1胶水未干碰撞造成2操作人员未贴正3翘网…
20xx年供应室护理不良事件案例成因分析年度报告一、20xx年护理不良事件汇总:二、事件类型图表分析:20xx10例,从上述图表中…
20xx年外科护理不良事件案例成因分析年度总结一、20xx年外科护理不良事件汇总:二、事件类型图表分析20xx年外科护理不良事件2…
泗阳康达医院20xx年第一季度安全不良事件统计与分析一本季度主动报告医院安全不良事件统计与分析一按类别统计20xx年度第一季度医院…
20xx年度护理不良事件成因分析报告20xx年度全院所有护理单元上报不良事件共39件现对全院上报的护理不良事件进行汇总分析提出相应…
20xx年供应室护理不良事件案例成因分析年度报告一20xx年护理不良事件汇总二事件类型图表分析20xx10例从上述图表中反映出发生…
20xx年药品不良反应报告分析20xx年全院共上报药品不良反应17例一药品不良反应报告情况分析20xx年上半年药品不良反应监测报表…