- 浏览: 3056498 次
- 性别:
- 来自: 海外
文章分类
- 全部博客 (430)
- Programming Languages (23)
- Compiler (20)
- Virtual Machine (57)
- Garbage Collection (4)
- HotSpot VM (26)
- Mono (2)
- SSCLI Rotor (1)
- Harmony (0)
- DLR (19)
- Ruby (28)
- C# (38)
- F# (3)
- Haskell (0)
- Scheme (1)
- Regular Expression (5)
- Python (4)
- ECMAScript (2)
- JavaScript (18)
- ActionScript (7)
- Squirrel (2)
- C (6)
- C++ (10)
- D (2)
- .NET (13)
- Java (86)
- Scala (1)
- Groovy (3)
- Optimization (6)
- Data Structure and Algorithm (3)
- Books (4)
- WPF (1)
- Game Engines (7)
- 吉里吉里 (12)
- UML (1)
- Reverse Engineering (11)
- NSIS (4)
- Utilities (3)
- Design Patterns (1)
- Visual Studio (9)
- Windows 7 (3)
- x86 Assembler (1)
- Android (2)
- School Assignment / Test (6)
- Anti-virus (1)
- REST (1)
- Profiling (1)
- misc (39)
- NetOA (12)
- rant (6)
- anime (5)
- Links (12)
- CLR (7)
- GC (1)
- OpenJDK (2)
- JVM (4)
- KVM (0)
- Rhino (1)
- LINQ (2)
- JScript (0)
- Nashorn (0)
- Dalvik (1)
- DTrace (0)
- LLVM (0)
- MSIL (0)
最新评论
-
mldxs:
虽然很多还是看不懂,写的很好!
虚拟机随谈(一):解释器,树遍历解释器,基于栈与基于寄存器,大杂烩 -
HanyuKing:
Java的多维数组 -
funnyone:
Java 8的default method与method resolution -
ljs_nogard:
Xamarin workbook - .Net Core 中不 ...
LINQ的恶搞…… -
txm119161336:
allocatestlye1 顺序为 // Fields o ...
最近做的两次Java/JVM分享的概要
拿Oslo来玩了会儿。主要还是玩Intellipad和MGrammar。编辑器的使用体验还挺不错的。
把之前一个学弟问我帮忙写的parser要处理的语言拿来用了下:
M用的parse算法是GLR,内部主要是LALR(1)。语法文件的语法与YACC或ANTLR还是比较相似的;与ANTLR特别相似的地方是,语法规则和词法规则都使用同样的EBNF方式来表示。也有人诟病这种方式不符合一般写正则表达式的习惯。
在Intellipad的MGrammar三面板模式下,显示如下(点击放大):
三个面板中,左边是样本输入,中间是语法,右边是输出。解析是动态完成的,如果左边的输入不符合中间的语法,编辑器就会提示有错误;并且语法文件中指定的语法高亮也能够在左边的面板中体现出来。可以看到上面的图里,输入为:
输出为一个MGraph:
这个MGraph可以被保存在数据库里,可以转换成XML(XAML),也可以直接通过.NET程序来使用。以后有空再试试直接从C#里使用这个parser是怎么样的。
默认的关键字高亮是黑色,#FF000000。要改变这个颜色很容易,只要在下面的配置文件里修改Foreground值就行:
/Bin/Intellipad/Settings/ClassificationFormats.xcml:
上面的截图里,除了关键字的颜色换了之外,注释的颜色和样式也稍微改了改(#FF808080 -> #FF008000)。
把之前一个学弟问我帮忙写的parser要处理的语言拿来用了下:
module QueryGrammar { language QueryLanguage { syntax Main = q:Query => q; syntax Query = q:AtomicQuery => q | q:BooleanQuery => q ; syntax AtomicQuery = w:word => Atom { w } | f:word ':' w:word => Field { f, w } | f:word ':' '[' start:word '-' end:word ']' => Field { f, ClosedRange { start, end } } | f:word ':' '(' start:word '-' end:word ')' => Field { f, OpenRange { start, end } } ; syntax BooleanQueryOperand = q:AtomicQuery => q | '(' q:BooleanQuery ')' => q ; syntax BooleanQuery = a:BooleanQueryOperand 'AND' b:BooleanQueryOperand => And { a, b } | a:BooleanQueryOperand 'OR' b:BooleanQueryOperand => Or { a, b } | 'NOT' o:BooleanQueryOperand => Not { o } ; token word = ( 'a'..'z' | 'A'..'Z' | '0'..'9' )+; @{Classification["Keyword"]} final token AND = 'AND'; @{Classification["Keyword"]} final token OR = 'OR'; @{Classification["Keyword"]} final token NOT = 'NOT'; @{Classification["Comment"]} token lineComment = '//' commentContent*; token commentContent = ^( '\r' | '\n' ); interleave Comment = lineComment; interleave WhiteSpace = ' ' | '\t' | '\r' | '\n'; } }
M用的parse算法是GLR,内部主要是LALR(1)。语法文件的语法与YACC或ANTLR还是比较相似的;与ANTLR特别相似的地方是,语法规则和词法规则都使用同样的EBNF方式来表示。也有人诟病这种方式不符合一般写正则表达式的习惯。
在Intellipad的MGrammar三面板模式下,显示如下(点击放大):
三个面板中,左边是样本输入,中间是语法,右边是输出。解析是动态完成的,如果左边的输入不符合中间的语法,编辑器就会提示有错误;并且语法文件中指定的语法高亮也能够在左边的面板中体现出来。可以看到上面的图里,输入为:
// query comments NOT (fileName:(alpha-beta123) AND fileSize:[50-100])
输出为一个MGraph:
Not{ And{ Field{ "fileName", OpenRange{ "alpha", "beta123" } }, Field{ "fileSize", ClosedRange{ "50", "100" } } } }
这个MGraph可以被保存在数据库里,可以转换成XML(XAML),也可以直接通过.NET程序来使用。以后有空再试试直接从C#里使用这个parser是怎么样的。
默认的关键字高亮是黑色,#FF000000。要改变这个颜色很容易,只要在下面的配置文件里修改Foreground值就行:
/Bin/Intellipad/Settings/ClassificationFormats.xcml:
<act:Export Name='{}{Microsoft.Intellipad}ClassificationFormat'> <ls:ClassificationFormat Name='Keyword' FontFamily='Consolas' FontWeight='Bold' Foreground='#FF000000' />
<act:Export Name='{}{Microsoft.Intellipad}ClassificationFormat'> <ls:ClassificationFormat Name='Keyword' FontFamily='Consolas' Foreground='#FF0000FF' />
上面的截图里,除了关键字的颜色换了之外,注释的颜色和样式也稍微改了改(#FF808080 -> #FF008000)。
发表评论
-
Sun JDK1.4.2_28有TieredCompilation
2014-05-12 08:48 0原来以前Sun的JDK 1.4.2 update 28就已经有 ... -
IBM JVM notes (2014 ver)
2014-05-11 07:16 0Sovereign JIT http://publib.bou ... -
HotSpot Server Compiler与data-flow analysis
2014-01-07 17:41 0http://en.wikipedia.org/wiki/Da ... -
基于LLVM实现VM的JIT的一些痛点
2014-01-07 17:25 0同事Philip Reames Sanjoy Das http ... -
《自制编程语言》的一些笔记
2013-11-24 00:20 0http://kmaebashi.com/programmer ... -
对C语义的for循环的基本代码生成模式
2013-10-19 23:12 21891之前有同学在做龙书(第二版)题目,做到8.4的练习,跟我对答案 ... -
Nashorn各种笔记
2013-07-15 17:03 0http://bits.netbeans.org/netbea ... -
《深入理解Java虚拟机(第二版)》书评
2013-07-08 19:19 0值得推荐的中文Java虚拟机入门书 感谢作者赠与的样书,以下 ... -
豆列:从表到里学习JVM实现
2013-06-13 14:13 48424刚写了个学习JVM用的豆列跟大家分享。 豆列地址:http: ... -
Building Blocks of a JavaScript Engine
2013-05-23 00:49 0sketches of my new book "B ... -
读《JavaScript语言精髓与编程实践(第二版)》
2013-05-21 00:32 02008年逛书店的时候偶 ... -
添加一个bool C1LateInline参数?
2011-11-25 16:03 0之前我试过给Phi加exact_type不行,那如果像C2一样 ... -
别测空循环
2011-06-23 21:56 5271今天有朋友提到一个叫 ReflectASM的库,为Java环境 ... -
javac在编译创建内部类对象时生成的奇怪的getClass()调用是什么?
2011-06-14 22:17 4264有人问下面这段代码里,main()方法里的outer.new ... -
confluence property
2011-06-08 20:41 0http://en.wikipedia.org/wiki/Co ... -
JIT编译找不到类?
2011-05-09 22:28 5218今天开始Sun的老blog真的搬迁了,从blogs.sun.c ... -
几个简答题
2011-01-10 16:08 2465某题目 写道 龙书 写道In addition to a c ... -
循环中的字符串拼接的优化
2010-12-09 20:46 0public class StringConcatDemo { ... -
Velocity模板的编译
2010-11-15 14:49 0http://ecee.colorado.edu/ecen45 ... -
ANTLR里迭代子规则的一个注意点
2010-09-27 15:31 3614这几天在休假在家,有空的时候在用ANTLR 3.2来写D 2. ...
相关推荐
OpenGL ES 是一种针对嵌入式设备的图形处理标准,它在Android等移动平台上广泛用于创建复杂的3D图形和视觉效果。本主题将深入探讨如何在OpenGL ES中实现立方体贴图,这是一种将六个不同图像分别映射到立方体六个面的...
Filament立方体贴图是一种在3D图形渲染中广泛使用的技术,用于模拟环境光照效果,它由六个正方形纹理图像组成,分别对应立方体的六个面。这个资源利用Filament库来实现立方体贴图的应用,提供了丰富的视觉效果。...
首先,天空盒(Skybox)是一种特殊的立方体纹理,由六张贴图组成,分别对应立方体的六个面:前、后、左、右、上、下。这六张贴图通常都是全景图像,即360度环绕的视角,可以是真实世界的照片,也可以是计算机生成的...
160张图详细讲解Docker部署前后端项目.docx160张图详细讲解Docker部署前后端项目.docx160张图详细讲解Docker部署前后端项目.docx160张图详细讲解Docker部署前后端项目.docx160张图详细讲解Docker部署前后端项目.docx...
本资源使用 Mesh、ShaderProgram、Shader 实现立方体贴6张图,效果详见博客→https://zhyan8.blog.csdn.net/article/details/134609777
30张图,详细描述了中国目前金融体系架构情况,可以比较高阶性掌握目前的金融体系。
1000张图故事连接 七田真1000张图故事连接 七田真1000张图故事连接 七田真1000张图故事连接 七田真1000张图故事连接 七田真1000张图故事连接 七田真1000张图故事连接 七田真1000张图故事连接 七田真1000张图故事连接...
本项目“仿Instagram贴标签显示效果_显示多张图_你值得拥有”是针对这一功能进行的二次开发,旨在帮助开发者实现类似Instagram的应用特性。 首先,我们要理解这个项目的核心功能: 1. **带标签的多张图片发布**:...
在Unity中,天空盒通常是由六个立方体贴图组成的,分别对应于立方体的六个面:前、后、左、右、上、下。这些贴图图像可以是真实拍摄的照片,也可以是精心绘制的艺术作品,甚至可以是动态变化的环境效果,如日出、...
这个“星空天空盒子”资源是专为在 three.js 环境下使用的,提供了六张图来模拟逼真的天空背景,为3D场景添加一种沉浸式的视觉效果。 天空盒子(Skybox)是一种常见的技术,用于创造环境背景,给人一种无限延伸的...
【二建公路】10-XT-实操必识24张图.rar 是一个压缩包文件,主要针对的是二级建造师考试中的公路工程实务部分。这个压缩包包含了一个名为【二建公路】10-XT-实操必识24张图.pdf 的文档,根据其名称我们可以推测,这份...
unity之uv贴图画圆弧,圆弧面,不规则图形 实现各种贴图想要的效果
于是,我花了几周的时间来学习Docker的工作原理,更确切地说,是关于Docker统一文件系统(the union file system)的知识,然后回过头来
转速电流双闭环,无传感器无刷直流电机Simulink模型: 第一张图为转速,转矩 第二张图为反向电动势 第三张图为三相电流
在本教程中,我们将深入探讨"50张图渲染教室第四期_夜景技巧",这是一个专注于教大家如何渲染出令人震撼的夜景图像的课程。这个教程特别适合那些希望提升自己在3D渲染领域技能的初学者和爱好者。通过50个不同场景的...
总结一下,Python PyEcharts 提供了丰富的图表类型和灵活的布局方式,使得在一个文件中绘制多张图变得简单。`Grid`和`Overlap`类是实现这一功能的关键。通过它们,我们可以自由地组合和定位图表,以创建出具有视觉...
第一张图为转速,转矩 第二张图为反向电动势 第三张图为三相电流 ,转速电流双闭环; 无传感器无刷直流电机; Simulink模型; 转速转矩图; 反向电动势图; 三相电流图。,无传感器无刷直流电机Simulink模型:转速电流双...
在描述中提到的“10分钟1万张图轻松搞定”,表明了这个工具或方法的高效性。批量处理可以避免手动逐一添加水印的繁琐过程,显著节省时间和精力。 批量加水印的步骤一般包括以下几个关键点: 1. **选择工具**:市面...
windows也自带截图,但是还是不够有效率,Snipaste 这款软件可以轻松截图,并且可以放在你屏幕上,比如你需要对比代码,两个页面切换来切换去是不是很浪费力气,你这时只需要按下F1,把你需要对照的地方截图下来,他...
标题中的“JQ 多张图的无缝滚动”指的是使用jQuery库实现的一种图片轮播效果,它能够让多张图片在用户眼前连续、平滑地滚动,营造出一种无间隙的视觉体验。这种效果常见于网站的首页展示或者产品介绍部分,能够吸引...