因为太闲,写了门语言!

最近二战在家,闲得发慌,想找点事做做。于是尝试写了门解释性语言,取名为Fight, 战斗!
写到现在,已经相对完善了。现在已经颇具规模了,我将已经实现的功能文档投给gpt, 它对这门语言的总结如下:

Fight语言:

  1. 语言特性概述:

Fight语言是一门动态类型、解释执行的高级编程语言。它融合了多种主流编程语言的特性,包括Python、JavaScript、Ruby等,同时也有一些独特的设计。

  1. 主要特点:
  • 动态类型系统
  • 支持函数式编程特性(高阶函数、lambda表达式等)
  • 面向对象编程支持(类、继承、接口等)
  • 丰富的数据结构(列表、字典、集合等)
  • 异常处理机制
  • 模块化支持
  • 元编程能力(反射等)
  1. 语法特色:
  • 使用let关键字进行变量声明
  • 函数定义支持多种形式(def、lambda、箭头函数)
  • 类定义使用class关键字,包含fields和methods块
  • 支持模板字符串
  • 独特的match表达式和switch语句
  • 支持解构赋值
  • for-in循环可遍历多种数据类型
  1. 数据类型和结构:
  • 基本类型:数字、字符串、布尔值
  • 复合类型:列表、字典、集合
  • 特殊类型:枚举(enum)、结构体(struct)
  1. 函数和方法:
  • 支持默认参数和命名参数
  • 闭包和高阶函数
  • 方法可以使用this关键字
  1. 面向对象特性:
  • 类继承
  • 接口实现
  • 构造函数(init方法)
  • 静态方法和属性
  1. 异常处理:
  • try-catch-finally结构
  • 复用Python的异常体系
  1. 模块化:
  • 支持模块导入,但具体实现细节未提供
  1. 元编程:
  • 反射API(获取函数参数、调用方法等)
  • 函数注解(类似Python装饰器)
  1. 标准库:
  • 复用了部分Python标准库(如os、random、math等)
  • 提供了一些内置函数和方法(如类型转换、集合操作等)
  1. 其他特性:
  • 支持注释(#符号)
  • 彩色打印函数
  • 时间相关操作
  • 类型转换

总结:
Fight语言综合了多种现代编程语言的优秀特性,同时也有一些独特的设计。它似乎旨在提供一个灵活、表达力强的编程环境,适合快速开发和原型设计。该语言的设计反映了对编程语言发展趋势的深入理解,以及对提高开发效率和代码可读性的重视。

建议:

  1. 考虑添加静态类型检查选项,以增强大型项目的可维护性。
  2. 可以进一步完善标准库,特别是在文件I/O、网络编程等方面。
  3. 考虑增加并发编程支持。
  4. 可以开发专门的IDE或编辑器插件,以提供更好的开发体验。
  5. 编写详细的语言规范文档和教程,有助于语言的推广和使用。

总的来说,Fight语言展现了很大的潜力,可以在特定领域或场景中发挥独特作用。

下面是几个代码片段,展现了Fight语言的灵活性和可扩展性。

1, 类似js的语法,更灵活

filter函数在fight中的使用

let xlist = [1, 2, 3, 100, 101];
// 筛选元素
let result = xlist->filter(def(x){
    return x > 10;
});

// map方法
@println("result:", result);
let mapped = xlist->map(def(x){
	return x+1;
})


2, 高阶函数
支持传入和返回高阶函数

let inc = def(x){
	return x+1;
};
@inc(10);

// 支持传入回调函数
// 支持箭头函数
let call = << callback,list, >> =>{
	@callback(list);
};

// lambda函数
let inc = lambda x: x+1;
@inc(1);

// 返回函数
def getCb(){
	return def(){
		@println("callback function");
	};
}
let cb = getCb();
@cb();

3, 注解
支持函数注解,让函数更加强大和灵活

@annotation(returnType = "number", paramNum = 1)
def inc(x){
	return x+1;
}
// 获取注解
let annot = GetAnnotations(inc);
@println(annot{"returnType"}); // 获取注解信息

4, 丰富的类型和表达能力

// list类型
let list = [1,2,3,True,"Fight"];

// set类型
let names = set<1,2,3>;

// object类型
let o ={name:"Fight",power: 1000};

// enum
enum Color{
	RED,BLUE,GREEN
}

// struct
struct Person{
	name, height
}

5, 丰富的控制结构和语句类型

// match表达式
let x = 2;
let result = match(x){
	1 => "one",
	2 => [1,2]
	3 => True
};

// if三目
let result = if(x>2) x:2 ;

// loop循环
loop(x>10){
	x--;
}
// if elif else
if(x==10){
	// code
}elif(x==11){

}else{

}

// for in循环遍历列表、set、object、字符串
for(element in [1,2,3]){
	// code
}
// for to循环,遍历数字
for(idx: 1 to 10){}

// 逆序
for(id: 10 to -1){
	// code
}

    除此之外,Fight语言已经为基本数据类型的操作提供了大量的内置函数和方法,包括类型转换、类型获取、list\object\sftr等类型的常见方法、多种输出函数、类机制(还不完善)、异常机制、常见内置函数如math os random模块、for in语法等等。凡你所想,皆可实现,要强要大就是Fight的口号!

    这门语言现在仍然在"火热"更新中, 特性也在不断完善。如果您有什么好的想法和建议,或者对这门语言感兴趣,那就加入我吧。😊😁 让我们写出自己的第一门语言! 还在等什么,等你来Fight

项目地址: Fight语言

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值