⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lexer.c

📁 C写的语法分析 递归了程序法语法分析 来自龙书
💻 C
字号:
#include "global.h"

char lexbuf[BSIZE];
int lineno = 1;
int tokenval = NONE;

int lexan()
{
    int t;
    while(1)
    {
        t = getchar();
        if(t == '\n')
        {
            lineno = lineno + 1;
        }
        else if(isdigit(t))//t是数字
        {
            ungetc(t,stdin);
            scanf("%d",&tokenval);
            return NUM;
        }
        else if(isalpha(t))//t是字母
        {
            int p,b=0;
            while(isalnum(t))
            {
                lexbuf[b] = t;
                t = getchar();
                p = b + 1;
                if(b >= BSIZE)
                {
                    error("compiler error!");
                }
            }
            lexbuf[b] = EOS;
            if(t != EOF)
            {
                ungetc(t,stdin);
            }
            p = lookup(lexbuf);
            if(p == 0)
            {
                p = insert(lexbuf,ID);
            }
            tokenval = p;
            return symtable[p].token;
        }
        else if(t == EOF)
        {
            return DONE;
        }
        else if(t == ' ' || t == '\t')
        {
            ;
        }
        else
        {
            tokenval = NONE;
            return t;
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -