127 lines
2.7 KiB
Java
127 lines
2.7 KiB
Java
|
/*
|
||
|
* Name: Mike Cifelli
|
||
|
* Course: CIS 443 - Programming Languages
|
||
|
* Assignment: Lisp Interpreter Phase 1 - Lexical Analysis
|
||
|
*/
|
||
|
|
||
|
package scanner;
|
||
|
|
||
|
/**
|
||
|
* A <code>Token</code> represents a token in Common Lisp.
|
||
|
*/
|
||
|
public class Token {
|
||
|
|
||
|
/**
|
||
|
* An enumeration representing all of the types of tokens found in Common
|
||
|
* Lisp.
|
||
|
*/
|
||
|
public enum Type {
|
||
|
/** A left parenthesis token */
|
||
|
LEFT_PAREN,
|
||
|
|
||
|
/** A right parenthesis token */
|
||
|
RIGHT_PAREN,
|
||
|
|
||
|
/** A quoted string token */
|
||
|
STRING,
|
||
|
|
||
|
/** A quote mark */
|
||
|
QUOTE_MARK,
|
||
|
|
||
|
/** A number token */
|
||
|
NUMBER,
|
||
|
|
||
|
/** A reserved word token */
|
||
|
RESERVED,
|
||
|
|
||
|
/** An identifier token */
|
||
|
IDENTIFIER,
|
||
|
|
||
|
/** An end-of-file token */
|
||
|
EOF
|
||
|
}
|
||
|
|
||
|
private Type type;
|
||
|
private String text;
|
||
|
private String fName;
|
||
|
private int line;
|
||
|
private int column;
|
||
|
|
||
|
/**
|
||
|
* Create a new token with the specified type, text, file name, line number
|
||
|
* and column number.
|
||
|
*
|
||
|
* @param type
|
||
|
* the type of this token
|
||
|
* @param text
|
||
|
* the text associated with this token
|
||
|
* @param fName
|
||
|
* the name of the file that this token is located in
|
||
|
* @param line
|
||
|
* the line number that this token is found on
|
||
|
* @param column
|
||
|
* the column number that this token is found on
|
||
|
*/
|
||
|
public Token(Type type, String text, String fName, int line, int column) {
|
||
|
this.type = type;
|
||
|
this.text = text;
|
||
|
this.fName = fName;
|
||
|
this.line = line;
|
||
|
this.column = column;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Accessor method to determine the type of this token.
|
||
|
*
|
||
|
* @return
|
||
|
* the type of this token
|
||
|
*/
|
||
|
public Type getType() {
|
||
|
return type;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Accessor method to determine the text associated with this token.
|
||
|
*
|
||
|
* @return
|
||
|
* the text associated with this token
|
||
|
*/
|
||
|
public String getText() {
|
||
|
return text;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Accessor method to determine the name of the file that this token was
|
||
|
* located in.
|
||
|
*
|
||
|
* @return
|
||
|
* the name of the file that this token was located in
|
||
|
*/
|
||
|
public String getFName() {
|
||
|
return fName;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Accessor method to determine the line number that this token was found
|
||
|
* on.
|
||
|
*
|
||
|
* @return
|
||
|
* the line number this token was found on
|
||
|
*/
|
||
|
public int getLine() {
|
||
|
return line;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Accessor method to determine the column number that this token was found
|
||
|
* on.
|
||
|
*
|
||
|
* @return
|
||
|
* the column number this token was found on
|
||
|
*/
|
||
|
public int getColumn() {
|
||
|
return column;
|
||
|
}
|
||
|
|
||
|
}
|