资源简介
相关博客见 https://blog.csdn.net/boss_crabe/article/details/80760471
代码片段和文件信息
#include
#include
#include
using namespace std;
struct grammar {
int n p cnt;
struct node {
int line;
string word;
node() {}
node(int _line string _word){
line = _line;
word = _word;
}
} que[100005];
node get(int p) {
if (p == n) {
return node(-1 ““);
}
else return que[p];
}
void read() {
freopen(“file_out.txt“ “r“ stdin);
int t;
string s;
while (cin >> t && cin >> s) {
que[n++] = node(t s);
}
}
bool is_number(char c) {
return c >= ‘0‘ && c <= ‘9‘;
}
bool is_loweralpha(char c) {
return c >= ‘a‘ && c <= ‘z‘;
}
bool is_upperalpha(char c) {
return c >= ‘A‘ && c <= ‘Z‘;
}
bool is_alpha(char c) {
return is_loweralpha(c) || is_upperalpha(c);
}
void print(int x int y) {
}
bool check_number() {
int tp = p;
node t = get(p);
p++;
int l = t.word.length();
for (int i = 0; i < l; ++i)
if (!is_number(t.word[i])) {
print(tp p);
return false;
}
print(tp p);
return true;
}
bool check_identifier() {
int tp = p;
node t = get(p++);
int l = t.word.length();
if (!is_alpha(t.word[0])) {
print(tp p);
return false;
}
for (int i = 0; i < l; ++i) {
if (!is_alpha(t.word[i]) && !is_number(t.word[i])) {
print(tp p);
return false;
}
}
print(tp p);
return true;
}
bool check_const_definition() {
int tp = p;
if (!check_identifier()) {
print(tp p);
return false;
}
if (get(p).word != string(“=“)) {
print(tp p + 1);
return false;
}
else p++;
if (!check_number()) {
print(tp p);
return false;
}
print(tp p);
return true;
}
bool check_const() {
int tp = p;
p++;
if (!check_const_definition()) {
print(tp p);
return false;
}
while (true) {
if (get(p).word == string(““)) {
p++;
if (!check_const_definition()) {
print(tp p);
return false;
}
}
else if (get(p).word == string(“;“)) {
p++;
break;
}
else {
print(tp p + 1);
return false;
}
}
print(tp p);
return true;
}
bool check_var() {
int tp = p;
p++;
if (!check_identifier()) {
print(tp p);
return false;
}
while (true) {
if (get(p).word == string(““)) {
p++;
if (!check_identifier()) {
print(tp p);
return false;
}
}
else if (get(p).word == string(“;“)) {
p++;
break;
}
else {
print(tp p);
return false;
}
}
print(tp p);
return true;
}
bool is_addop(strin
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 152 2017-12-15 14:11 中间代码生成\file_out.txt
文件 8589 2017-12-15 14:06 中间代码生成\中间代码生成.cpp
文件 25567 2018-06-21 14:29 中间代码生成\中间代码生成.docx
文件 1883249 2018-01-09 15:08 中间代码生成\中间代码生成.exe
目录 0 2018-06-21 14:29 中间代码生成\
评论
共有 条评论