📄 词法分析.txt
字号:
#include <iostream.h>
#include <string.h>
char file[500];
char buf[50];
char * p[10] = {"if", "while", "for", "else", "void", "main", "int",
"float", "double", "char"};
int isSeparator(char ch);
int isDigit(char ch);
int isLetter(char ch);
void main(int argc, char * argv[])
{
char ch;
int i = 1, t = 0;
cout << "please input the program('@' to end):" << endl;
file[0] = cin.get();
while (ch != '@')
{
ch = cin.get();
file[i++] = ch;
};
i = 0;
ch = file[i++];
while (ch != '@')
{
if(isSeparator(ch))
{
cout << "(5, \"" << ch << "\" )" << endl;
}
else if(ch == '+' || ch == '-' || ch == '*' || ch == '/' || ch == '='
|| ch == '>' || ch == '<')
{
if (file[i] != '=')
{
cout << "(4, \"" << ch << "\" )" << endl;
}
else
{
buf[1] = ch;
buf[2] = file[i];
buf[3] = '\0';
cout << "(4, \"" << ch << file[i] << "\" )" << endl;
i += 1;
}
}
else if(isLetter(ch) || ch == '_')
{
t = 0;
buf[t++] = ch;
while (isLetter(file[i]) || isDigit(file[i]))
{
buf[t++] = file[i++];
}
buf[t] = '\0';
int flag = 0;
for (int j = 0; j < 10; j++)
{
if(strcmp(buf, p[j]) == 0)
{
cout << "(1, \"";
for (int j = 0; j < t; j++)
{
cout << buf[j];
}
cout << "\" )" << endl;
flag = 1;
}
}
if (flag == 0)
{
cout << "(2, \"";
for (int j = 0; j < t; j++)
{
cout << buf[j];
}
cout << "\" )" << endl;
}
}
else if (isDigit(ch))
{
if(!isDigit(ch))
{
cout << "(3, \"" << ch << "\" )" << endl;
}
else
{
t = 0;
buf[t++] = ch;
while (isDigit(file[i]))
{
buf[t++] = file[i++];
}
buf[t] = '\0';
cout << "(3, \"";
for (int j = 0; j < t; j++)
{
cout << buf[j];
}
cout << "\" )" << endl;
}
}
ch = file[i++];
}
}
int isSeparator(char ch)
{
if (ch == ',' || ch == ';' || ch == '{' || ch == '}' || ch == '(' ||
ch == ')')
{
return 1;
}
else
return 0;
}
int isDigit(char ch)
{
if (ch <= '9' && ch >= '0')
{
return 1;
}
else return 0;
}
int isLetter(char ch)
{
if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z'))
{
return 1;
}
else
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -