Antlr学习笔记1
摘要:今天,和师兄合作完成的基于Eclipse的文本编辑器插件的基本功能已经实现了。在词法语法的分析上做得还不是特别好,所以准备学习Antlr以加强我们的文本编辑器插件的词法语法分析能力。今天先对Antlr做一个简单的介绍。1 ANTLR简介ANTLR—Another Tool for Language Recognition,其前身是PCCTS,它为包括Java,C++,C#在内的语言提供了一个通过语法描述来自动构造自定义语言的识别器(recognizer),编译器(parser)和解释器(translator)的框架。ANTLR可以通过断言(Predicate)解决识别冲突;支持动作(Actio
阅读全文
MFC 多线程
摘要:#include <windows.h>#include <iostream.h>DWORD WINAPI Fun1Proc( LPVOID lpParameter // thread data);DWORD WINAPI Fun2Proc( LPVOID lpParameter // thread data);int index=0;int tickets=100;HANDLE hMutex;void main(){ HANDLE hThread1; HANDLE hThread2; // hMutex=CreateMutex(NULL,TRUE,NULL); hMu
阅读全文
网络编程(TCP & SOCKET)
摘要:1. 基于TCP(面向连接)的socket编程(切记要添加库文件:project->setting->link->object/library modules中添加" ws2_32.lib”)服务器端程序:1、创建套接字(socket)。2、将套接字绑定到一个本地地址和端口上(bind)。3、将套接字设为监听模式,准备接收客户请求(listen)。4、等待客户请求到来;当请求到来后,接受连接请求,返回一个新的对应于此次连接的套接字(accept)。5、用返回的套接字和客户端进行通信(send/recv)。6、返回,等待另一客户请求。7、关闭套接字。客户端程序:1、创
阅读全文
Jace中的光标与鼠标设置(ITextViewer)
摘要:JFace中的SourceViewer封装了 StyledText这个控件,该控件可以自由设置光标位置及鼠标形状。我们根据该控件来做设置:光标位置的设置,result是空间内容中光标所在偏移量(int):sourceViewer.getTextWidget().setCaretOffset(result); sourceViewer.getTextWidget().setFocus();鼠标图形的设置:viewer.getTextWidget().setCursor(new Cursor(getDisplay().getCurrent(),SWT.CURSOR_HAND));第二个参数为鼠标形
阅读全文
Eclipse小知识——如何调整字体大小
摘要:现在本本屏幕越来越小, 在上面运行eclipse就会显得字体小, 那么如何调整字体大小那?方法一: 打开菜单 window->preferences->general->appearance->colors and fonts打开basec里面的text font 进行编辑会弹出一个字体编辑的窗口, 在里面调整字体即可。
阅读全文
JAVA小知识——super和this的异同
摘要:super和this的异同: 1)super(参数):调用基类中的某一个构造函数(应该为构造函数中的第一条语句) 2)this(参数):调用本类中另一种形成的构造函数(应该为构造函数中的第一条语句) 3)super: 它引用当前对象的直接父类中的成员(用来访问直接父类中被隐藏的父类中成员数据或函数,基类与派生类中有相同成员定义时如:super.变量名 super.成员 函数据名(实参) 4)this:它代表当前对象名(在程序中易产生二义性之处,应使用this来指明当前对象;如果函数的形参与类中的成员数据同名,这时需用this来指明成员变量名) 5)调用super()必须...
阅读全文
JAVA小知识——super()函数
摘要:super()方法是在子类继承超类这种关系中用到,不过只会出现在子类中。super()这种直接带括号的方法形式,是子类直接调用超类的构造函数。大部分情况是 super.超类方法()的形式,就是super后有个点,然后接上超类的方法,这样就是子类调用超类的方法。父亲和儿子吃饭的例子,如果儿子想学父亲用勺子吃饭了,那么就应该这样写://在没勺子的时候使用筷子:class 儿子 extends 父亲{ 吃饭() { if(有勺子) 用勺子; else super.吃饭(); }}
阅读全文
Eclipse plugin开发 —TagRule类的分析
摘要:1. 在 项目名.editors这个包下,有一个TagRule类,其中在XMLPartitionScanner这个类中引用了TagRule的同名方法。即: rules[2]= new TagRule(tag);实际上,TagRule实现了一个语法规则,TagRule的同名方法的源码如下: public TagRule(IToken token) { super("(", ")", token);//控制最外围的符号,即若最外围为()时,“”内的字符会变成绿色 ...
阅读全文
Eclipse plugin开发 —实现语法高亮
摘要:1. 在public class XMLConfiguration中添加扫描函数:protected ValueScanner getValueScanner() { if (valuescanner == null) { valuescanner = new ValueScanner(colorManager); valuescanner.setDefaultReturnToken( new Token( new TextAttribute( colorManager.getColor(IXMLColorConstants.DEFAULT)))); } ...
阅读全文