Newsgroups: fj.questions.unix
Path: galaxy.trc.rwcp.or.jp!jaist-news!cs.titech!wnoc-tyo-news!nec-tyo!nec-gw!sgiblab!darwin.sura.net!europa.eng.gtefsd.com!howland.reston.ans.net!newsserver.jvnc.net!panasonic.com!chorus.mei!maxwell!simazaki
From: simazaki@edatf.drl.mei.co.jp (Shimazaki EDATF)
Subject: yacc & lex
Message-ID: <CEGysC.8rz@drl.mei.co.jp>
Sender: usenet@drl.mei.co.jp
Nntp-Posting-Host: lala
Organization: Matsushita Electric Industrial Co., Ltd., Osaka, JAPAN.
X-Newsreader: mnews [version 1.16]
Date: Wed, 6 Oct 1993 09:38:34 GMT
Lines: 84
Xref: galaxy.trc.rwcp.or.jp fj.questions.unix:4080
X-originally-archived-at: http://galaxy.rwcp.or.jp/text/cgi-bin/newsarticle2?ng=fj.questions.unix&nb=4080&hd=a
X-reformat-date: Mon, 18 Oct 2004 15:18:22 +0900
X-reformat-comment: Tabs were expanded into 4 column tabstops by the Galaxy's archiver. See http://katsu.watanabe.name/ancientfj/galaxy-format.html for more info.


$BEg:j!w>>2<EE4o$G$9!#(B

yacc$B$H(Blex$B$N@8@.%=!<%9$NJ#?t;HMQ$K$D$$$F0J2<$NJ}!9$+$i$42sEz$r$$$?$@$-!"$I$&$b$"$j$,$H$&$4$6$$$^$9!#(B
$B!)!)$5$s!J$&$C%a!<%k$r>C$7$F$7$^$C$?$!!*!*(B_o_)
$BJ!0fBg3X$NK-ED$5$s(B
sakuma$B$5$s(B
$B%=%U%H%&%(%"6=6H$NBgLn$5$s(B
$B?9$5$s(B
$B#J#V#C$N]/0f$5$s(B
$B:{;3$5$s(B
$B?yED$5$s(B

$B0J2<$K$^$H$a$r=q$$$F$*$-$^$9!#(B
$B8=:_;d$O!"(Byacc$B$K$D$$$F$O(Bbyacc$B$rMQ$$!"(Blex$B$K$D$$$F$O(Bsed$B$GCV$-49$($kJ}K!$rMQ$$$F$$$^$9!#(B
lex$B$K$D$$$F$b%W%j%U%#%C%/%9$r;XDj=PMh$k(Blex$B$rMQ$$$?$$$N$G!"$b$7$4B8$8$NJ}$,$$$i$C$7$c$$$^$7$?$i!"(B
$B65$($F2<$5$$!#(B

=======================================================================================================
(1)sed$B$GCV$-49$($k!#(B
[$BNc(B]
lex -t test.l | sed -e 's/yy/test_/g' -e 's/YY/TEST_/g' > test.yy.c

(2)#define$B$r;H$&!#(B
[$BNc(B]
yacc:
%{
#define yyact test_act
#defineyychar test_char
#define yyval test_val
:
#define yylex test_lex
%}
lex:
%{
#define yyback test_back
#defineyybgin test_bgin
:
#define yylex test_lex
#defineyywrap test_wrap

(3)$B%W%j%U%#%C%/%9$r;XDj=PMh$k(Blex,yacc$B$r;H$&!#(B
[$BNc(B]
yacc:
bison -a $B%W%j%U%#%C%/%9(B
byacc -p $B%W%j%U%#%C%/%9(B
lex:??

(4)1$B$D$N(Blex$B%U%!%$%k(B,yacc$B%U%!%$%k$G(B2$B$D$N%U%)!<%^%C%H$rFI$a$k$h$&$K$9$k!#(B
[$BNc(B]
yacc:
%token TEST1_START TEST2_START
%{
externfirst_tok = 0;
%%
combined: TEST1_START test1_grammar
|  TEST2_START test2_grammar

test1_grammer: $B!D(B

test2_grammer: $B!D(B

%%
main()
{
first_tok = TEST1_START;
yyparse();
first_tok = TEST2_START;
yyparse();
:
lex:
yylex()
{
if(first_tok!=0) {
return(first_tok);
}
:

(5)start condition(%START)$B$r;H$&!#(B
??$B$I$&$d$k$N$+$h$/$o$+$j$^$;$s$G$7$?!#(B
$B>>2<EE4o;:6H!J3t!KK\<R5;=QItLgLg??CO6h(B $B#E#D#A%?%9%/%U%)!<%9(B $BEg:j(B $B7rFs(B
$B")(B571 $BBg:eI\Lg??;TBg;zLg??#1#0#0#6HVCO(B 
TEL. 06-900-9606    FAX. 06-906-1749    MEITS. 7-622-6212 (6210$B!A(B6219)
E-mail.simazaki@edatf.drl.mei.co.jp(simazaki@vdrl.src.mei.co.jp)
