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
|
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
|
main fun -> u32
|
||||||
num1 u8 <- 42
|
//user User
|
||||||
num2 s8 <- 3 - +15
|
|
||||||
num3 u32 <- 1234123
|
|
||||||
num4 s32 <- -345345
|
|
||||||
num5 r32 <- -42.58
|
|
||||||
|
|
||||||
num5 + num3
|
|
||||||
|
|
||||||
ret 0
|
ret 0
|
||||||
;
|
;
|
||||||
@@ -18,6 +18,7 @@
|
|||||||
|
|
||||||
#include "Parser/Statement/StatementFunction.h"
|
#include "Parser/Statement/StatementFunction.h"
|
||||||
#include "Parser/Statement/StatementRawFunction.h"
|
#include "Parser/Statement/StatementRawFunction.h"
|
||||||
|
#include "Parser/Statement/StatementType.h"
|
||||||
#include "Parser/Statement/StatementVariable.h"
|
#include "Parser/Statement/StatementVariable.h"
|
||||||
#include "Parser/Statement/StatementAssignment.h"
|
#include "Parser/Statement/StatementAssignment.h"
|
||||||
#include "Parser/Statement/StatementReturn.h"
|
#include "Parser/Statement/StatementReturn.h"
|
||||||
@@ -80,6 +81,10 @@ shared_ptr<Statement> Parser::nextStatement() {
|
|||||||
if (statement != nullptr || errors.size() > errorsCount)
|
if (statement != nullptr || errors.size() > errorsCount)
|
||||||
return statement;
|
return statement;
|
||||||
|
|
||||||
|
statement = matchStatementType();
|
||||||
|
if (statement != nullptr || errors.size() > errorsCount)
|
||||||
|
return statement;
|
||||||
|
|
||||||
markError({}, {});
|
markError({}, {});
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
@@ -486,6 +491,10 @@ shared_ptr<Statement> Parser::matchStatementRawFunction() {
|
|||||||
return make_shared<StatementRawFunction>(name, constraints, arguments, returnType, rawSource);
|
return make_shared<StatementRawFunction>(name, constraints, arguments, returnType, rawSource);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
shared_ptr<Statement> Parser::matchStatementType() {
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
shared_ptr<Statement> Parser::matchStatementBlock(vector<TokenKind> terminalTokenKinds) {
|
shared_ptr<Statement> Parser::matchStatementBlock(vector<TokenKind> terminalTokenKinds) {
|
||||||
vector<shared_ptr<Statement>> statements;
|
vector<shared_ptr<Statement>> statements;
|
||||||
|
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ private:
|
|||||||
shared_ptr<Statement> matchStatementVariable();
|
shared_ptr<Statement> matchStatementVariable();
|
||||||
shared_ptr<Statement> matchStatementFunction();
|
shared_ptr<Statement> matchStatementFunction();
|
||||||
shared_ptr<Statement> matchStatementRawFunction();
|
shared_ptr<Statement> matchStatementRawFunction();
|
||||||
|
shared_ptr<Statement> matchStatementType();
|
||||||
|
|
||||||
shared_ptr<Statement> matchStatementBlock(vector<TokenKind> terminalTokenKinds);
|
shared_ptr<Statement> matchStatementBlock(vector<TokenKind> terminalTokenKinds);
|
||||||
shared_ptr<Statement> matchStatementAssignment();
|
shared_ptr<Statement> matchStatementAssignment();
|
||||||
|
|||||||
@@ -14,7 +14,8 @@ enum class StatementKind {
|
|||||||
VARIABLE,
|
VARIABLE,
|
||||||
ASSIGNMENT,
|
ASSIGNMENT,
|
||||||
REPEAT,
|
REPEAT,
|
||||||
META_EXTERN_FUNCTION
|
META_EXTERN_FUNCTION,
|
||||||
|
TYPE
|
||||||
};
|
};
|
||||||
|
|
||||||
class Statement {
|
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