词法分析器——java实现

这篇博客提供了使用Java实现词法分析器的相关资源,包括词法分析、语法分析等编译原理的实践代码,读者可以下载配套的jar包进行学习和研究。
摘要由CSDN通过智能技术生成

本人博客内编译原理文章的配套资源jar包,包括词法分析,语法分析,中间代码生成,静态语义检查,代码解释执行以及抽象语法树的手动生成:https://download.csdn.net/download/as1072966956/10448935

转载请注明出处。


Token.java

package sch.cauc.edu.token;

/**
 * 
 * 
 * Token
 * 创建人:xrzhang 
 * 时间:2018年5月10日-上午9:11:26 
 * @version 1.0.0
 *
 */

public class Token {
	private TokenType type;
	private String token;
	private int line;
	private int column;
	/**
	 * 
	 * 词法记号的构造器
	 * @param type  词法记号的类型
	 * @param token  词法记号的串值
	 * @param line   词法记号所在的行号,用于调试和检查输出
	 * @param column 词法记号所在的列号,用于调试和检查输出
	 */
	public Token(TokenType type,String token,int line,int column) {
		
		this.line = line;
		this.type = type;
		this.token = token;
		this.column = column;
	}
	public TokenType getType(){
		return type;
	}
	public int getLine(){
		return line;
	}
	public int getColumn(){
		return column;
	}
	public String getLexeme(){
		return token;
	}
	/**
	 * 
	 * 输出当前词法记号的信息,包括类型、串值、行号和列号
	 * 方法名:toStrong
	 * 创建人:xrzhang 
	 * 时间:2018年5月10日-上午9:16:13 
	 * 邮件:jmzhang_15_cauc@163.com
	 * @return String  字符串标识的词法记号信息
	 * @exception 
	 * @since  1.0.0
	 */
	public String toString() {
		return type+" "+token+" ("+line+","+column+")";
	}
}

enum TokenType{
	/**忽略的词法单位**/
	
	IGNORE,
	/**变量**/
	IDENTIFIER,      //标识符
	
	/**常量**/
	INTEGER_LITERAL,  //整型常量
	BOOL_TRUE,			//true
	BOOL_FALSE,			//false
	
	/**保留字**/
	KEY_INT,   //int
	KEY_BOOLEAN,//boolean
	KEY_WHILE,	//while
	KEY_IF,		//if
	KEY_ELSE,	//else
	
	/**算术运算符**/
	PLUS,  //+
	MINUS,  //-
	TIMES,  //*
	DIVIDE, ///除
	REMAINDER,//%取模
	
	/**关系运算符**/
	LESS,     //<
	GREATER,    //>
	LESS_EQUAL,  //<=
	GREATER_EQUAL, //>=
	NOT_EQUAL,   //!=
	EQUAL,   ///==
	
	/**逻辑运算符**/
	LOGICAL_NOT,  //!
	LOGICAL_AND,  //&&
	LOGICAL_OR,  //||
	
	/**赋值符号**/
	ASSIGN,    //=
	
	/**括号**/
	LPAREN,   //(
	RPAREN,   //)
	LBRACKET, //{
	RBRACKET, //}
	
	/**界符**/
	COMMA,   //逗号,
	SEMICOLON,  //分号;
	
	/**文件结尾符**/
	EOF,
	
	/**注释*/
	NOTE
}
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

花月诗人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值