🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: fj.lang.implementation
2 messages
2 total messages Started by BNkLZ J Mon, 20 Oct 1997 00:00
$B#y#a#c#c$H#l#e#x$N4pK\E*$J;v$r65$($F$/$@$5$$(J
#12
Author: BNkLZ J
Date: Mon, 20 Oct 1997 00:00
98 lines
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
Thank you Re: $B#y#a#c#c$H#l#e#x$N4pK\E*$J;v$r65$($F$/$@$5$$(J
#15
Author: BNkLZ J
Date: Wed, 22 Oct 1997 00:00
40 lines
2385 bytes
$B=u$1$F$$$?$@$-$^$7$F!"$"$j$,$H$&$4$6$$$^$7$?!#(J

> $B;d$K$bEz$($i$l$k$+$J!"$H$$$&$3$H$G(J follow $B$5$;$F$$$?$@$-$^$9!#(J
> Sun $B$N(J YACC/LEX $B$N;EMM$OCN$i$J$$$N$G(J
> Q1: "while(!feof(yyin))$B!!(J{"		$B$OI,MW$+!)(J
$B$O$$!"L5$/$F$b$G$-$^$7$?!#(J
O'Reilly & Associates,Inc. $B$N(Jlex&yacc$B$K:\$C$F$$$?$N$r(J
$BC1=c$K??;w$7$^$7$?!#(J

> Q2: sample.l $B$NJ#J8$KEO$k%"%/%7%g%s!"Nc$($P(J
> Q2:	printf("token %c\n",yytext[0]);return(yytext[0]);
> Q2: $B$O(J
> Q2:	{printf("token %c\n",yytext[0]);return(yytext[0]);}
> Q2: $B$G$J$$$H$$$1$J$$$N$G$O$J$$$+!)(J
$B$O$$!"$=$NDL$j$G$7$?!#(Jreturn$BJ8$@$1$J$i$h$+$C$?$N$G$9$,!"(J
$B$J$^$8#l#e#x$N2r@O7k2L$r%b%K%?$7$h$&$H$7$F7G:\$5$l$F$$$k(J
$B%5%s%W%k$K(Jprintf$B$rDI2C$7$F$7$^$$$^$7$?!#(J
$B$D$^$j!"!P!Q$G3g$i$J$+$C$?$?$a$K#p#r#i#n#t#fJ8$N$_<B9T$7$F$7$^$$(J
$B%H!<%/%s$r%Q!<%5!<$KJV$7$F$$$J$+$C$?$b$h$&$G$9!#(J 

> Q3: yydebug=1 $B$H$7$J$/$F$b(J debug $B>pJs$,=P$k$N$O$J$<$+!)(J
> 
> $B$H$$$C$?5?Ld$,$"$k$N$G$9$,$=$l$O$5$F$*$-!"(Jyacc $B$G0J2<$N$h$&$K(J
> $BJ8$N:G8e$N%;%_%3%m%s$bG'<1$9$kI,MW$,$"$k$H;W$$$^$9!'(J
> 
> A1:	statement       :IDENTIFIER '=' CONSTANT ';'
>                                                                      
^^^$B$3$3$G$9$M(J
yydebug=1 $B$K$7$J$/$F$b(Jdebug$B>pJs$,=P$k$N$O(Jyacc$B$N<B9T;~$K(J
-t$B$rIU$1$F$$$k$N$G!"$3$A$i$G(Jyydebug$B$,Dj5A$5$l$F$$$^$9!#(J
cc$B%3%^%s%I$N%*%W%7%g%s$KF~$l$kI,MW$O$J$+$C$?$G$9!#$9$_$^$;$s!#(J
$B$=$l$H!"(J';'$B$O3N$+$KI,MW$G$7$?!#(J

$B$^$@$^$@JY6/3+;O$G=iJbE*$J<ALd$G$7$?$,!"=u$1$F$$$?$@$-$"$j$,$H$&(J
$B$4$6$$$^$7$?!#(J
$B<XB-$J$,$i!";d$N4D6-$G$O(Jmain()$B$d(Jyyerror()$B$r:o=|$7!"(Jcc$B$N%*%W%7%g%s$K(J
-ll -ly$B$rIU$1$k$H%i%$%V%i%j$KLdBj$,$"$k$N$+$&$^$/F0:n$7$^$;$s$G$7$?!#(J

$BNkLZ!wEl<G%^%$%/%m%(%l%/%H%m%K%/%9!J3t!K(J
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads