
/*
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements.  See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership.  The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License.  You may obtain a copy of the License at
*
*   http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied.  See the License for the
* specific language governing permissions and limitations
* under the License.
*
*/
package org.apache.airavata.datacat.parsers.gridchem.g1;
//----------------------------------------------------
// The following code was generated by CUP v0.10k
// Wed Sep 10 08:33:37 IST 2014
//----------------------------------------------------

/** CUP generated class containing symbol constants. */
public class G1Sym {
  /* terminals */
  public static final int ENERGY1 = 16;
  public static final int MPMGRAD = 20;
  public static final int MGRAD1 = 17;
  public static final int MaxGrad1 = 6;
  public static final int NSearch1 = 4;
  public static final int MPRGRAD = 21;
  public static final int MPRms = 12;
  public static final int RmsGrad1 = 7;
  public static final int MPMax = 11;
  public static final int MPDONE = 13;
  public static final int EOF = 0;
  public static final int MPENERGY = 19;
  public static final int ITERATION1 = 14;
  public static final int NMP = 9;
  public static final int MPEnerg = 10;
  public static final int error = 1;
  public static final int MPITER = 15;
  public static final int MPStart = 8;
  public static final int FOUNDITER1 = 2;
  public static final int Energ1 = 5;
  public static final int SCFDONE1 = 3;
  public static final int RGRAD1 = 18;
}

