# Copyright 1989 by Kenneth Almquist.  All rights reserved.
#
# This file is part of ash.  Ash is distributed under the terms specified
# by the Ash General Public License.  See the file named LICENSE.

exec > operators.h
awk '/^[^#]/	{printf "#define %s %d\n", $1, n++}' unary_op binary_op
awk '/^[^#]/	{n++}
END	{printf "\n#define FIRST_BINARY_OP %d\n", n}
' unary_op
echo '
#define OP_INT 1		/* arguments to operator are integer */
#define OP_STRING 2		/* arguments to operator are string */
#define OP_FILE 3		/* argument is a file name */

extern char *const unary_op[];
extern char *const binary_op[];
extern const char op_priority[];
extern const char op_argflag[];'

exec > operators.c
echo '/*
 * Operators used in the expr/test command.
 */

#include "../shell.h"
#include "operators.h"

char *const unary_op[] = {'
awk '/^[^#]/	{printf "      \"%s\",\n", $2}' unary_op
echo '      NULL
};

char *const binary_op[] = {'
awk '/^[^#]/	{printf "      \"%s\",\n", $2}' binary_op
echo '      NULL
};

const char op_priority[] = {'
awk '/^[^#]/	{printf "      %s,\n", $3}' unary_op binary_op
echo '};

const char op_argflag[] = {'
awk '/^[^#]/	{if (length($4) > 0)	printf "      %s,\n", $4
		 else			printf "      0,\n"}
' unary_op binary_op
echo '};'
