- 浏览: 3053135 次
- 性别:
- 来自: 海外
文章分类
- 全部博客 (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分享的概要
为什么会有这东西呢?请看这边:LanguageProvider跑哪里去了?。我很“高兴”的发现我把日期的May看成Mar了,于是错过了好几个更新信息。呜呜。
错过的其中一个信息就是荒井省三对他所作的简单DLR语言的例子对DLR Beta 2的更新。结果我傻乎乎的自己把那个例子针对change set 32648做了次更新。
诶,既然做了还是发出来吧。虽然一发出来就是过时的东西……
注意:下面的代码包里没有包含DLR的代码。请自行从IronPython的源码发布页面下载change set 32648的源码来得到对应版本的DLR。
更新点:(相对原始版本的)
1、命名空间变更。有部分DLR类从Microsoft.Scripting转移到了Microsoft.Scripting.Runtime里。
2、OptionsParser类的构造器参数有改变。受此影响MyCalcOptionsParser的构造器添加了context参数。
3、获取LanguageContext时不再通过ScriptDomainManager,而是像这样:
Program.cs: MyCalcConsole.Initialize()
4、不再直接使用ScriptDomainManager之后,MyCalcHelper类中的Print方法的参数也相应更新:
5、应对helper的变更,为Print类中Ast.Call()添加context参数。同时,去除Print类的Generate方法中的Statement包装,直接返回Expression。
这里我没弄明白作者原本为什么会写上了这个包装,但作者自己似乎也发觉这个包装没用而在后来的更新中将其去除了。
7、将原本用到CodeBlock的地方全部更新为使用LambdaExpression。同时,为了生成LambdaExpression,需要用到LambdaBuilder;用Ast.Lambda()来得到LambdaBuilder。
8、把所有Microsoft.Scripting.Ast命名空间用DlrAst的别名代替,将没有使用的命名空间的using语句去除,并且对所有源代码做了适合我自己的习惯的格式化。
9、在Token类里添加了一个静态成员_empty,当需要空token的时候直接返回这个单一实例(而不重复构造空token)。
==============================================================================
以上的一些更改在DLR Beta 2中已经不再适用。例如说ConsoleHost类不再拥有Initialize()方法,换为CreateEngine()方法,并且增加了CreateCommandLine()。另外一个很重要的变化是工厂类Microsoft.Scripting.Ast.Ast被废除,其中的工厂方法都被整合到了Microsoft.Scripting.Ast.Expression(也就是DLR的Ast体系的基类)中。
==============================================================================
荒井省三的blog上使用DLR制作一个简单语言系列:
簡単な言語の作り方1
簡単な言語の作り方2
簡単な言語の作り方3
簡単な言語の作り方4
簡単な言語の作り方5
簡単な言語の作り方-まとめ-
DLRで簡単な言語を作る -ベータ1用に修正しました-
DLR beta2 を使ったホスティング
==============================================================================
顺便对荒井省三针对DLR Beta 2的更新也做了类似的一些适合我自己习惯用的变更,顺便发上来吧。
错过的其中一个信息就是荒井省三对他所作的简单DLR语言的例子对DLR Beta 2的更新。结果我傻乎乎的自己把那个例子针对change set 32648做了次更新。
诶,既然做了还是发出来吧。虽然一发出来就是过时的东西……
注意:下面的代码包里没有包含DLR的代码。请自行从IronPython的源码发布页面下载change set 32648的源码来得到对应版本的DLR。
更新点:(相对原始版本的)
1、命名空间变更。有部分DLR类从Microsoft.Scripting转移到了Microsoft.Scripting.Runtime里。
2、OptionsParser类的构造器参数有改变。受此影响MyCalcOptionsParser的构造器添加了context参数。
3、获取LanguageContext时不再通过ScriptDomainManager,而是像这样:
Program.cs: MyCalcConsole.Initialize()
this.Options.ScriptEngine = Environment.GetEngine( typeof( MyCalcLanguageContext ) );
4、不再直接使用ScriptDomainManager之后,MyCalcHelper类中的Print方法的参数也相应更新:
public static void Print( CodeContext context, object o ) { context.LanguageContext.DomainManager. SharedIO.OutputWriter.WriteLine( o ?? "<null>" ); }
5、应对helper的变更,为Print类中Ast.Call()添加context参数。同时,去除Print类的Generate方法中的Statement包装,直接返回Expression。
protected internal DlrAst.Expression Generate( ) { return DlrAst.Ast.Call( typeof( Runtime.MyCalcHelper ).GetMethod( "Print" ), DlrAst.Ast.CodeContext( ), DlrAst.Ast.ConvertHelper( _exp, typeof( object ) ) ); }
这里我没弄明白作者原本为什么会写上了这个包装,但作者自己似乎也发觉这个包装没用而在后来的更新中将其去除了。
7、将原本用到CodeBlock的地方全部更新为使用LambdaExpression。同时,为了生成LambdaExpression,需要用到LambdaBuilder;用Ast.Lambda()来得到LambdaBuilder。
8、把所有Microsoft.Scripting.Ast命名空间用DlrAst的别名代替,将没有使用的命名空间的using语句去除,并且对所有源代码做了适合我自己的习惯的格式化。
9、在Token类里添加了一个静态成员_empty,当需要空token的时候直接返回这个单一实例(而不重复构造空token)。
==============================================================================
以上的一些更改在DLR Beta 2中已经不再适用。例如说ConsoleHost类不再拥有Initialize()方法,换为CreateEngine()方法,并且增加了CreateCommandLine()。另外一个很重要的变化是工厂类Microsoft.Scripting.Ast.Ast被废除,其中的工厂方法都被整合到了Microsoft.Scripting.Ast.Expression(也就是DLR的Ast体系的基类)中。
==============================================================================
荒井省三的blog上使用DLR制作一个简单语言系列:
簡単な言語の作り方1
簡単な言語の作り方2
簡単な言語の作り方3
簡単な言語の作り方4
簡単な言語の作り方5
簡単な言語の作り方-まとめ-
DLRで簡単な言語を作る -ベータ1用に修正しました-
DLR beta2 を使ったホスティング
==============================================================================
顺便对荒井省三针对DLR Beta 2的更新也做了类似的一些适合我自己习惯用的变更,顺便发上来吧。
- MyCalc_32648.zip (406.3 KB)
- 描述: 针对IronPython change set 32648中的DLR而对荒井省三所制作的简单语言的例子的更新
- 下载次数: 2
- MyCalc_B2_fx.zip (8.6 KB)
- 描述: 针对Beta 2的版本,稍微做了点修改
- 下载次数: 4
发表评论
-
对象的重量
2011-08-21 17:15 0http://domino.research.ibm.com/ ... -
IronRuby 1.1系的自适应执行(解释/编译的混合模式)
2010-10-29 14:12 0IronRuby自身的compiler部分基本上还是保持不变的 ... -
Expression Tree中的Constant被编译后放到哪里去了?
2010-02-28 16:21 0Expression.Constant()可以放任意对象进去作 ... -
拿ETv2来生成方法体的两种阳春办法
2009-09-22 06:03 0System.Type System.Reflection.E ... -
C#的语言结构到Expression Tree v2的映射
2009-05-21 03:11 0在.NET Framework 4 Beta 1中,Expre ... -
.NET Framework 4.0 Beta 1里的Expression Tree一例
2009-05-20 10:23 2934既然装上了Visual Studio 20 ... -
用Iron-*语言来探索.NET
2009-05-15 23:21 3430刚才写代码的时候又是在不停查文档,甚是心烦。一怒,拿出Iron ... -
自己关于VM的帖的目录
2009-04-07 14:02 69655JavaEye的blog系统只允许把帖放到单一类别下,而不能用 ... -
MIX09上关于DLR解释器消息的一段听记(3月26更新IronPython 2.6A1消息)
2009-03-23 21:09 1864John Lam在MIX 09上做了一个关于动态语言与Silv ... -
答复: C# 4 DLR & Java 7 Invokedynamic
2009-03-22 17:12 3035原帖地址:C# 4 DLR & Java 7 Invo ... -
通过get或set方法的MethodInfo获得相应的PropertyInfo的方式
2009-02-01 22:41 3564在IronPython 46307的MemberExpress ... -
同一个ParameterExpression被用在不同嵌套层次的lambda里会怎样?
2009-01-16 00:22 2613今天写代码的时候不小心写错了几个地方,把同一个Paramete ... -
CodePlex上放出DLR v0.9 beta
2008-11-27 14:34 2028之前提到过DLR会在CodePlex上拥有自己独立的项目页面, ... -
IronRuby (r170)中respond_to?的实现
2008-11-13 23:29 0IronRuby.Libraries/Builtins/Ker ... -
DLR中的binder的演变
2008-11-11 23:29 0从模糊的“标准消息”转变为明确完整的MetaObject Pr ... -
DLR即将在Codelex开设独立的站点
2008-10-29 23:01 1468DLR官网:Dynamic Language Runtime ... -
IronPython放出RC1
2008-10-23 09:59 1858下载链接:http://www.codep ... -
新的DLR tree改变了Visitor的设计
2008-10-09 00:35 1634之前的一帖提到过访问DLR tree所使用的visitor的实 ... -
对比DLR
2008-10-08 04:32 0Managed JScript: // // AST: E ... -
目前DLR执行一棵DLR tree的过程(针对10月3日的ChangeSet 41087)
2008-10-07 01:46 1816先在Microsoft.Scripting.Actions.C ...
相关推荐
《.NET 4 的 DLR 高级编程》是一本深度探索 .NET 动态语言运行时(Dynamic Language Runtime,简称 DLR)的专著,由 Chaur Wu 撰写,出版于 2010 年 11 月。这本书针对 .NET 4 开发者,特别是那些对在 .NET 平台上...
《Pro DLR in .NET 4》这本书深入探讨了.NET框架4中的动态语言运行时(DLR),这是一个关键的技术,它极大地增强了.NET平台对动态语言的支持。DLR是.NET Framework 4的一个重要组成部分,它的引入使得.NET应用程序...
dlr-618最新升级固件
AB PLC设备级环网交换机应用案例http://u.download.csdn.net/images/btn_submit.png
dlr dem是德国的免费dem数据,不是全覆盖的,但精度比一般的公开的30米dem要高;地图、遥感、Gis等相关行业使用,网盘链接
DLR 是由AWS SageMaker Neo、TVM或Treelite编译的深度学习模型和决策树模型的紧凑型通用运行时。DLR 使用 TVM 运行时、Treelite 运行时、NVIDIA TensorRT,并且可以包含其他特定于硬件的运行时。DLR 提供统一的 ...
Pro DLR in .NET 4 英文无水印pdf pdf所有页面使用FoxitReader和PDF-XChangeViewer测试都可以打开 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除
可莱特S125DLR 声光组合LED反射镜旋转警示灯产品目录pdf,特点:LED反射镜旋转警示灯和信号扬声器为一体的声光组合产品;采用本司独特的信号扬声器的内装构造;以小的外形能发出最大105dB/m的高音量;采用大功率发光...
对于"downward_dlr-19.6.0",我们可以假设它可能提供了针对动态语言的一些优化策略,比如内存管理、垃圾回收或者执行效率的提升。此外,它可能还包含了对Python解释器的扩展,允许开发者更高效地编写和运行Python...
当DIR619L语言不是简体中文时使用,需要进入web管理-维护
而DLR则是建立在CLR之上,为动态语言和C#中的动态类型特性提供支持。 C#中的`dynamic`关键字是DLR的核心,它使得变量的类型在运行时而不是编译时确定。当我们声明一个`dynamic`类型的变量时,编译器不会尝试进行...
3DsMax2009导出到Quest3d的.X文件插件_vrender2009.dlr