(完整word版)编译原理计算器C++实现(word文档良心出品).pdf
-
资源ID:55058468
资源大小:28.74KB
全文页数:5页
- 资源格式: PDF
下载积分:4.3金币
快捷下载
会员登录下载
微信登录下载
三方登录下载:
微信扫一扫登录
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
(完整word版)编译原理计算器C++实现(word文档良心出品).pdf
#include#include#include#include using namespace std;enum types DELIMITER=1,VARIABLE,NUMBER;/定义枚举类型把DELIMITER初试化为1 后面的相应的是前面值+1 class parser char*exp_ptr;/定义一个指向表达式的指针char token80;/存储表达式中的字符变量char tok_type;/存储具体是什么类型void eval_exp2(double&result);void eval_exp3(double&result);void eval_exp4(double&result);void eval_exp5(double&result);void eval_exp6(double&result);void atom(double&result);void get_token();void serror(int error);int isdelim(char c);public:parser();/类的构照函数double eval_exp(char*exp);/类构照函数的具体实现parser:parser()exp_ptr=NULL;/把 exp_ptr 的指针初始化为空/方法 eval_exp 的具体实现过程double parser:eval_exp(char*exp)double result;exp_ptr=exp;/把传递过来的参数exp 负给 exp_ptr get_token();if(!*token)serror(2);/输出没有任何表达式的错误信息return 0.0;eval_exp2(result);if(*token)serror(0);/last token must be null return result;/两个变量字符是加或者减操作void parser:eval_exp2(double&result)register char op;double temp;eval_exp3(result);while(op=*token)=+|op=-)get_token();eval_exp3(temp);switch(op)case-:result=result-temp;break;case+:result=result+temp;break;/两个变量是乘或者除操作或者是取余void parser:eval_exp3(double&result)register char op;double temp;eval_exp4(result);while(op=*token)=*|op=/|op=%)get_token();eval_exp4(temp);switch(op)case*:result=result*temp;break;case/:文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5result=result/temp;break;case%:result=(int)result%(int)temp;break;/进行 运算void parser:eval_exp4(double&result)double temp,ex;register int t;eval_exp5(result);if(*token=)get_token();eval_exp4(temp);ex=result;if(temp=0.0)result=1.0;return;for(t=(int)temp-1;t0;-t)result=result*(double)ex;void parser:eval_exp5(double&result)register char op;op=0;if(tok_type=DELIMITER)&*token=+|*token=-)op=*token;get_token();eval_exp6(result);if(op=-)result=-result;/进行有括号的算法void parser:eval_exp6(double&result)文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5 if(*token=()get_token();eval_exp2(result);if(*token!=)serror(1);get_token();else atom(result);/取得数值void parser:atom(double&result)switch(tok_type)case NUMBER:result=atof(token);get_token();return;default:serror(0);/输出出错信息.void parser:serror(int error)static char*e=语法错误,不对称的括号,您没有输入任何的表达式!;cout eerror endl;/取得下一个token 值void parser:get_token()register char*temp;tok_type=0;temp=token;*temp=0;文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5if(!*exp_ptr)return;/如果到表达式末尾则返回while(isspace(*exp_ptr)+exp_ptr;/if(strchr(+-*/%=(),*exp_ptr)/用 strchr 函数在字符串+-*/%=()中查找*exp_ptr 指向的字符所在位置,判断返回值(非 0 为真就执行)以便是否执行以下语句tok_type=DELIMITER;/把 tok_type 置为 DELIMITER/advance to next char*temp+=*exp_ptr+;else if(isalpha(*exp_ptr)while(!isdelim(*exp_ptr)*temp+=*exp_ptr+;/isdelim判断是否是分隔符,当*exp_ptr指向的字符不为分隔符时把值负给*temp tok_type=VARIABLE;/把 tok_type 置为 VARIABLE else if(isdigit(*exp_ptr)/isdigit判断*exp_ptr 指向的字符是否为数字while(!isdelim(*exp_ptr)*temp+=*exp_ptr+;tok_type=NUMBER;*temp=0;/isdelim 函数的具体实现,如果参数是一个分割符则返回真int parser:isdelim(char c)if(strchr(+-/*%=(),c)|c=9|c=r|c=0)/把+-/*%=()09r定义非分隔符return 1;return 0;int main()char expstr80;parser ob;/创建一个 parser类型的实例for(;)cout 请输入你要计算的表达式:;cin.getline(expstr,79);/读入表达式到名为expstr 的数组中,数组大小为79 if(*expstr=.)break;cout 计数的结果是:ob.eval_exp(expstr)nn;return 0;文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5文档编码:CQ10M5M3L5A7 HN5E1P4T2Y2 ZX7U6M7J3U5