Nuva 语言的渊源(2)

Nuva 语言的渊源

    本文简要介绍了 Nuva 语言的渊源,主要包括 Nuva 语言的一些特色功能及其设计决策,说明 Nuva 语言缘何成为现在的样子,以及这些设计的考虑因素(其中也包括参考的其他编程语言,适合广大的编程语言爱好者阅读)。 

    Nuva 语言的介绍请参考 Nuva 语言官方主页

    (续上文)

    Nuva 语言采用 C++ 语言风格的注释,也分为单行注释和多行注释两种。本来也打算采用 # 作为单行注释,后来考虑 # 可以作为编译指令而予以保留。

    在 Nuva 语言中,两种注释可以互相“破坏”,谁先出现谁先有效,如下:

    <.
      /*
        // 多行注释  这个单行注释被包含在多行注释中,被“破坏”了
      */

      // /*
      //   多行注释
           call foo() // 这一行是代码
      // */
      // 上面的多行注释被单行注释所“破坏”,代码行因此变得有效了
    .>

    Nuva 语言的字符串同时支持单引号('')和双引号(""),并且二者无任何差别。

    Basic 语言的字符串采用双引号,单引号则只能用作注释;Pascal 语言采用单引号,双引号则弃而不用,颇为可惜;C 风格(诸如 C++、Java、C# 等)的语言采用双引号用作字符串(引号内支持字符转义),单引号用于单个字符;Perl 语言支持两种引号,双引号内支持宏替换和字符转义,单引号则可以支持多行文本。

    Nuva 语言在两种引号内都可以包含多行文本(C# 语言采用 @ 也可以支持多行文本),这样书写起来更为方便。同样考虑到书写的方便(也包括可读性),Nuva 语言在字符串内不支持转义,而采用单独的转义字符,如 \t\r\n 等,这样不用担心字符串内的 \ 问题(类 C 语言包括 JavaScript 等在这方面都比较麻烦,特别在写文件路径和注册表路径的时候真的很麻烦)。

    Nuva 语言的两种引号的字符串内可以相互包含另一种引号,所以书写方便,可读性也好。Nuva 语言的字符串示例如下:

    <.
      var a1 = 'a1'
      var b1 = "b1"

      var m1 = 'a1
                b1
                c1';  // 变量 m 的内容包含了所有的换行和空格

      var s1 = '"'
      var s2 = "'"

      var s3 = 'a' ~ \t ~ '"' ~ a1 ~ '"'
                   ~ 1 ~ true ~ \r\n;

                      // ~ 是 Nuva 语言的字符串连接运算符,并且类型可以自动转换
                      // Nuva 语言的代码行可以任意换行,直到自然结束
    .>

    在 Nuva 语言中,单行嵌入代码还可以采取一下简写方式,以提高可读性,示例如下:

    <.?a.>
    <.=a.>

    Nuva 语言的打印语句是 ? (?= 也行)或 ??,但是在单行嵌入代码中,也可以采用 =,类似于 ASP 和 ASP.NET。

    单行嵌入代码中的结构结束也可以简写,如下:

    <.foreach(fileName = System.File.Find(path ~ '*.*', 'F', true)
                       | not fileName.EndsWith('.nuvaproj')
             )
    .>
      <.if(a = b).>

        这儿输出文本

      <./if.>
    <./foreach.>

    上面的 if 结构在单行嵌入代码中的结束标记可以不用 <.end if.>,而直接简写为 <./if.>(foreach 也类似),类似于 XML 语言。

    Nuva 语言的渊源(3)之 惰性计算

posted on 2006-08-21 19:27  Wisdom-zh  阅读(455)  评论(0编辑  收藏  举报

导航