grammar.py and friends: Make test/grammar compile and start

Doesn't successfully parse grammartest.code, yet, it errors out with a
syntax error on whitespace. But at least it compiles and starts.

Signed-off-by: Jan Lindemann <jan@janware.com>
This commit is contained in:
Jan Lindemann 2017-10-30 13:05:22 +01:00
commit 16ce7abd93
5 changed files with 129 additions and 77 deletions

View file

@ -1,5 +1,3 @@
GENERATED_STD += $(FB_NAME).l $(FB_NAME).y $(FB_NAME).ebnf include/$(FB_NAME).h
INCLUDED_BY_GENERATED += include/defs.h include/$(FB_NAME).h include/lex.$(FB_NAME).h include/$(FB_NAME).tab.h
NAMESPACE_IN_GENERATED ?= $(FB_NAME)
# These types are meant to be cut off the tree and turned into hand coded flex
@ -14,10 +12,22 @@ ifneq ($(CHECK_SYMBOLS),)
OPT_CHECK_SYMBOLS ?= --check-symbols='$(CHECK_SYMBOLS)'
endif
GENERATED_STD += $(FB_NAME).l $(FB_NAME).y $(FB_NAME).ebnf $(FB_COMMON_H)
GENERATED += $(FB_NAME)-dense.ebnf $(GENERATED_STD)
GRAMMAR_INPUT ?= $(FB_NAME)-input.ebnf
GENERATED = $(FB_NAME)-dense.ebnf $(GENERATED_STD)
GENERATE_PY = ./generate.py
GENERATE = python ./$(GENERATE_PY) --log-level $(GENERATE_LOG_LEVEL) create \
FB_NAME_PREFIX ?= $(FB_NAME)_
FB_HDRDIR ?= include
FB_BISON_OUT_EXT ?= cpp
FB_FLEX_OUT_EXT ?= cpp
FB_CASE_INSENSITIVE ?= true
FB_SRC ?= $(filter %.y %.l,$(GENERATED))
FB_COMMON_H ?= $(FB_HDRDIR)/$(FB_NAME).h
INCLUDED_BY_GENERATED += include/defs.h $(FB_COMMON_H) include/lex.$(FB_NAME).h include/$(FB_NAME).tab.h
GENERATE_PY ?= ./generate.py
GENERATE ?= python ./$(GENERATE_PY) --log-level $(GENERATE_LOG_LEVEL) create \
--fix-extensions $(FIX_EXTENSIONS) \
--unroll-lists \
--unroll-options \
@ -30,13 +40,6 @@ GENERATE = python ./$(GENERATE_PY) --log-level $(GENERATE_LOG_LEVEL
--namespace=$(NAMESPACE_IN_GENERATED) \
--includes=$(shell echo $(INCLUDED_BY_GENERATED) | sed 's/ */,/g') \
$(CREATE_EXTRA_ARGS)
FB_NAME_PREFIX ?= $(FB_NAME)_
FB_HDRDIR ?= include
FB_BISON_OUT_EXT ?= cpp
FB_FLEX_OUT_EXT ?= cpp
FB_CASE_INSENSITIVE ?= true
FB_SRC ?= $(filter %.y %.l,$(GENERATED))
include $(TOPDIR)/make/proj.mk
include $(MODDIR)/make/flex-bison.mk
include $(MODDIR)/make/py-defs.mk
@ -46,9 +49,8 @@ debug-all:
GENERATE_LOG_LEVEL=debug make all 2>&1 | tee run.out
generate: $(GENERATED)
$(FB_NAME).y: include/$(FB_NAME).h
lex.$(FB_NAME).c: $(FB_NAME).l
#$(FB_NAME).y: $(FB_COMMON_H) lex.$(FB_NAME).$(FB_FLEX_OUT_EXT)
#lex.$(FB_NAME).$(FB_FLEX_OUT_EXT): $(FB_NAME).l
check: $(GRAMMAR_INPUT) $(GENERATE_PY) Makefile
python ./$(GENERATE_PY) --log-level info check --fix-extensions unroll --unroll-lists --unroll-options $(OPT_CHECK_SYMBOLS) $<