来自 操作系统 2020-03-22 19:50 的文章
当前位置: 澳门威尼斯人平台 > 操作系统 > 正文

一言不和就自己写了个编程语言

近日有开发者开源了一门新的编程语言,吸引了大量开发者的目光,短短几天获得了 3k+ star。

原标题:文言文编程语言来了 可是好像比英文更难写了 来源:开源中国近日有开发者开源了一门新的编程语言,吸引了大量开发者的目光,短短几天获得了 3k+ star。该语言名为“文言(wenyan-lang)”,这是一门采用文言文输入的编程语言,该语言不包括英文字符,仅包含繁体中文字符,并保留繁体引号“”。先看看 Helloworld 怎么写:吾有一數。曰三。名之曰“甲”。為是“甲”遍。吾有一言。曰“「問天地好在。”」。書之。云云。这段代码等效于以下 JavaScript 代码:var n = 3;for (var i = 0; i < n; i++) {console.log("問天地好在。");}输出:問天地好在。問天地好在。問天地好在。同时,标点和换行符是完全可选的,与古汉语一致,所以上面的代码等效于:吾有一數曰三名之曰“甲”為是“甲”遍吾有一言曰“「問天地好在”」書之云云Helloworld 看上去虽然简单,但是其实作为一门编程语言,这里的语法都有严格的定义:变量wenyanJavaScript吾有一數。曰三。名之曰“甲”。var a = 3;有數五十。名之曰“大衍”。var dayan = 50;昔之“甲”者。今“大衍”是也。a = dayan;吾有一言。曰“「噫吁戲”」。名之曰“乙”。var b = "alas!";吾有一爻。曰陰。名之曰“丙”。var c = false;吾有一列。名之曰“丁”。var d = [];吾有三數。曰一。曰三。曰五。名之曰“甲”曰“乙”曰“丙”。var a=1,b=3,c=5;控制wenyanJavaScript若三大於二者。乃得“「想當然耳”」也。if (3>2){ return "of course"; }若三不大於五者。乃得“「想當然耳”」。若非。乃得“「怪哉”」也。if(3<=5){return "of course"}else{return "no way"}為是百遍。⋯⋯ 云云。for (var i = 0; i < 100; i++){ ... }恆為是。⋯⋯ 云云。while (true) { ... }凡“天地”中之“人”。⋯⋯ 云云。for (var human of world){ ... }乃止。break;运算wenyanJavaScript加一以二。1+2加一於二。2+1加一以二。乘其以三。(1+2)*3除十以三。所餘幾何。10%3減七百五十六以四百三十三。名之曰“甲”。var a = 756-433;夫“甲”“乙”中有陽乎。a || b夫“甲”“乙”中無陰乎。a && b容器数组从 1 开始索引。wenyanJavaScript吾有一列。名之曰“甲”。充“甲”以四。以二。var a = []; a.push(4, 2);銜“甲”以“乙”。以“丙”a.concat(b).concat(c);夫“甲”之一。a[0]夫“甲”之其餘。a.slice(1);夫“玫瑰”之“「名”」。rose["name"]夫“寶劍”之長。sword.length;函数wenyanJavaScript吾有一術。名之曰“吸星大法”。是術曰。⋯⋯是謂“吸星大法”之術也。function f(){...}吾有一術。名之曰“六脈神劍”。欲行是術。必先得六數。曰“甲”。曰“乙”。曰“丙”。曰“丁”。曰“戊”。曰“己”乃行是術曰。⋯⋯是謂“六脈神劍”之術也。function f(a,b,c,d,e,f){...}吾有一術。名之曰“翻倍”。欲行是術。必先得一數。曰“甲”。乃行是術曰。乘“甲”以二。名之曰“乙”。乃得“乙”。是謂“翻倍”之術也。function double(a){var b = a * 2; return b;}但是作者表示上下文无关的语法描述还在构建中。文言语言采用自然语言处理共享了古典汉语语法,将语言编译为 JavaScript 或 Python,并且图灵完备。同时它不仅提供了一个配套在线 IDE,还提供了大量算法与数据结构示例,包括快排、汉诺塔问题与斐波那契数列表示等。---

澳门威尼斯人注册网站,汉译英必须采用英文的句法,来表达汉文的意念,不可照汉文直译,如照汉文的句法直译,则译出来的不像英文。为避免写成中国式的英文,首先就要把英文的一些基本句型学会,而且要记在心上,当我们动手翻译时,便能运用自如,随便采用哪种句型,都合乎英文的惯用句法了。

澳门威尼斯人注册网站 1

我们既能说中国话,又能读中国文,在翻译上对于汉文方面是不会有很多困难的,问题只有英文这一方面,因此我们在汉译英的时候,还是要从英文着手,要把写作英文的基本句型,来作为翻译的工具。

序言

摘要: 最近一直在写一个脚本语言,主要对标对象是润乾的集算器、Python等。感觉润乾的集算器有一定的应用场景,但是类似excel的方式严重影响编程可接受程度,另外其有些语法感觉与java习惯也非常不一致,因此就自己动手写了一个,目前正在紧张的验证中,验证完毕将完全开源。 欢迎感兴趣的同学mark,到时一起玩耍。 最终开源的git地址是: 正常是完善好文档再开源,如果fork超过1000+,马上开源,开源协议是Apache V2。

该语言名为“文言(wenyan-lang)”,这是一门采用文言文输入的编程语言,该语言不包括英文字符,仅包含繁体中文字符,并保留繁体引号「」。

现在我们先来学会以要素为主的五种英文的句型,作为学习翻译的第一步。因为任何英文句子,总不外是这五种句型当中的一种,现代英文是没有第六种句型的。这五种句型是由动词的不同而分别出来的,所以我们在研究五种句型之前,要先把英文动词的种类搞清楚一下。

运行

我们提供了Eclipse和Idea插件,可以直接右键运行扩展名为tinyscript的文件哦:

先看看 Helloworld 怎么写:

五种句型是以要素(element)来分的,那么在英文句子中有些什么要素呢?那一共有四个要素,即主语(Subject),述语(Predicate),宾语(Object),补语(Complement)。任何一个句子,必须有主语和述语。另外一些句子,除主语述语外,还有宾语或补语,或宾语补语同时都有。决定一个句子是不是要有宾语补语的,就在动词,而且动词是两个基本要素当中的一个。所谓述语,原是叙述一件事物的动作或状态的,结局就是动词。这是任何一个句子非有不可的基本因素。学英文把动词的用法学会了,英文就学通了十分之八九了。拓谱翻译提供英语笔译、英语口译、英语同声传译、英语陪同翻译、英语技术口译、英语商务口译翻译、英语本地化翻译等专业性翻译服务。

示例

 吾有一數。曰三。名之曰「甲」。
為是「甲」遍。
    吾有一言。曰「「問天地好在。」」。書之。
云云。

99表

for(i=1;i<=9;i++){
    for(j=1;j<=i;j++){
        printf("%d*%d=%dt",i,j,i*j);
    }
    println();
}

运行结果

1*1=1  
2*1=2   2*2=4   
3*1=3   3*2=6   3*3=9   
4*1=4   4*2=8   4*3=12  4*4=16  
5*1=5   5*2=10  5*3=15  5*4=20  5*5=25  
6*1=6   6*2=12  6*3=18  6*4=24  6*5=30  6*6=36  
7*1=7   7*2=14  7*3=21  7*4=28  7*5=35  7*6=42  7*7=49  
8*1=8   8*2=16  8*3=24  8*4=32  8*5=40  8*6=48  8*7=56  8*8=64  
9*1=9   9*2=18  9*3=27  9*4=36  9*5=45  9*6=54  9*7=63  9*8=72  9*9=81  

我们支持简化的println,其实你用java的写法也是可以的,比如:System.out.println。

这段代码等效于以下 JavaScript 代码:

数组

abc={1,2,4,9,6,3};
println(max(abc));
println(min(abc));
println(avg(abc));
println(median(abc));
println(varp(abc));
println(stdevp(abc));
def={"aa","bb","cc"};
println(max(def));

运行结果

9
1
4.166666666666667
3.5
7.138888888888889
2.6718699236468995
cc
 var n = 3;
for (var i = 0; i < n; i++) {
    console.log("問天地好在。");
}

列表

a=[1,2,3,4,5];
b=[2,3,4,6];
println(a-b);
println(a+b);
println(a&b);
println(a^b);
c=["abc","def","gg"];
d=["abc","def1","gg1"];
println(c+d);
println(c-d);
println(d-c);

运行结果

[1, 5]
[1, 2, 3, 4, 5, 6]
[2, 3, 4]
[1, 5, 6]
[abc, def, gg, def1, gg1]
[def, gg]
[def1, gg1]

当然也可以有更好玩的动作

a=[1,2,3];
println(a);
a++;
println(a);
a*=3;
println(a);
b=["abc","def","ghijk"];
println(b.length());

[1, 2, 3]
[2, 3, 4]
[6, 9, 12]
[3, 3, 5]

当然,来点lambda也是可以的:

add(a,b)->{ return a+b;};
System.out.println(add(2,4));

运行结果:

6

本文由澳门威尼斯人平台发布于操作系统,转载请注明出处:一言不和就自己写了个编程语言

关键词: