美文网首页
配置 WinFlexBison VS2017

配置 WinFlexBison VS2017

作者: 孤泉冷月 | 来源:发表于2019-05-18 20:51 被阅读0次

    WinFlexBison 下载地址:
    https://sourceforge.net/projects/winflexbison/?source=typ_redirect

    配置环境:
    window10 VS2017
    win_flex_bison-latest.zip 解压到 E:\FlexBison 目录下


    WinFlexBison.png
    1.0新建项目.png 1.1新建项目.png 2.0设置依赖项.png 2.1设置依赖项.png 2.2设置依赖项.png

    可能有弹框 点确定就好

    2.3设置依赖项.png 3.0设置可执行目录.png 3.1设置可执行目录.png 3.2设置可执行目录.png 4.0编译运行.png
    //Parser.y
    %{
    
    #include <stdio.h>
    #include <ctype.h>
    #include <math.h>
    
    #define YYSTYPE  double
    
    void yyerror(const char *text);
    
    int yylex(void);
    %}
    
    /////////////////////////////////////////////////////////////////////////////
    // declarations section
    // place any declarations here
    
    %token NUMBER
    
    %left '+' '-'
    %left '*' '/'
    %right '^'
    %%
    
    /////////////////////////////////////////////////////////////////////////////
    // rules section
    // place your YACC rules here (there must be at least one)
    command : exp {printf("%lf\n",$1);}
        ;
    
    exp     : NUMBER         {$$ = $1;}
           | exp '+' exp     {$$ = $1 + $3;}
           | exp '-' exp     {$$ = $1 - $3;}
           | exp '*' exp     {$$ = $1 * $3;}
           | exp '/' exp     {
                                if(0 != $3)
                                {
                                   $$ = $1 / $3;
                                }
                                else
                                {
                                   $$=0;
                                }
                            }
           | exp '^' exp     {$$ = pow($1,$3);}
           | '(' exp ')'     {$$ = $2;}
        ;
    %%
    
    /////////////////////////////////////////////////////////////////////////////
    // programs section
    
    int yylex(void)
    {
       // place your token retrieving code here
       int c = 0;
    
       while( (c = getchar()) == ' ');
       if( isdigit(c) )
       {
           ungetc(c,stdin);
           scanf_s("%lf",&yylval);
           return (NUMBER);
       }
    
       if( '\n' == c )
       {
           return 0;
       }
       return c;
    }
    
    int main(void)
    {
        yyparse();
        system("PAUSE");
        return 0;
    }
    
    void yyerror(const char *text)
    {
       fprintf(stderr,"%s\n",text);
    }
    
    4.1编译运行.png 4.2编译运行.png 4.3编译运行.png 4.4编译运行.png 4.5编译运行.png 4.6编译运行.png 4.7编译运行.png 4.7.1编译运行.png 4.7.2编译运行.png 4.8编译运行.png

    参考 https://www.jianshu.com/p/a3aa021a0182

    相关文章

      网友评论

          本文标题:配置 WinFlexBison VS2017

          本文链接:https://www.haomeiwen.com/subject/zfkxzqtx.html