Commit Graph

29 Commits

Author SHA1 Message Date
9c68b2e77d 尝试UTF32String 2026-02-05 22:20:21 +08:00
e8aed221de 新增builtin函数 type,接收一个参数,获取类型字符串。(类似 js) 标准库 std.value.type函数更名 _type返回底层类型 2026-02-04 18:28:18 +08:00
b98c1b7dd8 挺大的改动。增加 as运算符,转换不了抛出 TypeError。import语法更新。修复try一点错误。现在表达式运算返回ExprResult。通过3个宏实现简便错误传播与解包 unwrap 2026-02-04 18:14:30 +08:00
45e18cc773 规范 include 2026-02-03 19:20:51 +08:00
4535f75058 修复了函数调用时求值类型使用的作用域错误的问题。结构体中现在可以使用自己 2026-02-03 18:49:40 +08:00
01c16dee3f [Feat] 支持运算符重载!详见文档或 Library/lang/lang.fig中的定义。通过 impl Operation for xxx实现重载
[Impl] 函数参数指定现在也接受一个 exp,逐渐改动其他中...
2026-02-02 16:11:08 +08:00
41bff72d44 这是一条 msg. ( 正文:error log修改。新增std.tester。parser precedence重写 2026-02-01 20:01:59 +08:00
aea716ced2 回档之后的重写。部分问题修复。添加了什么我也忘了 2026-02-01 15:52:28 +08:00
ca4ae143b4 v0.4.2-alpha
All checks were successful
Release Build / build-windows-x64 (push) Successful in 43s
Release Build / build-linux-x64 (push) Successful in 50s
[Fix][Impl] 为了消除类构造带来的语法歧义,同时保持实现简洁和括号省略的语法,自此版本,引入了 `new` 操作符
            造成歧义的原方法:
                if a == A{}
            条件是 a == A,还是 a == A{} ?

            因此,现在使用 new a_struct{}来构造类
[Opti] 相较于 Fig v0.4.1-alpha版本,release O3同编译条件下
       Fib普通递归法性能提升 ~50%
       具体方式:
            增加了小整数优化,-128~127的整数现在会直接从IntPool获取而不是新构造
            ...忘了
[Fix] 类构造 shorthand模式忘写了,现在补上了
[Feat][Impl] 类型声明现在接受一个表达式,原为Identifier。实现 var start: time.Time = time.now() 的效果
             这是符合语法和语言特性的支持,类型为一等公民。类似Python的 <class 'type'>

[Impl] 修改了部分错误输出的细节
2026-01-22 08:24:14 +08:00
caf058dd55 [VER] v0.4.1-alpha
Some checks failed
Release Build / build-windows-x64 (push) Failing after 3m2s
Release Build / build-linux-x64 (push) Has been cancelled
[Fix] 修复struct定义创建instanceCtx时拷贝类方法错误的Bug,表现在同一类的2个不同实例内置函数一样的问题
      (即 addr A != addr B, addr A.method == addr B.method)
      修复后为 (addr A != addr B, addr A.method != addr B.method)
      方法的closureContext指向instance的Context
      修复后 std.time可以正常使用
2026-01-19 16:10:12 +08:00
9e3f17711f [VER] 0.4.0-alpha
All checks were successful
Release Build / build-windows-x64 (push) Successful in 54s
Release Build / build-linux-x64 (push) Successful in 1m21s
[Fix] 修复恶性Bug: Parser: parseExpression没有正确解析二元表达式,没有用到 right binding power的问题,表现在生成类似 a * b * c时,结果为 a * (b * c) 的Bug
[Impl][Fix] 修复跨文件(如import)报错信息错误的问题,现在Ast跟踪保存文件信息,报错统一从Error父类获取
[...] 忘了,好困不管了
2026-01-19 04:13:55 +08:00
d398d457b5 [VER] v0.3.9-alpha
All checks were successful
Release Build / build-windows-x64 (push) Successful in 1m0s
Release Build / build-linux-x64 (push) Successful in 1m2s
[Feat] is 操作符现在可以直接判断内置数据类型, 如 10 is Int
[Fix] evalMemberExpr的lhs可以为右值,修复原来限制为左值的BUG,如调用一个函数返回结果为struct且访问member触发此bug
[Impl] 可更换的std::dynamic_pointer_cast更换为static版本,更快!
[Feat] 增加标准库 std.time,以及用到的builtin: __ftime_now_ns,但目前 Time类有点BUG
[...] 剩下的忘了
2026-01-15 17:51:01 +08:00
13fdbec0c4 [VER] v0.3.8-alpha
Some checks failed
Release Build / build-linux-x64 (push) Failing after 18s
Release Build / build-windows-x64 (push) Successful in 46s
[Impl][Fix] 更改resolveModulePath实现,使用绝对路径查找内置库
2026-01-14 21:31:11 +08:00
e28921ae02 [VER] 0.3.7-alpha
[Fix] 修复科学表达式数字解析的问题(Lexer引起) 由 Satklomi发现,感谢
[Feat] 增加Compiler相关定义,将开发BytecodeVM
[Tip] Evaluator进入Bug fix阶段,新功能延缓开发。转向VM
2026-01-14 17:28:38 +08:00
ff4c4ea84e [Action] 构建命令修改 2026-01-03 20:46:35 +08:00
28e78be57a [VER] 0.3.5-alpha
[FEAT] 现在,我们的内置类型 Int, String等也有构造函数了!像是StructType一样调用,Int{10}
[FEAT] List,Map赋值默认为Alias, 现在,通过 List{other}/Map{other} 来创建新的container! 复制出新的容器
[IMPL] Object toString对于 String type 输出进行修改!
[IMPL] ... 还有一些忘记了!
[ALL] Happy new year! And hope Fig-lang become better! Let's build a new world!
2026-01-01 16:38:21 +08:00
9f24392034 [VER] 0.3.4-alpha
[FEAT] 异常系统, try/catch/finally
2025-12-30 17:42:41 +08:00
f58a60c8e3 [VER] 0.3.3-alpha
[FEAT] interface + impl 支持! Duck Typing + 严格的检查让语言健壮
[FEAT][IMPL] 增加辅助函数 isTypeMatch等
[IMPL] TypeInfo构造函数FString 现在 explicit
2025-12-30 12:02:27 +08:00
f19b14f45f [Impl] 增加 prettyType,返回TypeInfo的FString, StructInstance自动输出父类TypeInfo 2025-12-29 20:34:04 +08:00
31c2ae4d84 [Impl] StructInstance现在记录parent TypeInfo, StructType改用TypeInfo 2025-12-29 20:21:12 +08:00
2a455a0487 [Feat] 实现 std.formater库,增加 std.io.printf函数
[Fix] 修复 evaluator中处理else if condVal类型错误的低级问题
[Feat] 为 String类型增加 insert, replace, erase函数
2025-12-29 18:27:39 +08:00
cd106fc513 [Feat] 增加数学库 std.math
[Fix] 修复resolveModulePath解析二级模块的一些Bug
2025-12-29 17:25:06 +08:00
25c971118a [Feat] 可变参数 variadic! 目前函数若使用可变参数,参数只能为1个
语法 func (arg...) 获取到的类型为 List
       若要判断类型,使用标准库 std.value.type
[Feat] 标准库 std.io std.value 实现,提供print,read等函数
       详见 Library/std 实现
[Impl] 分离 builtin value 和 function注册
2025-12-26 22:26:06 +08:00
20f39b7eba [Feat] 支持 += -=等运算符! 2025-12-26 21:59:52 +08:00
8a047de1c7 [Feat] 函数支持可变参数!! func (x...) 获取到的x类型为List
[Impl] Lexer现在贪心检测符号,拓展时可以直接添加到symbol_map
2025-12-26 21:43:29 +08:00
00240f1ed1 [Feat] 模块系统支持,使用 import x.x.x导入
[Fix] Context内部辅助函数修改, getStructName ....
[Feat] 增加字符串下标获取操作,和修改字符操作,实现使用了第四点的函数
[Impl] FString添加新方法 getRealChar, realReplace
[Fun] 在utf8_iterator中辱骂了C++
2025-12-26 20:47:57 +08:00
6e1df63507 [Fix] 修复For循环求值使用错误的Context问题 2025-12-25 17:30:56 +08:00
f056b0ffbe [Feat] 增加容器 List, Map, 以及对应Hash
[Impl] Addressable/Unaddressable Error现在内部存储FString而非View
2025-12-25 17:10:12 +08:00
fc35368d85 [Feat] 详细区分左值(LvObject)与右值(RvObject -> ObjectPtr)
[Impl] 重构evaluator.cpp + hpp 全部
[Feat] 增加对于IndexExpr的解析
[Fix][Impl] 现在点运算符不由BinaryExpr负责,增加MemberExpr,单独实现解析
[Impl] 项目目录全部翻修, src/目录下单独文件夹放置每一个模块
2025-12-24 17:54:38 +08:00