mirror of
https://github.com/AppleCommander/bastools.git
synced 2026-04-21 14:17:46 +00:00
Renaming TokenReader. Now there is a ModernTokenReader and ClassicTokenReader.
This commit is contained in:
+3
-3
@@ -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);
|
||||
}
|
||||
+4
-4
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user