4.3BSD/usr/contrib/spms/src/lib/libspms/test/pdtparse.a

!<arch>
Ipdtparse       418696376   968   27    100644  114       `
(man & cmd) | !(src & include)
!((man & cmd) & ((src|lib) & V4BSD)) | R3
((man & cmd) & ((src&lib) & V4BSD)) & R3
Opdtparse       418696376   968   27    100644  103       `
man cmd & src include & ! | 
man cmd & src lib | V4BSD & & ! R3 | 
man cmd & src lib & V4BSD & & R3 & 

Tpdtparse.c     418696379   968   27    100644  777       `
/*
 * pdtparse()
 */
#include "stdio.h"
#include "pdtyp.h"

char *PGN = "Tpdtparse";

main()
{
	char buf[BUFSIZ];		/* input buffer */
	char *gets();			/* get line from stdin */
	int i;				/* postfix expression index */
	int pdtparse();			/* parse boolean type expression */
	PDTYP postfix;			/* postfix type expression */

	while (gets(buf) != NULL)
		{
		pdtparse(buf, &postfix);
		for (i = 0; i < postfix.pfxsize; i++)
			switch ((postfix.pfx)[i].p_class)
				{
				case B_ID:
					printf("%s ", (postfix.pfx)[i].p_id);
					break;
				case B_AND:
					printf("& ");
					break;
				case B_OR:
					printf("| ");
					break;
				case B_NOT:
					printf("! ");
					break;
				default:
					printf("? ");
					break;
				}
		printf("\n");
		free(postfix.pfx);
		}
	exit(0);
}