第 1 章:运行第一个程序

本章的目标是在终端看到一行 你好,豫言!。先创建程序代码和它所属的练习包,后续章节都在这个包里操作。

创建练习包

先完成快速开始中的工具安装和 make 豫构。然后在仓库根目录新建 教程练习 目录,把下面的内容保存为 教程练习/教程练习。包。豫

「名称」者『教程练习』也。
「所有者」者『豫言』也。
「版本」者『0.1.0』也。
「简介」者『保存入门教程的练习程序。』也。
「说明」者「典」【
    「汉语」者『包说明.汉语.md』也,
    「文言」者『包说明.文言.md』也,
】也。
「类型」者「典」【
    「种类」者『可执行文件』也,
    「入口」者『入口』也,
    「文件名」者『yy教程练习』也,
】也。
「依赖」者「列」【『标准库』】也。

包名要与文件名一致,这里是 教程练习。配置说明这个包生成可执行文件,从 入口。豫 开始,并使用标准库。这里沿用仓库的所有者“豫言”,依赖中的简写会选择同一所有者下的标准库。

当前包格式还要求两份说明文件。在同一目录创建 包说明.汉语.md,写入:

# 教程练习

用于运行豫言入门教程的示例。在仓库根目录构建教程练习包,再运行 yy教程练习。

再创建 包说明.文言.md,写入:

# 学豫言

此包存入门之例。于仓库根目录构之,乃行 yy教程练习。

包配置先照着填写即可。第七章会解释列表,第十章会解释包与模块;完整字段说明可查包系统

在同一目录新建 入口。豫,写入完整程序:

寻观「标准库」之书。

「打印行」于『你好,豫言!』。

第一行让当前文件能够直接使用标准库里的名称。第二行调用 「打印行」,把 『你好,豫言!』 作为参数传给它。

这里有三种值得先记住的写法:「打印行」 是函数名称,『……』 是字符串, 把参数交给函数。注意名称与字符串使用不同的括号。

构建,再运行

在仓库根目录执行:

./yy豫构 构建 教程练习 --输出 yy教程练习
./yy教程练习

第一条命令检查源码并生成可执行文件 yy教程练习,第二条命令运行它。输出应为:

你好,豫言!

修改源码后,需要重新构建,运行的程序才会包含修改。如果只想检查类型,可以执行:

./yy豫构 类型检查 教程练习

类型检查不会运行你的打印语句,因此不会输出问候语。后续章节继续使用这个练习包:替换 入口。豫 的内容,再执行构建和运行命令。

标点也是语法

每条顶层声明用中文句号 分隔。换行负责排版,不能代替句号。下面这段仍然是同一个程序,不过分行写更容易阅读:

寻观「标准库」之书。「打印行」于『你好,豫言!』。

如果构建失败,先检查文件位置、包名和标点。把 『你好』 写成 「你好」 时,编译器会尝试查找名叫“你好”的定义,不会把它当作文字。

动手修改

把输出文字改为自己的名字,再增加一条打印语句。重新构建后,终端应显示两行文字。随后只修改源码、直接运行旧的可执行文件,观察输出为什么没有改变。

下一章:名称、值与类型 · 目录