1.最重要的一点是一致性(初版本先用自然语言的形式设计语法)
2.优雅(先实现一版,后续改进)
3.静态类型
4.自然语言的语法,且容易转换为中文表述
大概设想:
注释和java的保持一致,但是支持
/*
* 这种方式的注释,即非方法/字段/类上的文档注释,是方法里面的多行描述的注释
*/
变量和方法都用小驼峰;
类名/接口名用大驼峰
还支持一个any关键字用于联合任意类型(因为这里不准备设计为一切皆对象),但是any类型不是动态类型,必须主动as转换后使用;
关键字如果是多个单词构成用-来连接;至于a-b即a变量减去b变量不用担心,一来是一开始要求中间必须有空格,即a - b,所以不会和关键字有冲突;二来
如果用户定义了end变量和loop变量,也确实要执行它们的减法,语法检查也是能检查它到底是关键字还是两个变量相减;
而且它们编译成字节码后,是会变成其他的形式从而加速ast的构建,比如next-round可能会变成##next_round##【感觉我应该先设计字节码。。】
一:循环(类似java的for循环)
loop define var a = 1, if a > outList.length, ne\
xt-round a++
// logic code
// 支持break和continue
end-loop
描述:上面的ne\的\和C++里的换行拼接一样,这里要求\后面不能有任意字符,
然后\的下一行以行首第一个字符拼接到上一行\前面一个字符的后面,这个是编译期间的事情
这里define表示在loop所在的作用域里定义了一个a变量初始化为1,类型是isize(自动整型),如果要手动指出是什么类型可以用var a: i32 = 1
if就是如果的意思,在loop里表示循环成立的条件,而next-round下一轮;
二:循环2(类似java的while循环)
loop if outVar > 0
end-loop
三:循环3(类似do-while)
loop
end-loop if a > 9
四:开启作用于(类似java的{。。。})
scope
end-scope
五:如果定义的变量或方法和关键字冲突,可以用#开头
var #loop: isize = 9【但是如果后面支持反射,反射获取字段名#loop是只需要类似type.getField("loop"),因为#loop只是编译层面的处理】
标签:end,变量,java,round,关键字,设计,试着,loop,语言 From: https://www.cnblogs.com/silentdoer/p/17871379.html