• 大小: 2KB
    文件类型: .cpp
    金币: 2
    下载: 1 次
    发布日期: 2021-07-23
  • 语言: C/C++
  • 标签: 编译原理  

资源简介

设计内容及要求:设计一个语法制导翻译器,将算术表达式翻译成四元式。要求: 先确定一个定义算术表达式的文法,为其设计一个语法分析程序,为每条产生式配备一个语义子程序,按照一遍扫描的语法制导翻译方法,实现翻译程序。对用户输入的任意一个正确的算术表达式,程序将其转换成四元式输出(可按一定格式输出到指定文件中)。

资源截图

代码片段和文件信息

#include 
#include 
#include 
char w;
int j=1;
struct TOKEN
{
  char t;
  int i;
} ;
struct TOKEN word sem[10];
  int i_sem;

struct QT
{
  char w;
  struct TOKEN word1;
  struct TOKEN word2;
  struct TOKEN temp;
} ;

char exp[50];
 int i=0;

struct QT qt[30];
 int q=0;
int D();
int E();
int T();
int F();

void next();
void newt();
void quat(char);

int main()
{
  printf(“please input your expression:    “);
  scanf(“    %s“exp);
  next();
  D();
  if (w==‘\0‘)
  {
    printf(“\n“);
    for (i=0;i    {
      printf(“  (%d) “i+1);
if(qt[i].w!=‘=‘){
      printf(“ ( %c“qt[i].w);
      if (qt[i].word1.t!=‘t‘)
printf(“  %c“qt[i].word1.t);
      else
printf(“  %c%d“qt[i].word1.tqt[i].word1.i);
      if (qt[i].word2.t!=‘t‘)
printf(“  %c“qt[i].word2.t);
      else
printf(“  %c%d“qt[i].word2.tqt[i].word2.i);
      printf(“  %c%d )\n“qt[i].temp.tqt[i].temp.i);
}
else
{
 printf(“ ( %c“qt[i].w);
 printf(“  %c%d “qt[i-1].temp.tqt[i-1].temp.i);
printf(“  _“);
printf(“  %c)“qt[

评论

共有 条评论