42 lines
1.0 KiB
Makefile
42 lines
1.0 KiB
Makefile
.PHONY: all parser clean
|
|
|
|
ARCH:="`uname -s`"
|
|
MAC:="Darwin"
|
|
LINUX:="Linux"
|
|
|
|
all: parser.go fmt
|
|
|
|
test: parser.go fmt
|
|
sh test.sh
|
|
|
|
parser.go: parser.y
|
|
make parser
|
|
|
|
parser: bin/goyacc
|
|
bin/goyacc -o /dev/null parser.y
|
|
bin/goyacc -o parser.go parser.y 2>&1 | egrep "(shift|reduce)/reduce" | awk '{print} END {if (NR > 0) {print "Find conflict in parser.y. Please check y.output for more information."; exit 1;}}'
|
|
rm -f y.output
|
|
|
|
@if [ $(ARCH) = $(LINUX) ]; \
|
|
then \
|
|
sed -i -e 's|//line.*||' -e 's/yyEofCode/yyEOFCode/' parser.go; \
|
|
elif [ $(ARCH) = $(MAC) ]; \
|
|
then \
|
|
/usr/bin/sed -i "" 's|//line.*||' parser.go; \
|
|
/usr/bin/sed -i "" 's/yyEofCode/yyEOFCode/' parser.go; \
|
|
fi
|
|
|
|
@awk 'BEGIN{print "// Code generated by goyacc DO NOT EDIT."} {print $0}' parser.go > tmp_parser.go && mv tmp_parser.go parser.go;
|
|
|
|
bin/goyacc: goyacc/main.go
|
|
GO111MODULE=on go build -o bin/goyacc goyacc/main.go
|
|
|
|
fmt:
|
|
@echo "gofmt (simplify)"
|
|
@gofmt -s -l -w . 2>&1 | awk '{print} END{if(NR>0) {exit 1}}'
|
|
|
|
clean:
|
|
go clean -i ./...
|
|
rm -rf *.out
|
|
rm parser.go
|