やたらC#を薦めるプログラミングスレ

このエントリーをはてなブックマークに追加
29以下、名無しにかわりましてVIPがお送りします
>>27
. .: : : : : : : : :: :::: :: :: : :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    . . : : : :: : : :: : ::: :: : :::: :: ::: ::: ::::::::::::::::::::::::::::::::::::::
   . . .... ..: : :: :: ::: :::::: :::::::::::: : :::::::::::::::::::::::::::::::::::::::::::::
        Λ_Λ . . . .: : : ::: : :: ::::::::: :::::::::::::::::::::::::::::
       /:彡ミ゛ヽ;)ー、 : ::: : :: ::::::::: :::::::::::::::::::::::::::
      / :::/:: ヽ、ヽ、 ::i . .:: :.: ::: . :::::::::::::::::::::::::::::::::::::::
      / :::/;;:   ヽ ヽ ::l . :. :. .:: : :: :: :::::::: : ::::::::::::::::::
 ̄ ̄ ̄(_,ノ  ̄ ̄ ̄ヽ、_ノ

連レスごめん。うざかったら消えます
拡張元のlexソース

calc.l

%%
"+"   return(AD);
"="   return(EQ);
";"   return(SM);
[0-9]+  {sscanf(yytext, "%d", &yylval);
     return(NUMBER);}
[a-c]  {yylval = yytext [0] - 97;
     return(ALPHABET);}
[ \t\n]+ ;
.     return(yytext[0]);
%%
30以下、名無しにかわりましてVIPがお送りします:2009/04/29(水) 16:21:41.58 ID:42jth76J0
yacc(calc.y)
%token  ALPHABET
%token  SM
%token  NUMBER
%right  EQ
%left   AD
%%
program :lists        {printf("HL 0 0\n");}
     ;
lists  :/* empty */     {printf("INT 0 3\n");}
     | lists list
     ;
list   :ALPHABET       {printf("LA 0 %d\n",$1);}
      EQ exp SM
                {printf("ST 0 0\n");}
     ;
exp    : exp AD exp     {printf("AD 0 0\n");}
     | NUMBER       {printf("LC 0 %d\n",$1);}
     | ALPHABET      {printf("LV 0 %d\n",$1);}
     ;
%%
#include "lex.yy.c"
main()
{
 yyparse();
}
yyerror(char *s)
{
 fprintf(stderr, "ERROR: %s\n",s);
}