#
# The EBNF grammar for the MNG-1.0 standard chunks in MNG datastreams
# Version: 0.4
# Author: Cosmin Truta, Jan 2001
# Contributing authors: Glenn Randers-Pehrson and Gerard Juyn
#

mng_standalone_datastream	::=
	png_standalone_datastream |
	jng_standalone_datastream |
	mng_complete_datastream

mng_complete_datastream		::=
	mng_signature mng_datastream

mng_signature	::=
	"\212MNG\r\n\32\n"

mng_datastream	::=
	MHDR mng_chunks MEND

mng_chunks	::=
	(TERM)? mng_chunks_without_SAVE_SEEK (SAVE mng_chunks_with_SEEK)?

mng_chunks_without_SAVE_SEEK	::=
	(mng_image_edit | mng_image_disp | mng_loop |
	 mng_toplevel_chunk | mng_general_info_chunk)*

mng_chunks_with_SEEK	::=
	(mng_chunks_without_SAVE_SEEK | (TERM)? SEEK)+


# MNG image editing (definition and manipulation)

mng_image_edit	::=
	DEFI | CLON | PAST | MAGN | DISC |
	mng_embedded_object |
	mng_dpng_datastream


# MNG image displaying

mng_image_disp	::=
	BACK | FRAM | MOVE | CLIP | SHOW


# MNG loops

mng_loop	::=
	LOOP
	(mng_image_edit | mng_image_disp |
	 mng_toplevel_chunk | mng_general_info_chunk |
	 mng_loop)*
	ENDL


# MNG objects

mng_embedded_object	::=
	png_datastream | jng_datastream | mng_basi_datastream


# MNG BASI datastreams

mng_basi_datastream	::=
	BASI png_image_info (png_image_data)? png_general_info IEND


# MNG Delta-PNG datastreams

mng_dpng_datastream	::=
	DHDR
	(PROM)?
	(mng_dpng_mod_chunk)*
	(mng_dpng_png_chunks | mng_dpng_jng_chunks)
	IEND

mng_dpng_png_chunks	::=
	(IHDR | IPNG)?
	(png_image_color_info | mng_dpng_mod_chunk)*
	(PLTE | PPLT)?
	(png_image_noncolor_info | mng_dpng_mod_chunk)*
	(png_image_data)?
	(png_general_info | mng_dpng_mod_chunk)*

mng_dpng_jng_chunks	::=
	(JHDR | IJNG)?
	(jng_image_info | mng_dpng_mod_chunk)*
	(png_image_data | jng_image_data)?
	(png_general_info | mng_dpng_mod_chunk)*

mng_dpng_mod_chunk	::=
	DROP | DBYK | ORDR


# MNG general chunk categories

mng_toplevel_chunk	::=
	png_color_info_chunk |
	PLTE | tRNS | bKGD | sBIT | pHYs | sPLT

mng_general_info_chunk	::=
	png_general_info_chunk |
	eXPI | fPRI | nEED | pHYg