Skip to content

Commit

Permalink
refactored code folder structure, fixed some namings or const correct…
Browse files Browse the repository at this point in the history
…ness on methods
  • Loading branch information
Jakz committed Oct 24, 2018
1 parent 450f468 commit 8e3059b
Show file tree
Hide file tree
Showing 15 changed files with 81 additions and 163 deletions.
22 changes: 12 additions & 10 deletions Makefile.osx
Original file line number Diff line number Diff line change
Expand Up @@ -3,22 +3,22 @@ TARGET = impossible
CC := clang
CXX := clang++

INCLUDE =
INCLUDE = -Iparser -I. -I/usr/local/opt/flex/include

all: CFLAGS = $(INCLUDE) -std=c++14 -stdlib=libc++ -Wno-deprecated-register -Iparser -I. -I/usr/local/opt/flex/include
opt: CFLAGS = $(INCLUDE) -O3 -ffast-math -pipe -std=c++14 -stdlib=libc++ -Wno-deprecated-register -Iparser -I. -I/usr/local/opt/flex/include
all: CFLAGS = $(INCLUDE) -std=c++14 -stdlib=libc++ -Wno-deprecated-register
opt: CFLAGS = $(INCLUDE) -O3 -ffast-math -pipe -std=c++14 -stdlib=libc++ -Wno-deprecated-register

CXXFLAGS = $(CFLAGS)

LDFLAGS =

# Find all source files
BUILD_DIR = objects
SRC_DIR = src

SOURCE = .
SRC_CPP = $(foreach dir, $(SOURCE), $(wildcard $(dir)/*.cpp)) ./parser/parser.cpp ./parser/lexer.cpp ./parser/compiler.cpp
SRC_CPP = $(foreach dir, $(SRC_DIR), $(wildcard $(dir)/*.cpp)) $(SRC_DIR)/parser/parser.cpp $(SRC_DIR)/parser/lexer.cpp $(SRC_DIR)/parser/compiler.cpp
OBJ_CPP = $(patsubst %.cpp, %.o, $(SRC_CPP))
OBJS = $(addprefix $(BUILD_DIR)/, $(subst /,-,$(subst ./,,$(OBJ_CPP))))
OBJS = $(addprefix $(BUILD_DIR)/, $(subst /,-,$(subst src/,,$(OBJ_CPP))))


$(info $$var is [$(subst /,_, parser/parser.cpp)])
Expand All @@ -35,10 +35,10 @@ $(BUILD_DIR) :
mkdir -p $@

parser/lexer.cpp: parser/impossible.l parser/parser.cpp
/usr/local/opt/flex/bin/flex -c++ --outfile=parser/lexer.cpp $<
/usr/local/opt/flex/bin/flex -c++ --outfile=src/parser/lexer.cpp $<

parser/parser.cpp: parser/impossible.ypp parser/parser.cpp
/usr/local/opt/bison/bin/bison -d -v --output-file=parser/parser.cpp $<
/usr/local/opt/bison/bin/bison -d -v --output-file=src/parser/parser.cpp $<

$(TARGET) : $(OBJS)
$(CXX) $(CXXFLAGS) $^ -o $@ $(LDFLAGS)
Expand All @@ -49,8 +49,10 @@ $(BUILD_DIR)/parser-compiler.o: parser/compiler.cpp parser/parser.cpp
$(BUILD_DIR)/parser-%.o: parser/%.cpp
$(CXX) $(CXXFLAGS) -c $< -o $@

$(BUILD_DIR)/%.o: $(subst -,/,%.cpp) $(BUILD_DIR) parser/parser.cpp
$(BUILD_DIR)/%.o: $(subst -,/,%.cpp) $(dir $@) parser/parser.cpp
$(CXX) $(CXXFLAGS) -c $< -o $@

clean:
rm -f $(BUILD_DIR)/*.o $(TARGET) parser/location.hh parser/stack.hh parser/position.hh parser/parser.output parser/lexer.cpp parser/parser.cpp parser/parser.hpp
rm -f $(BUILD_DIR)/*.o $(TARGET)
rm -f $(SRC_DIR)/parser/location.hh $(SRC_DIR)/parser/stack.hh $(SRC_DIR)/parser/position.hh
rm -f $(SRC_DIR)/parser/parser.output $(SRC_DIR)/parser/lexer.cpp $(SRC_DIR)/parser/parser.cpp parser/parser.hpp
2 changes: 2 additions & 0 deletions grammar.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
/usr/local/opt/bison/bin/bison -d -v --output-file=src/parser/parser.cpp src/parser/impossible.ypp
/usr/local/opt/flex/bin/flex -c++ --outfile=src/parser/lexer.cpp src/parser/impossible.l
28 changes: 18 additions & 10 deletions projects/xcode/Impossible.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
046E4F19217EA22300DB959C /* code.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 04F6E066217BE93D0037C307 /* code.cpp */; };
046E4F1B217EA22300DB959C /* help.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 04F6E06B217BE93D0037C307 /* help.cpp */; };
046E4F1E217EA22300DB959C /* instruction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 04F6E06F217BE93D0037C307 /* instruction.cpp */; };
046E4F20217EA22300DB959C /* lazy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 04F6E071217BE93D0037C307 /* lazy.cpp */; };
046E4F2D217EA22D00DB959C /* tests.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 04806510217EA1880063ACD5 /* tests.cpp */; };
04A637F6217F977700436B0F /* parser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 04A637F4217F977700436B0F /* parser.cpp */; };
04A637F7217F977700436B0F /* parser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 04A637F4217F977700436B0F /* parser.cpp */; };
Expand All @@ -28,9 +27,10 @@
04F6E084217BE93D0037C307 /* code.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 04F6E066217BE93D0037C307 /* code.cpp */; };
04F6E086217BE93D0037C307 /* help.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 04F6E06B217BE93D0037C307 /* help.cpp */; };
04F6E088217BE93D0037C307 /* instruction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 04F6E06F217BE93D0037C307 /* instruction.cpp */; };
04F6E089217BE93D0037C307 /* lazy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 04F6E071217BE93D0037C307 /* lazy.cpp */; };
04F6E08B217BE93D0037C307 /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 04F6E075217BE93D0037C307 /* main.cpp */; };
04F6E090217BE93D0037C307 /* vm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 04F6E080217BE93D0037C307 /* vm.cpp */; };
04FE2F372180C1EF00871297 /* lazy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 04FE2F342180C1EF00871297 /* lazy.cpp */; };
04FE2F382180C1EF00871297 /* lazy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 04FE2F342180C1EF00871297 /* lazy.cpp */; };
/* End PBXBuildFile section */

/* Begin PBXCopyFilesBuildPhase section */
Expand Down Expand Up @@ -80,12 +80,12 @@
04F6E06C217BE93D0037C307 /* help.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = help.h; sourceTree = "<group>"; };
04F6E06F217BE93D0037C307 /* instruction.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; path = instruction.cpp; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.cpp; };
04F6E070217BE93D0037C307 /* instruction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = instruction.h; sourceTree = "<group>"; };
04F6E071217BE93D0037C307 /* lazy.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; path = lazy.cpp; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.cpp; };
04F6E072217BE93D0037C307 /* lazy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lazy.h; sourceTree = "<group>"; };
04F6E075217BE93D0037C307 /* main.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = "<group>"; };
04F6E076217BE93D0037C307 /* range.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = range.h; sourceTree = "<group>"; };
04F6E080217BE93D0037C307 /* vm.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = vm.cpp; sourceTree = "<group>"; };
04F6E081217BE93D0037C307 /* vm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vm.h; sourceTree = "<group>"; };
04FE2F342180C1EF00871297 /* lazy.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lazy.cpp; sourceTree = "<group>"; };
04FE2F352180C1EF00871297 /* lazy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lazy.h; sourceTree = "<group>"; };
04FE2F362180C1EF00871297 /* range.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = range.h; sourceTree = "<group>"; };
/* End PBXFileReference section */

/* Begin PBXFrameworksBuildPhase section */
Expand Down Expand Up @@ -152,30 +152,38 @@
children = (
0480650E217EA1880063ACD5 /* tests */,
04A637E9217F92E600436B0F /* parser */,
04FE2F332180C1EF00871297 /* types */,
04F6E066217BE93D0037C307 /* code.cpp */,
04F6E067217BE93D0037C307 /* code.h */,
04F6E06A217BE93D0037C307 /* defines.h */,
04F6E06B217BE93D0037C307 /* help.cpp */,
04F6E06C217BE93D0037C307 /* help.h */,
04F6E06F217BE93D0037C307 /* instruction.cpp */,
04F6E070217BE93D0037C307 /* instruction.h */,
04F6E071217BE93D0037C307 /* lazy.cpp */,
04F6E072217BE93D0037C307 /* lazy.h */,
04C080CD2180B4B80054BED3 /* collection.cpp */,
04C080CE2180B4B80054BED3 /* collection.h */,
04C080CF2180B4B80054BED3 /* traits.cpp */,
04C080D02180B4B80054BED3 /* traits.h */,
04C080D12180B4B80054BED3 /* value.cpp */,
04C080D22180B4B80054BED3 /* value.h */,
04F6E075217BE93D0037C307 /* main.cpp */,
04F6E076217BE93D0037C307 /* range.h */,
04F6E080217BE93D0037C307 /* vm.cpp */,
04F6E081217BE93D0037C307 /* vm.h */,
);
name = src;
path = ../../src;
sourceTree = "<group>";
};
04FE2F332180C1EF00871297 /* types */ = {
isa = PBXGroup;
children = (
04FE2F342180C1EF00871297 /* lazy.cpp */,
04FE2F352180C1EF00871297 /* lazy.h */,
04FE2F362180C1EF00871297 /* range.h */,
);
path = types;
sourceTree = "<group>";
};
/* End PBXGroup section */

/* Begin PBXNativeTarget section */
Expand Down Expand Up @@ -261,7 +269,7 @@
04C080D82180B4B80054BED3 /* value.cpp in Sources */,
046E4F1E217EA22300DB959C /* instruction.cpp in Sources */,
04C080D62180B4B80054BED3 /* traits.cpp in Sources */,
046E4F20217EA22300DB959C /* lazy.cpp in Sources */,
04FE2F382180C1EF00871297 /* lazy.cpp in Sources */,
04F19E0A217FBCB7003AAAE2 /* compiler.cpp in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
Expand All @@ -278,8 +286,8 @@
04C080D32180B4B80054BED3 /* collection.cpp in Sources */,
04F6E088217BE93D0037C307 /* instruction.cpp in Sources */,
04C080D72180B4B80054BED3 /* value.cpp in Sources */,
04F6E089217BE93D0037C307 /* lazy.cpp in Sources */,
04C080D52180B4B80054BED3 /* traits.cpp in Sources */,
04FE2F372180C1EF00871297 /* lazy.cpp in Sources */,
04F6E08B217BE93D0037C307 /* main.cpp in Sources */,
04F19E09217FBCB7003AAAE2 /* compiler.cpp in Sources */,
);
Expand Down
24 changes: 21 additions & 3 deletions src/code.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,30 @@
#include <iomanip>
#include <sstream>

std::string Code::svalue() const
{
std::stringstream ss(std::stringstream::out);
size_t size = this->size();

ss << "[";

for (size_t i = 0; i < size; ++i)
{
const Instruction* in = at(i);
ss << in->svalue();
}

ss << "]";

return ss.str();
}

std::string CodeStandard::svalue(size_t pc)
{
std::stringstream ss(std::stringstream::out);
size_t l = 0;

for (int i = 0; i < len(); ++i)
for (int i = 0; i < size(); ++i)
{
ss << code[i]->svalue() << " ";
if (i+1 == pc)
Expand All @@ -39,9 +57,9 @@ std::string CodeStandard::svalue(size_t pc)
CurriedCode::CurriedCode(Code *code, Value value) : code(code), value(new PushInstruction(value)) { };
CurriedCode::CurriedCode(Code *code, PushInstruction *value) : code(code), value(value) { };

size_t CurriedCode::len() { return code->len() + 1; }
size_t CurriedCode::size() const { return code->size() + 1; }

Instruction *CurriedCode::at(size_t i)
Instruction *CurriedCode::at(size_t i) const
{
if (i == 0)
return value;
Expand Down
17 changes: 7 additions & 10 deletions src/code.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,12 @@ class Value;
class Code
{
public:
virtual size_t len() = 0;
virtual size_t size() const = 0;
virtual void set(size_t i, Instruction *it) = 0;
virtual Instruction* at(size_t i) = 0;
virtual Instruction* at(size_t i) const = 0;
virtual Code *append(Instruction *ins) = 0;

std::string svalue() const;
virtual std::string svalue(size_t pc) = 0;
};

Expand All @@ -36,10 +37,6 @@ class CodeStandard : public Code
public:
CodeStandard(const std::vector<Instruction*>& code) : code(code) { }

CodeStandard(Instruction **code, size_t length) {
std::copy(code, code + length, std::back_inserter(this->code));
}

CodeStandard(size_t length) { code.resize(length); }
CodeStandard(Instruction* i) { code.push_back(i); }

Expand All @@ -53,8 +50,8 @@ class CodeStandard : public Code
virtual std::string svalue(size_t pc);

virtual void set(size_t i, Instruction *is) { code[i] = is; }
virtual Instruction* at(size_t i) { return code[i]; }
virtual size_t len() { return code.size(); }
virtual Instruction* at(size_t i) const { return code[i]; }
virtual size_t size() const { return code.size(); }

friend class CurriedCode;
};
Expand All @@ -72,8 +69,8 @@ class CurriedCode : public Code
virtual Code *append(Instruction *ins);

virtual void set(size_t i, Instruction *is);
virtual Instruction* at(size_t i);
virtual size_t len();
virtual Instruction* at(size_t i) const;
virtual size_t size() const;

virtual std::string svalue(size_t pc) { return ""; }

Expand Down
26 changes: 0 additions & 26 deletions src/collection.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -24,29 +24,3 @@ const Value& String::next() const
return it.value;
}
}

std::string LazyArray::svalue() const
{
std::string s("(? ");
s += data.code()->svalue();
s += " )";
return s;
}

std::string Lambda::svalue() const
{
std::stringstream ss(std::stringstream::out);

ss << "[";

for (int i = 0; i < _code->len(); ++i)
{
ss << _code->at(i)->svalue();
if (i < _code->len() - 1)
ss << " ";
}

ss << "]";

return ss.str();
}
12 changes: 4 additions & 8 deletions src/collection.h
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,8 @@ class String : public TCollection

const std::string& data() const { return value; }

virtual void iterate() const { it.it = value.begin(); }
virtual bool hasNext() const { return it.it != value.end(); }
virtual void iterate() const override { it.it = value.begin(); }
virtual bool hasNext() const override { return it.it != value.end(); }

virtual const Value& next() const override;

Expand All @@ -39,8 +39,8 @@ class String : public TCollection
this->value.append(value.svalue());
}

virtual integral_t size() const { return value.length(); }
virtual bool empty() const { return this->value.empty(); }
virtual integral_t size() const override { return value.length(); }
virtual bool empty() const override { return this->value.empty(); }
};

class Range : public TCollection
Expand Down Expand Up @@ -328,8 +328,6 @@ class LazyArray : public TCollection
LazyArray(const LazyArrayHolder& data) : data(data) { }
LazyArray(Lambda *lambda, bool useIndices) : data(lambda, useIndices) { }

virtual std::string svalue() const;

virtual void iterate() const override { it = data.data().begin(); }
virtual bool hasNext() const override { return it != data.data().end(); }
virtual const Value& next() const override
Expand Down Expand Up @@ -441,6 +439,4 @@ class Lambda : public managed_object
operator Code*() { return _code; }

Code* code() { return _code; }

std::string svalue() const;
};
2 changes: 1 addition & 1 deletion src/instruction.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,7 @@ struct Signature
u64 data;
};

Signature(Opcode opcode, Type t1 = TYPE_NONE, Type t2 = TYPE_NONE, Type t3 = TYPE_NONE) : opcode(opcode), args({t1, t2, t3}) { }
Signature(Opcode opcode, Type r, Type t1 = TYPE_NONE, Type t2 = TYPE_NONE, Type t3 = TYPE_NONE) : opcode(opcode), args(t1, t2, t3) { }
bool operator==(const Signature& o) const { return opcode == o.opcode && args.matches(o.args); }

struct hash
Expand Down
Loading

0 comments on commit 8e3059b

Please sign in to comment.