Иницијализован гит репо, REPL тренутно само копира оно што је корисник написао
This commit is contained in:
commit
799129eaea
51
Makefile
Normal file
51
Makefile
Normal 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
34
cirilisp.c
Normal 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
31
util.c
Normal 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;
|
||||||
|
}
|
Loading…
Reference in a new issue