summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
authorBobby Bingham <koorogi@koorogi.info>2017-01-12 20:05:45 -0600
committerBobby Bingham <koorogi@koorogi.info>2017-01-15 23:18:52 -0600
commitcf366387449dcf9d34875a7d76f3b79c1e231d6f (patch)
treeb892febf08e3c5791e414c9cdc011477a9420ae1 /Makefile
parent239ee7648658b77b217f5c8142ef887612516af4 (diff)
nqasm: Initial stab at a lexer and parser
So far, this only understands instructions, but no operands or labels. It doesn't handle bad input gracefully. It's just enough to test the basics.
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile30
1 files changed, 30 insertions, 0 deletions
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..554c540
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,30 @@
+OPTFLAGS = -Os
+CFLAGS = -std=c99 -D_POSIX_C_SOURCE=200809L $(OPTFLAGS)
+
+GENSRCS = lexer.c parser.c
+GENHDRS = lexer.h parser.h
+SRCS = $(sort $(wildcard *.c) $(GENSRCS))
+OBJS = $(SRCS:.c=.o)
+TARGET = nqasm
+
+all: $(TARGET)
+
+clean:
+ rm -f $(GENSRCS) $(GENHDRS) $(OBJS) $(TARGET)
+
+lexer.c lexer.h: lexer.l
+ flex $<
+
+parser.c parser.h: parser.y
+ bison $<
+
+lexer.o: parser.h
+parser.o: lexer.h
+
+%.o: %.c
+ $(CC) $(CFLAGS) -c $< -o $@
+
+$(TARGET): $(OBJS)
+ $(CC) $(CFLAGS) $^ -o $@
+
+.PHONY: all clean