Red语言入门(2)—— 代码结构和求值顺序

原创 2015年03月16日 09:58:53

前面讲到,Red语言非常简单易学。本文要介绍的是Red源代码文件结构和程序的求值顺序。

  1. 代码文件必须以Red []开始。
  2. 代码用空白分割,不需要行终止符。
  3. 求值顺序总是从左到右,数学运算符没有优先级的分别。
  4. 注释以分号; 或函数comment开始。

1. 文件后缀和文件头

Red代码文件后缀为 *.red 。而且每一个代码文件的开头必须包含文件头,一般形式如下:

Red []
可以在其中放入一些信息:
Red [
    Title:   "Description"
    Author:  "Qingtian Xie"
    File:    %filename.red
    Type:    'library
    Tabs:    4
    Rights:  "Copyright (C) 2015 Qingtian Xie. All rights reserved."
]

很多编程语言虽然没有强制要求文件头,但是作为一种良好的编程规范,程序员们往往都会在源代码文件中加入文件头信息。Red将其纳入语言规范的一部分,对其功能进行了增强,不仅仅只是提供一些描述信息。后面我们需要用到它的时候会详细介绍。

2. 空白

和大部分语言不同的是,Red代码不需要行终止符,只需要用空白(空格,制表符或换行符等)分割就行了,所以你可以把代码写成各种各样的形式。比如这样:

money: 100
if positive? money [
    print "买!买!买!"
]
或者这样:
money: 100 if positive? money [print "买!买!买!"]
或者这样:
comment {
    下面的程序很丑
    虽然它也能执行
}
money: 
100 
if 
positive? 
money 
[
    print "买!买!买!"
]

3. 求值顺序

Red表达式求值顺序是从左到右的,所有的数学运算符的优先级都一样。唯一的例外是,中缀运算符的优先级高于前缀运算符。圆括号可以改变求值顺序。

print 1 + 2       ; 先对中缀运算符`+`求值
1 + 2 * 3         ; 结果是9,而不是6
3 * (2 - 1)       ; 括号内的表达式先求值,结果3

所有运算符的优先级都一样,对有编程经验的同学来说,可能会有些不习惯。不过这无论是对编译器还是对程序员来说,都是一种简化。使用一段时间之后,你会渐渐适应并且喜欢上这个特性的,因为你再也不用去记忆一堆优先级了。

4. 注释

单行注释: 单行注释以分号( ; )开始。

多行注释: 使用`comment`函数,`comment`后的第一个Red值会被注释掉。

版权声明:本文为博主原创文章,转载请注明出处。

Red语言入门(1)—— 第一个Red程序

第一个Red程序
  • qtxie
  • qtxie
  • 2015年03月16日 09:48
  • 1663

D语言游戏编程(6):D语言基础之Arrays

以下是D语言数组的一些演示代码:import std.stdio;void main()...{    tryArrays();}void tryArrays()...{    // 指针和C语言的类...
  • yanonsoftware
  • yanonsoftware
  • 2007年01月11日 17:58
  • 1142

C++ - 表达式求值顺序

在C++里,表达式求值顺序一直是一个大坑,这是由于为了给编译器更大的优化空间,C++对表达式的求值做了许多非常灵活的规定(其实就是不规定,编译器愿意怎么实现都可以)。这些灵活的规定也给C++带来了许多...
  • fefe82
  • fefe82
  • 2014年07月15日 22:35
  • 2943

D语言学习笔记(1)——编译和运行环境以及“Hello World”

最近在CSDN上看到有提到一个D语言,仔细看了一下网上的资料之后,发现这个确实是个好东西! 这个语言集合了C、java和一些脚本语言如ruby的很多优点,同时抛弃了很多C++的缺点。感觉最直接的,一个...
  • yyquick
  • yyquick
  • 2007年10月23日 17:38
  • 582

C++后继有人——D语言

  D语言是什么?  D语言是由Digital Mars公司开发的编程语言,起因是为了改进C++。它与C二进制兼容(不完全),可编译为本地码,有GC也可手动管理内存,语法上借鉴多种语言,模板则在...
  • sidely
  • sidely
  • 2014年10月16日 10:28
  • 585

关于表达式中++,--的求值顺序(顺序点)

若一个表达式只求值,而为改变环境,就说该表达式是引用透明的(如cout
  • qq_15188017
  • qq_15188017
  • 2016年09月22日 19:14
  • 347

表达式求值顺序潜在的缺陷

 C++primer 第124页一问题: C++语言没有明确规定大多数二元运算符的求值顺序,给编译器优化留下了余地,这种策略实际上是在代码生成效率和程序潜在缺陷之间进行了权衡,...
  • wmaoshu
  • wmaoshu
  • 2015年11月30日 17:12
  • 588

实参求值顺序及参数间的数据传递

为了知道函数调用过程中实参的求值顺序、形参与实参间数据传递的具体操作及系统的内存分配,我参照谭浩强《c程序设计》(第三版)中P162,例8.4进行了实验,以下是c语言与对应反汇编的程序及分析:#inc...
  • thriveluo
  • thriveluo
  • 2015年07月22日 15:54
  • 336

操作符的优先级和求值顺序——C语言

1.操作优先级:()  []  ->  .  L-R!  ~  ++  --  -  (type)  *  &  sizeof  R-L*  /  %  L-R+  -  L-R>>    =  L-...
  • shijiemazhenda
  • shijiemazhenda
  • 2011年03月08日 14:21
  • 1319

D语言中的函数

 函数虚函数所有的非静态非私有函数都是虚函数。这听起来也许低效,但是因为D编译器在生成代码时知道所有的类层次结构,所有未被重载的函数可以被优化为非虚函数。事实上,因为 C++ 程序员倾向于“在不确定时...
  • uframer
  • uframer
  • 2005年02月14日 01:21
  • 3105
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Red语言入门(2)—— 代码结构和求值顺序
举报原因:
原因补充:

(最多只允许输入30个字)