diff --git a/.gitignore b/.gitignore index 47f37f6..b927c65 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,5 @@ *.o alpha flex.h +grammar.tab.c +grammar.tab.h \ No newline at end of file diff --git a/Makefile b/Makefile index e912658..2f53d61 100644 --- a/Makefile +++ b/Makefile @@ -2,10 +2,9 @@ CC := gcc FLEX := flex LEX := lexicalStructure.lex EXE := alpha -CFLAGS := -std=c99 -Wall -CPPFLAGS := +CFLAGS := -build: lex.yy.c runner.o runner +compiler: lex.yy.c runner.o runner lex.yy.c: lexicalStructure.lex $(FLEX) -o lex.yy.c $(LEX) @@ -14,10 +13,13 @@ runner.o: runner.c runner.h flex.h $(CC) $(CFLAGS) -o runner.o -c runner.c runner: lex.yy.c runner.o - $(CC) -o $(EXE) runner.o lex.yy.c + $(CC) $(CFLAGS) -o $(EXE) runner.o lex.yy.c + +bison: grammar.y + bison -d grammar.y debug: CFLAGS += -DDEBUG=1 -debug: clean runner +debug: clean compiler test: ./$(EXE) ./tests/test_comments.alpha @@ -48,4 +50,6 @@ clean: rm -f $(EXE) rm -f flex.h rm -f *.tok - rm -f *.st + rm -f grammar.tab.c + rm -f grammar.tab.h + rm -f *.st \ No newline at end of file diff --git a/Makefile.save b/Makefile.save deleted file mode 100644 index 668af54..0000000 --- a/Makefile.save +++ /dev/null @@ -1,43 +0,0 @@ -CC := gcc -FLEX := flex -LEX := lexicalStructure.lex -EXE := runner -CFLAGS := -std=c99 -Wall -CPPFLAGS := - -runner: flex.o runner.o - $(CC) -o runner runner.o flex.o - -debug: CFLAGS += -DDEBUG=true -debug: clean runner - -runner.o: runner.c runner.h flex.h - $(CC) $(CFLAGS) -o runner.o -c runner.c - -flex.o: lex.yy.c typedefs.h - $(CC) $(CFLAGS) -o flex.o -c lex.yy.c - -lex.yy.c: lexicalStructure.lex - $(FLEX) -o lex.yy.c $(LEX) - -test: - ./$(EXE) ./tests/test_comments.alpha - ./$(EXE) ./tests/test_generalTokenTest.alpha - ./$(EXE) ./tests/test_keywords.alpha - ./$(EXE) ./tests/test_operators.alpha - ./$(EXE) ./tests/test_otherpunc.alpha - ./$(EXE) ./tests/test_simpleIntTest.alpha - ./$(EXE) ./tests/test_simpleLiterals.alpha - ./$(EXE) -tok ./tests/test_comments.alpha - ./$(EXE) -tok ./tests/test_generalTokenTest.alpha - ./$(EXE) -tok ./tests/test_keywords.alpha - ./$(EXE) -tok ./tests/test_operators.alpha - ./$(EXE) -tok ./tests/test_otherpunc.alpha - ./$(EXE) -tok ./tests/test_simpleIntTest.alpha - ./$(EXE) -tok ./tests/test_simpleLiterals.alpha -clean: - rm -f *.o - rm -f lex.yy.c - rm -f $(EXE) - rm -f flex.h - rm -f *.tok diff --git a/README.MD b/README.MD new file mode 100644 index 0000000..525582f --- /dev/null +++ b/README.MD @@ -0,0 +1,17 @@ +# The Translators α Compiler +#### Members: Annie Slenker, Meyer Simon, Partho Bhattacharya, & Scarlett Kadan + +## Lexical Analyzer +* **Undefined Behavior:** + * Spaces are not required between tokens. For instance, an INTEGER and an ID are valid even if there is no space between them +``` +Input: *5variable* +Output: 2 14 301 "5" + 1 1 101 "variable" +``` + +## Syntax Analyzer +* *Incomplete* + +## Symbol Table +* *TODO: Create diagram.* \ No newline at end of file diff --git a/grammar.y b/grammar.y index 19c6ea2..591d80a 100644 --- a/grammar.y +++ b/grammar.y @@ -1,3 +1,11 @@ +/* Syntax Analyzer with Bison (3.8.1) */ +/* (referenced Bison manual for file boilerplate [3.1]) */ + +// Prologue +%{ + #include +%} + %token ID 101 %token T_INTEGER 201 %token T_ADDRESS 202 @@ -44,3 +52,6 @@ %token RESERVE 613 %token RELEASE 614 %token COMMENT 700 +%% + +%%