TokenType.java

/*
 * Copyright 2019-2022 Foreseeti AB <https://foreseeti.com>
 *
 * Licensed 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
 *
 *     https://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.mal_lang.lib;

public enum TokenType {
  SINGLECOMMENT("single line comment"),
  MULTICOMMENT("multi line comment"),
  EOF("end-of-file"),

  INCLUDE("'include'"),
  INFO("'info'"),
  CATEGORY("'category'"),
  ABSTRACT("'abstract'"),
  ASSET("'asset'"),
  EXTENDS("'extends'"),
  ASSOCIATIONS("'associations'"),
  LET("'let'"),
  EXIST("'E'"),
  C("'C'"),
  I("'I'"),
  A("'A'"),

  STRING("string literal"),
  MULTI_STRING("multi-line string literal"),
  ID("identifier"),
  INT("integer literal"),
  FLOAT("floating point literal"),
  HASH("'#'"),
  COLON("':'"),
  LCURLY("'{'"),
  RCURLY("'}'"),
  INHERIT("'+>'"),
  OVERRIDE("'->'"),
  ALL("'&'"),
  ANY("'|'"),
  NOTEXIST("'!E'"),
  AT("'@'"),
  LBRACKET("'['"),
  RBRACKET("']'"),
  LPAREN("'('"),
  RPAREN("')'"),
  COMMA("','"),
  REQUIRE("'<-'"),
  ASSIGN("'='"),
  UNION("'\\/'"),
  INTERSECT("'/\\'"),
  DOT("'.'"),
  RANGE("'..'"),
  STAR("'*'"),
  PLUS("'+'"),
  MINUS("'-'"),
  DIVIDE("'/'"),
  POWER("'^'"),
  LARROW("'<--'"),
  RARROW("'-->'");

  private final String string;

  private TokenType(String string) {
    this.string = string;
  }

  @Override
  public String toString() {
    return string;
  }
}