Lex - 如何在命令行上运行/编译lex程序

时间:2012-01-14 02:36:15

标签: c lex

我对Lex和Yacc很新。我有一个Lex程序。示例:wordcount.l

我正在使用窗户和腻子。

我只是想运行这个文件..

  1. wordcount.l文件是否在C盘上?

  2. 我是否编译Lex程序并生成.c程序,然后运行什么?

  3. 我尝试使用命令行:Lex wordcount.l

    但是我找不到文件......

    wordcount.l

    %{  
    #include <stdlib.h>
    #include <stdio.h>
    
    int charCount=0;
    int wordCount=0;
    int lineCount=0;
    %}
    %%
    \n      {charCount++; lineCount++;}   
    [^ \t\n]+   {wordCount++; charCount+=yyleng;}
    .       {charCount++;}
    
    %%
    main(argc, argv)
    int argc;
    char** argv;
    {           
    if (argc > 1)
    {
        FILE *file;
        file = fopen(argv[1], "r");
        if (!file)
        {
            fprintf(stderr, "Could not open %s\n", argv[1]);
            exit(1);
        }
        yyin = file;
    }
    
    yylex();
    printf("%d   %d   %d\n", charCount, wordCount, lineCount);
    }
    

    在putty中如何编译和运行该程序?

2 个答案:

答案 0 :(得分:15)

首先,您必须使用wordcount.l转到文件cd所在的目录。然后使用lex wordcount.l生成文件lex.yy.c。要运行该程序,您需要使用 c编译器(如gcc)进行编译。使用gcc,您可以使用gcc -lfl lex.yy.c进行编译。这将创建a.out,可以使用./a.out

运行

答案 1 :(得分:3)

lex file.l
gcc lex.yy.c -ly -ll
./a.out

这些也有效。我在Ubuntu 14.04中使用它。