编译原理词法分析器(实验一 java 版本).docx

上传人:啊飒飒 文档编号:10607871 上传时间:2021-05-25 格式:DOCX 页数:9 大小:16.11KB
返回 下载 相关 举报
编译原理词法分析器(实验一 java 版本).docx_第1页
第1页 / 共9页
编译原理词法分析器(实验一 java 版本).docx_第2页
第2页 / 共9页
编译原理词法分析器(实验一 java 版本).docx_第3页
第3页 / 共9页
编译原理词法分析器(实验一 java 版本).docx_第4页
第4页 / 共9页
编译原理词法分析器(实验一 java 版本).docx_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《编译原理词法分析器(实验一 java 版本).docx》由会员分享,可在线阅读,更多相关《编译原理词法分析器(实验一 java 版本).docx(9页珍藏版)》请在三一文库上搜索。

1、import javax.swing.*;import java.awt.*;import java.io.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;public class Compiler extends JFrame / 出错管理int row = 0;int line = 1;/ 标记单词int begin = 0;int end = 0;JBu

2、tton exit;JButton confirm;TextArea in = new TextArea(20,1);TextArea out = new TextArea();public Compiler(String s) / 界面设计super(s);setBounds(500, 80, 300, 300);add(in, BorderLayout.NORTH);add(out, BorderLayout.CENTER);out.setText(请于上面文本域输入程序);JPanel p = new JPanel();add(p, BorderLayout.SOUTH);confirm

3、 = new JButton(确定);exit = new JButton(退出);exit.addActionListener(new Monitor();confirm.addActionListener(new Monitor();p.add(confirm);p.add(exit);addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0););pack();setVisible(true);/ 监听按钮public class Monitor impleme

4、nts ActionListener public void actionPerformed(ActionEvent e) if (e.getSource() = exit) System.exit(0);if (e.getSource() = confirm) out.setText();row = 0;line = 1;compile();/ 判断是否数字public boolean isDigit(char c) return Character.isDigit(c);/ 判断是否字符或者为下划线public boolean isLetter(char c) if (c = a & c

5、= A & c = Z) | c = _) return true;return false;public int getLocation(int begin, String str) for(int i = begin; istr.length();i+) char c = str.charAt(i);if (c = n | c = , | c = | c = t | c = | c = | c = ( | c = ) | c = ; | c = =| c = + | c = - | c = * | c = /)return i;return -1;/ 判断是否为关键字public bool

6、ean isKey(String str) if (str.equals(abstract) | str.equals(boolean) | str.equals(break)| str.equals(byte) | str.equals(case)| str.equals(catch) | str.equals(char) | str.equals(class)| str.equals(continue) | str.equals(default) | str.equals(do)| str.equals(double) | str.equals(final)| str.equals(fin

7、ally) | str.equals(if)| str.equals(implements) | str.equals(import)| str.equals(instanceof) | str.equals(int)| str.equals(interface) | str.equals(long)| str.equals(native) | str.equals(new)| str.equals(package) | str.equals(private)| str.equals(protected) | str.equals(public)| str.equals(return) | s

8、tr.equals(short)| str.equals(static) | str.equals(super)| str.equals(switch) | str.equals(synchronized)| str.equals(this) | str.equals(thow)| str.equals(throws) | str.equals(String)| str.equals(try) | str.equals(void)| str.equals(for) | str.equals(while)return true;return false;/ 词法分析主程序public void

9、compile() String input = in.getText();if (input.equals() out.setText(请输入程序); else int i = 0;int length = input.length();int state = 0;for (i = 0; i ) state = 5; else if (c = = n); else i-;row-;state = 0;out.append(rs: 运算符 n);break;case 6:if (c = =) state = 0;out.append(rs: 运算符 = n); else i-;row-;sta

10、te = 0;out.append(rs: 运算符 n);break;case 7:if (c = =) state = 0;out.append(rs: 运算符 = n); else i-;row-;state = 0;out.append(rs: 运算符 = n);break;case 8:if (c = =) state = 0;out.append(rs: 运算符 != n); else i-;row-;state = 0;out.append(rs: 运算符 ! n);break;case 9:line+;row = 0;state = 0;break;case 10:if (isD

11、igit(c) | c = .) else if(isLetter(c) out.append(rs: 行 + line + 列 + row + error: + 数字格式不正确 n);int temp = i;i = getLocation(i,input)-1;row += i -temp;i-;row-;state = 0;break;case 11:if (isDigit(c) | isLetter(c) state = 11; else end = i;String s = input.substring(begin, end);if (isKey(s) out.append(rs:

12、 关键字 + s + n); else out.append(rs: 标识符 + s + n);i-;row-;state = 0;break;case 12:if (c = &) out.append(rs: 逻辑and运算符 & n); else i-;row-;out.append(rs: 不明&运算符 n);state = 0;break;case 13:if (c = |) out.append(rs: 逻辑or运算符 | n ); else i-;row-;out.append(rs: 不明|运算符 n );state = 0;break;public static void main(String args) new Compiler(软件四班张超词法分析器 );

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1