AppleSAWS/src/applesoftfile/applesoftfile.h

53 lines
1.4 KiB
C
Raw Normal View History

2015-12-01 16:24:51 +00:00
#ifndef APPLESOFTFILE_H
#define APPLESOFTFILE_H
#include <QByteArray>
#include <QStringList>
#include <QMap>
2015-12-14 09:20:36 +00:00
#include <QVector>
2015-12-01 16:24:51 +00:00
#include "applesoftline.h"
2015-12-01 16:24:51 +00:00
#include "genericfile.h"
2015-12-14 09:20:36 +00:00
#include "applesofttoken.h"
2015-12-01 16:24:51 +00:00
class ApplesoftFile : public GenericFile
{
public:
ApplesoftFile(QByteArray data = QByteArray());
void setData(QByteArray data);
QByteArray extraData();
QStringList extraDataHexValues();
QVector<ApplesoftLine> getLines() const { return m_lines; }
2016-02-10 16:10:37 +00:00
quint16 length() const { return m_length; }
QByteArray rawData();
2015-12-01 16:24:51 +00:00
private:
void parse(quint16 start_address = 0x0801);
2015-12-01 16:24:51 +00:00
QVector<ApplesoftLine> m_lines;
2015-12-01 16:24:51 +00:00
int m_data_end;
quint16 m_length;
2015-12-14 09:20:36 +00:00
friend class Retokenizer;
};
class Retokenizer {
public:
static void retokenize(ApplesoftLine &line);
2015-12-14 09:20:36 +00:00
private:
static QVector<ApplesoftToken> retokenizeRems(QVector<ApplesoftToken> &datatokens);
static QVector<ApplesoftToken> retokenizeStrings(QVector<ApplesoftToken> &datatokens);
static QVector<ApplesoftToken> retokenizeDataStatements(QVector<ApplesoftToken> &datatokens);
static QVector<ApplesoftToken> processDataPayload(QVector<ApplesoftToken> &datatokens);
static QVector<ApplesoftToken> retokenizeVariables(QVector<ApplesoftToken> &datatokens);
static QVector<ApplesoftToken> retokenizeNumbers(QVector<ApplesoftToken> &datatokens);
2015-12-01 16:24:51 +00:00
};
2015-12-01 16:24:51 +00:00
#endif // APPLESOFTFILE_H