/* Objective Modula-2 Compiler (objm2c)
 *
 *  objm2_productions.h
 *  Definition of productions
 *
 *  Author: Benjamin Kowarsch
 *
 *  Copyright (C) 2009 The Objective Modula-2 Project. All rights reserved.
 *
 *  License:
 *
 *  Permission is hereby granted to review and test this software for the sole
 *  purpose of supporting the effort by the licensor to define and develop the
 *  Objective Modula-2 language. It is not permissible under any circumstances
 *  to  use the software  for the purpose  of creating derivative languages or 
 *  dialects.  This permission is valid until 31 December 2009, 24:00h GMT.
 *
 *  Future licensing:
 *
 *  The licensor undertakes to eventually release this software under a proper
 *  open source license  AFTER  the Objective Modula-2 language definition has
 *  been finalised and a conforming and working reference compiler completed.
 *  
 *  Version history:
 *
 *   2.00   2009-09-20   BK   new file
 */


#ifndef OBJM2_PRODUCTIONS_H
#define OBJM2_PRODUCTIONS_H


// ---------------------------------------------------------------------------
// Enumeration type containing all productions
// ---------------------------------------------------------------------------

#define _add_production(_production, \
    _fi0, _fi1, _fi2, _fi3, _fo0, _fo1, _fo2, _fo3) p ## _production,
typedef enum /* objm2_production_t */ {
#include "objm2_production_table.h"
    OBJM2_NUMBER_OF_PRODUCTIONS
} objm2_production_t;
#undef _add_production


// ---------------------------------------------------------------------------
// function:  objm2_production_name( production )
// ---------------------------------------------------------------------------
//
// Returns the human readable name for production <production>.
// Returns NULL if the value of <production> is invalid.

const char *objm2_production_name(objm2_production_t production);


#endif /* OBJM2_PRODUCTIONS_H */


// END OF FILE