[ZZ]bison flex for windows 使用说明

来源:互联网 发布:捕鱼3d源码 编辑:程序博客网 时间:2024/04/30 01:19

you will need the lastest versions of:

  1. flex-2.5.4a-1.exe

  2. bison-2.4.1-setup.exe

  3. After that, do a full install in a directory of your preference without spaces in the name. I suggestC:\GnuWin32. Do not install it in the default (C:\Program Files (x86)\GnuWin32) because bison has problems with spaces in directory names, not to say parenthesis.

  4. Also, consider installing Dev-CPP in the default directory (C:\Dev-Cpp)

  5. After that, set the PATH variable to include the bin directories of gcc (in C:\Dev-Cpp\bin) andflex\bison (in C:\GnuWin32\bin). To do that, copy this: ;C:\Dev-Cpp\bin;C:\GnuWin32\bin and append it to the end of the PATH variable, defined in the place show by this figure:
    step-by-step to set PATH variable under Win-7.
    If the figure is not in good resolution, you can see a step-by-step here.

  6. Open a prompt, cd to the directory where your ".l" and ".y" are, and compile them with:

    1. flex hello.l
    2. bison -dy hello.y
    3. gcc lex.yy.c y.tab.c -o hello.exe

Commands to create lexical analyzer, parser and executable.

You will be able to run the program. I made the sources for a simple test (the infamous Hello World):

Hello.l

  %{  #include <stdlib.h>  #include "y.tab.h"  %}  %%  ("hi"|"oi")"\n"       { return HI;  }  ("tchau"|"bye")"\n"   { return BYE; }  .                     { yyerror();  }  %%  int main(void)  {     yyparse();     return 0;  }  int yywrap(void)  {     return 0;  }  int yyerror(void)  {      printf("Error\n");      exit(1);  }

Hello.y

%token HI BYE%%program:          hi bye        ;hi:             HI     { printf("Hello World\n");   }        ;bye:            BYE    { printf("Bye World\n"); exit(0); }         ;
原创粉丝点击