Flex carries the copyright used for BSD software, slightly modified
because it originated at the Lawrence Berkeley (not Livermore!) Laboratory,
which operates under a contract with the Department of Energy:

	Copyright (c) 1990 The Regents of the University of California.
	All rights reserved.

	This code is derived from software contributed to Berkeley by
	Vern Paxson.

	The United States Government has rights in this work pursuant
	to contract no. DE-AC03-76SF00098 between the United States
	Department of Energy and the University of California.

	Redistribution and use in source and binary forms with or without
	modification are permitted provided that: (1) source distributions
	retain this entire copyright notice and comment, and (2)
	distributions including binaries display the following
	acknowledgement: ``This product includes software developed by the
	University of California, Berkeley and its contributors'' in the
	documentation or other materials provided with the distribution and
	in all advertising materials mentioning features or use of this
	software.  Neither the name of the University nor the names of its
	contributors may be used to endorse or promote products derived
	from this software without specific prior written permission.

	THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
	IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
	WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
	PURPOSE.

This basically says "do whatever you please with this software except
remove this notice or take advantage of the University's (or the flex
authors') name".

Note that the "flex.skl" scanner skeleton carries no copyright notice.
You are free to do whatever you please with scanners generated using flex;
for them, you are not even bound by the above copyright.
