Renaming TokenReader. Now there is a ModernTokenReader and ClassicTokenReader.

This commit is contained in:
Rob Greene
2025-11-04 12:05:38 -06:00
parent 1b5a75359b
commit 3c3aedbcfb
4 changed files with 11 additions and 11 deletions
@@ -42,7 +42,7 @@ import org.applecommander.bastools.api.model.Token;
*
* @author rob
*/
public class TokenReader {
public class ModernTokenReader {
private boolean hasMore = true;
// Internal flag just in case we consume the EOL (see REM for instance)s
private boolean needSyntheticEol = false;
@@ -68,7 +68,7 @@ public class TokenReader {
}
}
private static Queue<Token> tokenize(Reader reader) throws IOException {
TokenReader tokenReader = new TokenReader(reader);
ModernTokenReader tokenReader = new ModernTokenReader(reader);
LinkedList<Token> tokens = new LinkedList<>();
while (tokenReader.hasMore()) {
// Magic number: maximum number of pieces from the StreamTokenizer that may be combined.
@@ -78,7 +78,7 @@ public class TokenReader {
return tokens;
}
private TokenReader(Reader reader) {
private ModernTokenReader(Reader reader) {
this.reader = reader;
this.tokenizer = ApplesoftKeyword.tokenizer(reader);
}
@@ -27,17 +27,17 @@ import java.util.Queue;
import static org.junit.Assert.*;
public class TokenReaderTest {
public class ModernTokenReaderTest {
@Test
public void testCanRead() throws IOException {
Queue<Token> tokens = TokenReader.tokenize("../samples/destroyer.bas");
Queue<Token> tokens = ModernTokenReader.tokenize("../samples/destroyer.bas");
assertNotNull(tokens);
assertFalse(tokens.isEmpty());
}
@Test
public void testReadPR() throws IOException {
Queue<Token> tokens = TokenReader.tokenize(new ByteArrayInputStream("40 PR = 6".getBytes()));
Queue<Token> tokens = ModernTokenReader.tokenize(new ByteArrayInputStream("40 PR = 6".getBytes()));
assertEquals(Token.number(1, 40.0), tokens.remove());
assertEquals(Token.ident(1, "PR"), tokens.remove());
assertEquals(Token.keyword(1, ApplesoftKeyword.eq), tokens.remove());
@@ -47,7 +47,7 @@ public class TokenReaderTest {
@Test
public void testReadPRnum() throws IOException {
Queue<Token> tokens = TokenReader.tokenize(new ByteArrayInputStream("10 PR#6".getBytes()));
Queue<Token> tokens = ModernTokenReader.tokenize(new ByteArrayInputStream("10 PR#6".getBytes()));
assertEquals(Token.number(1, 10.0), tokens.remove());
assertEquals(Token.keyword(1, ApplesoftKeyword.PR), tokens.remove());
assertEquals(Token.number(1, 6.0), tokens.remove());
@@ -173,7 +173,7 @@ public class Main implements Callable<Integer> {
/** General CLI processing. */
public void process(Configuration config) throws IOException {
Queue<Token> tokens = switch (tokenizer) {
case "modern" -> TokenReader.tokenize(sourceFile);
case "modern" -> ModernTokenReader.tokenize(sourceFile);
case "classic" -> ClassicTokenReader.tokenize(sourceFile);
default -> throw new RuntimeException("Unknown tokenizer: " + tokenizer);
};
@@ -198,7 +198,7 @@ public class Main implements Callable<Integer> {
ByteVisitor byteVisitor = Visitors.byteVisitor(config);
byte[] wrapperData = new byte[0];
if (wrapProgram) {
Queue<Token> wrapperTokens = TokenReader.tokenize(new ByteArrayInputStream(
Queue<Token> wrapperTokens = ModernTokenReader.tokenize(new ByteArrayInputStream(
"10 POKE 103,24:POKE 104,8:RUN".getBytes()));
Parser wrapperParser = new Parser(wrapperTokens);
Program wrapperProgram = wrapperParser.parse();
@@ -41,7 +41,7 @@ import io.github.applecommander.applesingle.AppleSingle;
import io.github.applecommander.applesingle.Utilities;
import org.applecommander.bastools.api.Configuration;
import org.applecommander.bastools.api.Parser;
import org.applecommander.bastools.api.TokenReader;
import org.applecommander.bastools.api.ModernTokenReader;
import org.applecommander.bastools.api.Visitors;
import org.applecommander.bastools.api.model.Program;
import org.applecommander.bastools.api.model.Token;
@@ -159,7 +159,7 @@ public class GenerateCommand implements Callable<Void> {
// Generate Applesoft program data
ByteArrayInputStream sourceStream = new ByteArrayInputStream(demoProgram.getBytes());
Configuration config = Configuration.builder().sourceFile(new File("FAKEFILE")).build();
Queue<Token> tokens = TokenReader.tokenize(sourceStream);
Queue<Token> tokens = ModernTokenReader.tokenize(sourceStream);
Parser parser = new Parser(tokens);
Program program = parser.parse();
byte[] programBytes = Visitors.byteVisitor(config).dump(program);