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
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
相关文章推荐
- lua中的元表和元方法解析
- 自己写的一个解析运算式并得到结果的方法(最后是以Double型表示,中间是以BigDecimal计算中间结果的,临时起意写的,没有注释)
- ocos2dx-lua采用pbc解析protobuf 不支持message嵌套和枚举不支持整数的处理方法
- [寒江孤叶丶的Cocos2d-x之旅_16]Cocos2d-x LUA脚本中解析Json的方法
- Lua多行注释和取消多行注释的方法
- 在Unity3d中解析Lua脚本的方法
- 在Unity3d中解析Lua脚本的方法
- 在Unity3d中解析Lua脚本的方法
- [寒江孤叶丶的Cocos2d-x之旅_24]Cocos2d-x LUA 解析 Csv文件的方法
- Lua多行注释和取消多行注释的方法
- 关于lua元表和元方法的例子 自己理解了并加了一些注释
- 注释方法解析
- cocos-Lua解析消息的方法
- wirshark lua: 横跨多包解析方法,混搭tap与postdissector解析器(RTP timestamp差值为例)
- 网站漏洞解析及黑客入侵防范方法
- java dom4j解析xml用到的几个方法
- Device Tree常用方法解析
- [转]c#:用DateTime的ParseExact方法解析特殊的日期时间
- android canvas常用的方法解析(一)
- Timer的schedule和scheduleAtFixedRate方法的区别解析