码迷,mamicode.com
首页 > 编程语言 > 详细

欢天喜地迎国庆,国产开源编程语言 RPP 1.87 发布!

时间:2014-10-01 20:24:13      阅读:290      评论:0      收藏:0      [点我收藏+]

标签:blog   http   ar   for   2014   c   on   log   amp   

更新如下:

1.支持超级宏

2.修复bug


下载地址:

https://github.com/roundsheep/rpp


超级宏可以任意定义语法,制约你的只有想象力:


void main()
{	
	==> 2 3 <==
	
	┏━━━━━┓
	┃ 1     2  ┃
	┃ 3     4  ┃  
	┗━━━━━┛	
}

mac$ ==> _word _word <==
{
	putsl(rstr($0)+rstr($1))
}

mac$ ┏━━━━━┓┃ _word _word ┃ ┃ _word _word ┃┗━━━━━┛
{
	putsl(rstr($0)+'--'+rstr($1)+'--'+rstr($2)+'--'+rstr($3))
}



下面是用RPP实现的BF解释器:


/*
BF解释器,下面是一个BF版的Hello World:
++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.
*/

void main()
{
	code=getsl
	rbuf<int> data(30000)
	rf.memset(data.begin,0,data.size)
	pd=0
	for pc=0;pc<code.count;pc++
		switch code[pc]
		case `>
			pd++
		case `<
			pd--
		case `+
			data[pd]++
		case `-
			data[pd]--
		case `.
			puts(rstr.format('%c',data[pd]))
		case `,
			data[pd]=rf.getch
		case `[
			if data[pd]==0
				pc=find< ++ >(pc,code,`[,`])
				continue//这里也可用continued
		case `]
			if data[pd]!=0
				pc=find< -- >(pc,code,`],`[)
				continue
}

int find<T>(int pc,rstr& code,int left,int right)
{
	count=0
	for i=pc;;i T
		if code[i]==left
			count++
		elif code[i]==right
			count--
		if count==0
			return i
}


欢天喜地迎国庆,国产开源编程语言 RPP 1.87 发布!

标签:blog   http   ar   for   2014   c   on   log   amp   

原文地址:http://blog.csdn.net/roundsheep/article/details/39719197

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!