changeset 62:80df58d240b2 default tip

merge
author meillo@marmaro.de
date Thu, 13 Nov 2008 13:19:42 +0100 (2008-11-13)
parents 73de2151aebd (current diff) be637b2ea482 (diff)
children
files baum.c
diffstat 5 files changed, 45 insertions(+), 57 deletions(-) [+]
line wrap: on
line diff
--- a/.hgtags	Thu Nov 13 13:15:11 2008 +0100
+++ b/.hgtags	Thu Nov 13 13:19:42 2008 +0100
@@ -1,3 +1,4 @@
 69a7cf2f0c06a5e0f0609f80c875e2ceb7ffa9c2 0.1
 3903effae5efcba191a6b459da457a3cff897c22 0.2
 f9fc4c4f9e3d666dad2bd1efa627fb646334433c 0.3
+7adeee76ce3e24c4ab12f16d48ed4eab09a7daed 0.4
--- a/Makefile	Thu Nov 13 13:15:11 2008 +0100
+++ b/Makefile	Thu Nov 13 13:19:42 2008 +0100
@@ -9,7 +9,7 @@
 DOCS=LICENSE README ChangeLog TODO examples
 
 # paths
-PREFIX = /usr
+PREFIX = /usr/local
 BINDIR = ${PREFIX}/bin
 MANDIR = ${PREFIX}/share/man
 
@@ -26,9 +26,10 @@
 DEP = baum.h
 
 
+.PHONY: all
+all: options $(NAME)
 
-all: options build
-
+.PHONY: options
 options:
 	@echo build options:
 	@echo "CC     = ${CC}"
@@ -37,56 +38,48 @@
 	@echo "LDFLAGS = ${LDFLAGS}"
 	@echo
 
-build: options ${NAME}
 
 ${NAME}: $(OBJ) ${DEP}
 	$(CC) $(LDFLAGS) $(OBJ) -o $@
 
+
 ${OBJ}: ${DEP}
 
-car: clean all
 
-debug: all
-	gdb ${NAME}
-
+.PHONY: strip
 strip: ${NAME}
 	@echo stripping ${NAME}
 	@strip ${NAME}
 
-dist: build changelog
+
+.PHONY: dist
+dist: all changelog
 	@echo "generating tarball"
 	@mkdir -p ${NV}
 	@cp -rf ${SRC} ${DEP} ${NAME}.1 Makefile ${DOCS} ${NV}
 	@fakeroot tar -czhof ${NV}.tar.gz ${NV}
 	@rm -rf ${NV}
 
-deb: dist
-	@mkdir -p Packages
-	@cp ${NV}.tar.gz Packages/
-	@( \
-		cd Packages/ ;\
-		tar -xzf ${NV}.tar.gz ;\
-		mv ${NV}.tar.gz ${NAME}_${VERSION}.orig.tar.gz ;\
-		cd ${NV}/ ;\
-		cp -r ../../debian/ . ;\
-		debuild ;\
-	 )
-	@rm -rf Packages/${NV}
 
+.PHONY: changelog
 changelog:
 	@echo generating changelog from mercurial log
 	@hg log -v --style changelog > ChangeLog
 
-install: build strip
+
+.PHONY: install
+install: all strip
 	@echo installing executable file to ${DESTDIR}${BINDIR}
 	@mkdir -p ${DESTDIR}${BINDIR}
 	@cp ${NAME} ${DESTDIR}${BINDIR}
 	@chmod 755 ${DESTDIR}${BINDIR}/${NAME}
 	@echo installing manual page to ${DESTDIR}${MANDIR}/man1
 	@mkdir -p ${DESTDIR}${MANDIR}/man1
-	@sed 's/VERSION/${VERSION}/g' < ${NAME}.1 > ${DESTDIR}${MANDIR}/man1/${NAME}.1
+	@cp ${NAME}.1 ${DESTDIR}${MANDIR}/man1
 	@chmod 644 ${DESTDIR}${MANDIR}/man1/${NAME}.1
 
+
+.PHONY: uninstall
 uninstall:
 	@echo removing executable file from ${DESTDIR}${BINDIR}
 	@rm -f ${DESTDIR}${BINDIR}/${NAME}
@@ -94,17 +87,11 @@
 	@rm -f ${DESTDIR}${MANDIR}/man1/${NAME}.1
 
 
+.PHONY: clean
 clean:
 	rm -f *.o
 
+
+.PHONY: realclean
 realclean: clean
-	rm -f ${NAME}
-
-distclean: realclean
-	@rm -f ${NAME}-*.tar.gz ChangeLog
-
-debclean: distclean
-	@cd Packages/${NV}/ ; debuild clean ;
-
-
-.PHONY: all dist deb changelog clean distclean debclean build install uninstall
+	rm -f ${NAME} ChangeLog
--- a/actions.c	Thu Nov 13 13:15:11 2008 +0100
+++ b/actions.c	Thu Nov 13 13:19:42 2008 +0100
@@ -11,9 +11,26 @@
 unsigned char action_if(struct Node* node);
 unsigned char action_while(struct Node* node);
 
+struct action {
+	char* name;
+	unsigned char (*func)(struct Node* node);
+};
+
+struct action actions[] = {
+	{"print", action_print},
+	{"sum", action_sum},
+	{"number", action_number},
+	{"create", action_create},
+	{"times", action_times},
+	{"if", action_if},
+	{"while", action_while},
+};
+
 
 
 unsigned char action(struct Node* node) {
+	int i;
+
 	if (node == NULL) {
 		if (option_verbose) {
 			fprintf(stderr, "warning: action of non existing node\n");
@@ -21,31 +38,14 @@
 		return 0;
 	}
 
-	if (strcmp(node->name, "print") == 0) {
-		return action_print(node);
-
-	} else if (strcmp(node->name, "sum") == 0) {
-		return action_sum(node);
-
-	} else if (strcmp(node->name, "number") == 0) {
-		return action_number(node);
+	for (i = 0; i < (sizeof(actions)/sizeof(actions[0])); i++) {
+		if (strcmp(actions[i].name, node->name) == 0) {
+			return (actions[i].func)(node);
+		}
+	}
 
-	} else if (strcmp(node->name, "create") == 0) {
-		return action_create(node);
-
-	} else if (strcmp(node->name, "times") == 0) {
-		return action_times(node);
-
-	} else if (strcmp(node->name, "if") == 0) {
-		return action_if(node);
-
-	} else if (strcmp(node->name, "while") == 0) {
-		return action_while(node);
-
-	} else {
 		fprintf(stderr, "unknown kind of node\n");
 		exit(4);
-	}
 }
 
 
--- a/baum.1	Thu Nov 13 13:15:11 2008 +0100
+++ b/baum.1	Thu Nov 13 13:19:42 2008 +0100
@@ -1,4 +1,4 @@
-.TH baum 1 "2008-03-01" "baum 0.4"
+.TH baum 1 "2008-06-24" "baum 0.5"
 .SH NAME
 baum \- an esoteric programming language
 
--- a/baum.c	Thu Nov 13 13:15:11 2008 +0100
+++ b/baum.c	Thu Nov 13 13:19:42 2008 +0100
@@ -13,7 +13,7 @@
 
 #include "baum.h"
 
-#define VERSION "0.4"
+#define VERSION "0.5"
 
 
 void printNode(struct Node* node, int level);