⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 paren.c

📁 unix v7是最后一个广泛发布的研究型UNIX版本
💻 C
字号:
# include "e.h"paren(leftc, p1, rightc) int p1, leftc, rightc; {	int n, m, h1, j, b1, v;	h1 = eht[p1]; b1 = ebase[p1];	yyval = p1;	n = max(b1+VERT(1), h1-b1-VERT(1)) / VERT(1);	if( n<2 ) n = 1;	m = n-2;	if (leftc=='{' || rightc == '}') {		n = n%2 ? n : ++n;		if( n<3 ) n=3;		m = n-3;	}	eht[yyval] = VERT(2 * n);	ebase[yyval] = (n)/2 * VERT(2);	if (n%2 == 0)		ebase[yyval] -= VERT(1);	v = b1 - h1/2 + VERT(1);	printf(".ds %d \\|\\v'%du'", yyval, v);	switch( leftc ) {		case 'n':	/* nothing */		case '\0':			break;		case 'f':	/* floor */			if (n <= 1)				printf("\\(lf");			else				brack(m, "\\(bv", "\\(bv", "\\(lf");			break;		case 'c':	/* ceiling */			if (n <= 1)				printf("\\(lc");			else				brack(m, "\\(lc", "\\(bv", "\\(bv");			break;		case '{':			printf("\\b'\\(lt");			for(j = 0; j < m; j += 2) printf("\\(bv");			printf("\\(lk");			for(j = 0; j < m; j += 2) printf("\\(bv");			printf("\\(lb'");			break;		case '(':			brack(m, "\\(lt", "\\(bv", "\\(lb");			break;		case '[':			brack(m, "\\(lc", "\\(bv", "\\(lf");			break;		case '|':			brack(m, "|", "|", "|");			break;		default:			brack(m, (char *) &leftc, (char *) &leftc, (char *) &leftc);			break;		}	printf("\\v'%du'\\*(%d", -v, p1);	if( rightc ) {		printf("\\|\\v'%du'", v);		switch( rightc ) {			case 'f':	/* floor */				if (n <= 1)					printf("\\(rf");				else					brack(m, "\\(bv", "\\(bv", "\\(rf");				break;			case 'c':	/* ceiling */				if (n <= 1)					printf("\\(rc");				else					brack(m, "\\(rc", "\\(bv", "\\(bv");				break;			case '}':				printf("\\b'\\(rt");				for(j = 0; j< m; j += 2)printf("\\(bv");				printf("\\(rk");				for(j = 0; j< m; j += 2) printf("\\(bv");				printf("\\(rb'");				break;			case ']':				brack(m, "\\(rc", "\\(bv", "\\(rf");				break;			case ')':				brack(m, "\\(rt", "\\(bv", "\\(rb");				break;			case '|':				brack(m, "|", "|", "|");				break;			default:				brack(m, (char *) &rightc, (char *) &rightc, (char *) &rightc);				break;		}		printf("\\v'%du'", -v);	}	printf("\n");	if(dbg)printf(".\tcurly: h=%d b=%d n=%d v=%d l=%c, r=%c\n", 		eht[yyval], ebase[yyval], n, v, leftc, rightc);}brack(m, t, c, b) int m; char *t, *c, *b; {	int j;	printf("\\b'%s", t);	for( j=0; j<m; j++)		printf("%s", c);	printf("%s'", b);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -