维基百科的 Nuva 语言介绍
← 目录
作者: 一了 <
[email protected]
> 日期: 2006-08-23 一句话总结: 维基百科,自由的百科全书
# 维基百科的 Nuva 语言介绍 Nuva编程语言 维基百科,自由的百科全书 跳转到: [导航](#column-one), [搜索](#searchInput) Nuva语言是一种面向对象的动态脚本语言。Nuva对应汉语的女娲一词。女娲是中国上古时代的神话传说人物。 目录 [隐藏] [1 Nuva语言的设计目的](#Nuva.E8.AF.AD.E8.A8.80.E7.9A.84.E8.AE.BE.E8.AE.A1.E7.9B.AE.E7.9A.84) [2 Nuva语言特点](#Nuva.E8.AF.AD.E8.A8.80.E7.89.B9.E7.82.B9) [2.1 语法简单灵活](#.E8.AF.AD.E6.B3.95.E7.AE.80.E5.8D.95.E7.81.B5.E6.B4.BB) [2.2 动态的,无类型约束](#.E5.8A.A8.E6.80.81.E7.9A.84.EF.BC.8C.E6.97.A0.E7.B1.BB.E5.9E.8B.E7.BA.A6.E6.9D.9F) [2.3 支持面向对象](#.E6.94.AF.E6.8C.81.E9.9D.A2.E5.90.91.E5.AF.B9.E8.B1.A1) [2.4 自动垃圾回收](#.E8.87.AA.E5.8A.A8.E5.9E.83.E5.9C.BE.E5.9B.9E.E6.94.B6) [2.5 模板专用的语言元素](#.E6.A8.A1.E6.9D.BF.E4.B8.93.E7.94.A8.E7.9A.84.E8.AF.AD.E8.A8.80.E5.85.83.E7.B4.A0) [3 Nuva虚拟机特点](#Nuva.E8.99.9A.E6.8B.9F.E6.9C.BA.E7.89.B9.E7.82.B9) [3.1 内置了正则表达式引擎](#.E5.86.85.E7.BD.AE.E4.BA.86.E6.AD.A3.E5.88.99.E8.A1.A8.E8.BE.BE.E5.BC.8F.E5.BC.95.E6.93.8E) [3.2 内置了 O/R Mapping 引擎](#.E5.86.85.E7.BD.AE.E4.BA.86_O.2FR_Mapping_.E5.BC.95.E6.93.8E) [3.3 内置了基于 HTML/XML 的界面引擎](#.E5.86.85.E7.BD.AE.E4.BA.86.E5.9F.BA.E4.BA.8E_HTML.2FXML_.E7.9A.84.E7.95.8C.E9.9D.A2.E5.BC.95.E6.93.8E) [4 Nuva语言代码示例](#Nuva.E8.AF.AD.E8.A8.80.E4.BB.A3.E7.A0.81.E7.A4.BA.E4.BE.8B) [4.1 Hello, Nuva!](#Hello.2C_Nuva.21) [4.2 foreach | O/R Mapping](#foreach_.7C_O.2FR_Mapping) [4.3 file | 生成文件](#file_.7C_.E7.94.9F.E6.88.90.E6.96.87.E4.BB.B6) [4.4 assign | 捕获输出](#assign_.7C_.E6.8D.95.E8.8E.B7.E8.BE.93.E5.87.BA) [4.5 函数 | 递归调用](#.E5.87.BD.E6.95.B0_.7C_.E9.80.92.E5.BD.92.E8.B0.83.E7.94.A8) [4.6 类 | 多态性](#.E7.B1.BB_.7C_.E5.A4.9A.E6.80.81.E6.80.A7) [5 外部链接](#.E5.A4.96.E9.83.A8.E9.93.BE.E6.8E.A5) [[编辑](/wikipedia/zh/w/index.php?title=Nuva%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80&action=edit§ion=1)] Nuva语言的设计目的 Nuva语言的设计目的是用于基于模板的代码生成。除了用于代码生成领域外,Nuva语言也能用于开发应用程序,如文本和数据处理、GUI 应用程序等。 [[编辑](/wikipedia/zh/w/index.php?title=Nuva%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80&action=edit§ion=2)] Nuva语言特点 [[编辑](/wikipedia/zh/w/index.php?title=Nuva%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80&action=edit§ion=3)] 语法简单灵活 Nuva语言采用类似伪码的语法风格,结构之间可以任意嵌套,关键字和运算符兼容大部分现有的编程语言,非常容易学习。 ``` <. if (a = b && c == d or e <> f) ?? foo() function foo() Result = 'foo' end function end if .> ``` [[编辑](/wikipedia/zh/w/index.php?title=Nuva%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80&action=edit§ion=4)] 动态的,无类型约束 Nuva语言采用动态类型,使用时不需声明类型,赋值计算时自动进行类型转换,如下: ``` <. var a = '1' a ++ ?? 'a' ~ a // 结果为: a2 .> ``` [[编辑](/wikipedia/zh/w/index.php?title=Nuva%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80&action=edit§ion=5)] 支持面向对象 Nuva语言支持面向对象的编程方法,支持继承性和多态性。 [[编辑](/wikipedia/zh/w/index.php?title=Nuva%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80&action=edit§ion=6)] 自动垃圾回收 Nuva语言支持自动垃圾回收,程序员不需显式释放其所创建的对象。 [[编辑](/wikipedia/zh/w/index.php?title=Nuva%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80&action=edit§ion=7)] 模板专用的语言元素 Nuva语言为模板增加了专用的语言元素,方便模板的编写。 ``` <. | .> | [. | .] 模板标记可以混合配对使用,对于格式要求很严格的场合非常有用。 ``` [.='Hello, Nuva!'.] <.='Hello, Nuva!'.> [.='Hello, Nuva!'.> <.='Hello, Nuva!'.] ``` 凡[.之前的所有空白字符原样输出,.]之后的所有空白字符(包括换行)也原样输出; 如果行首到<.之间均为空白字符,则该部分空白字符不输出,否则原样输出; 如果.>到行尾之间均为空白字符,则该部分空白字符和换行不输出,否则也原样输出。 Nuva语言特有的file和assign结构能够非常方便的对输出进行组合、分解,从而方便了模板的编写。 [[编辑](/wikipedia/zh/w/index.php?title=Nuva%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80&action=edit§ion=8)] Nuva虚拟机特点 [[编辑](/wikipedia/zh/w/index.php?title=Nuva%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80&action=edit§ion=9)] 内置了正则表达式引擎 Nuva虚拟机内置了正则表达式引擎,能够方便的进行文本处理。 ``` <. var text = System.File.Load('Regex_Test.nuva') foreach(str = text.RegexMatchs('\w+', )) ?? str end foreach .> ``` 输出如下的结果: ``` var text System File Load Regex_Test nuva foreach str text RegexMatches w str end foreach ``` [[编辑](/wikipedia/zh/w/index.php?title=Nuva%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80&action=edit§ion=10)] 内置了 O/R Mapping 引擎 Nuva虚拟机内置了 O/R Mapping 引擎,可以通过面向对象的方式直接存取数据库架构和数据。 [[编辑](/wikipedia/zh/w/index.php?title=Nuva%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80&action=edit§ion=11)] 内置了基于 HTML/XML 的界面引擎 Nuva虚拟机内置了基于 HTML/XML 的界面引擎,能够方便的编写 GUI 应用程序,典型的例子就是 [Macrobject CodeAuto 代码生成器](http://www.macrobject.com/cn/codeauto/index.htm)。 [[编辑](/wikipedia/zh/w/index.php?title=Nuva%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80&action=edit§ion=12)] Nuva语言代码示例 [[编辑](/wikipedia/zh/w/index.php?title=Nuva%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80&action=edit§ion=13)] Hello, Nuva! ``` <.. "Hello, Nuva!" Demo ..> <. //====================================== // Hello, Nuva! (1) //====================================== ?? 'Hello, Nuva!' /*====================================== Hello, Nuva! (2) ======================================*/ function HelloNuva() ?? "Hello, Nuva!"; end function HelloNuva(); /*====================================== Hello, Nuva! (3) ======================================*/ class Nuva() function Hello() ?? 'Hello, Nuva!'; end function end class var n = Nuva(); n.Hello(); .> ``` [[编辑](/wikipedia/zh/w/index.php?title=Nuva%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80&action=edit§ion=14)] foreach | O/R Mapping ``` <. function Foreach_Demo() // Load Schema from a Xml file var schema = System.Data.LoadSchema( System.Path.ProjectPath ~ '..\Northwind\Northwind.xobject' ); ?? '--------------------' ?? 'Tables Order by Name' ?? '--------------------' foreach(table = schema.Tables.OrderbyName) ?? table.Name end foreach ?? '---------------------------------' ?? 'Tables Filter by Name.Length < 10' ?? '---------------------------------' foreach(table = schema.Tables | table.Name.Length < 10) ?? table.Name end foreach end function .> ``` [[编辑](/wikipedia/zh/w/index.php?title=Nuva%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80&action=edit§ion=15)] file | 生成文件 ``` <. function File_Demo() ?? \r\n ~ '--Read file and Output here--' file('codeexamples.nuvaproj') end file // Read file and write to 'Target', overwrite it if exist file('codeexamples.nuvaproj', true) Target = 'temp.target' end file ?? \r\n ~ '--Read file dynamically and Output here--' file() FileName = System.Path.ProjectPath ~ 'output\temp.target' end file // Delete file System.File.Delete(System.Path.ProjectPath ~ 'output\temp.target') end function .> ``` [[编辑](/wikipedia/zh/w/index.php?title=Nuva%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80&action=edit§ion=16)] assign | 捕获输出 ``` <. function Assign_Demo() // 'Result' assigned from the output in the assign statement assign(Result).] Generate Text ... @[.=System.Now.] ... <.end assign end function .> ``` [[编辑](/wikipedia/zh/w/index.php?title=Nuva%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80&action=edit§ion=17)] 函数 | 递归调用 ``` <. /*-------------------------------------------------------- Factorial --------------------------------------------------------*/ function Factorial ( N ) if (N <= 1) Result = 1; else Result = N * Factorial(N - 1); // Recursion Call end if; end function; .> ``` [[编辑](/wikipedia/zh/w/index.php?title=Nuva%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80&action=edit§ion=18)] 类 | 多态性 ``` <. function Class_Demo() class ClassA() function Do() this.DynDo() end function function DynDo() ?? 'ClassA' end function end class class ClassB = ClassA() function DynDo() ?? 'ClassB' end function end class var c1 = ClassA() var c2 = ClassB() c1.Do() c2.Do() end function .> ``` [[编辑](/wikipedia/zh/w/index.php?title=Nuva%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80&action=edit§ion=19)] 外部链接 [Nuva语言官方主页](http://www.macrobject.com/cn/nuva_language/index.htm) - 可选(简体中文)或(英文) 取自"[https://secure.wikimedia.org/wikipedia/zh/wiki/Nuva%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80](https://secure.wikimedia.org/wikipedia/zh/wiki/Nuva%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80)" 本文来自《维基百科》,本文内容在GNU自由文档许可证下发布。 [页面分类(2)](/wikipedia/zh/w/index.php?title=Special:Categories&article=Nuva%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80): [程序设计语言](/wikipedia/zh/wiki/Category:%E7%A8%8B%E5%BA%8F%E8%AE%BE%E8%AE%A1%E8%AF%AD%E8%A8%80) | [脚本语言](/wikipedia/zh/wiki/Category:%E8%84%9A%E6%9C%AC%E8%AF%AD%E8%A8%80) ```