• 大小: 443KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-08
  • 语言: 其他
  • 标签:

资源简介

相关博客见 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  中间代码生成\

评论

共有 条评论