摘要: OK,书接上文,今次这篇博客是准备说语法分析。其实词法分析和语法分析可以说是一体的。词法分析用于分析输入的单词,将其一一分门别类。语法分析分析已经分门别类好的单词,看其组成的句子是否符合语言的文法。首先,先确定一个简单的文法:S -> if ( M ) { N }S -> NM - > P == Pp -> id | digitN -> int id ; | int id = num ; | Q;Q - > id = EE - > E + T | TT - > id | digit| ( E )这是一个非常简单的java风格文法,大家一眼就能看出 阅读全文
posted @ 2013-08-18 20:03 Sorheart 阅读(3989) 评论(0) 推荐(0) 编辑
摘要: 上一篇文件浅析了Netty中的事件驱动过程,这篇主要写一下异步相关的东东。首先,什么是异步了?异步的概念和同步相对。当一个异步过程调用发出后,调用者不能立刻得到结果。实际处理这个调用的部件在完成后,通过状态、通知和回调来通知调用者。异步的好处是不会造成阻塞,在高并发情形下会更稳定和更高的吞吐量。说到Netty中的异步,就不得不提ChannelFuture。Netty中的IO操作是异步的,包括bind、write、connect等操作会简单的返回一个ChannelFuture,调用者并不能立刻获得结果。当future对象刚刚创建时,处于非完成状态。可以通过isDone()方法来判断当前操作是否完 阅读全文
posted @ 2013-07-17 15:31 Sorheart 阅读(21565) 评论(0) 推荐(2) 编辑
摘要: 本篇文章着重于浅析一下Netty的事件处理流程,Netty版本为netty-3.6.6.Final。Netty定义了非常丰富的事件类型,代表了网络交互的各个阶段。并且当各个阶段发生时,触发相应的事件交给pipeline中定义的handler处理。举个例子,如下一段简单的代码:ChannelFactory factory = new NioServerSocketChannelFactory(Executors.newCachedThreadPool(), Executors.newCachedThreadPool()); ServerBootstrap bo... 阅读全文
posted @ 2013-07-16 23:37 Sorheart 阅读(9925) 评论(0) 推荐(1) 编辑
摘要: 编译器大致可以分为前端和后端,前端执行分析,后端执行合成。前端又可大致分为词法分析、语法分析和语义分析,本篇文章就是要实现一个简单的词法分析程序。使用语言为python 2.5。1 名词解释 本文不会详细的解释涉及的名词概念,只会大致的描述一下。 词法单词:语言的文法单位,如int、float等等。 正则表达式:一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。 NFA:全名非确定有限自动机,是一种需要从一个状态出发的多条标有相同符号的边进行选择的状态机。 DFA:全名确定有限自动机,与NFA不同的是,不会有从同一状态出发的两条边标有相同的记号。2 大体流程在写词法分析器之前首先 阅读全文
posted @ 2013-07-13 20:34 Sorheart 阅读(1116) 评论(0) 推荐(0) 编辑