LuaBoy编辑器开发日志-完成前段输入分割器

       一个好的编辑器,需要具备三个核心模块:前段输入分割器, 前端文本词法分析器和后端符号表收集器。

       前端输入分割器主要功能是把用于需要的感知的光标处关联文本进行词法分割,形成调度树,这样就可以知道当前需要感知的对象他的它的原始类型。

       前端文本词法分析器:这个主要是对当前编写的文件进行词法分析,形成抽象语法树,从而显示文本的结构化特征,C++,Java这些强类型语言很好实现,但是Lua这种弱类型的语言实现起来难度有点大。

        后端符号表收集器:说白就是了符号数据库,比如类,类下面的函数,方法等。这个越丰富,感知功能越强。其实VS,Eclipse都是这样的原理。

       

         昨天星期天,带完女儿晒太阳,晚上在家里实现了前段输入法分割器。感觉还不错,同时写了一个小型的自动化测试框架。很不错。

先看一下测试用例,总共24条Case,应该能Cover住大部分用户输入的需求了,忘记说了,这是用Lua写的。

require "ParserManager"
require "AutomationTestManager"

local strInput1 =
	[[
		print( cc.Director.getContentScaleFactor())

		local result = cc.calProduct( cc.Director.createScene(
		{
		name   = "Warren",
		function() return 2 end }).
			getPhysicsWorld( pm.getProductName(_G) ).name).
	]]

local strInput3 =
	[[
		cc.Director.createScene(
		{
		name   = "Warren",
		function() return 2 end }).
			getPhysicsWorld( pm.getProductName(_G) ).name( 23).

	]]
local strInput2 = [[
		print( cc.Director.getContentScaleFactor())

		local result = cc.calProduct( cc.Director.createScene(
		{
			name   = "Warren",
			function() return 2 end }).
		getPhysicsWorld(dddd).
	]]


local testSet = {
	case1 = {".", result = {} },
	case2 = {"name.", result = {"name"}},
	case3 = {"name1.name2.",result = {"name2","name1"}},
	case4 = {"n.", result = {"n"}},
	case5 = {"1.", result = {"1"}},
	case6 = {" ", result = {} },
	case7 = {"name().",result = {"name"}},
	case8 = {"name(.",result = {}},
	ca
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

丑娃儿

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

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

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

打赏作者

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

抵扣说明:

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

余额充值