谈谈编译原理和其在WEB开发中的应用2
2009-01-22 15:28
232 查看
上一篇谈到了词法分析,并且给了一小段词法分析上的代码。如果大家对着代码看,可能就会发现我构造了一个对象来对字符串进行读取。
具体代码是:CharReader src = new CharReader(chars);
这样子写是为了减少在后面的while语句对字符串数组末尾的判断,起到简化代码的作用;这样的小技巧在写一些比较复杂的算法的时候特别的重要。
实现完词法分析之后我们就要进行到下一步的语法分析了。教科书的的语法分析一般都是教我们怎么去实现一个抽象语法树,而我个人比较喜欢用所谓的面向对象的方式去实现它,这样子的实现方式代码看起来比较直观,而且扩展也相对容易一些。
语法分析的前提是我们首先要构建出对应的对象结构。
ParseObject
private ObjectExpression ParseObject(TokenReader src)
{
src.AssertAndAdvance(TokenId.LCurly);
ObjectExpression o = new ObjectExpression(src.CurTok);
string name = string.Empty;
while (src.CurTok.TokenId != TokenId.RCurly && !src.Eof)
{
switch (src.CurTok.TokenId)
{
case TokenId.Ident:
case TokenId.String:
{
name = src.CurTok.Data;
src.Advance();
break;
}
case TokenId.Colon:
{
src.Advance();
o.Add(name, ParseValue(src));
if (src.CurTok.TokenId == TokenId.Comma)
src.Advance();
break;
}
default:
{
throw new JSONException("Illegal JSON object.");
}
}
}
return o;
}
这样子整个语法分析的过程就已经完成,大家可能认为是因为json比较简单才可以用这样的方式来实现,其实不是,目前比较流行的编译器我们也可以用这样的方式来实现了,只是其结构会相对来说比较复杂一些而已。
下一篇:
谈谈编译原理和其在WEB开发中的应用3
具体代码是:CharReader src = new CharReader(chars);
这样子写是为了减少在后面的while语句对字符串数组末尾的判断,起到简化代码的作用;这样的小技巧在写一些比较复杂的算法的时候特别的重要。
实现完词法分析之后我们就要进行到下一步的语法分析了。教科书的的语法分析一般都是教我们怎么去实现一个抽象语法树,而我个人比较喜欢用所谓的面向对象的方式去实现它,这样子的实现方式代码看起来比较直观,而且扩展也相对容易一些。
语法分析的前提是我们首先要构建出对应的对象结构。
ParseObject
private ObjectExpression ParseObject(TokenReader src)
{
src.AssertAndAdvance(TokenId.LCurly);
ObjectExpression o = new ObjectExpression(src.CurTok);
string name = string.Empty;
while (src.CurTok.TokenId != TokenId.RCurly && !src.Eof)
{
switch (src.CurTok.TokenId)
{
case TokenId.Ident:
case TokenId.String:
{
name = src.CurTok.Data;
src.Advance();
break;
}
case TokenId.Colon:
{
src.Advance();
o.Add(name, ParseValue(src));
if (src.CurTok.TokenId == TokenId.Comma)
src.Advance();
break;
}
default:
{
throw new JSONException("Illegal JSON object.");
}
}
}
return o;
}
这样子整个语法分析的过程就已经完成,大家可能认为是因为json比较简单才可以用这样的方式来实现,其实不是,目前比较流行的编译器我们也可以用这样的方式来实现了,只是其结构会相对来说比较复杂一些而已。
下一篇:
谈谈编译原理和其在WEB开发中的应用3
相关文章推荐
- 谈谈编译原理和其在WEB开发中的应用1
- 转:谈谈编译原理和其在WEB开发中的应用1 http://www.cnblogs.com/afxcn
- 转:谈谈编译原理和其在WEB开发中的应用3
- 转:谈谈编译原理和其在WEB开发中的应用2
- 谈谈编译原理和其在WEB开发中的应用3
- 用WEB技术栈开发NATIVE应用(二):WEEX 前端SDK原理详解
- 用WEB技术栈开发NATIVE应用(二):WEEX 前端SDK原理详解
- web开发 php之 socket(TCP/IP)原理 学习、理解和应用
- 用WEB技术栈开发NATIVE应用:WEEX 前端SDK原理详解
- HTML5数据推送SSE原理及应用开发
- UTF-8 字符处理在 Web 开发中的应用
- 【JavaWeb开发】初步实现网站应用钉钉扫码登录
- HTML5开发移动web应用—JQuery Mobile(2)-导航栏和页脚
- Web表格应用系统开发套件
- MyEclipse、Eclipse、Intellij IDEA开发web项目及与tomcat集成的原理
- 虚拟主机Web应用开发时应该注意到的安全问题
- Vaadin Web应用开发教程(19):UI组件-Tree 组件
- Java Web应用快速开发平台-OpenJWeb v1.2学习版推广方案
- 搭建WEB开发环境和应用
- 基于Web开放平台的应用的开发的一些研究