package fortran.lexer;

public enum TokenType {
	// Expressions
    BRACE1, BRACE2,
    EQUALS, COMMA,
    PLUS, MINUS, MUL, DIV, EXP,
    // Control Statements
    GO, TO, ASSIGN, IF,
    SENSE, LIGHT, SWITCH,
    ACCUMULATOR, OVERFLOW, QUOTIENT, DIVIDE, CHECK,
    PAUSE, STOP, DO, CONTINUE,
    // Input/Output
    READ, PUNCH, PRINT, INPUT,
    WRITE, OUTPUT,
    FORMAT,
    TAPE, DRUM,
    END, FILE, REWIND, BACKSPACE,
    // Specification Statements
    DIMENSTION, EQUIVALENCE, FREQUENCY,
    // Literals
    IDENT, CONST_INT, CONST_FLOAT
}
@@ -61,227 +61,1075 @@
 ons%0A
-    BRACE1, BRACE2,%0A    EQUALS, COMMA,%0A    PLUS, MINUS, MUL, DIV, EXP,%0A    // Control Statements%0A    GO, TO, ASSIGN, IF,%0A    SENSE, LIGHT, SWITCH,%0A    ACCUMULATOR, OVERFLOW, QUOTIENT, DIVIDE, CHECK,%0A    PAUSE, STOP, DO,
+%09/** Left parenthesis */%0A    PAREN1,%0A    /** Right parenthesis */%0A    PAREN2,%0A    /** = operator */%0A    EQUALS,%0A    /** , separator */%0A    COMMA,%0A    /** Addition operator or positive sign */%0A    PLUS,%0A    /** Subtraction operator or negative sign */%0A    MINUS,%0A    /** Multiplication operator */%0A    MUL,%0A    /** Division operator */%0A    DIV,%0A    /** Exponentiation operator */%0A    EXP,%0A    %0A    // Control Statements%0A    // TODO merge GOTO into one token%0A    /** First part of GO TO keyword */%0A    GO,%0A    /** Second part of GO TO keyword */%0A    TO,%0A    /** ASSIGN keyword */%0A    ASSIGN,%0A    /** IF keyword */%0A    IF,%0A    /** SENSE keyword */%0A    SENSE,%0A    /** LIGHT keyword */%0A    LIGHT,%0A    /** SWITCH keyword */%0A    SWITCH,%0A    /** ACCUMULATOR keyword */%0A    ACCUMULATOR,%0A    /** OVERFLOW keyword */%0A    OVERFLOW,%0A    /** QUOTIENT keyword */%0A    QUOTIENT,%0A    /** DIVIDE keyword */%0A    DIVIDE,%0A    /** CHECK keyword */%0A    CHECK,%0A    /** PAUSE keyword */%0A    PAUSE,%0A    /** STOP keyword */%0A    STOP,%0A    /** DO keyword */%0A    DO,%0A    /** CONTINUE keyword */%0A   
  CON
@@ -1135,16 +1135,21 @@
 NTINUE,%0A
+    %0A
     // I
@@ -1168,104 +1168,462 @@
     
-READ, PUNCH, PRINT, INPUT,%0A    WRITE, OUTPUT,%0A    FORMAT,%0A    TAPE, DRUM,%0A    END, FILE, REWIND,
+/** READ keyword */%0A    READ,%0A    /** PUNCH keyword */%0A    PUNCH,%0A    /** PRINT keyword */%0A    PRINT,%0A    /** INPUT keyword */%0A    INPUT,%0A    /** WRITE keyword */%0A    WRITE,%0A    /** OUTPUT keyword */%0A    OUTPUT,%0A    /** FORMAT keyword */%0A    FORMAT,%0A    /** TAPE keyword */%0A    TAPE,%0A    /** DRUM keyword */%0A    DRUM,%0A    /** END keyword */%0A    END,%0A    /** FILE keyword */%0A    FILE,%0A    /** REWIND keyword */%0A    REWIND,%0A    /** BACKSPACE keyword */%0A   
  BAC
@@ -1630,16 +1630,21 @@
 KSPACE,%0A
+    %0A
     // S
@@ -1675,32 +1675,129 @@
     
-DIMENSTION, EQUIVALENCE,
+/** DIMENSION keyword */%0A    DIMENSTION,%0A    /** EQUIVALENCE keyword */%0A    EQUIVALENCE,%0A    /** FREQUENCY keyword */%0A   
  FRE
@@ -1804,16 +1804,21 @@
 QUENCY,%0A
+    %0A
     // L
@@ -1833,25 +1833,257 @@
     
-IDENT, CONST_INT,
+/** Fixed Point Variable identifier */%0A    IDENT_INT,%0A    /** Floating Point Variable identifier */%0A    IDENT_FLOAT,%0A    /** Function identifier */%0A    IDENT_FUNC,%0A    /** Fixed Point Constant */%0A    CONST_INT,%0A    /** Floating Point Constant */%0A   
  CON

document Tokens