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

本文详细介绍了RPP支持的超级宏及其使用方法,并通过BF解释器实例展示了其强大功能。从宏定义到BF语言实现,全方位解读RPP的独特特性。

更新如下:

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
}


评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值