Иницијализован гит репо, REPL тренутно само копира оно што је корисник написао

This commit is contained in:
kappa 2019-01-03 16:59:28 +01:00
commit 799129eaea
4 changed files with 121 additions and 0 deletions

51
Makefile Normal file
View file

@ -0,0 +1,51 @@
# cirilisp - компајлер за ћирилични дијалекат лиспа
# ћирилисп верзија
VERSION = 0.0
# локација за инсталацију
PREFIX = /usr/local
# флегови за C компајлер и линкер
# CFLAGS = -g -std=c99 -pedantic -Wall -O0
CFLAGS = -std=c99 -pedantic -Wall -O1
LDFLAGS = -lm -lc
CC = cc
SRC = cirilisp.c util.c
OBJ = $(SRC:.c=.o)
all: cirilisp
.c.o:
$(CC) -c $(CFLAGS) $<
$(OBJ): util.h
cirilisp: $(OBJ)
$(CC) -o $@ $(OBJ) $(LDFLAGS)
clean:
-rm -f cirilisp $(OBJ) cirilisp-$(VERSION).tar.gz
dist: clean
mkdir -p cirilisp-$(VERSION)
cp -r Makefile util.h $(SRC)
tar -cf cirilisp-$(VERSION).tar cirilisp-$(VERSION)
gzip cirilisp-$(VERSION).tar
rm -rf cirilisp-$(VERSION)
install: all
mkdir -p $(DESTDIR)$(PREFIX)/bin
cp -f cirilisp $(DESTDIR)$(PREFIX)/bin
chmod 755 $(DESTDIR)$(PREFIX)/bin/cirilisp
# mkdir -p $(DESTDIR)$(MANPREFIX)/man1
# sed "s/VERSION/$(VERSION)/g" < cirilisp.1 > $(DESTDIR)$(MANPREFIX)/man1/dwm.1
# chmod 644 $(DESTDIR)$(MANPREFIX)/man1/cirilisp.1
uninstall:
rm -f $(DESTDIR)$(PREFIX)/bin/dwm
# rm -f $(DESTDIR)$(MANPREFIX)/man1/cirilisp.1
.PHONY: all clean dist install uninstall

34
cirilisp.c Normal file
View file

@ -0,0 +1,34 @@
#include <locale.h>
#include <stdio.h>
#include <stdlib.h>
#include "util.h"
int main(int argc, char **argv)
{
// Омогућава библиотекама коришћеним у интерпретеру да протумаче
// српску ћирилицу
// struct lconv *loc;
setlocale(LC_ALL, "sr_RS.utf8");
// loc = localeconv();
// Бојлерплејт обавештења о окружењу
puts("Прост РЕПЛ:");
puts("Притисните ctrl+c да бисте изашли\n");
while (1)
{
char *input = readline("k> ");
if (input == NULL)
{
putchar('\n');
exit(0);
}
printf("НАПИСАЛИ СТЕ: %s\n", input);
free(input);
}
return 0;
}

31
util.c Normal file
View file

@ -0,0 +1,31 @@
#define _POSIX_C_SOURCE 200809L
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "util.h"
ssize_t _bytesRead;
size_t _nbytes = 2048;
char *_buffer = NULL;
char *readline(char *prompt)
{
if (_buffer == NULL)
{
_buffer = (char *) malloc(_nbytes + 1);
}
fputs(prompt, stdout);
_bytesRead = getline(&_buffer, &_nbytes, stdin);
if (_bytesRead == -1)
{
return NULL;
}
char *cpy = malloc(strlen(_buffer)+1);
strcpy(cpy, _buffer);
cpy[strlen(cpy)-1] = '\0';
// Уклања завршни њу-лајн или ЕОФ у стрингу и копира га на ново место
return cpy;
}

5
util.h Normal file
View file

@ -0,0 +1,5 @@
#pragma once
char *readline(char *prompt);
void add_history(char *unused);