work save: start to write parser
This commit is contained in:
parent
82f548a3b8
commit
0b2fd71df6
|
@ -16,6 +16,8 @@ SOURCES += \
|
|||
compiler/executablerunner.cpp \
|
||||
compiler/filecompiler.cpp \
|
||||
compiler/stdincompiler.cpp \
|
||||
parser/cpppreprocessor.cpp \
|
||||
parser/statementmodel.cpp \
|
||||
qsynedit/Search.cpp \
|
||||
qsynedit/SearchBase.cpp \
|
||||
qsynedit/SearchRegex.cpp \
|
||||
|
@ -73,6 +75,9 @@ HEADERS += \
|
|||
compiler/executablerunner.h \
|
||||
compiler/filecompiler.h \
|
||||
compiler/stdincompiler.h \
|
||||
parser/cpppreprocessor.h \
|
||||
parser/statementmodel.h \
|
||||
parser/utils.h \
|
||||
qsynedit/Search.h \
|
||||
qsynedit/SearchBase.h \
|
||||
qsynedit/SearchRegex.h \
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,6 @@
|
|||
#include "cpppreprocessor.h"
|
||||
|
||||
CppPreprocessor::CppPreprocessor(QObject *parent) : QObject(parent)
|
||||
{
|
||||
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
#ifndef CPPPREPROCESSOR_H
|
||||
#define CPPPREPROCESSOR_H
|
||||
|
||||
#include <QObject>
|
||||
|
||||
class CppPreprocessor : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit CppPreprocessor(QObject *parent = nullptr);
|
||||
|
||||
signals:
|
||||
|
||||
};
|
||||
|
||||
#endif // CPPPREPROCESSOR_H
|
|
@ -0,0 +1,6 @@
|
|||
#include "statementmodel.h"
|
||||
|
||||
StatementModel::StatementModel(QObject *parent) : QObject(parent)
|
||||
{
|
||||
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
#ifndef STATEMENTMODEL_H
|
||||
#define STATEMENTMODEL_H
|
||||
|
||||
#include <QObject>
|
||||
|
||||
class StatementModel : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit StatementModel(QObject *parent = nullptr);
|
||||
|
||||
signals:
|
||||
|
||||
};
|
||||
|
||||
#endif // STATEMENTMODEL_H
|
|
@ -0,0 +1,51 @@
|
|||
#ifndef PARSER_UTILS_H
|
||||
#define PARSER_UTILS_H
|
||||
#include <QObject>
|
||||
#include <memory>
|
||||
// preprocess/ macro define
|
||||
struct Define {
|
||||
QString Name;
|
||||
QString args;
|
||||
QString value;
|
||||
QString filename;
|
||||
bool isMultiLine; // if true the expanded macro will span multiline
|
||||
bool hardCoded;// if true, don't free memory (points to hard defines)
|
||||
QStringList argList; // args list to format values
|
||||
QString formatValue; // format template to format values
|
||||
};
|
||||
|
||||
using PDefine = std::shared_ptr<Define>;
|
||||
|
||||
enum class SkipType {
|
||||
skItself, // skip itself
|
||||
skToSemicolon, // skip to ;
|
||||
skToColon, // skip to :
|
||||
skToRightParenthesis, // skip to )
|
||||
skToLeftBrace,// Skip to {
|
||||
skToRightBrace, // skip to }
|
||||
skNone // It's a keyword but don't process here
|
||||
};
|
||||
|
||||
enum class StatementKind {
|
||||
skUnknown,
|
||||
skPreprocessor,
|
||||
skEnumType,
|
||||
skEnum,
|
||||
skTypedef,
|
||||
skClass,
|
||||
skFunction,
|
||||
skConstructor,
|
||||
skDestructor,
|
||||
skVariable,
|
||||
skParameter,
|
||||
skNamespace,
|
||||
skNamespaceAlias,
|
||||
skBlock,
|
||||
skUserCodeIn, // user code template
|
||||
skKeyword, // keywords
|
||||
skGlobalVariable,
|
||||
skLocalVariable,
|
||||
skAlias
|
||||
};
|
||||
|
||||
#endif // PARSER_UTILS_H
|
Loading…
Reference in New Issue