去除代码中的注释(二) 实现 上

本文介绍了如何实现将源代码字符串转换成Token流,重点在于处理注释的去除。内容包括Token数据结构的定义,如不同类型Token的枚举,以及BufferedReader类的设计,用于读取字符并转换成Token。BufferedReader包含关键函数如readChar、pushChar、readToken,用于处理块注释、行注释和转义字符。
摘要由CSDN通过智能技术生成
上一篇博文介绍了去除代码注释的思想。我们发现,代码注释准确来说,不属于上下文无关文法的范畴。也就是同样的一个字符串,在不同的上下文环境下语义有所不同。为了对付这种情况,需要在字符解析时引入状态变量。


我们实现的过程,主要分为两个部分。

  1. 首先将输入字符串整理成一个Token。这里的Token在文法规则中对应的终结符。
  2. 有了第一部分的工作,生成的Token流就可以通过上下文无关文法进行分析了。这也是程序实现的第二部分内容。

这两部分内容将分为两篇博文讲解。本文先介绍第一部分的内容。


首先是Token数据结构的定义。

class Token{
public:
	int type, value;

	const static int END_OF_FILE = EOF;          
	const static int BLCOK_COMMENT_START = 0;    
	const static int LINE_COMMENT_START = 1;     
	const static int NORM_CHAR = 2;              
	const static int BLOCK_COMMENT_END = 3;      
	const static int DOUBLE_QUOTE_MARK = 4;      
	const static int ENTER = 5;                  	
	const static int CONVERT_CHAR = 6;           
	const static int NONE = 7;                

	Token(int type=Token::NONE, int value=-1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值