欢迎光临散文网 会员登陆 & 注册

[原创]教你用C/C++制作BrainF**k的编译器

2022-02-03 15:57 作者:夏夜wandpace  | 我要投稿

#include <cstdio>

#include <cmath>

#include <cstring>

#include <ctime>

#include <iostream>

#include <algorithm>

#include <set>

#include <vector>

#include <sstream>

#include <queue>

#include <typeinfo>

#include <fstream>

#include <map>

#include <windows.h>

#define sspeed ios_base::sync_with_stdio(0);cin.tie(0)

#define maxn 100001

#define eps 1e-9

typedef long long ll;

using namespace std;

const int inf=0x7fffffff;

string s;

vector<char> a;

int kiss;

int i;

void dealk()

{

    void deal(char c);

    int start=i;

    while(1)

    {

        i++;

        if(s[i]==']')

        {

            if(a[kiss]==0)

            {

                break;

            }

            else

            {

                i=start;

                continue;

            }

        }

        deal(s[i]);

    }

}

void deal(char c)

{

    if(c=='+')

        a[kiss]++;

    if(c=='-')

        a[kiss]--;

    if(c=='>')

    {

        kiss++;

        if(kiss>=a.size())

            a.push_back(0);

    }

    if(c=='<')

    {

        kiss--;

        if(kiss<0)

        {

            a.insert(a.begin(),i);

            kiss=0;

        }

    }

    if(c=='.')

    {

        int m=a[kiss];

        printf("%c",m);

    }


    if(c==',')

    {

        char k;

        scanf("%c",&k);

        s[kiss]=k;

    }

    if(c=='[')

    {

        dealk();

    }

}


int main()

{

    SetConsoleTitle("Brain_NTF v3.1.2"); 

    cout<<"Brain_NTF version:3.1.2\n";

    cout<<"                            \n";

    cout<<"------------information------------\n";

    cout<<"Product version:22013022A\n";

    system("echo %random% OEM %random%%random%");

    system("color 0A");

    cout<<"-------------code area--------------\n";

while(cin>>s)

    {

        a.push_back(0);

        int kiss=0;

        for(i=0;i<s.size();i++)

        {

            deal(s[i]);

        }

    }

    return 0;

}


[原创]教你用C/C++制作BrainF**k的编译器的评论 (共 条)

分享到微博请遵守国家法律