Website Summary Files Commits Branches @commit @diff @stats
path: root / JSImpl / src
diff options
context:
space:
mode:
10 files changed, 41 insertions, 37 deletions
-rw-r--r--JSImpl/src/ASTPrinter.cpp34
-rw-r--r--JSImpl/src/ASTPrinter.h5
-rw-r--r--JSImpl/src/Expression.cpp2
-rw-r--r--JSImpl/src/Expression.h6
-rw-r--r--JSImpl/src/ExpressionsFwd.h5
-rw-r--r--JSImpl/src/Lexer.cpp2
-rw-r--r--JSImpl/src/Lexer.h2
-rw-r--r--JSImpl/src/Parser.cpp14
-rw-r--r--JSImpl/src/Parser.h4
-rw-r--r--JSImpl/src/main.cpp4
diff --git a/JSImpl/src/ASTPrinter.cpp b/JSImpl/src/ASTPrinter.cpp
index 0cbfa4c..dfb3447 100644
--- a/JSImpl/src/ASTPrinter.cpp
+++ b/JSImpl/src/ASTPrinter.cpp
@@ -1,34 +1,34 @@
#include "ASTPrinter.h"
-ASTPrinter::ASTPrinter(std::ostream& os)
+ASTPrinter::ASTPrinter(std::ostream&)
{}
-void ASTPrinter::Visit(BinaryExpression* e)
+void ASTPrinter::Visit(BinaryExpression*)
{}
-void ASTPrinter::Visit(UnaryExpression* e)
+void ASTPrinter::Visit(UnaryExpression*)
{}
-void ASTPrinter::Visit(LiteralExpression* e)
+void ASTPrinter::Visit(LiteralExpression*)
{}
-void ASTPrinter::Visit(IdentifierExpression* e)
+void ASTPrinter::Visit(IdentifierExpression*)
{}
-void ASTPrinter::Visit(ListExpression* e)
+void ASTPrinter::Visit(ListExpression*)
{}
-void ASTPrinter::Visit(VariableDefinitionExpression* e)
+void ASTPrinter::Visit(VariableDefinitionExpression*)
{}
-void ASTPrinter::Visit(BlockStatement* e)
+void ASTPrinter::Visit(BlockStatement*)
{}
-void ASTPrinter::Visit(LabeledStatement* e)
+void ASTPrinter::Visit(LabeledStatement*)
{}
-void ASTPrinter::Visit(IfStatement* e)
+void ASTPrinter::Visit(IfStatement*)
{}
-void ASTPrinter::Visit(SwitchStatement* e)
+void ASTPrinter::Visit(SwitchStatement*)
{}
-void ASTPrinter::Visit(WhileStatement* e)
+void ASTPrinter::Visit(WhileStatement*)
{}
-void ASTPrinter::Visit(ForStatement* e)
+void ASTPrinter::Visit(ForStatement*)
{}
-void ASTPrinter::Visit(FunctionDeclaration* e)
+void ASTPrinter::Visit(FunctionDeclaration*)
{}
-void ASTPrinter::Visit(TopStatements* e)
+void ASTPrinter::Visit(TopStatements*)
+{}
+void ASTPrinter::Visit(EmptyExpression*)
{}
-void ASTPrinter::Visit(EmptyExpression* e)
-{} \ No newline at end of file
diff --git a/JSImpl/src/ASTPrinter.h b/JSImpl/src/ASTPrinter.h
index bbfcd70..f96f880 100644
--- a/JSImpl/src/ASTPrinter.h
+++ b/JSImpl/src/ASTPrinter.h
@@ -2,10 +2,7 @@
#include "ExpressionVisitor.h"
-namespace std
-{
-class ostream;
-}
+#include <iosfwd>
class ASTPrinter : public ExpressionVisitor
{
diff --git a/JSImpl/src/Expression.cpp b/JSImpl/src/Expression.cpp
index fcccd07..8b866e6 100644
--- a/JSImpl/src/Expression.cpp
+++ b/JSImpl/src/Expression.cpp
@@ -1,6 +1,8 @@
#include "Expression.h"
#include <assert.h>
+#include <iostream>
+
void PrintExpressionMember(ExpressionPtr expr, const char* name, std::ostream& os)
{
os << name << ": {" << std::endl;
diff --git a/JSImpl/src/Expression.h b/JSImpl/src/Expression.h
index 0927ba8..dc37753 100644
--- a/JSImpl/src/Expression.h
+++ b/JSImpl/src/Expression.h
@@ -8,7 +8,7 @@ class Expression : public IPLEnableShared<Expression>
{
public:
virtual ~Expression() {}
- virtual void Print(std::ostream& os) const {};
+ virtual void Print(std::ostream&) const {};
virtual void Accept(ExpressionVisitor& v) = 0;
};
@@ -65,10 +65,10 @@ public:
virtual void Print(std::ostream& os) const override;
virtual void Accept(ExpressionVisitor& v) override { v.Visit(this); }
private:
+ LiteralType m_Type;
+ bool m_BooleanValue;
double m_NumValue;
IPLString m_StringValue;
- bool m_BooleanValue;
- LiteralType m_Type;
};
diff --git a/JSImpl/src/ExpressionsFwd.h b/JSImpl/src/ExpressionsFwd.h
index 654fe41..cbc08e0 100644
--- a/JSImpl/src/ExpressionsFwd.h
+++ b/JSImpl/src/ExpressionsFwd.h
@@ -1,5 +1,7 @@
#pragma once
+#include "CommonTypes.h"
+
class Expression;
class BinaryExpression;
class UnaryExpression;
@@ -16,4 +18,5 @@ class ForStatement;
class FunctionDeclaration;
class TopStatements;
class EmptyExpression;
-using ExpressionPtr = IPLSharedPtr<Expression>; \ No newline at end of file
+
+using ExpressionPtr = IPLSharedPtr<Expression>;
diff --git a/JSImpl/src/Lexer.cpp b/JSImpl/src/Lexer.cpp
index 49c7567..a6c2bf6 100644
--- a/JSImpl/src/Lexer.cpp
+++ b/JSImpl/src/Lexer.cpp
@@ -236,4 +236,4 @@ Token Tokenizer::NextToken()
}
// TODO: Error reporting
return Token{ TokenType::Eof, m_Line, "" };
-} \ No newline at end of file
+}
diff --git a/JSImpl/src/Lexer.h b/JSImpl/src/Lexer.h
index fd3d244..db07f7d 100644
--- a/JSImpl/src/Lexer.h
+++ b/JSImpl/src/Lexer.h
@@ -107,7 +107,7 @@ struct Token
TokenType Type;
unsigned Line;
IPLString Lexeme;
- double Number;
+ double Number = 0.0;
};
IPLVector<Token> Tokenize(const char* code, const std::function<void()>& onError = {});
diff --git a/JSImpl/src/Parser.cpp b/JSImpl/src/Parser.cpp
index feb302c..bbde7f1 100644
--- a/JSImpl/src/Parser.cpp
+++ b/JSImpl/src/Parser.cpp
@@ -4,7 +4,7 @@
class Parser
{
public:
- Parser(IPLVector<Token>& tokens, const std::function<void()>& onError = {});
+ Parser(const IPLVector<Token>& tokens, const std::function<void()>& onError = {});
ExpressionPtr Parse();
private:
bool MatchOneOf(IPLVector<TokenType> types);
@@ -56,15 +56,15 @@ private:
ExpressionPtr TopStatement();
Token& Prev() { return m_Tokens[m_Current - 1]; }
- std::function<void()> OnError;
- unsigned m_Current;
IPLVector<Token> m_Tokens;
+ unsigned m_Current;
+ std::function<void()> OnError;
};
-Parser::Parser(IPLVector<Token>& tokens, const std::function<void()>& onError)
+Parser::Parser(const IPLVector<Token>& tokens, const std::function<void()>& onError)
: m_Tokens(tokens)
- , OnError(onError)
, m_Current(0)
+ , OnError(onError)
{
}
@@ -1011,8 +1011,8 @@ ExpressionPtr Parser::TopStatement()
return result;
}
-ExpressionPtr Parse(IPLVector<Token>& tokens, const std::function<void()>& onError)
+ExpressionPtr Parse(const IPLVector<Token>& tokens, const std::function<void()>& onError)
{
Parser p(tokens, onError);
return p.Parse();
-} \ No newline at end of file
+}
diff --git a/JSImpl/src/Parser.h b/JSImpl/src/Parser.h
index 15b8a2f..380224c 100644
--- a/JSImpl/src/Parser.h
+++ b/JSImpl/src/Parser.h
@@ -1,7 +1,7 @@
-#pragma
+#pragma once
#include "CommonTypes.h"
#include "Expression.h"
#include "Lexer.h"
-ExpressionPtr Parse(IPLVector<Token>&, const std::function<void()>& onError = {}); \ No newline at end of file
+ExpressionPtr Parse(const IPLVector<Token>&, const std::function<void()>& onError = {});
diff --git a/JSImpl/src/main.cpp b/JSImpl/src/main.cpp
index e2fc448..03880cc 100644
--- a/JSImpl/src/main.cpp
+++ b/JSImpl/src/main.cpp
@@ -89,6 +89,8 @@ int main()
EXECUTE_TEST(TestKeyWord);
EXECUTE_TEST(TestVariableDeclaration);
EXECUTE_TEST(TestParseUnaryExpr);
+#if defined(_WIN32)
std::system("pause");
+#endif
return 0;
-} \ No newline at end of file
+}