5种语言混合编程:C++、JS、python、Lisp、汇编

/*
混合C++、JS、python、Lisp、汇编
1种语言,5种语法
*/

main
{
	//C++
	vector<int> v;
	v.push(2);
	putsl(v.size());
	if(v.count()==1)
	{
		putsl("abc");
	}

	//JS
	var a=function(x){
		return x*2;
	}
	putsl(a(3));
	a={90,91};
	putsl(a[1]);

	//python
	b=2
	if b==2
		putsl 1
		putsl 2
	elif b==3
		putsl 99 

	//Lisp
	[= b 3]
	[rf printl b]
	[= b [+ 1 3]]
	[rf printl b]

	//汇编
	mov b,4
	add b,5
	putsl(b)
}

输出是:

4
abc
6
91
1
2
3
4
9

RPP已经成功从C++内核升级到了lisp内核,欢迎下载试用。

光速编译,无限可能,尽在RPP。(音up)

/*
控制台贪食蛇
*/

int g_std_out
rbuf<int> g_arr
int g_next=10
int g_food

void main()
{
	g_std_out=stdcall("GetStdHandle",-11)
	g_arr.push(105)

	CONSOLE_CURSOR_INFO cur_info
	cur_info.dwSize=1
	cur_info.bVisible=0
	stdcall("SetConsoleCursorInfo",g_std_out,&cur_info)
	rf.cmd("mode con cols=66 lines=35")

	init
	rf.srand
	start=rf.tick
	food

	for
		key
		if rf.tick-start<100
			continue
		start=rf.tick
		ifn check
			return
		g_arr.push_front(g_arr[0]+g_next)
		if g_food!=g_arr[0]
			g_arr.pop
		else
			food
		update
}

void gotoxy(int x,int y)
{
	COORD pos
	pos.x=x
	pos.y=y
	int temp
	mov temp,pos
	stdcall("SetConsoleCursorPosition",g_std_out,temp)
}

void update()
{
	for i=0 to 199
		gotoxy(i%10+1,i/10+1)
		if g_arr.exist(i)
			puts("O")
		elif i==g_food
			puts("$")
		else
			puts(" ")
}

void init()
{
	for i=0 to 11
		for j=0 to 21
			if i==0||i==11||j==0||j==21
				gotoxy(i,j)
				puts("#")
}

void key()
{
	if stdcall("GetAsyncKeyState",0x26)
		temp=-10
	elif stdcall("GetAsyncKeyState",0x28)
		temp=10
	elif stdcall("GetAsyncKeyState",0x25)
		temp=-1
	elif stdcall("GetAsyncKeyState",0x27)
		temp=1
	else
		return
	if g_arr.count<2||g_arr.get(1)!=g_arr.get(0)+temp
		g_next=temp
}

int check()
{
	temp=g_arr[0]+g_next
	if temp<0||temp>199||int.abs(temp%10-g_arr[0]%10)>1||g_arr.exist(temp)
		stdcall("MessageBoxA",0,('over len '+g_arr.count).cstr,"",0)
		return false
	return true
}

void food()
{
	g_food=rf.rand()%200
	if g_arr.exist(g_food)
		food
}

struct CONSOLE_CURSOR_INFO
{
	int dwSize
	bool bVisible
}

struct COORD
{
	ushort x
	ushort y
}

下面是一个彩色版本:

/*
彩色版控制台贪食蛇
*/

int g_std_out
rbuf<int> g_arr
int g_next=10
int g_food

void main()
{
	g_std_out=stdcall("GetStdHandle",-11)
	g_arr.push(105)

	CONSOLE_CURSOR_INFO cur_info
	cur_info.dwSize=1
	cur_info.bVisible=0
	stdcall("SetConsoleCursorInfo",g_std_out,&cur_info)
	rf.cmd("mode con cols=20 lines=21")

	init
	rf.srand
	start=rf.tick
	food

	for
		key
		if rf.tick-start<100
			continue
		start=rf.tick
		ifn check
			return
		g_arr.push_front(g_arr[0]+g_next)
		if g_food!=g_arr[0]
			g_arr.pop
		else
			food
		update
}

void gotoxy(int x,int y)
{
	COORD pos
	pos.x=x
	pos.y=y
	int temp
	mov temp,pos
	stdcall("SetConsoleCursorPosition",g_std_out,temp)
}

void update()
{
	for i=0 to 199
		gotoxy(i%10*2,i/10)
		if g_arr.exist(i)
			out("■")
		elif i==g_food
			out("★")
		else
			puts("  ")

}

void init()
{
	stdcall("SetConsoleTextAttribute",g_std_out,0x0a)
	gotoxy(0,20)
	puts(" ******************")
}

void key()
{
	if stdcall("GetAsyncKeyState",0x26)
		temp=-10
	elif stdcall("GetAsyncKeyState",0x28)
		temp=10
	elif stdcall("GetAsyncKeyState",0x25)
		temp=-1
	elif stdcall("GetAsyncKeyState",0x27)
		temp=1
	else
		return
	if g_arr.count<2||g_arr.get(1)!=g_arr.get(0)+temp
		g_next=temp
}

int check()
{
	temp=g_arr[0]+g_next
	if temp<0||temp>199||int.abs(temp%10-g_arr[0]%10)>1||g_arr.exist(temp)
		stdcall("MessageBoxA",0,('over len '+g_arr.count).cstr,"",0)
		return false
	return true
}

void food()
{
	g_food=rf.rand()%200
	if g_arr.exist(g_food)
		food
}

void out(char* s)
{
	puts(rcode.utf8_to_gbk(s))
}

struct CONSOLE_CURSOR_INFO
{
	int dwSize
	bool bVisible
}

struct COORD
{
	ushort x
	ushort y
}

5种语言混合编程:C++、JS、python、Lisp、汇编

时间: 06-23

5种语言混合编程:C++、JS、python、Lisp、汇编的相关文章

Swift语言与Objective-C语言混合编程

首先创建一个Swift的Single View工程 然后直接在工程中新建OC文件: 然后选择OC语言之后会问你是否自动创建OC和Swift的中间文件: 然后工程文件夹里就有了三个文件: 现在OC头文件和实现文件中写好一个实例: 然后在Swift语言与Obje...ridging-Header.h文件中 然后就可以直接在swift语言中使用了:

C++与Java混合编程

http://www.cnblogs.com/lxshanye/p/3209542.html 现在的程序员,不再像以前一样,掌握一种编程语言就可以混得有模有样了,现实的情况是,真实的项目中,通常是涉及多种编程语言,举几个简单的例子,一个软件为了快速开发,可能是使用Delphi或VB作为界面开发首选语言,底层的指令或核心算法,会使用C/C++处理,涉及数据处理的时候,为了安全和快速开发,会使用Javascript或Python等脚本语言实现数据分析处理.因此,开发者应该学习或掌握语言混合编程. C

java和c++混合编程尝试

下载源代码 现在的程序员,不再像以前一样,掌握一种编程语言就可以混得有模有样了,现实的情况是,真实的项目中,通常是涉及多种编程语言,举几个简单的例子,一个软件为了快速开发,可能是使用 Delphi 或 VB 作为界面开发首选语言,底层的指令或核心算法,会使用 C/C++ 处理,涉及数据处理的时候,为了安全和快速开发,会使用 Javascript 或 Python 等脚本语言实现数据分析处理.因此,开发者应该学习或掌握语言混合编程. C++ 和 Java 是主流的两种编程语言,但是现在整个网上对实

记录numpy和c++的混合编程

准备记录numpy和c++的混合编程 #include <boost/python.hpp> #include <numpy/ndarrayobject.h> namespace bp = boost::python; void reference_contiguous_array(PyObject* in, PyArrayObject* in_con, double* ptr, int& count) { in_con = PyArray_GETCONTIGUOUS((P

extern &quot;C&quot; 的含义:????实现C++与C及其它语言的混合编程

C++中extern "C"的设立动机是实现C++与C及其它语言的混合编程. C++为了支持函数的重载,C++对全局函数的处理方式与C有明显的不同.对于函数void foo( int x, int y );该函数被C编译器编译后在符号库中的名字为_foo,而C++编译器则会产生像_foo_int_int之类的名字. extern是C/C++语言中表明函数和全局变量作用范围(可见性)的关键字,该关键字告诉编译器,其声明的函数和变量可以在本模块或其它模块中使用. 通常,在模块的头文件中对本

几种语言的CGI编程

为了了解PHP.JSP.ASP出现之前人们写网站的方法,洒家研究了一波CGI,使用C.Python.batch.shell script语言写了几个简单的网页. CGI即通用网关接口,指web服务器调用编程语言编写的程序的一个接口.洒家用的是Apache的CGI,QUERY_STRING.REMOTE_ADDR.REQUEST_URI等参数是通过环境变量传递给CGI程序的,请求主体(POST数据)作为CGI程序的标准输入(stdin),而CGI程序的标准输出(stdout)作为HTTP响应的部分

常见的几种语言C,C#,JAVA,Python的运行原理

相对于常见的几种语言C,C#,JAVA,Python的运行原理 由于CPU只能识别机器码,即我们常说的二进制码01010101 有任何语言在计算机上运行最终都要转化成CPU能够识别的机器码010101 对于C语言:通过C语言代码编译器将C语言写出的代码进行编译得到机器码,然后机器码就可以交给CPU去识别,即运行 对于其他语言:代码编译器将代码编译成字节码,然后通过各自的虚拟机将字节码进一步处理(转换)成机器码(0101010101),然后在处理器上运行 Python和C 首先Python是用C开

【转】VxWorks中高精度实时时钟的实现及C语言汇编混合编程

最近一个项目中需要在VxWorks下使用一个高精度实时时钟,要求精度为1ms,溢 出时间大于5小时.VxWorks提供系统时钟,该时钟在操作系统启动后开始计数,精度为1个tick,可以通过tickGet()获取当前计数值.因为 系统时钟默认工作频率为60Hz,则1个tick相当于16.7ms,不符号我们的精度要求.虽然可以通过sysClkRateSet(1000),把精度提高到1ms,但1kHz的系统时钟中断频率会使得CPU的开销大增.考虑到像nanoSleep()这样的应用其计时精度可以达到纳

《从零开始学Swift》学习笔记(Day 69)——Swift与Objective-C混合编程之语言

原创文章,欢迎转载.转载请注明:关东升的博客 在Swift语言出现之前,开发iOS或OS X应用主要使用Objective-C语言,此外还可以使用C和C++语言,但是UI部分只能使用Objective-C语言. 选择语言 Swift语言出现后,苹果公司给程序员提供了更多的选择,让这两种语言并存.既然是并存,我们就有4种方式可以选择: 采用纯Swift的改革派方式: 采用纯Objective-C的保守派方式: 采用Swift调用Objective-C的左倾改良派方式: 采用Objective-C调

用c/c++混合编程方式为ios/android实现一个自绘日期选择控件(一)

本文为原创,如有转载,请注明出处:http://www.cnblogs.com/jackybu 前言 章节: 1.需求描述以及c/c++实现日期和月历的基本操作 2.ios实现自绘日期选择控件 3.android实现自绘日期选择控件 目的: 通过一个相对复杂的自定义自绘控件来分享: 1.ios以及android自定义自绘控件的开发流程 2.objc与c/c++混合编程 3.android ndk的环境配置,android studio ndk的编译模式,swig在android ndk开发中的作