Browse Source

gcc compile

Signed-off-by: Rain Mark <rain.by.zhou@gmail.com>
main
Rain Mark 4 years ago
parent
commit
0f12dc61d7
  1. 2
      build.sh
  2. 0
      src/core.h
  3. 2
      src/lispoo.cpp
  4. 8
      src/lispoo.h

2
build.sh

@ -1,3 +1,3 @@
#!/bin/bash
g++ -std=c++17 -I. lispoo.cpp -o lispoo
g++ -Werror -std=c++20 -Isrc src/lispoo.cpp -o lispoo

0
core.h → src/core.h

2
lispoo.cpp → src/lispoo.cpp

@ -15,7 +15,7 @@ int main(int argc, char* argv[]) {
ss << ifs.rdbuf();
lispoo::init();
unsigned long cursor = 0;
long cursor = 0;
std::vector<std::string> tokens;
lispoo::tokenize(ss.str(), tokens);
auto expr = lispoo::parse(tokens, cursor);

8
lispoo.h → src/lispoo.h

@ -70,7 +70,7 @@ static const std::shared_ptr<Expr> nil = std::make_shared<Null>();
class List: public Expr {
public:
Type type() override { return Type::List; }
std::vector<std::shared_ptr<Expr>>& value() { return value_; }
const std::vector<std::shared_ptr<Expr>>& value() const { return value_; }
void append(const std::shared_ptr<Expr>& expr) { value_.emplace_back(expr); }
private:
@ -162,7 +162,7 @@ inline void assert_type(const std::shared_ptr<Expr>& expr) {
oops("syntax error");
}
}
inline void assert_len(const std::shared_ptr<Expr>& expr, unsigned long expect) {
inline void assert_len(const std::shared_ptr<Expr>& expr, long expect) {
if (!is_type<Type::List>(expr)) {
oops("assert_len() failed, not List type");
}
@ -190,7 +190,7 @@ inline void tokenize(const std::string& str, std::vector<std::string>& tokens) {
}
}
inline std::shared_ptr<Expr> parse_atom(const std::vector<std::string>& tokens, unsigned long& cursor) {
inline std::shared_ptr<Expr> parse_atom(const std::vector<std::string>& tokens, long& cursor) {
auto token = tokens[cursor];
auto type = Type::Symbol;
if (std::isdigit(token[0]) || token[0] == '-') {
@ -221,7 +221,7 @@ inline std::shared_ptr<Expr> parse_atom(const std::vector<std::string>& tokens,
return nil;
}
inline std::shared_ptr<Expr> parse(const std::vector<std::string>& tokens, unsigned long& cursor) {
inline std::shared_ptr<Expr> parse(const std::vector<std::string>& tokens, long& cursor) {
if (cursor >= tokens.size()) {
oops("parse error");
}
Loading…
Cancel
Save