编译原理c++简单词法分析器

    简单词法分析程序

        编译原理课程词法分析程序,自己c++写的比较简单功能实现,需要的用户可以在此基础上进行自己思路的扩充修改。功能:读取一个自己设定路径下的txt文件中代码,然后将分析结果保存在另外一个自己设定路径下txt文件中,下附加代码:

/*
Name: 词法分析器 
Copyright: 
Author: ycc 
Date: 24/03/17 11:24
Description: 词法分析器用于读取txt文本,其中每一个不同的单词都必须以空格隔开 
*/
#include
#include
using namespace std;
int main()
{
char a[200];
string b[200];
static int j=0;
int i;
int count;
int flag;
ifstream infile("C:/Users/Y/Desktop/new.txt ",ios::in);//载入自己设定路径输入文件 
ofstream outfile("C:/Users/Y/Desktop/old.txt",ios::out);//载入自己设定路径输出文件 
for(i=0;i<200;i++)
{
 a[i]=infile.get();//输入文件读取到数组a[]中  
    }
    for(i=0;i<200;i++)//开始进行数组a[]内字符识别 
    {
 switch(a[i])
 {
     case '('://识别符号( 
  {
  b[j]=a[i];
  outfile<<"<1,"<"<"<"<"<"<"<"<"<"<"<"<"<"<"<"<"<':
 {
if(a[i+1]=='=')//识别符号 >=
{
b[j]=a[i];
b[j]+=a[i+1];
i++;
outfile<<"<14,"<"<
{
b[j]+=a[i];
outfile<<"<15,"<"<"<"<='0'&&a[i]<='9'||a[i]=='.')//识别小数及整数  
  {
 b[j]+=a[i];

  if(a[i+1]==' '||a[i+1]=='\n')//识别小数,下面语句进行位数控制 
 {
 if(a[i-1]=='.'||a[i-2]=='.'||a[i-3]=='.'||a[i-4]=='.'||a[i-5]=='.'||a[i-6]=='.')
outfile<<"<18(1),"<"<"<='a'&&a[i]<='z') //关键字识别,自己添加需要的关键字 
        {
  b[j]+=a[i];
  if(a[i+1]==' '||a[i+1]=='\n')
  {
  if(b[j]=="while")
  outfile<<"<19(1),"<"<"<"<"<"<"<"<"<"<"<


结果显示效果如下(我是两个一起截图的)

编译原理c++简单词法分析器_第1张图片



你可能感兴趣的:(c++,编译原理,词法分析)