基础语法

第一个Silk程序

像大多数语言一样,第一个入门代码便是”Hello World“,以下代码便是输出Hello, World!

main()
{
    print("Hello, World!");
}


Silk程序主要由以下几部分组成:
    include命令, 函数,类, 变量, 语句(包含关键字,标识符), 注释 。每一个Silk程序需要通过主函数main执行,所以执行程序中必须包含main()函数。
下面是一个结构完整的程序:
//包含基类的文件
#include "HttpServer.si"

//建立一个新类
class CMyHttpServer(port)
{
    //继承自基类
    self=CHttpServer(port);
}

//获取当前目录函数
func get_curdir()
{
    curfile=_getargv()[0];
    pos=curfile.rfind("\\");
    if(pos>=0)
        return curfile.substr(0,pos+1);
    return "";
}
    
main()
{
    server=CMyHttpServer(80);
    server.set_defaultdir(get_curdir()+"webpages","index.html");
    server.run();
}


1. 关键字,Silk的保留关键字,和C类似:        
main, if, else, while, break, return, continue, for, null, 
true, false, func, class, self, global, static 
包括下列内置函数:
_input, _getargv,_copy, _loadlib, _freelib, _calllib, _createthread, _createlock, _lock, _unlock, 
_len, _str, _int, _float, _type, _fun , print , printf , sprintf 


2. 标识符(变量名,函数名,类名等)的定义规则,和C类似:
  •  任何标识符的第一个字符必须是字母表中字母或下划线 _
  •  标识符的其他的部分由字母、数字和下划线组成
  • 标识符对大小写敏感
  • 标识符不能与上面的关键字重名
 合法标识符例子:strName, _nCount, str_name2
 非法标识符例子:Name#12, my-Name, 2Name, if, Jack&Jones, N.a.m.e

3. 分号
分号是语句的结束符,用来分割不同的语句:
strName="wang";
nNum=1

原则上每个语句必须以分号结束,类和函数定义的结尾,分号可以省略。
对于函数或组合语句(if, while, for)的结尾语句,分号可以省略,但为了统一,不推荐这么做。

4. 注释
 和C类似, 单行注释,以//开头,
 多行注释,以/*开头,以*/结尾:
/* 
这是一个计算斐波那契数列的函数 
参数: n
返回值: 斐波那契数 
*/
func Fibonacci(n)
{
    if (n == 0)
        return 0;
    else if (n <= 2)
        return 1;
    else
        return Fibonacci(n-1)+Fibonacci(n-2);//递归调用
}

main()
{
    //打印前20个斐波那契数列
    for(i=0;i<20;i++)
        print(Fibonacci(i));
}