2

「true または false」などの式の電卓を作成しようとしています。ここに私の.lファイルがあります:

%{
#include <stdlib.h>
#include "y.tab.h"
%}

%% 
"true"              {yylval=1;  return BOOLEAN;}
"false"             {yylval=0;  return BOOLEAN;}
"nor"               {return NOR;}
" "                 { }
.                   {return yytext[0];}

%%

int main(void)
{
    yyparse();
    return 0;
}

int yywrap(void)
{
     return 0;
}
int yyerror(void)
{
    printf("Error\n");
}

ここに私の.yファイルがあります:

/* Bison declarations.  */
%token BOOLEAN
%token NOR
%left NOR
%% /* The grammar follows.  */

input:
    /* empty */
    | input line
    ;

line:
    '\n'
    | exp '\n' {printf ("%s",$1); }
    ;

exp:
    BOOLEAN     { $$ = $1;}
    | exp NOR exp   { $$ = !($1 || $3); }
    | '(' exp ')'  { $$ = $2;}
    ;
%%

問題は、「true または false」のような式を入力すると、結果が出力されないことです。誰が何が悪いのか知っていますか?

4

1 に答える 1

2

これ

printf ("%s",$1);

0アドレスまたはで文字列の出力を試みます1。あなたはおそらく意味した

printf ("%d",$1);
于 2013-02-28T17:33:38.120 に答える