每周源代码11 – LOLCode DLR版


[原文发表地址] The Weekly Source Code 11 – LOLCode DLR Edition

[原文发表时间] 2007-11-10 23:21

我在周五的PNP峰会主题演讲上做了一个长达30分钟的PPT,临近结束时提到了一些LOLCatsLOLCode.。倘若你对LOLCats不熟悉,那我要告诉你,他们基本来说就是一些很蠢的猫咪图片,会说l33tspeak这样的语言,好像额在泥的地下室杀了泥的同伴。(IM IN UR BASE KILLIN YUR D00DS)

这种语言已经演变成了叫做LOLCode的编程语言,现在已经至少有两个.NET实现了。Nick Johnson在Google Code上创建了第一个实现——LOLCode.NET

在我演讲的时候,我并不知道,与此同时,John Lam正在上传DLR团队自己的LOLCode实现。DLR团队出色的Martin Maly在去西班牙TechEd演讲的飞机上实现了LOLCode。

我自发地邀请John上台展示下LOLCode,他上台后展示了一个Fibonacci实现。

这个代码不容错过,原因有二。它是在相同的基本概念– LOLCode编译器下两个完全独立的实现。它们实现起来完全不一样。当然DLR团队把这个想象成一个动态语言,所以他们的实现是大胆创新的,也将是告诉你如何在DLR上做你自己的语言的良好启蒙。

   1: HAI
   2:  
   3: CAN HAS STDIO?
   4: VISIBLE "HAI WORLD!"
   5:  
   6: I HAS A CODE ITZ "CRAZY"
   7: VISIBLE CODE
   8:  
   9: I HAS A NUMBR
  10: LOL NUMBR R 2
  11: VISIBLE NUMBR TIEMZ 2
  12:  
  13: I HAS A FIB
  14: I HAS A A ITZ 1
  15: I HAS A B ITZ 0
  16:  
  17: VISIBLE "Fibonacci: "
  18: GIMMEH FIB
  19:  
  20: IM IN YR
  21:     VISIBLE B
  22:  
  23:     IZ FIB SMALR 1?
  24:         YARLY
  25:             GTFO
  26:     KTHX
  27:  
  28:     I HAS A TEMP ITZ A UP B
  29:     LOL A R B
  30:     LOL B R TEMP
  31:  
  32:     NERFZ FIB!!
  33: KTHX
  34:  
  35: CAN HAS System?
  36:  
  37: VISIBLE CurrentDirectory ON Environment ON System
  38: NJU Hashtable ON Collections ON System
  39: I HAS A HT ITZ IT
  40:  
  41: I HAS A DT
  42: LOL DT R DateTime ON System
  43: VISIBLE Now ON DT
  44:  
  45: COL Add ON HT WIT "LolCode" AN "Rulezz!!"
  46: VISIBLE COL get_Item ON HT WIT "LolCode"
  47:  
  48: COL Concat ON String ON System WIT "LolCode " AN "Rulezz!!"
  49: VISIBLE IT
  50:  
  51: KTHXBYE

为了让DLR团队的实现能够很好地在你自己的机器上运行,你要谨记以下几点:

1. 获取LOLCode源代码

2. 获取IronPython 2.0 Alpha 6

3. 获取Gardens Point Parser Generator (GPPG)

4. 获取Gardens Point Scanner Generator (GPLEX)。这就有点像C#的Lex和Yacc。打开Parser.y和Scanner.I以查看语言语法详情。

5. 确认PostBuild步骤指向正确的位置,确保Microsoft.Scripting.dll引用指向IronPython下载中的Microsoft.Scripting.dll。

clip_image002

希望你喜欢!如果你对这个不感兴趣,那就去看看DevConnections和PNPSummit上的MVC示例源代码

Comments (0)

Skip to main content