C语言实现词法识别

该博客介绍了如何使用C语言编写一个简单的词法分析器,读取“input.txt”文件并输出到“output.txt”。程序识别保留字、运算符、标识符、常数和分隔符,并在遇到非法字符时报告错误信息。保留字包括'const'、'var'等,程序逐字符读取并判断其类别。
摘要由CSDN通过智能技术生成

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<math.h>
int main() {
int i = 0, j, k = 0, state = 1, f = 0, linenum = 1;
char a[11][10] = { “const”,“var”,“call”,“begin”,“if”,“while”,“do”,“odd”,“end”,“then”,“procedure” };
char b, d[40] = { “\0” };
freopen(“input.txt”, “r”, stdin);
freopen(“output.txt”, “w”, stdout);
b = getchar();
printf(“1为保留字,2为运算符,3为标示符,4为常数,5为分隔符\n”);
while (b != EOF)/* 判断所输入字符是否为结束符 */ {

	if (b == ' ' || b == '\n' || b == '\t')/* 滤过空格、换行等分隔符号 */
	{
		if (b = '\n')
			linenum++;
		b = getchar();
	}
	else if ((b >= 'a'&&b <= 'z') || (b >= 'A'&&b <= 'Z'))/* 识别标识符以及保留字 */
	{
		d[i++] = b;
		b = getchar();
		while ((b >= 'a'&&b <= 'z') || (b >= 'A'&&b <= 'Z') || (b >= '0'&&b <= '9'))
		{
			d[i++] = b; b = getchar();
		} for (j = 0; j < 11; j++)/* 查询保留字表确定该单词是否是保留字 */
		{
			if (strcmp(d, a[j]) == 0)
			{
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值