Added empty statement type
This commit is contained in:
@@ -1,61 +1,8 @@
|
||||
//@extern putchar fun: character sint32 -> sint32
|
||||
|
||||
// ./build/brb samples/test.brc -S -x86-asm-syntax=intel
|
||||
|
||||
/*
|
||||
User type
|
||||
name data<u8, 32>
|
||||
age u32
|
||||
successRatio r32
|
||||
isActive bool
|
||||
;
|
||||
*/
|
||||
|
||||
/*
|
||||
i u32 <- 0, rep text[i] != 0:
|
||||
putchar(text[i])
|
||||
i++
|
||||
;
|
||||
*/
|
||||
|
||||
// text data<u8> <- "Hello world!"
|
||||
|
||||
/*addStuff asm<"+r, r">: num1 u32, num2 u32 -> u32
|
||||
add $1, $0
|
||||
;*/
|
||||
|
||||
/*normAdd fun: num1 sint32, num2 sint32 -> sint32
|
||||
ret num1 + num2
|
||||
;*/
|
||||
|
||||
/*rawAdd raw<"=r,r,r">: num1 sint32, num2 sint32 -> sint32
|
||||
add $1, $2
|
||||
mov $0, $1
|
||||
;*/
|
||||
|
||||
/*rawAdd raw: num1 sint32, num2 sint32 -> sint32
|
||||
add $1, $2
|
||||
mov $0, $1
|
||||
;*/
|
||||
|
||||
/*printChar raw
|
||||
.global REGISTER
|
||||
.text
|
||||
.REGISTER:
|
||||
.byte "Hello", 0xa0
|
||||
.long RegisterTable
|
||||
//push 0x21
|
||||
|
||||
;*/
|
||||
|
||||
main fun -> u32
|
||||
num1 u8 <- 42
|
||||
num2 s8 <- 3 - +15
|
||||
num3 u32 <- 1234123
|
||||
num4 s32 <- -345345
|
||||
num5 r32 <- -42.58
|
||||
|
||||
num5 + num3
|
||||
//user User
|
||||
|
||||
ret 0
|
||||
;
|
||||
@@ -18,6 +18,7 @@
|
||||
|
||||
#include "Parser/Statement/StatementFunction.h"
|
||||
#include "Parser/Statement/StatementRawFunction.h"
|
||||
#include "Parser/Statement/StatementType.h"
|
||||
#include "Parser/Statement/StatementVariable.h"
|
||||
#include "Parser/Statement/StatementAssignment.h"
|
||||
#include "Parser/Statement/StatementReturn.h"
|
||||
@@ -80,6 +81,10 @@ shared_ptr<Statement> Parser::nextStatement() {
|
||||
if (statement != nullptr || errors.size() > errorsCount)
|
||||
return statement;
|
||||
|
||||
statement = matchStatementType();
|
||||
if (statement != nullptr || errors.size() > errorsCount)
|
||||
return statement;
|
||||
|
||||
markError({}, {});
|
||||
return nullptr;
|
||||
}
|
||||
@@ -486,6 +491,10 @@ shared_ptr<Statement> Parser::matchStatementRawFunction() {
|
||||
return make_shared<StatementRawFunction>(name, constraints, arguments, returnType, rawSource);
|
||||
}
|
||||
|
||||
shared_ptr<Statement> Parser::matchStatementType() {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
shared_ptr<Statement> Parser::matchStatementBlock(vector<TokenKind> terminalTokenKinds) {
|
||||
vector<shared_ptr<Statement>> statements;
|
||||
|
||||
|
||||
@@ -31,6 +31,7 @@ private:
|
||||
shared_ptr<Statement> matchStatementVariable();
|
||||
shared_ptr<Statement> matchStatementFunction();
|
||||
shared_ptr<Statement> matchStatementRawFunction();
|
||||
shared_ptr<Statement> matchStatementType();
|
||||
|
||||
shared_ptr<Statement> matchStatementBlock(vector<TokenKind> terminalTokenKinds);
|
||||
shared_ptr<Statement> matchStatementAssignment();
|
||||
|
||||
@@ -14,7 +14,8 @@ enum class StatementKind {
|
||||
VARIABLE,
|
||||
ASSIGNMENT,
|
||||
REPEAT,
|
||||
META_EXTERN_FUNCTION
|
||||
META_EXTERN_FUNCTION,
|
||||
TYPE
|
||||
};
|
||||
|
||||
class Statement {
|
||||
|
||||
12
src/Parser/Statement/StatementType.cpp
Normal file
12
src/Parser/Statement/StatementType.cpp
Normal file
@@ -0,0 +1,12 @@
|
||||
#include "StatementType.h"
|
||||
|
||||
StatementType::StatementType(string identifier, vector<shared_ptr<StatementVariable>> statementVariable):
|
||||
Statement(StatementKind::TYPE), identifier(identifier), statementVariables(statementVariable) { }
|
||||
|
||||
string StatementType::getIdentifier() {
|
||||
return identifier;
|
||||
}
|
||||
|
||||
vector<shared_ptr<StatementVariable>> StatementType::getStatementVariables() {
|
||||
return statementVariables;
|
||||
}
|
||||
19
src/Parser/Statement/StatementType.h
Normal file
19
src/Parser/Statement/StatementType.h
Normal file
@@ -0,0 +1,19 @@
|
||||
#ifndef STATEMENT_TYPE_H
|
||||
#define STATEMENT_TYPE_H
|
||||
|
||||
#include "Statement.h"
|
||||
|
||||
class StatementVariable;
|
||||
|
||||
class StatementType: public Statement {
|
||||
private:
|
||||
string identifier;
|
||||
vector<shared_ptr<StatementVariable>> statementVariables;
|
||||
|
||||
public:
|
||||
StatementType(string identifier, vector<shared_ptr<StatementVariable>> statementVariables);
|
||||
string getIdentifier();
|
||||
vector<shared_ptr<StatementVariable>> getStatementVariables();
|
||||
};
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user