Add original unix v6
This commit is contained in:
+164
@@ -0,0 +1,164 @@
|
||||
\{#
|
||||
#
|
||||
int fromflg 0;
|
||||
\}
|
||||
%term CONTIG QTEXT SPACE THIN TAB
|
||||
%term UP DOWN BACK FWD
|
||||
%term MATRIX LCOL CCOL RCOL COL
|
||||
%term MARK LINEUP
|
||||
%term SUM INT PROD UNION INTER
|
||||
%term LPILE PILE CPILE RPILE ABOVE
|
||||
%term DEFINE DELIM GSIZE GFONT
|
||||
%right FROM TO
|
||||
%left OVER SQRT
|
||||
%right SUPER SUB
|
||||
%right SIZE FONT ROMAN ITALIC BOLD
|
||||
%left MQ MQ1
|
||||
%left LEFT RIGHT
|
||||
%right DOT DOTDOT HAT TILDE BAR UNDER
|
||||
|
||||
%%
|
||||
|
||||
stuff : eqn ={ putout($1); }
|
||||
| error ={ error(!FATAL, "syntax error in equation %d", first); }
|
||||
| ={ eqnreg = 0; }
|
||||
;
|
||||
|
||||
eqn : box ={ if(dbg)printf(".\teqn: S%d\n",$1); }
|
||||
| eqn box ={ eqnbox($1,$2); }
|
||||
| eqn MARK ={ mark($1); }
|
||||
| MARK ={ mark(0); }
|
||||
| eqn LINEUP ={ lineup($1); }
|
||||
| LINEUP ={ lineup(0); }
|
||||
;
|
||||
|
||||
matrix : MATRIX ={ $$ = ct; } ;
|
||||
|
||||
collist : column
|
||||
| collist column
|
||||
;
|
||||
|
||||
column : lcol MQ list MQ1 ={ column('L',$1,$3); }
|
||||
| ccol MQ list MQ1 ={ column('C',$1,$3); }
|
||||
| rcol MQ list MQ1 ={ column('R',$1,$3); }
|
||||
| col MQ list MQ1 ={ column('-',$1,$3); }
|
||||
;
|
||||
|
||||
lcol : LCOL ={ $$ = ct++; } ;
|
||||
ccol : CCOL ={ $$ = ct++; } ;
|
||||
rcol : RCOL ={ $$ = ct++; } ;
|
||||
col : COL ={ $$ = ct++; } ;
|
||||
|
||||
sbox : super box %prec SUPER
|
||||
={ $$ = $2; }
|
||||
| %prec SUB
|
||||
={ $$ = 0; }
|
||||
;
|
||||
|
||||
box : box OVER box ={ boverb($1,$3); }
|
||||
| size box %prec SIZE
|
||||
={ size($1,$2); }
|
||||
| font box %prec FONT
|
||||
={ font($1,$2); }
|
||||
| SQRT box ={ sqrt($2); }
|
||||
| lpile MQ list MQ1 %prec LPILE
|
||||
={ lpile('L', $1, ct); ct=$1; }
|
||||
| cpile MQ list MQ1 %prec CPILE
|
||||
={ lpile('C', $1, ct); ct=$1; }
|
||||
| rpile MQ list MQ1 %prec RPILE
|
||||
={ lpile('R', $1, ct); ct=$1; }
|
||||
| pile MQ list MQ1 %prec PILE
|
||||
={ lpile('-', $1, ct); ct=$1; }
|
||||
| box sub box sbox %prec SUB
|
||||
={ if(dbg)printf(".\t sub box %d %d %d\n",$1,$3,$4);
|
||||
if($4 == 0)bshiftb($1,$2,$3);
|
||||
else shift2($1,$3,$4);
|
||||
}
|
||||
| box super box %prec SUPER
|
||||
={ bshiftb($1,$2,$3); }
|
||||
| left eqn right %prec LEFT
|
||||
={ paren($1,$2,$3); }
|
||||
| pbox
|
||||
| box from box to box %prec TO
|
||||
={ fromto($1,$3,$5); fromflg=0; }
|
||||
| box from box %prec FROM
|
||||
={ fromto($1,$3,0); fromflg=0; }
|
||||
| box to box %prec TO
|
||||
={ fromto($1,0,$3); }
|
||||
| box diacrit ={ diacrit($1,$2); }
|
||||
| fwd box ={ move(0,$1,$2); }
|
||||
| up box ={ move(1,$1,$2); }
|
||||
| back box ={ move(2,$1,$2); }
|
||||
| down box ={ move(3,$1,$2); }
|
||||
| matrix MQ collist MQ1 ={ matrix($1,$3); }
|
||||
;
|
||||
|
||||
fwd : FWD text ={ $$ = numb($1); } ;
|
||||
up : UP text ={ $$ = numb($1); } ;
|
||||
back : BACK text ={ $$ = numb($1); } ;
|
||||
down : DOWN text ={ $$ = numb($1); } ;
|
||||
|
||||
diacrit : HAT ={ $$ = 'H'; }
|
||||
| BAR ={ $$ = 'B'; }
|
||||
| UNDER ={ $$ = 'N'; } /* under bar */
|
||||
| DOT ={ $$ = 'D'; }
|
||||
| TILDE ={ $$ = 'T'; }
|
||||
| DOTDOT ={ $$ = 'U'; } /* umlaut = double dot */
|
||||
;
|
||||
|
||||
from : FROM
|
||||
;
|
||||
to : TO
|
||||
;
|
||||
|
||||
left : LEFT text ={ $$ = $2->c1; }
|
||||
| LEFT MQ ={ $$ = '{'; }
|
||||
;
|
||||
|
||||
right : RIGHT text ={ $$ = $2->c1; }
|
||||
| RIGHT MQ1 ={ $$ = '}'; }
|
||||
| ={ $$ = 0; }
|
||||
;
|
||||
|
||||
list : eqn ={ lp[ct++] = $1; }
|
||||
| list ABOVE eqn ={ lp[ct++] = $3; }
|
||||
;
|
||||
|
||||
lpile : LPILE ={ $$=ct; } ;
|
||||
cpile : CPILE ={ $$=ct; } ;
|
||||
pile : PILE ={ $$=ct; } ;
|
||||
rpile : RPILE ={ $$=ct; } ;
|
||||
|
||||
size : SIZE text
|
||||
;
|
||||
|
||||
font : ROMAN
|
||||
| ITALIC
|
||||
| BOLD
|
||||
| FONT text
|
||||
;
|
||||
|
||||
sub : SUB ={ shift(1); } ;
|
||||
|
||||
super : SUPER ={ shift(-1); } ;
|
||||
|
||||
pbox : MQ eqn MQ1 ={ $$ = $2; }
|
||||
| QTEXT ={ text('q',$1); }
|
||||
| CONTIG ={ text('c',$1); }
|
||||
| SPACE ={ text('~', $1); }
|
||||
| THIN ={ text('^', $1); }
|
||||
| TAB ={ text('\t', $1); }
|
||||
| SUM ={ text('c', "SIGMA"); }
|
||||
| PROD ={ text('c', "PI"); }
|
||||
| INT ={ text('c', "^"); }
|
||||
| UNION ={ text('c' ,"U"); }
|
||||
| INTER ={ text('c', "A"); }
|
||||
;
|
||||
|
||||
text : CONTIG
|
||||
| QTEXT
|
||||
| SPACE ={ $$ = & "\\|\\|"; }
|
||||
| THIN ={ $$ = & "\\|"; }
|
||||
;
|
||||
|
||||
%%
|
||||
Reference in New Issue
Block a user