package fortran.lexer;

public enum TokenType {
	// Expressions
	/** Left parenthesis */
    PAREN1,
    /** Right parenthesis */
    PAREN2,
    /** = operator */
    EQUALS,
    /** , separator */
    COMMA,
    /** Addition operator or positive sign */
    PLUS,
    /** Subtraction operator or negative sign */
    MINUS,
    /** Multiplication operator */
    MUL,
    /** Division operator */
    DIV,
    /** Exponentiation operator */
    EXP,
    
    // Control Statements
    // TODO merge GOTO into one token
    /** First part of GO TO keyword */
    GO,
    /** Second part of GO TO keyword */
    TO,
    /** ASSIGN keyword */
    ASSIGN,
    /** IF keyword */
    IF,
    /** SENSE keyword */
    SENSE,
    /** LIGHT keyword */
    LIGHT,
    /** SWITCH keyword */
    SWITCH,
    /** ACCUMULATOR keyword */
    ACCUMULATOR,
    /** OVERFLOW keyword */
    OVERFLOW,
    /** QUOTIENT keyword */
    QUOTIENT,
    /** DIVIDE keyword */
    DIVIDE,
    /** CHECK keyword */
    CHECK,
    /** PAUSE keyword */
    PAUSE,
    /** STOP keyword */
    STOP,
    /** DO keyword */
    DO,
    /** CONTINUE keyword */
    CONTINUE,
    
    // Input/Output
    /** READ keyword */
    READ,
    /** PUNCH keyword */
    PUNCH,
    /** PRINT keyword */
    PRINT,
    /** INPUT keyword */
    INPUT,
    /** WRITE keyword */
    WRITE,
    /** OUTPUT keyword */
    OUTPUT,
    /** FORMAT keyword */
    FORMAT,
    /** TAPE keyword */
    TAPE,
    /** DRUM keyword */
    DRUM,
    /** END keyword */
    END,
    /** FILE keyword */
    FILE,
    /** REWIND keyword */
    REWIND,
    /** BACKSPACE keyword */
    BACKSPACE,
    
    // Specification Statements
    /** DIMENSION keyword */
    DIMENSTION,
    /** EQUIVALENCE keyword */
    EQUIVALENCE,
    /** FREQUENCY keyword */
    FREQUENCY,
    
    // Literals
    /** Fixed Point Variable identifier */
    IDENT_INT,
    /** Floating Point Variable identifier */
    IDENT_FLOAT,
    /** Function identifier */
    IDENT_FUNC,
    /** Fixed Point Constant */
    CONST_INT,
    /** Floating Point Constant */
    CONST_FLOAT
}
@@ -1872,21 +1872,19 @@
  */%0A    
-IDENT
+VAR
 _INT,%0A  
@@ -1931,21 +1931,19 @@
  */%0A    
-IDENT
+VAR
 _FLOAT,%0A
@@ -1949,16 +1949,28 @@
 %0A    /**
+ Fixed Point
  Functio
@@ -1993,18 +1993,78 @@
     
-IDENT_FUNC
+FUNC_INT,%0A    /** Floating Point Function identifier */%0A    FUNC_FLOAT
 ,%0A  

refactor TokenTypes, dedicated types for int and float functions