资源简介

C语言子集的编译器,包括词法分析,LR1语法分析,语义分析,AT&T汇编代码生成,内含C语言文法,LR1分析表,规约过程,汇编代码。C++编写,Netbeans上开发

资源截图

代码片段和文件信息

#include “stdio.h“
#include “ctype.h“
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

int chuanhao = 0;

using namespace std;
const int MAX = 1000;
char *key[] = {“int“ “char“ “float“ “%f“ “const“ “for“ “if“
    “else“ “printf“ “%d“ “return“ “string“ “scanf“ “main“};

string terminal[] = {“int“ “char“ “float“ “%f“ “array“ “for“ “if“
    “else“ “printf“ “%d“ “return“ “string“ “scanf“ “main“ “{“ “}“ “(“ “)“
    “id“ “digit“ “[“ “]“ “;“ ““ “+“ “-“ “*“ “/“ “>=“ “<=“ “>“ “<“ “++“ “--“ “&“ “=“ “#“}
//35
;

typedef struct _wenfa {
    string left;
    int index;
    vector right;

} wenfa;

typedef struct _table {
    int name;
    int num;

} table;
table action[MAX][MAX / 10];
table go[MAX][MAX / 10]; //
set NotTerminal;
set SetTerminal;
vector biaodashi;
vector ExternalGrammar;
vector > > closures;
map BtoEX;


int nextquad = 0; //下一个四元组标号

typedef struct _quad {
    string a1;
    string a2;
    string a3;
    string a4;

} quad;
vector printquad;
stack t;

typedef struct _NTerminal {
    int value;
    string add;
    int flag;
} NTerminal;
map NT;

bool vartemp[16] = {false};
//vector definearry;
stack digit;
stack id;
stack array;
stack mystring;
stack back;
stack arrayvalue;
stack forback;
stack Estack;
stack Tstack;
string op;

void translation(int index);
void select(int n);
ofstream asoutput (“assembly.s“);
void recognise()//把产生式写入文法结构biaodashi
{

    ifstream grammar;
    ofstream test;
    test.open(“test.txt“);
    grammar.open(“regulation.txt“);
    for (int i = 0; i < 37; i++) {
        SetTerminal.insert(terminal[i]);
    }
    string regulation;
    string tempstring;
    wenfa tempnot;
    //  char c;
    int num = 0;
    while (getline(grammar regulation)) {
        bool flag = true;
        tempnot.index = num;
        // cout<< “$$0:“<        for (int i = 0; i < regulation.length(); i++) {
            if (regulation[i] == ‘ ‘) {
                if (flag == true) {
                    tempnot.left = tempstring;
                    flag = false;
                } else
                    tempnot.right.push_back(tempstring);
                if (SetTerminal.find(tempstring) == SetTerminal.end()) {
                    NotTerminal.insert(tempstring);
                    //    cout<< “$$:“<                }
                tempstring.clear();
            } else
                tempstring += regulation[i];
        }
        biaodashi.push_back(tempnot);
        tempnot.right.clear();
        num++;
    }
    /* //   下面为测试用
       for ( vector::iterator i = biaodashi.begin(); i != biaodashi.end(); i++) //test wheter the set_terminal is working
       {
           c

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        144  2012-11-30 21:14  CppApplicationC\.dep.inc

     文件       2964  2012-11-30 21:14  CppApplicationC\assembly.s

     文件       3106  2012-11-08 22:26  CppApplicationC\assembly.txt

     文件       4543  2012-11-30 16:21  CppApplicationC\build\Debug\MinGW-Windows\assembly.o

     文件    1497463  2012-11-30 21:14  CppApplicationC\build\Debug\MinGW-Windows\main.o

     文件         44  2012-11-30 21:14  CppApplicationC\build\Debug\MinGW-Windows\main.o.d

     文件        128  2012-11-30 21:14  CppApplicationC\character.txt

     文件    1710458  2012-11-30 21:14  CppApplicationC\dist\Debug\MinGW-Windows\cppapplication_jing_1.exe

     文件        737  2012-11-01 12:47  CppApplicationC\expression.txt

     文件      47662  2012-11-30 23:32  CppApplicationC\main.cpp

     文件       3470  2012-11-01 12:47  CppApplicationC\Makefile

     文件       2640  2012-11-30 16:27  CppApplicationC\nbproject\configurations.xml

     文件       1559  2012-11-30 16:27  CppApplicationC\nbproject\Makefile-Debug.mk

     文件       4217  2012-11-30 16:27  CppApplicationC\nbproject\Makefile-impl.mk

     文件       1574  2012-11-30 16:27  CppApplicationC\nbproject\Makefile-Release.mk

     文件        924  2012-11-30 16:27  CppApplicationC\nbproject\Makefile-variables.mk

     文件       1482  2012-11-30 16:27  CppApplicationC\nbproject\Package-Debug.bash

     文件       1484  2012-11-30 16:27  CppApplicationC\nbproject\Package-Release.bash

     文件       1146  2012-11-30 16:27  CppApplicationC\nbproject\private\configurations.xml

     文件          0  2012-11-01 12:47  CppApplicationC\nbproject\private\private.properties

     文件        211  2012-12-22 22:41  CppApplicationC\nbproject\private\private.xml

     文件          0  2012-11-01 12:47  CppApplicationC\nbproject\project.properties

     文件        760  2012-12-22 22:41  CppApplicationC\nbproject\project.xml

     文件      44490  2012-11-30 21:14  CppApplicationC\outclosure.txt

     文件       4231  2012-11-30 21:14  CppApplicationC\practice.txt

     文件       1473  2012-11-30 21:14  CppApplicationC\printquad.txt

     文件      43177  2012-11-30 21:14  CppApplicationC\procedure.txt

     文件       1224  2012-11-04 21:56  CppApplicationC\regulation.txt

     文件      38368  2012-11-30 21:14  CppApplicationC\table.txt

     文件        330  2012-11-30 21:14  CppApplicationC\test.txt

............此处省略14个文件信息

评论

共有 条评论