mirror of
https://github.com/usatiuk/psil.git
synced 2025-10-28 18:57:48 +01:00
clang format
This commit is contained in:
@@ -5,19 +5,15 @@
|
||||
#ifndef PSIL_CELL_H
|
||||
#define PSIL_CELL_H
|
||||
|
||||
#include <atomic>
|
||||
#include <cassert>
|
||||
#include <cstdint>
|
||||
#include <ostream>
|
||||
#include <sstream>
|
||||
#include <string>
|
||||
#include <utility>
|
||||
#include <atomic>
|
||||
|
||||
enum class CellType {
|
||||
NUMATOM,
|
||||
STRATOM,
|
||||
CONS
|
||||
};
|
||||
enum class CellType { NUMATOM, STRATOM, CONS };
|
||||
|
||||
using CellValType = int64_t;
|
||||
|
||||
@@ -37,9 +33,7 @@ struct NumAtomCell : public Cell {
|
||||
|
||||
CellValType _val;
|
||||
|
||||
void print(std::ostream &out) override {
|
||||
out << _val;
|
||||
}
|
||||
void print(std::ostream &out) override { out << _val; }
|
||||
};
|
||||
|
||||
struct StrAtomCell : public Cell {
|
||||
@@ -48,9 +42,7 @@ struct StrAtomCell : public Cell {
|
||||
|
||||
std::string _val;
|
||||
|
||||
void print(std::ostream &out) override {
|
||||
out << _val;
|
||||
}
|
||||
void print(std::ostream &out) override { out << _val; }
|
||||
};
|
||||
|
||||
struct ConsCell : public Cell {
|
||||
|
||||
@@ -46,9 +46,7 @@ public:
|
||||
return _target->_type;
|
||||
}
|
||||
|
||||
bool atom() const {
|
||||
return type() != CellType::CONS;
|
||||
}
|
||||
bool atom() const { return type() != CellType::CONS; }
|
||||
|
||||
bool null() {
|
||||
if (!_target) return true;
|
||||
@@ -67,8 +65,7 @@ public:
|
||||
void setcdr(const Handle &cdr);
|
||||
|
||||
friend std::ostream &operator<<(std::ostream &stream, const Handle &h) {
|
||||
if (h._target)
|
||||
h._target->print(stream);
|
||||
if (h._target) h._target->print(stream);
|
||||
return stream;
|
||||
}
|
||||
|
||||
|
||||
@@ -4,8 +4,8 @@
|
||||
|
||||
#include "Compiler.h"
|
||||
|
||||
#include <string>
|
||||
#include <functional>
|
||||
#include <string>
|
||||
|
||||
Handle Compiler::compile(Handle src, Handle fake_env, Handle suffix) {
|
||||
Handle out;
|
||||
@@ -83,8 +83,7 @@ Handle Compiler::compile(Handle src, Handle fake_env, Handle suffix) {
|
||||
}
|
||||
|
||||
Handle newenv = Handle::cons(argNames, fake_env);
|
||||
if (car.strval() == "let")
|
||||
out.splice(compileArgsList(argBodies, fake_env));
|
||||
if (car.strval() == "let") out.splice(compileArgsList(argBodies, fake_env));
|
||||
else if (car.strval() == "letrec") {
|
||||
out.append(Handle("DUM"));
|
||||
out.splice(compileArgsList(argBodies, newenv));
|
||||
@@ -92,8 +91,7 @@ Handle Compiler::compile(Handle src, Handle fake_env, Handle suffix) {
|
||||
|
||||
out.append(Handle("LDF"));
|
||||
out.append(compile(body, newenv, Handle("RET")));
|
||||
if (car.strval() == "let")
|
||||
out.append(Handle("AP"));
|
||||
if (car.strval() == "let") out.append(Handle("AP"));
|
||||
else
|
||||
out.append(Handle("RAP"));
|
||||
} else {
|
||||
|
||||
@@ -7,18 +7,15 @@
|
||||
#include "MemoryContext.h"
|
||||
|
||||
Handle::Handle(Cell *target) : _target(target) {
|
||||
if (target != nullptr)
|
||||
MemoryContext::get().add_root(target);
|
||||
if (target != nullptr) MemoryContext::get().add_root(target);
|
||||
}
|
||||
|
||||
Handle::~Handle() {
|
||||
if (_target != nullptr)
|
||||
MemoryContext::get().remove_root(_target);
|
||||
if (_target != nullptr) MemoryContext::get().remove_root(_target);
|
||||
}
|
||||
|
||||
Handle::Handle(Handle const &other) : _target(other._target) {
|
||||
if (_target != nullptr)
|
||||
MemoryContext::get().add_root(_target);
|
||||
if (_target != nullptr) MemoryContext::get().add_root(_target);
|
||||
}
|
||||
|
||||
Handle &Handle::operator=(Handle other) {
|
||||
@@ -37,9 +34,7 @@ Handle Handle::pop() {
|
||||
return ret;
|
||||
}
|
||||
|
||||
void Handle::push(const Handle &what) {
|
||||
*this = cons(what, *this);
|
||||
}
|
||||
void Handle::push(const Handle &what) { *this = cons(what, *this); }
|
||||
|
||||
void Handle::append(const Handle &what) {
|
||||
if (_target == nullptr) *this = cons(nullptr, nullptr);
|
||||
@@ -62,20 +57,15 @@ void Handle::splice(const Handle &what) {
|
||||
*this = what;
|
||||
return;
|
||||
}
|
||||
while (cur.cdr().get() != nullptr)
|
||||
cur = cur.cdr();
|
||||
while (cur.cdr().get() != nullptr) cur = cur.cdr();
|
||||
if (what.atom()) cur.setcdr(Handle::cons(what, nullptr));
|
||||
else
|
||||
cur.setcdr(what);
|
||||
}
|
||||
|
||||
Handle Handle::makeNumCell(int64_t val) {
|
||||
return MemoryContext::get().create_cell<NumAtomCell>(val);
|
||||
}
|
||||
Handle Handle::makeNumCell(int64_t val) { return MemoryContext::get().create_cell<NumAtomCell>(val); }
|
||||
|
||||
Handle Handle::makeStrCell(std::string val) {
|
||||
return MemoryContext::get().create_cell<StrAtomCell>(std::move(val));
|
||||
}
|
||||
Handle Handle::makeStrCell(std::string val) { return MemoryContext::get().create_cell<StrAtomCell>(std::move(val)); }
|
||||
|
||||
void Handle::setcar(const Handle &car) {
|
||||
MemoryContext::get().run_dirty<void>([&](std::function<void(Cell *)> dirty) -> void {
|
||||
@@ -90,9 +80,5 @@ void Handle::setcdr(const Handle &cdr) {
|
||||
dynamic_cast<ConsCell &>(*_target)._cdr = cdr.get();
|
||||
});
|
||||
}
|
||||
Handle::Handle(int64_t val) {
|
||||
*this = Handle::makeNumCell(val);
|
||||
}
|
||||
Handle::Handle(std::string strval) {
|
||||
*this = Handle::makeStrCell(std::move(strval));
|
||||
}
|
||||
Handle::Handle(int64_t val) { *this = Handle::makeNumCell(val); }
|
||||
Handle::Handle(std::string strval) { *this = Handle::makeStrCell(std::move(strval)); }
|
||||
|
||||
@@ -11,9 +11,7 @@
|
||||
#include "VM.h"
|
||||
|
||||
|
||||
void Parser::loadStr(std::string_view input) {
|
||||
_tokenizer.load(input);
|
||||
}
|
||||
void Parser::loadStr(std::string_view input) { _tokenizer.load(input); }
|
||||
|
||||
Handle Parser::parseExpr() {
|
||||
while (!_tokenizer.empty()) {
|
||||
@@ -55,9 +53,7 @@ std::string Parser::Tokenizer::getNext() {
|
||||
return ret;
|
||||
}
|
||||
|
||||
std::string_view Parser::Tokenizer::peek() const {
|
||||
return _tokens.front();
|
||||
}
|
||||
std::string_view Parser::Tokenizer::peek() const { return _tokens.front(); }
|
||||
|
||||
void Parser::Tokenizer::load(std::string_view input) {
|
||||
std::string_view::size_type curpos = input.find_first_not_of(' ');
|
||||
@@ -81,6 +77,4 @@ void Parser::Tokenizer::load(std::string_view input) {
|
||||
}
|
||||
}
|
||||
|
||||
bool Parser::Tokenizer::empty() const {
|
||||
return _tokens.empty();
|
||||
}
|
||||
bool Parser::Tokenizer::empty() const { return _tokens.empty(); }
|
||||
|
||||
@@ -87,7 +87,8 @@ TEST(CompilerTest, RecursiveFn) {
|
||||
|
||||
VM vm(ssin, ssout);
|
||||
Parser parser;
|
||||
parser.loadStr("(LDC (letrec ((fib (lambda (n) (if n (if (+ n -1) (+ (fib (+ n -1)) (fib(+ n -2))) 1) 0) ))) (fib 10)) EVAL PRINT STOP)");
|
||||
parser.loadStr(
|
||||
"(LDC (letrec ((fib (lambda (n) (if n (if (+ n -1) (+ (fib (+ n -1)) (fib(+ n -2))) 1) 0) ))) (fib 10)) EVAL PRINT STOP)");
|
||||
vm.loadControl(parser.parseExpr());
|
||||
vm.run();
|
||||
}
|
||||
|
||||
@@ -25,8 +25,7 @@ TEST(VMWithParserTest, BasicBranch) {
|
||||
|
||||
VM vm(ssin, ssout);
|
||||
Parser parser;
|
||||
parser.loadStr(
|
||||
"(LDC 1 SEL (LDC 10 PUTNUM JOIN) (LDC 20 PUTNUM JOIN) LDC 0 SEL (LDC 30 PUTNUM JOIN) (LDC 40 PUTNUM JOIN) STOP)");
|
||||
parser.loadStr("(LDC 1 SEL (LDC 10 PUTNUM JOIN) (LDC 20 PUTNUM JOIN) LDC 0 SEL (LDC 30 PUTNUM JOIN) (LDC 40 PUTNUM JOIN) STOP)");
|
||||
vm.loadControl(parser.parseExpr());
|
||||
vm.run();
|
||||
}
|
||||
@@ -56,8 +55,9 @@ TEST(VMWithParserTest, RecFunction) {
|
||||
{
|
||||
VM vm(ssin, ssout);
|
||||
Parser parser;
|
||||
parser.loadStr(
|
||||
"( DUM NIL LDF ( LD ( 1 . 1 ) SEL ( LD ( 1 . 1 ) LDC -1 ADD SEL ( NIL LD ( 1 . 1 ) LDC -1 ADD CONS LD ( 2 . 1 ) AP NIL LD ( 1 . 1 ) LDC -2 ADD CONS LD ( 2 . 1 ) AP ADD JOIN ) ( LDC 1 JOIN ) JOIN ) ( LDC 0 JOIN ) RET ) CONS LDF ( NIL LDC 20 CONS LD ( 1 . 1 ) AP RET ) RAP PUTNUM STOP )");
|
||||
parser.loadStr("( DUM NIL LDF ( LD ( 1 . 1 ) SEL ( LD ( 1 . 1 ) LDC -1 ADD SEL ( NIL LD ( 1 . 1 ) LDC -1 ADD CONS LD ( 2 . 1 ) AP "
|
||||
"NIL LD ( 1 . 1 ) LDC -2 ADD CONS LD ( 2 . 1 ) AP ADD JOIN ) ( LDC 1 JOIN ) JOIN ) ( LDC 0 JOIN ) RET ) CONS LDF ( "
|
||||
"NIL LDC 20 CONS LD ( 1 . 1 ) AP RET ) RAP PUTNUM STOP )");
|
||||
vm.loadControl(parser.parseExpr());
|
||||
vm.run();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user