4.3 KiB
4.3 KiB
基础语法
注释
Fig 支持两种注释格式:
单行注释:
// 这是一个单行注释
var x = 10; // 注释可以在语句后面
多行注释:
/* 这是一个
多行注释 */
/* 注释内可以有 // 嵌套的单行注释 */
注释不能嵌套多个多行注释:/* /* 嵌套 */ */ 会导致错误。
变量声明
可变变量
var name = "Fig";
var count = 0;
count = count + 1; // 可以重新赋值
常量
const PI = 3.14159;
const MAX_SIZE = 100;
// PI = 3.14; // 错误:常量不能重新赋值
常量必须在声明时初始化。
类型注解(可选)
var name: String = "Fig";
var age: Int = 14;
const VERSION: Double = 0.4;
类型注解提供额外的类型信息,但解释器会在运行时进行类型检查。
标识符命名
规则
- 可以包含字母、数字和下划线
- 不能以数字开头
- 区分大小写
- 支持 Unicode 字符
有效示例
var count = 0;
var user_name = "Alice";
var 计数器 = 0; // 中文标识符
var π = 3.14159; // Unicode 符号
var _private = true; // 以下划线开头
无效示例
var 123abc = 0; // 不能以数字开头
var my-var = 0; // 不能包含连字符
基本字面量
数字
// 整数
var a = 42; // 十进制
var b = -100; // 负数
var c = 0; // 零
// 浮点数
var d = 3.14;
var e = 1.0;
var f = -0.5;
var g = 1.23e-10; // 科学计数法
字符串
var s1 = "Hello";
var s2 = "World";
var s3 = "包含\"引号\"的字符串"; // 转义引号
var s4 = "第一行\n第二行"; // 转义换行符
多行字符串直接跨行书写:
var message = "这是一个
多行字符串
可以包含多行内容";
布尔值
var yes = true;
var no = false;
空值
var nothing = null;
分号使用
所有语句都必须以分号结束:
var x = 10; // 正确
var y = 20 // 错误:缺少分号
func add(a, b) {
return a + b; // return 语句需要分号
} // 函数体右花括号后不需要分号
表达式作为独立语句时也需要分号:
1 + 2 * 3; // 表达式语句需要分号
io.println("test"); // 函数调用语句需要分号
表达式与语句
表达式
表达式会产生一个值(包括 null):
1 + 2 // 值为 3
x * y // 值为乘积
funcCall(arg) // 值为函数返回值
语句
语句执行操作但不产生值:
var x = 10; // 声明语句
if condition {} // 条件语句
return value; // 返回语句
表达式可以作为语句使用(表达式语句):
1 + 2; // 计算但丢弃结果
io.println("hi"); // 函数调用作为语句
关键字
Fig 语言的关键字包括:
| 类别 | 关键字 |
|---|---|
| 声明 | func, var, const, struct, interface, import |
| 控制流 | if, else, while, for, return, break, continue |
| 错误处理 | try, catch, throw, finally |
| 逻辑运算 | and, or, not |
| 类型相关 | is, as, impl, new, public |
这些关键字不能用作标识符名称。
操作符
算术运算符
+, -, *, /, %, **(幂运算)
比较运算符
==, !=, <, >, <=, >=
逻辑运算符
and, or, not, &&, ||, !
位运算符
&, |, ^, ~, <<, >>
赋值运算符
=, :=, +=, -=, *=, /=, %=, ^=
其他运算符
.(成员访问), ?(三元运算), ...(可变参数), ->(箭头), =>(双箭头)
空白字符
Fig 对空白字符没有特殊要求:
- 空格和制表符可以互换使用
- 缩进不影响程序语义
- 操作符周围的空格是可选的(但建议添加以提高可读性)
代码示例
// 完整的程序示例
import std.io;
func calculate(a: Int, b: Int) -> Int {
var result = a * b;
return result + 10;
}
const x = 5;
const y = 3;
var answer = calculate(x, y);
io.println("结果是:" + answer.toString());