ll.cpp
来自「一个递归下降语法分析器。 测试数据为 i a + nul ( nul 」· C++ 代码 · 共 68 行
CPP
68 行
#include <fstream.h>
#include <stdio.h>
struct _SYM
{
char code;
char val[10];
}SYM;
void E();
void T();
void F();
void ADVANCE();
ifstream cinf("LEX.TXT");
void main()
{
ADVANCE();
E();
printf("\n%s\n", (SYM.code == '#')?"END":"ERROR!");
}
void ADVANCE()
{
cinf>>SYM.code>>SYM.val;
printf("%c", SYM.code);
}
void E() //E→T|{+T}
{
T();
while (SYM.code == '+')
{
ADVANCE();
T();
}
}
void T() //F→F{*F}
{
F();
while (SYM.code == '*')
{
ADVANCE();
F();
}
}
void F() //F→i|(E)
{
if (SYM.code == 'i')
ADVANCE();
else
{
if (SYM.code == '(')
{
ADVANCE();
E();
if (SYM.code == ')')
ADVANCE();
else
printf("ERROR!\n");
}
else
printf("ERROR!\n");
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?