FORTRAN语言编译器---词法分析(C语言简易版)

本文介绍了一个使用C语言编写的FORTRAN语言词法分析器,旨在识别输入串中的单词符号、标识符、关键字等,并通过预处理子程序对源程序代码进行词法分析。该分析器能辨别关键字、标识符、常数、运算符号和界符,通过文件读入获取源代码,然后逐一识别单词符号。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.实验题目:词法分析
用高级语言编写一个词法分析器,使之能识别输入串,并把分析结果(单词符号,标识符,关键字等等)输出.输入源程序,输入单词符号,本词法分析器可以辨别关键字,标识符,常数,运算符号和某些界符,运用了文件读入来获取源程序代码,再对该源程序代码进行词法分析,这就是词法分析器的基本功能.当词法分析器调用预处理子程序处理出一串输入字符放进扫描缓冲区之后,分析器就从此缓冲区中逐一识别单词符号.当缓冲区里的字符串被处理完之后,它又调用预处理子程序来处理新串.
2.实验目的
1)熟悉词法分析的基本原理,词法分析的过程,以及词法分析中要注意的一些问题。
2)复习高级语言,进一步加强用高级语言来解决实际问题的能力。
3.实验内容
1)程序总控图如下
......
2)实验步骤
1、基于实验的内容,构造程序所需的模块.
2、根据已建构的模块,写出各个模块的相应程序代码.
3、在主函数中调用模块来完成所要得到的效果.

/*! @ compiler_CFFX.c 

************************************
模块名         : 编译器---词法分析 
文件名         : compiler_CFFX.c
文件实现功能   : 词法分析 
作者           : onlinewan
版本           : 1.0
** ******************************** */

#include <stdio.h>

#include <string.h>

#include <ctype.h>

#include <alloc.h>

#include <conio.h> 

int IsLetter(char ch) 

{/*判断是否是字母,是则返回 1,否则返回 0  */

    if(isalpha(ch))        return 1;

    return 0;

}

int IsDigit(char ch)

{/*判断是否为数字,是则返回 1,否则返回 0 */

    if(isalnum(ch))              return 1;

    return 0;

}

int IsSpace(char ch)

{/*判断是否为空白符(空格、换行、制表符等),是则返回 1,否则返回 0*/ 

    if(isspace(ch))              return 1;

    return 0; 

}

void GetChar(FILE *fp,char *ch)

{/*读取字符送ch*/

     *ch = fgetc(fp);

}

void GetBC(FILE *fp,char *ch)

{/*如果是空白则继续读下一个,直到不是空白*/

     do {

        GetChar(fp,ch);

     }while(IsSpace(*ch)&&(*ch != EOF));   

}

void Retract(FILE *fp,char *ch)

{/*光标回退一位,并使 ch 为空*/

     fseek(fp,-1,1);

     *ch = '';

}

char Reserve(char *strToken)

{/*返回关键字的编码*/

       if(strcmp(strToken,"BEGIN") == 0)  return '1';

    &n

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值