Skip to content

01 Introduction

Hello World in YIAN

// hello.an
from std.core.io import print

i32 main() {
    print("Hello World!\n")
    return 0
}

通过下面的命令的将以上源代码编译成可执行文件:

./scripts/yian_compiler.py hello.an

编译成功后会在 tests/yian_workspace/bin 目录下生成一个名为 out 的可执行文件,运行它:

./tests/yian_workspace/bin/out

你将会在终端看到输出:

Hello World!

Explanation

  • from std.core.io import print: 从标准库 stdcore.io 模块中导入 print 函数, 用于在终端输出文本.
  • i32 main() { ... }: 定义一个返回类型为 i32 的函数 main, 在 YIAN 中, main 函数是程序的入口点.
  • 出于方便的考虑, YIAN 直接使用 i32 作为 main 函数的返回类型, 这与 C/C++ 中的约定相同.
  • print("Hello World!\n"): 调用 print 函数输出字符串 "Hello World!\n" 到终端.
  • print 是定义在 std.core.io 模块中的一个函数, 用于在终端输出文本, 目前仅支持输出 str 类型的参数.
  • return 0: 从 main 函数返回 0, 表示程序成功执行完毕.

Program Structure

YIAN 程序的结构由以下几个部分组成:

  • 模块导入: 使用 from ... import ... 语法导入所需的函数类型(不支持导入变量和模块)
    • 亦可使用 import ... 来进行导入
    • 允许使用 as 关键字为导入的函数或类型指定别名
  • 函数定义: 使用 <return_type> <function_name><type_parameters>(<parameters>) { ... } 语法定义函数
    • 如果返回类型为 void, 则可以省略返回类型
    • 类型参数用于定义泛型函数, 详见泛型章节
    • 参数列表由逗号分隔的参数组成, 每个参数由 <type> <name> 组成
    • 函数体由花括号 { ... } 包围, 内部包含若干语句
  • 变量声明: YIAN 暂不支持全局变量
  • 自定义类型: YIAN 支持三种自定义类型: struct, enum 和 trait, 详见类型系统章节
  • 类型别名: 使用 typedef <new_type> = <existing_type> 语法定义类型别名
  • 实现方法: 使用 impl <type> { ... }impl <trait> for <type> { ... } 语法为类型实现方法, 详见方法章节
  • 注释: 使用 // 进行单行注释