diff options
| Commit | 206b1bd6abb5841c5db65270d9ced2f3442ce19b (patch) | |
|---|---|---|
| Author | 2018-10-06 12:03:42 +0300 | |
| Committer | 2018-10-06 14:23:46 +0300 | |
| Files | 59c39e65c917ddc758bfc49260186216650d9007 /JSImpl/src | |
| IPL-206b1bd6abb5841c5db65270d9ced2f3442ce19b.tar IPL-206b1bd6abb5841c5db65270d9ced2f3442ce19b.tar.gz IPL-206b1bd6abb5841c5db65270d9ced2f3442ce19b.zip | ||
| Parent | f016e92dfd9e340529fac9c7673b333077e8072b (diff) | |
Started Linux port for JSImpl
- Added genie build script
- fixed build with g++
10 files changed, 41 insertions, 37 deletions
| -rw-r--r-- | JSImpl/src/ASTPrinter.cpp | 34 | ||||
| -rw-r--r-- | JSImpl/src/ASTPrinter.h | 5 | ||||
| -rw-r--r-- | JSImpl/src/Expression.cpp | 2 | ||||
| -rw-r--r-- | JSImpl/src/Expression.h | 6 | ||||
| -rw-r--r-- | JSImpl/src/ExpressionsFwd.h | 5 | ||||
| -rw-r--r-- | JSImpl/src/Lexer.cpp | 2 | ||||
| -rw-r--r-- | JSImpl/src/Lexer.h | 2 | ||||
| -rw-r--r-- | JSImpl/src/Parser.cpp | 14 | ||||
| -rw-r--r-- | JSImpl/src/Parser.h | 4 | ||||
| -rw-r--r-- | JSImpl/src/main.cpp | 4 |
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 +} |
