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

📄 parser.c

📁 c的编译器
💻 C
字号:
#include "global.h"

int lookhead;

parse()
{
    lookhead = lexan();
    while (lookhead != DONE) {
        expr();
        match(';');
    }
}

expr()
{
    int t;
    term();

    while (1)
    {
        switch (lookhead) {
            case '+': case '-':
                t = lookhead;
                match(lookhead);
                term();
                emit(t, NONE);
                continue;
            default:
                return;
        }
    }
}

term()
{
    int t;
    factor();
    while (1)
    {
        switch (lookhead) {
            case '*': case '/': case DIV: case MOD:
                t = lookhead;
                match(lookhead);
                factor();
                emit(t, NONE);
                continue;
            default:
                return;
        }
    }
}

factor()
{
    switch (lookhead) {
        case '(':
            match('(');
            expr();
            match(')');
            break;
        case NUM:
            emit(NUM, tokenval);
            match(NUM);
            break;
        case ID:
            emit(ID, tokenval);
            match(ID);
            break;
        default:
            error("systax error 1");
    }
}

match(t)
    int t;
{
    if (lookhead == t)
        lookhead = lexan();
    else error("systax error 2");
}

⌨️ 快捷键说明

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