纸上谈兵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 一个自己的语言(主要是语法啦)的主要内容,如果未能解决你的问题,请参考以下文章

不做工程等于纸上谈兵——对话OceanBase创始人阳振坤

(干货)纸上谈兵-说说我对symfony新无级人工晶体的看法

纸上谈兵01丨推荐系统入门

纸上谈兵-说说我对symfony新无级人工晶体的看法

尖峰眼科 | 也谈Symfony新无极人工晶体(下):纸上谈兵之临床效果比较篇

互联网农业盛行了几年,如今却多半都是纸上谈兵