Linux.ChinaUnix.net
ChinaUnix | Linux首页 | 新闻 | 博客 | 文章 | 专栏 | 新手 | 方案 | 图书 | 下载 | 人才 | 手册 | wiki | 搜索     
Linux论坛
  会员: 密码: 免费注册 | 忘记密码 | 会员登录 | 搜索 | 帮助 


[保留] 娱乐一下,介绍一种语言——brainfuck
首页 » CU论坛 » Linux » 汇总贴列表 » CPU与编译器 »  
[打印] [订阅] [收藏] [本帖文本页] [推荐此主题给朋友,立即获积分]
  本主题由 mik 于 2008-6-5 00:51 加入精华 
版主 cjaizss   帅哥
版主-法师



UID:272747
注册:2005-5-26
最后登录: 2008-10-07
帖子:5003
精华:1

可用积分:2248 (小富即安)
信誉积分:100
专家积分:45 (本版:30)
空间积分:1
推广积分:0

状态:...保密...

[资料] [站内短信] [Blog]


1楼 发表于 2008-5-31 20:49 
语言一共只有8个符号
+-><.,[]
brainfuck的程序全部都由这8个符号构成
初始化的时候,有一个连续的两个方向都无限长的内存,内存的每个字节值是0。
有一个指针p,指向其中一个字节。
每个符号的意义如下:
+  指针指向的这个字节自加
-   指针指向的这个字节自减
>  指针向右移一个字节
<  指针向左移一个字节
.   输出指针指向的这个字节
,   输入这个字节,存在指针指向的这个字节
[   如果指针指向的这个字节,则进入循环节
]   回到匹配的[(比如[--.[++>.[+]---].-],^指着的两个是匹配的])
                               ^              ^

以下程序输出我的ID

++++++++++[>++++++++++[>+<-]<-]>>-.+++++++.---------.++++++++.
>>++++[<++++[<+>-]>-]<<+.-------..

自举编译器在39楼
C语言写的解释器在42楼

[ 本帖最后由 cjaizss 于 2008-6-9 17:05 编辑 ]



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

二十几年来最大的遗憾,并不是少赚了的钱,也不是少交了友,而是永远没有机会为最钟爱的数学真正做点什么,或许这会是这一生的遗憾
做个合格的电子工程师,其实很难

积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
版主 cjaizss   帅哥
版主-法师



UID:272747
注册:2005-5-26
最后登录: 2008-10-07
帖子:5003
精华:1

可用积分:2248 (小富即安)
信誉积分:100
专家积分:45 (本版:30)
空间积分:1
推广积分:0

状态:...保密...

[资料] [站内短信] [Blog]


2楼 发表于 2008-5-31 22:07 
以下是用sed写的一个编译器:

#! /bin/sed -f
s/[^][+<>.,-]//g
s/\([-+]\)/\1\1*p;/g
s/</p--;/g
s/>/p++;/g
s/\./putchar(*p);/g
s/,/*p=getchar();/g
     s/\[/while (*p) {/g
     s/\]/}/g
     1s/^/#include <stdio.h>\
     int main(void){char *p=calloc(1,10000);/
     $s/$/}/

     /./!d

# Here is an example BF program
#
# +[>>+++++[<++++++>-]<[>++++[>++++++++<-]<[->+>.<<]>[-<+>]+++++
# [>+++++<-]>+++.-.<+++[>------<-]>.---------.<+++++[>++++++<-]>
# .--.[-]++++++++++.[-]<<-]>+++++[<++++++>-]>>[-]<<<[>++++[>++++
# ++++<-]>>[<.>>+<-]>[-<+>]<+<<+++++[->++++++<]>.--.<++++[>-----
# --<-]>.++++++++.<+++[>++++++<-]>.++++.[-]++++++++++.[-]<<-]<]




您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

二十几年来最大的遗憾,并不是少赚了的钱,也不是少交了友,而是永远没有机会为最钟爱的数学真正做点什么,或许这会是这一生的遗憾
做个合格的电子工程师,其实很难

积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
版主 cjaizss   帅哥
版主-法师



UID:272747
注册:2005-5-26
最后登录: 2008-10-07
帖子:5003
精华:1

可用积分:2248 (小富即安)
信誉积分:100
专家积分:45 (本版:30)
空间积分:1
推广积分:0

状态:...保密...

[资料] [站内短信] [Blog]


3楼 发表于 2008-5-31 22:13 
我写的C语言解释器:

/*bf.c*/
#include <stdio.h>
#include <stdlib.h>
char s[30000]={0};
char code[100000];
int len = 0;
int  stack[100];
int stack_len=0;
int main(int argc,char**argv)
{
        char c;
        int i=0,j,k,x=0;
        FILE* f;
        char* p=s+10000;
        if(argc==2) {
                f=fopen(argv[1],"r");
                if(f==NULL) {
                        perror("fopen");
                                return 1;
                }
                while(fread(&code[len],1,1,f)==1) {
                        len++;
                }
        } else {
                fprintf(stderr,"%s:%d\n",__FILE__,__LINE__);
                return 2;
        }
        setbuf(stdout,NULL);
        while(i<len) {
                switch(code[i]) {
                        case '+':
                                (*p)++;
                                break;
                        case '-':
                                (*p)--;
                                break;
                        case '>':
                                p++;
                                break;
                        case '<':
                                p--;
                                break;
                        case '.':
                                putchar((int)(*p));
                                //printf("put:%hd\n",*p);
                                break;
                        case ',':
                                *p=getchar();
                                break;
                        case '[':
                                if(*p) {
                                        stack[stack_len++]=i;
                                } else {
                                        for(k=i,j=0;k<len;k++) {
                                                code[k]=='['&&j++;
                                                code[k]==']'&&j--;
                                                if(j==0)break;
                                        }
                                        if(j==0)
                                                i=k;
                                        else {
                                                fprintf(stderr,"%s:%d\n",__FILE__,__LINE__);
                                                return 3;
                                        }
                                }
                                break;
                        case ']':
                                i=stack[stack_len-- - 1]-1;
                                break;
                        default:
                                break;
                }
                i++;
                //x++;
                //printf("%d : i=%d\n",x,i);
        }
        return 0;
}

[ 本帖最后由 cjaizss 于 2008-6-7 12:36 编辑 ]



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

二十几年来最大的遗憾,并不是少赚了的钱,也不是少交了友,而是永远没有机会为最钟爱的数学真正做点什么,或许这会是这一生的遗憾
做个合格的电子工程师,其实很难

积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
版主 cjaizss   帅哥
版主-法师



UID:272747
注册:2005-5-26
最后登录: 2008-10-07
帖子:5003
精华:1

可用积分:2248 (小富即安)
信誉积分:100
专家积分:45 (本版:30)
空间积分:1
推广积分:0

状态:...保密...

[资料] [站内短信] [Blog]


4楼 发表于 2008-5-31 22:15 
准备写个brainfuck自举编译器,但是写的过程中才意识到并非那么容易。要解决一个看起来其实很微小的东西——分支,但是想不出如何解决,今天放弃,明天继续

[ 本帖最后由 cjaizss 于 2008-6-1 04:19 编辑 ]



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

二十几年来最大的遗憾,并不是少赚了的钱,也不是少交了友,而是永远没有机会为最钟爱的数学真正做点什么,或许这会是这一生的遗憾
做个合格的电子工程师,其实很难

积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
版主 cjaizss   帅哥
版主-法师



UID:272747
注册:2005-5-26
最后登录: 2008-10-07
帖子:5003
精华:1

可用积分:2248 (小富即安)
信誉积分:100
专家积分:45 (本版:30)
空间积分:1
推广积分:0

状态:...保密...

[资料] [站内短信] [Blog]


5楼 发表于 2008-6-1 13:42 
终于写成了一个,可是我并不是很满意。我写的这个程序只接受bf语言的8个符号,如果有别的符号过来,编译的结果会是错误的,即使进来的字符是\n,\t和空格
另外就是编译器实际所需内存与源码长度成正比(在规则如此简单的语言里不应该存在这种问题,但我暂时只能想到这个办法)
假如把我那个C语言的bf解释器编译之后定为/usr/local/bin/mybf
以下编译器文件为/usr/local/bin/bf2c.bf
源文件为1.bf
则编译1.bf为1.c的命令为
bf2c.bf <1.bf >1.c
如果1.bf中含有8个符号之外的符号,一般编译则可以如下:
cat 1.bf|tr -dC '<>[]+.,-'| bf2c.bf >1.c
则bf的自举编译器如下:

#!/usr/local/bin/mybf
+++++++++++++++++++++++++++++++++++.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
+++++.
-----------.
+++++++++.
+++++++++.
-----------------.
+.
---------------------------------------------------------------------.
++++++++++++++++++++++++++++.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++.
+.
----------------.
+++++.
++++++.
-----------------------------------------------------------------.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
------------------------------------------.
----------------------------------------------------.
+++++++++++++++++++++++++.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
+++++.
-----------.
+++++++++.
+++++++++.
-----------------.
+.
---------------------------------------------------------------------.
++++++++++++++++++++++++++++.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++.
+.
----------------.
++++++++.
---.
-------.
----------------------------------------------------.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
------------------------------------------.
----------------------------------------------------.
+++++++++++++++++++++++++.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
+.
+.
+++.
+++++.
---------.
---------------------------------------------------------------------.
+++++++++++++++++++++++++++++++++.
---------------------------------.
+++++++++++..
-.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
-----------------------------------------------------.
-------------------------------------------------.
+++++++++++++++++++++++++.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
+.
+.
+++.
+++++.
---------.
---------------------------------------------------------------------.
++++++++++++++++++++++++++++++++++.
----------------------------------.
++++++++++.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
---------------------------------------------------.
++++++++++++++++++++++++++++++++++++++++++.
--.
+++++++++++++++.
-----------------.
+++++.
-------.
+++++++++++++++++.
--------------------------------------------------------------------------.
+.
++++++++++++++++++.
-------------------------------------------------.
+++++++++++++++++++++++++.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
+.
+.
+++.
+++++.
---------.
---------------------------------------------------------------------.
+++++++++++++++++++++++++++++++++++.
-----------------------------------.
+++++++++++++..
---.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
-----------------------------------------------------.
-------------------------------------------------.
+++++++++++++++++++++++++.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
+.
+.
+++.
+++++.
---------.
---------------------------------------------------------------------.
++++++++++++++++++++++++++++++++++++.
------------------------------------.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
+++++.
-.
-----------------.
+++++.
-------.
+++++++++++++++++.
--------------------------------------------------------------------------.
++.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
-----------------------------------------------------------------------.
++++++++++++++++++.
-------------------------------------------------.
+++++++++++++++++++++++++.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
+.
+.
+++.
+++++.
---------.
---------------------------------------------------------------------.
++++++++++++++++++++++++++++++++++++++++++++++++++.
--------------------------------------------------.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
-------------------------------------------------------------------..
++++++++++++++.
-------------------------------------------------.
+++++++++++++++++++++++++.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
+.
+.
+++.
+++++.
---------.
---------------------------------------------------------------------.
++++++++++++++++++++++++++++++++++++++++++++++++++++.
----------------------------------------------------.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
---------------------------------------------------------------------..
++++++++++++++++.
-------------------------------------------------.
+++++++++++++++++++++++++.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
+.
+.
+++.
+++++.
---------.
---------------------------------------------------------------------.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
---------------------------------------------------------------------------------.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
---------------.
+.
+++.
-------.
-------------------------------------------------------------.
++.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
-----------------------------------------------------------------------.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
-----------------------------------------------------------------------------------------------------------------.
+++++++++++++++++++++++++.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
+.
+.
+++.
+++++.
---------.
---------------------------------------------------------------------.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
-----------------------------------------------------------------------------------.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
-------------------------------------------------------------------------------------------------------------------.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
+++++.
-------.
+++++++++++++++++.
----------------------------------------------------------------------------------.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
-----------------------.
---------------------------------------.
----....
+++++++++++++++++++++++++++++++++++++++++++++.
--------------------------------.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
---------------------------------------------------------------------------.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
------------------------------------------------------------------.
++++++++++++++++++++++++++++++++++++++++++++++.
+++++.
++++++.
------------------------------------------------------------------------------------.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
------------.
++++++++.
+++++.
----------------------------------------------------------------------.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
-------.
------.
-----.
-----------------------------------------------------------.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
------------------------.
+++++.
-------.
+++++++++++++++++.
------------------------------------------------------------------------.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
---------------------------------------------------.
+++++++++++++++++++++++++++++++++++++++++++++++++++++.
-----------------------------------------------------------------------.
++++++.
-....
+++++++++++.
-------------------------------------------------..


/////////////////////////////cjaizss compile////////////////////////
>
+
[
        [-]+
        >
        ,
        +
        [
                +++++++++++++++++++++.
                [-]
                ++++++++++.
                [-]
                >
        ]
        <
        -
]
////////////////////////////////////////////////////////////////


[-]
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
-------------.
+++++++++++++++.
+.
---.
----.
------------------------------------------------------------------------------.
++++++++++++++++.
+++++++++++.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
[-]
++++++++++.

[ 本帖最后由 cjaizss 于 2008-6-7 19:24 编辑 ]



您对本贴的看法:鲜花[0] 臭蛋[1]

__________________________________

二十几年来最大的遗憾,并不是少赚了的钱,也不是少交了友,而是永远没有机会为最钟爱的数学真正做点什么,或许这会是这一生的遗憾
做个合格的电子工程师,其实很难

积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
prolj (非常女生)
法王
专业水帖


CU奥运火炬传递手2008
UID:293231
注册:2005-7-19
最后登录: 2008-10-04
帖子:12794
精华:3

可用积分:10388 (大富大贵)
信誉积分:560
专家积分:1241 (本版:40)
空间积分:0
推广积分:0

来自:乡下
状态:...离线...

[资料] [站内短信] [Blog]


6楼 发表于 2008-6-1 13:51 
c版在深入计算理论?



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

我是来灌水的,别跟我谈技术,我不懂!我,我,我就是个杀猪的!
积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
版主 cjaizss   帅哥
版主-法师



UID:272747
注册:2005-5-26
最后登录: 2008-10-07
帖子:5003
精华:1

可用积分:2248 (小富即安)
信誉积分:100
专家积分:45 (本版:30)
空间积分:1
推广积分:0

状态:...保密...

[资料] [站内短信] [Blog]


7楼 发表于 2008-6-1 14:41 
呵呵,做这个纯属娱乐



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

二十几年来最大的遗憾,并不是少赚了的钱,也不是少交了友,而是永远没有机会为最钟爱的数学真正做点什么,或许这会是这一生的遗憾
做个合格的电子工程师,其实很难

积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
版主 cjaizss   帅哥
版主-法师



UID:272747
注册:2005-5-26
最后登录: 2008-10-07
帖子:5003
精华:1

可用积分:2248 (小富即安)
信誉积分:100
专家积分:45 (本版:30)
空间积分:1
推广积分:0

状态:...保密...

[资料] [站内短信] [Blog]


8楼 发表于 2008-6-1 17:10 
优化之后的bf解释器程序bf

/*bf.c*/
#include <stdio.h>
#include <stdlib.h>
char s[30000]={0};
char code[100000];
int len = 0;
int  stack[100];
int stack_len=0;
int main(int argc,char**argv)
{
        char c;
        int i,j,k,x=0;
        int m,n;
        FILE* f;
        char* p=s+10000;
        if(argc==2) {
                f=fopen(argv[1],"r");
                if(f==NULL) {
                        perror("fopen");
                                return 1;
                }
                while(fread(&code[len],1,1,f)==1) {
                        len++;
                }
        } else return 2;
       
        /*optimization*/
        /*We can prove that n is never greater than m.So we can use the same memory*/
        for(m=0,n=0,c=0,j=0;m<len;m++) {
                switch(code[m]) {
                        case '+':
                                switch (j) {
                                        case 1:
                                                code[n++]='>';
                                                break;
                                        case -1:
                                                code[n++]='<';
                                                break;
                                        case 0:
                                                break;
                                        default:
                                                code[n++]='p';
                                                code[n++]=j;
                                                break;
                                }
                                j=0;
                                c++;
                                break;
                        case '-':
                                switch (j) {
                                        case 1:
                                                code[n++]='>';
                                                break;
                                        case -1:
                                                code[n++]='<';
                                                break;
                                        case 0:
                                                break;
                                        default:
                                                code[n++]='p';
                                                code[n++]=j;
                                                break;
                                }
                                j=0;
                                c--;
                                break;
                        case '>':
                                switch (c) {
                                        case ((char)1):
                                                code[n++]='+';
                                                break;
                                        case ((char)(-1)):
                                                code[n++]='-';
                                                break;
                                        case ((char)0):
                                                break;
                                        default:
                                                code[n++]='a';
                                                code[n++]=c;
                                                break;
                                }
                                c=0;
                                j++;
                                if(j==0x7f) {
                                        code[n++]='p';
                                        code[n++]=0x7f;
                                        j=0;
                                }
                                break;
                        case '<':
                                switch (c) {
                                        case ((char)1):
                                                code[n++]='+';
                                                break;
                                        case ((char)(-1)):
                                                code[n++]='-';
                                                break;
                                        case ((char)0):
                                                break;
                                        default:
                                                code[n++]='a';
                                                code[n++]=c;
                                                break;
                                }
                                c=0;
                                j--;
                                if(j==-128) {
                                        code[n++]='p';
                                        code[n++]=-128;
                                        j=0;
                                }
                                break;
                        case '.':
                        case ',':
                        case '[':
                                switch (c) {
                                        case ((char)1):
                                                code[n++]='+';
                                                break;
                                        case ((char)(-1)):
                                                code[n++]='-';
                                                break;
                                        case ((char)0):
                                                break;
                                        default:
                                                code[n++]='a';
                                                code[n++]=c;
                                                break;
                                }
                                c=0;
                                switch (j) {
                                        case 1:
                                                code[n++]='>';
                                                break;
                                        case -1:
                                                code[n++]='<';
                                                break;
                                        case 0:
                                                break;
                                        default:
                                                code[n++]='p';
                                                code[n++]=j;
                                                break;
                                }
                                j=0;
                                code[n++]=code[m];
                                break;
                        case ']':
                                switch (c) {
                                        case ((char)1):
                                                code[n++]='+';
                                                break;
                                        case ((char)(-1)):
                                                code[n++]='-';
                                                break;
                                        case ((char)0):
                                                break;
                                        default:
                                                code[n++]='a';
                                                code[n++]=c;
                                                break;
                                }
                                c=0;
                                switch (j) {
                                        case 1:
                                                code[n++]='>';
                                                break;
                                        case -1:
                                                code[n++]='<';
                                                break;
                                        case 0:
                                                break;
                                        default:
                                                code[n++]='p';
                                                code[n++]=j;
                                                break;
                                }
                                j=0;
                                if(n-1>=0&&n-2>=0&&code[n-2]=='['&&(code[n-1]=='+'||code[n-2]=='-')) {
                                        code[n-2]='0';
                                        n--;
                                } else {
                                        code[n++]=code[m];
                                }
                                break;
                        default:
                                break;
                }
        }
        len=n;
        setbuf(stdout,NULL);
#if 0
        for(i=0;i<len;i++)
                putchar(code[i]);
        return 0;
#endif
        i=0;
        while(i<len) {
                switch(code[i]) {
                        case '0':
                                *p=0;
                                break;
                        case 'a':
                                i++;
                                *p+=code[i];
                                break;
                        case 'p':
                                i++;
                                p+=code[i];
                                break;
                        case '+':
                                (*p)++;
                                break;
                        case '-':
                                (*p)--;
                                break;
                        case '>':
                                p++;
                                break;
                        case '<':
                                p--;
                                break;
                        case '.':
                                putchar((int)(*p));
                                //printf("put:%hd\n",*p);
                                break;
                        case ',':
                                *p=getchar();
                                break;
                        case '[':
                                if(*p) {
                                        stack[stack_len++]=i;
                                } else {
                                        for(k=i,j=0;k<len;k++) {
                                                if(code[k]=='a'||code[k]=='p') {
                                                        k++;
                                                        continue;
                                                }
                                                code[k]=='['&&j++;
                                                code[k]==']'&&j--;
                                                if(j==0)break;
                                        }
                                        if(j==0)
                                                i=k;
                                        else {
                                                fprintf(stderr,"%s:%d\n",__FILE__,__LINE__);
                                                return 3;
                                        }
                                }
                                break;
                        case ']':
                                i=stack[stack_len-- - 1]-1;
                                break;
                        default:
                                break;
                }
                i++;
                //x++;
                //printf("%d : i=%d\n",x,i);
        }
        return 0;
}

[ 本帖最后由 cjaizss 于 2008-6-7 12:37 编辑 ]



您对本贴的看法:鲜花[1] 臭蛋[0]

__________________________________

二十几年来最大的遗憾,并不是少赚了的钱,也不是少交了友,而是永远没有机会为最钟爱的数学真正做点什么,或许这会是这一生的遗憾
做个合格的电子工程师,其实很难

积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
doctorjxd   帅哥
光明使者


CU奥运火炬传递手2008
UID:327303
注册:2005-10-24
最后登录: 2008-08-31
帖子:957
精华:1

可用积分:1652 (家境小康)
信誉积分:100
专家积分:306 (本版:0)
空间积分:0
推广积分:0

状态:...离线...

[资料] [站内短信] [Blog]


9楼 发表于 2008-6-1 18:38 
楼主的工作很棒!



您对本贴的看法:鲜花[0] 臭蛋[0]
积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
run_xiao2000
圣骑士



UID:179815
注册:2004-8-28
最后登录: 2008-09-26
帖子:81
精华:0

可用积分:79 (白手起家)
信誉积分:100
专家积分:0 (本版:0)
空间积分:0
推广积分:0

状态:...离线...

[资料] [站内短信] [Blog]


10楼 发表于 2008-6-2 09:58 
cjaizss真是牛X啊!不愧版主,呵呵



您对本贴的看法:鲜花[0] 臭蛋[0]
积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?

首页 » CU论坛 » Linux » 汇总贴列表 » CPU与编译器 »