纸上谈兵YY 一个自己的语言(主要是语法啦)
Posted gcxokoa
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了纸上谈兵YY 一个自己的语言(主要是语法啦)相关的知识,希望对你有一定的参考价值。
YY 一个自己的语言(主要是语法啦)。
启发
今天开了个旧程序——PureBasic,看了它的帮助文件,发现文件扩展名那样表示的类型。然后就 YY 了这个。然后在文档的 Structure 的实例字段引用中看到了类似的东西。
开始
nothing.
name FORM
name -- 就是 identifiers
完整格式类似文件路径,我用 / (PureBasic 用 \ )。上下文约束下,可以简略。可以这么简略:
.na/me
.foo/bar
或者这么简略:
./foo/bar
最后我想,这么省略:
nothing.看下面
这么省略:就直接写了,有和 keyword 之类的东西冲突时,再用“当前路径”区别:
./here/name
keyword FORM
直接写就好,有用户标识符冲突了就让用户标识符用“当前路径”的格式表示。
想到这里有了新想法——看下面。
runtime PATH
看:
/runtime/这是/runtime/路径
这是用户标识符的完全路径表达式,/runtime/ 后的部分是用户标识符。
然后,就有了下面的东西——语言路径。
lang PATH
就像是 Java 的 java.lang 包那种感觉的东西。
至于具体是怎么样、要怎么样,没细想。
类型声明
格式:
name.type
PureBasic 是这样的:.b .c .w 等,分别表示 Byte, Character, Word。
于是,问题来了。我的 name 都是路径的格式表示的,如果是:.type 这样的后缀形式表示,写起来不是爆炸?
于是想了想……不是有上下文吗,所以没问题,反正只是表示当前能看的到的符号的别名而已。我想,编译器应该会帮我解决其他的问题……嗯。是这样的。
函数声明
格式:
func name.rtype.ptype1.ptype2...
sub name.ptype1.ptype2...
(func 和 sub 是 keyword。)
end
done.
以上是关于纸上谈兵YY 一个自己的语言(主要是语法啦)的主要内容,如果未能解决你的问题,请参考以下文章
(干货)纸上谈兵-说说我对symfony新无级人工晶体的看法