王朝百科
分享
 
 
 

Nuva

王朝百科·作者佚名  2009-12-27  
宽屏版  字体: |||超大  

Nuva语言是一种面向对象的动态脚本语言。Nuva对应汉语的女娲一词。女娲是中国上古时代的神话传说人物。

1Nuva语言的设计目的

Nuva语言的设计目的是用于基于模板的代码生成。除了用于代码生成领域外,Nuva语言也能用于开发应用程序,如文本和数据处理、GUI应用程序等。

2 Nuva语言特点

2.1 语法简单灵活

Nuva语言采用类似伪码的语法风格,结构之间可以任意嵌套,关键字和运算符兼容大部分现有的编程语言,非常容易学习。

<.

if (a = b && c == d or e <> f)

?? foo()

function foo()

Result = 'foo'

end function

end if

.>

2.2 动态的,无类型约束

Nuva语言采用动态类型,使用时不需声明类型,赋值计算时自动进行类型转换,如下:

<.

var a = '1'

a ++

?? 'a' ~ a

// 结果为: a2

.>

2.3 支持面向对象

Nuva语言支持面向对象的编程方法,支持继承性和多态性。

2.4 自动垃圾回收

Nuva语言支持自动垃圾回收,程序员不需显式释放其所创建的对象。

2.5 模板专用的语言元素

Nuva语言为模板增加了专用的语言元素,方便模板的编写。

<. | .> | [. | .] 模板标记可以混合配对使用,对于格式要求很严格的场合非常有用。

[.='Hello, Nuva!'.]

<.='Hello, Nuva!'.>

[.='Hello, Nuva!'.>

<.='Hello, Nuva!'.]

凡[.之前的所有空白字符原样输出,.]之后的所有空白字符(包括换行)也原样输出;

如果行首到<.之间均为空白字符,则该部分空白字符不输出,否则原样输出;

如果.>到行尾之间均为空白字符,则该部分空白字符和换行不输出,否则也原样输出。

Nuva语言特有的file和assign结构能够非常方便的对输出进行组合、分解,从而方便了模板的编写。

3 Nuva虚拟机特点

3.1 内置了正则表达式引擎

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

3.2 内置了 O/R Mapping 引擎

Nuva虚拟机内置了 O/R Mapping 引擎,可以通过面向对象的方式直接存取数据库架构和数据。

3.3 内置了基于HTML/XML的界面引擎

Nuva虚拟机内置了基于 HTML/XML 的界面引擎,能够方便的编写 GUI 应用程序,典型的例子就是 Macrobject CodeAuto 代码生成器。

4 Nuva语言代码示例

4.1 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();

.>

4.2 foreach | O/R Mapping

<.

function Foreach_Demo()

// Load Schema from a Xml file

var schema = System.Data.LoadSchema(

System.Path.ProjectPath ~ '..NorthwindNorthwind.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

.>

4.3 file | 生成文件

<.

function File_Demo()

??

~ '--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

??

~ '--Read file dynamically and Output here--'

file()

FileName = System.Path.ProjectPath ~ 'outputemp.target'

end file

// Delete file

System.File.Delete(System.Path.ProjectPath ~ 'outputemp.target')

end function

.>

4.4 assign | 捕获输出

<.

function Assign_Demo()

// 'Result' assigned from the output in the assign statement

assign(Result).]

Generate Text ... @[.=System.Now.] ...

<.end assign

end function

.>

4.5函数|递归调用

<.

/*--------------------------------------------------------

Factorial

--------------------------------------------------------*/

function Factorial ( N )

if (N <= 1)

Result = 1;

else

Result = N * Factorial(N - 1); // Recursion Call

end if;

end function;

.>

4.6 类 | 多态性

<.

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

.>

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
如何用java替换看不见的字符比如零宽空格&#8203;十六进制U+200B
 干货   2023-09-10
网页字号不能单数吗,网页字体大小为什么一般都是偶数
 干货   2023-09-06
java.lang.ArrayIndexOutOfBoundsException: 4096
 干货   2023-09-06
Noto Sans CJK SC字体下载地址
 干货   2023-08-30
window.navigator和navigator的区别是什么?
 干货   2023-08-23
js获取referer、useragent、浏览器语言
 干货   2023-08-23
oscache遇到404时会不会缓存?
 干货   2023-08-23
linux下用rm -rf *删除大量文件太慢怎么解决?
 干货   2023-08-08
刀郎新歌破世界纪录!
 娱乐   2023-08-01
js实现放大缩小页面
 干货   2023-07-31
生成式人工智能服务管理暂行办法
 百态   2023-07-31
英语学习:过去完成时The Past Perfect Tense举例说明
 干货   2023-07-31
Mysql常用sql命令语句整理
 干货   2023-07-30
科学家复活了46000年前的虫子
 探索   2023-07-29
英语学习:过去进行时The Past Continuous Tense举例说明
 干货   2023-07-28
meta name="applicable-device"告知页面适合哪种终端设备:PC端、移动端还是自适应
 干货   2023-07-28
只用css如何实现打字机特效?
 百态   2023-07-15
css怎么实现上下滚动
 干货   2023-06-28
canvas怎么画一个三角形?
 干货   2023-06-28
canvas怎么画一个椭圆形?
 干货   2023-06-28
canvas怎么画一个圆形?
 干货   2023-06-28
canvas怎么画一个正方形?
 干货   2023-06-28
中国河南省郑州市金水区蜘蛛爬虫ip大全
 干货   2023-06-22
javascript简易动态时间代码
 干货   2023-06-20
感谢员工的付出和激励的话怎么说?
 干货   2023-06-18
 
>>返回首页<<
 
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有