📌  相关文章
📜  Lex代码用文件中的另一个单词替换一个单词

📅  最后修改于: 2021-06-28 07:27:14             🧑  作者: Mango

给定一个文本文件作为输入,任务是用文件中的另一个单词替换给定的单词。

Lex是一个生成词法分析器的计算机程序,由Mike Lesk和Eric Schmidt编写。
Lex读取指定词法分析器的输入流,并输出以C编程语言实现词法分析器的源代码。

先决条件: Flex(快速词法分析器生成器)

方法:
众所周知, yytext拥有当前匹配令牌的值,我们可以将其与要替换的word进行比较。如果yytext的值和要替换的单词的值相同,则用另一个单词替换该单词并将其写入输出文件,否则只需将输入文件的内容复制到输出文件即可。

输入文件: input.txt

下面是上述方法的实现:

/* LEX code to replace a word with another
   taking input from file */
  
/* Definition section */
/* variable replace_with and replace can be 
   accessed inside rule section and main() */
  
%{
#include
#include
  
char replace_with [] = "Best";
char replace [] ="A";
  
  
%}
  
/* Rule Section */
/* Rule 1 compares the matched token with the
   word to replace and replaces with another word
   on successful match else simply writes the
   content of input file to output file */
/* Rule 2 matches everything other than string
   like whitespace, digits, special symbols etc 
   and writes it to output file */
  
%%
[a-zA-Z]+    { if(strcmp(yytext, replace)==0)
                   fprintf(yyout, "%s", replace_with);
                else
                    fprintf(yyout, "%s", yytext);}
.            fprintf(yyout, "%s", yytext);
%%
  
  
int yywrap()
{
    return 1;
}
  
/* code section */
int main()
{
        extern FILE *yyin, *yyout;
          
        /* open the input file
           in read mode */
    yyin=fopen("input.txt", "r");
   
        /* open the output file
           in write mode */
    yyout=fopen("output.txt", "w");
      
        yylex();
}

输出:

输出文件: output.txt

想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。