Lua注释的解析方法

之前实验室一个学长跟我一起研究lua的注释格式,特此写了一个lua的注释解析小代码练手,顺便练习递归文法解析。

lua注释格式为 -- XXXX +'\n'或者为 --[n个=[XXX]n个=]

--Lua注释解析
--case1:从--开始 若--后面不为[ 则解析到\n为注释
--case2:从--开始 若--后面为[ 则必须为[==[XXX]==]的形式 中间等号数相等可为O
--
str=[[  --[==[sadsadasdas]==]  ]]


function GetChar(i)
	return string.sub(str,i,i);	
end

function StrMatch(i,j,pattern)
	return string.sub(s,i,j)==pattern;
end

function EscapeWhiteSpaces(i)
	local strlen=string.len(str);
	local e=i;
	while e<strlen do
		if GetChar(i)==' ' then
			e=e+1;
		else
			break;
		end
	end
end


function EscapeComments(i)
	local strlen=string.len(str);
	if StrMatch(i,i+3,"--[") then
		local e=i+3;
		if StrMatch(e,e+1,"[") then
			local right="]"..string.sub(str,i+3,e).."]";
			local len=e-i-1;
			e=e+1;
			while e+len<= strlen and string.sub(str,e,e+len)==right do
				e=e+1;
			end
			if e+len>strlen then
				print("comment error!");
			else
				return e+len
			end
		else
			while e<strlen and GetChar(e)~='\n' do
				e=e+1;
			end
			return e+1;
		end
	else
		local e=i+2;
		while e<strlen and GetChar(e)~='\n' do
			e=e+1;
		end
		return e+1;
	end
end

function Escape(i)
	local strlen=string.len(str);
	while i<strlen do
		i=EscapeWhiteSpaces(i);
		if StrMatch(i,i+2,"--") then
			i=EscapeComments(i);
		else
			break;
		end
	end
end


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值