博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
词法分析
阅读量:7084 次
发布时间:2019-06-28

本文共 1880 字,大约阅读时间需要 6 分钟。

# include<stdio.h>

# include<stdlib.h>
# include<string.h>

int panduan(char tmp[])

{
  char b[6][10] = {"begin", "if", "then", "while", "do", "end", };
  int k = 0;

  while(k < 6) // 临时变量tmp 与 字符串b[k] 进行比较

  {
    if(strcmp(tmp, b[k]) == 0)
    {
      printf("<%s, %d>\n", tmp, k+1);
      return 0;
    }
    k++;
  }
  printf("<%s, 10>\n", tmp);

  return 0;

}

void cifafenxi(char a[])

{
  int i = 0, j = 0;
  char tmp[10];
  int flag = 0;

  while(a[i] != '\0')

  {
  if(a[i] >= 'a' && a[i] <= 'z') // 判断标识符
  {
    tmp[j] = a[i];
    j++;
    while((a[i+1] >= 'a' && a[i+1] <= 'z') || (a[i+1] >= '0' && a[i+1] <= '9'))
    {
      i++;
      tmp[j] = a[i];
      j++;
    }
    tmp[j] = '\0';
    j = panduan(tmp);
  }

  if(a[i] >= '0' && a[i] <= '9') // 判断数字

  {
    tmp[j] = a[i];
    j++;
    while(a[i+1] >= '0' && a[i+1] <= '9')
    {
      i++;
      tmp[j] = a[i];
      j++;
    }
    tmp[j] = '\0';
    printf("<%s, 11>\n", tmp);
    j = 0;
  }

  switch(a[i]) // 判断符号

  {
  case '+':printf("<+, 13>\n");break;
  case '-':printf("<-, 14>\n");break;
  case '*':printf("<*, 15>\n");break;
  case '/':printf("</, 16>\n");break;
  case ':':
  {
    if(a[i+1] == '=')
      printf("<:=, 18>\n");
    else
      printf("<:, 17>\n");
  }break;
  case '<':
  {
    if(a[i+1] == '=')
      printf("<<=, 21>\n");
    else if(a[i+1] == '>')
      printf("<<>, 22>\n");
    else
      printf("<<, 20>\n");
  }break;
  case '>':
  {
    if(a[i+1] == '=')
      printf("<>=, 24>\n");
    else
      printf("<>, 23>\n");
    }break;
  case '=':printf("<=, 25>\n");break;
  case ';':printf("<;, 26>\n");break;
  case '(':printf("<(, 27>\n");break;
  case ')':printf("<), 28>\n");break;
  case '#':printf("<#, 0>\n");break;
  }
  i++;
  }
}

int main(void)

{
  char a[300];

  printf("input : ");

  gets(a);
  cifafenxi(a);

  return 0;

}

转载于:https://www.cnblogs.com/shuaibi/p/4898199.html

你可能感兴趣的文章
我的友情链接
查看>>
DNS Server 3 子域的授权
查看>>
2013-05-25
查看>>
Initializing the Oracle ASMLib driver: [FAILED]
查看>>
innodb_force_recovery强制修复MySQL异常关闭问题
查看>>
keepalived 实用简介
查看>>
svn http运行
查看>>
如何将Windows XP SP3改成SP2
查看>>
我的友情链接
查看>>
Spring 3.0
查看>>
curl 模拟qq登录
查看>>
从概念理解Lucene的Index(索引)文档模型
查看>>
实战MYSQL 8.0.12 主主复制配置过程
查看>>
IBM ServerGuide 9.0
查看>>
网维大师有盘网吧实施方案
查看>>
sql优化(三)
查看>>
转载:在 ANDROID DIALOG中使用AUTOCOMPLETETEXT
查看>>
spring boot 拦截器、过滤器、监听器、定时器使用
查看>>
java8新特性介绍(一)
查看>>
查看Linux服务器有没有无线网卡
查看>>