您的位置:首页 > 编程语言 > Lua

Lua注释的解析方法

2013-08-07 10:47 357 查看
之前实验室一个学长跟我一起研究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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: