Вот проблема:
У меня есть список токенов, которые являются действительными токенами на языке программирования TI. Я пытаюсь написать программу, которая будет компилировать текст, содержащий действительные токены, в программу TI-83/84, которая состоит из полностью шестнадцатеричных данных. Я знаю, как записать данные в файл и как получить данные из файла.
Мне нужно написать программу для поиска в программе, определения допустимых токенов и возможности поддерживать порядок программы. Я уже думал о том, чтобы взять токен в качестве ключевого слова и выполнить поиск по такому тексту, но первый выбранный токен не всегда будет первым в тексте, поэтому порядок будет потерян.
Я написал свой собственный объект Token, и я использую следующие переменные в моем парсере:
- Токены ArrayList - объекты ArrayList Token (все действительные токены TI-BASIC)
- DataInputStream dis - также текстовый файл
- Строковые данные - текстовые данные, которые программа извлекает из файла с помощью метода loadData (не проблема, поэтому не важно, как это работает)
- DataOutputStream dos - файл .8xp для записи в
Класс токенов:
public class Token {
private String tokenText;
int[] hexValue;
boolean isTwoByte;
/**
* The default constructor.
* Assigns empty values to all instance variables.
*/
public Token() {
tokenText = "";
hexValue = new int[0];
isTwoByte = false;
}
/**
* Constructs a Token with <tt>text</tt> text and an empty int[] for <tt>hexValue</tt>
* @param text the text to be assigned to the Token
*/
public Token(String text) {
tokenText = text;
hexValue = new int[0];
isTwoByte = false;
}
/**
* Constructs a Token with an empty String for <tt>text</tt> and <tt>hexValue</tt> value
* This is a one-byte Token
* @param value the value to be assigned to the Token
*/
public Token(int value) {
tokenText = "";
hexValue = new int[1];
hexValue[0] = value;
isTwoByte = false;
}
/**
* Constructs a Token with an empty String for <tt>text</tt> and <tt>hexValue></tt> v1v2
* This is a two-byte Token
* @param v1 the first byte of the two-byte value that will be assigned to the Token
* @param v2 the second byte of the two-byte value
*/
public Token(int v1, int v2) {
tokenText = "";
hexValue = new int[2];
hexValue[0] = v1; hexValue[1] = v2;
isTwoByte = true;
}
/**
* Constructs a Token with <tt>text</tt> text and <tt>hexValue</tt> value
* This is a one-byte Token
* @param text the text to be assigned to the Token
* @param value the value to be assigned to the one-byte Token
*/
public Token(String text, int value) {
tokenText = text;
hexValue = new int[1];
hexValue[0] = value;
isTwoByte = false;
}
/**
* Constructs a Token with tokenText <tt>text</tt> text and <tt>hexValue</tt> v1v2
* This is a two-byte Token
* @param text the text to be assigned to the Token
* @param v1 the first byte of the two-byte value that will be assigned to the Token
* @param v2 the second byte of the two-byte value
*/
public Token(String text, int v1, int v2) {
tokenText = text;
hexValue = new int[2];
hexValue[0] = v1; hexValue[1] = v2;
isTwoByte = true;
}
/**
* Returns the text that is assigned to the particular Token
* @return the text that is assigned to the particular Token
*/
public String getText() {
return tokenText;
}
/**
* Returns the byte value of the Token
* @return the byte value of the Token
*/
public int[] getValue() {
return hexValue;
}
/**
* Returns <tt>true</tt> if the Token is a two-byte Token, and <tt>false</tt> otherwise
* @return <tt>true</tt> if the Token is a two-byte Token, and <tt>false</tt> otherwise
*/
public boolean isTwoByte() {
return isTwoByte;
}
/**
* Sets the tokenText text of the Token to the String passed it.
* @param text the new text to be assigned to the Token
*/
public void setText(String text) {
tokenText = text;
}
/**
* Sets the byte value of the Token to the integer passed it. This sets the isTwoByte variable to <tt>false</tt>.
* @param value the new byte value to be assigned to the Token
*/
public void setValue(int value) {
hexValue = new int[1];
hexValue[0] = value;
isTwoByte = false;
}
/**
* Sets the byte value of the Token to the integers passed it. This sets the isTwoByte variable to <tt>true</tt>.
* @param v1 value of the first byte of the two-byte Token
* @param v2 value of the second byte
*/
public void setValue(int v1, int v2) {
hexValue = new int[2];
hexValue[0] = v1; hexValue[1] = v2;
isTwoByte = true;
}
}
Я надеюсь, что кто-то сможет помочь мне с этим. Если вам нужна дополнительная информация, например, больше кода, это не будет проблемой, в любом случае проект будет с открытым исходным кодом. Заранее благодарен за любую помощь в этом.