/*
* Author: Pawel Jablonski
* E-mail: pj@xirx.net
* WWW: xirx.net
* GIT: git.xirx.net
*
* License: You can use this code however you like
* but leave information about the original author.
* Code is free for non-commercial and commercial use.
*/
#ifndef PARSER_H
#define PARSER_H
#include <QString>
#include <QStringList>
#include <QTextStream>
#include <QList>
#include <QRegularExpression>
#include <QFile>
#include <QFileInfo>
#include <QSharedPointer>
#include "codeitem.h"
#include "codesection.h"
#include "ramitem.h"
#include "flashitem.h"
#include "data.h"
#include "datalist.h"
//! This class parses all input source files for later compilation process
class Parser
{
public:
Parser(DataList &dataList);
bool parseFile(const QString &path);
private:
DataList &dataList; //!< List of data for each source file
bool parseMap(int i, const QString &mapPath, const QStringList &lineItems);
QSharedPointer<RamItem> parseRam(int i, QString &line);
QSharedPointer<FlashItem> parseFlash(int i, QString &line);
QSharedPointer<CodeItem> parseCode(int i, const QString &label, QString &line);
};
#endif