Article View: fj.lang.implementation
Article #12$B#y#a#c#c$H#l#e#x$N4pK\E*$J;v$r65$($F$/$@$5$$(J
From: BNkLZ J
Date: Mon, 20 Oct 1997 00:00
Date: Mon, 20 Oct 1997 00:00
98 lines
2856 bytes
2856 bytes
$B!!$O$8$a$^$7$F!"NkLZ!wEl<G%^%$%/%m%(%l%/%H%m%K%/%9!J3t!K$H?=$7$^$9!#(J
$B$o$1$"$C$F#y#a#c#c$H#l#e#x$rJY6/$7;O$a$?$N$G$9$,F~Lg=q$N:G=i$N%5%s%W%k(J
$B%W%m%0%i%`$Gm5$$$F$7$^$$!"$I$J$?$+=iJbE*$J$3$H$G$9$,$465<x4j$$$^$9!#(J
$B<B:]$K;29M$K$7$F$$$k$N$O#H#B#J=PHG6I$N#U#N#I#X(J
$B#y#a#c#c$H#l#e#x$N;H$$J}$H$$$&(J
$BK\$G!"$=$N#2#0%Z!<%8$K$"$k%5%s%W%k%W%m%0%i%`$r$[$\$=$N$^$^$G$9!#(J
$B0J2<$K#y#a#c#c$H#l#e#x$N%=!<%9$r5-:\$7$^$9!#(J
--yacc sample.y---------------------------------------
%{
#include <stdio.h>
%}
%token IF
%token IDENTIFIER
%token CONSTANT
%%
if_statement :IF '(' condition ')' statement
{printf("if_statement accepted\n");}
;
condition :IDENTIFIER '>' CONSTANT
{printf("condition > accepted\n");}
;
statement :IDENTIFIER '=' CONSTANT
{printf("statement = accepted\n");}
;
%%
extern FILE *yyin;
main()
{
while(!feof(yyin))$B!!(J{
yyparse();
}
}
yyerror(s)
char *s;
{
printf("%s\n",s);
}
--yacc end------------------------------------------
--lex sample.l-----------------------------------------------
%{
#include "y.tab.h"
int line=0,word=0,byte=0;
%}
%%
[\n]+ printf("RETURN\n");
[\t]+ printf("TAB\n");
[ ]+ printf("SP\n");
[(){};=><!,.] printf("token %c\n",yytext[0]);return(yytext[0]);
"if" printf("token IF %d\n",IF);return(IF);
[a-zA-Z][a-zA-Z0-9]* printf("token IDENTIFIER
%s\n",yytext);return(IDENTIFIER);
[0-9]+ printf("token CONSTANT %s\n",yytext);return(CONSTANT);
. printf("unknown token %s\n",yytext);
%%
yywarp()
{
printf("line=%d word=%d byte=%d\n",line,word,byte);
return(1);
}
--lex end--------------------------------------------------
yacc -d -v -t sample.y
lex sample.l
cc -g -o test y.tab.o lex.yy.o -g -ll -DYYDEBUG=1 -DLEXDEBUG=1
$B$H%3%s%Q%$%k$7$F!"(J
$B@8@.$5$l$?<B9T%U%!%$%k$K<!$N#29T$N%=!<%9(Jsample.c
if(intdata > 100)
intdata = 0 ;
$B$r2r@O$5$;$k$H(J
test < sample.c
token IF 257
token (
token IDENTIFIER intdata
SP
token >
SP
token CONSTANT 100
token )
RETURN
token IDENTIFIER intdata
SP
token =
SP
token CONSTANT 0
SP
token ;
RETURN
syntax error
$B$H$J$j!"#l#e#x$K$h$k;z6g2r@O$O9T$o$l$F$$$k$h$&$G$9$,!"(J
$B9=J82r@O$,(Jsyntax error$B$K$J$C$F$$$^$9!#(J
$B#O#S$O(JSunOS4.1.4$B$GIUB0$N#y#a#c#c$H#l#e#x$H#c#c$r;HMQ$7$F$$$^$9!#(J
$B$I$J$?$+59$7$/$465<x4j$$$^$9!#(J
$B0J>e(J
Technical Details
Message-ID:
<62evvv$5q1@tmcdaa.cgk.tosmec.toshiba.co.jp>Path:
arc1-ca.pugleaf.net!unknown!not-for-mailShow Full Headers
Complete Article Headers
X-Google-Language: Japanese,JIS X-Google-Thread: 10692b,941cc1cb70388a70,start X-Google-Attributes: gid10692b,public From: "$BNkLZ(J" <suzuki@chubu.tosmec.toshiba.co.jp> Subject: $B#y#a#c#c$H#l#e#x$N4pK\E*$J;v$r65$($F$/$@$5$$(J Date: 1997/10/20 Message-ID: <62evvv$5q1@tmcdaa.cgk.tosmec.toshiba.co.jp> X-Deja-AN: 282084661 Organization: TOSHIBA MICROELECTRONICS CORP., Japan Newsgroups: fj.lang.implementation