From 9bf0d7fb4e474f0c27c45f810a5097f8ca87c935 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Sat, 2 Jul 2022 16:27:37 +0200 Subject: [PATCH] Berry sync with upstream --- lib/libesp32/berry/Makefile | 58 ++++++++++--------------- lib/libesp32/berry/README.md | 10 ++--- lib/libesp32/berry/src/be_byteslib.c | 2 +- lib/libesp32/berry/src/be_lexer.c | 1 + lib/libesp32/berry/tests/bytes.be | 12 +++++ lib/libesp32/berry/tests/bytes_fixed.be | 3 +- lib/libesp32/berry/tests/class_const.be | 4 +- 7 files changed, 45 insertions(+), 45 deletions(-) mode change 100644 => 100755 lib/libesp32/berry/Makefile diff --git a/lib/libesp32/berry/Makefile b/lib/libesp32/berry/Makefile old mode 100644 new mode 100755 index 6241afbdd..2b2f3ad8f --- a/lib/libesp32/berry/Makefile +++ b/lib/libesp32/berry/Makefile @@ -1,26 +1,25 @@ -CFLAGS = -Wall -Wextra -std=c99 -pedantic-errors -O2 -LIBS = -lm -TARGET = berry -CC ?= gcc -MKDIR = mkdir -LFLAGS = +CFLAGS = -Wall -Wextra -std=c99 -pedantic-errors -O2 +DEBUG_FLAGS = -O0 -g -DBE_DEBUG +TEST_FLAGS = $(DEBUG_FLAGS) --coverage -fno-omit-frame-pointer -fsanitize=address -fsanitize=undefined +LIBS = -lm +TARGET = berry +CC = gcc +MKDIR = mkdir +LFLAGS = -INCPATH = src default -SRCPATH = src default -GENERATE = generate -CONFIG = default/berry_conf.h -COC = tools/coc/coc -PY = python3 -PYCOC = tools/coc/coc -CONST_TAB = $(GENERATE)/be_const_strtab.h -MAKE_COC = $(MAKE) -C tools/coc +INCPATH = src default +SRCPATH = src default +GENERATE = generate +CONFIG = default/berry_conf.h +COC = tools/coc/coc +CONST_TAB = $(GENERATE)/be_const_strtab.h ifeq ($(OS), Windows_NT) # Windows CFLAGS += -Wno-format # for "%I64d" warning LFLAGS += -Wl,--out-implib,berry.lib # export symbols lib for dll linked TARGET := $(TARGET).exe - COC := $(COC).exe - PY := $(PY).exe + PYTHON ?= python # only for windows and need python3 + COC := $(PYTHON) $(COC) else CFLAGS += -DUSE_READLINE_LIB LIBS += -lreadline -ldl @@ -33,16 +32,10 @@ endif ifneq ($(V), 1) Q=@ MSG=@echo - MAKE_COC += -s Q=$(Q) else MSG=@true endif -ifeq ($(TEST), 1) - CFLAGS += -fprofile-arcs -ftest-coverage - LFLAGS += -fprofile-arcs -ftest-coverage -endif - SRCS = $(foreach dir, $(SRCPATH), $(wildcard $(dir)/*.c)) OBJS = $(patsubst %.c, %.o, $(SRCS)) DEPS = $(patsubst %.c, %.d, $(SRCS)) @@ -52,11 +45,11 @@ INCFLAGS = $(foreach dir, $(INCPATH), -I"$(dir)") all: $(TARGET) -debug: CFLAGS += -O0 -g -DBE_DEBUG +debug: CFLAGS += $(DEBUG_FLAGS) debug: all -test: CFLAGS += --coverage -test: LFLAGS += --coverage +test: CFLAGS += $(TEST_FLAGS) +test: LFLAGS += $(TEST_FLAGS) test: all $(MSG) [Run Testcases...] $(Q) ./testall.be @@ -76,30 +69,25 @@ sinclude $(DEPS) $(OBJS): $(CONST_TAB) -$(CONST_TAB): $(COC) $(GENERATE) $(SRCS) $(CONFIG) +$(CONST_TAB): $(GENERATE) $(SRCS) $(CONFIG) $(MSG) [Prebuild] generate resources - $(Q) $(COC) -i $(SRCPATH) -c $(CONFIG) -o $(GENERATE) + $(Q) $(COC) -o $(GENERATE) $(SRCPATH) -c $(CONFIG) $(GENERATE): $(Q) $(MKDIR) $(GENERATE) -$(COC): - $(MSG) [Make] coc - $(Q) $(MAKE_COC) - install: cp $(TARGET) /usr/local/bin uninstall: $(RM) /usr/local/bin/$(TARGET) -prebuild: $(COC) $(GENERATE) +prebuild: $(GENERATE) $(MSG) [Prebuild] generate resources - $(Q) $(PY) $(PYCOC) -o $(GENERATE) $(SRCPATH) -c $(CONFIG) + $(Q) $(COC) -o $(GENERATE) $(SRCPATH) -c $(CONFIG) $(MSG) done clean: $(MSG) [Clean...] $(Q) $(RM) $(OBJS) $(DEPS) $(GENERATE)/* berry.lib - $(Q) $(MAKE_COC) clean $(MSG) done diff --git a/lib/libesp32/berry/README.md b/lib/libesp32/berry/README.md index 6d02dcd38..aef02a192 100644 --- a/lib/libesp32/berry/README.md +++ b/lib/libesp32/berry/README.md @@ -23,11 +23,9 @@ Berry has the following advantages: ## Documents -LaTeX documents repository: [https://github.com/Skiars/berry_doc](https://github.com/Skiars/berry_doc) +Reference Manual: [Wiki](https://github.com/berry-lang/berry/wiki/Reference) -Short Manual: [berry_short_manual.pdf](https://github.com/Skiars/berry_doc/releases/download/latest/berry_short_manual.pdf). - -Reference Manual: [berry_rm_en_us.pdf](https://github.com/Skiars/berry_doc/releases/download/latest/berry_rm_en_us.pdf), [berry_rm_zh_cn.pdf](https://github.com/Skiars/berry_doc/releases/download/latest/berry_rm_zh_cn.pdf). +Short Manual (slightly outdated): [berry_short_manual.pdf](https://github.com/Skiars/berry_doc/releases/download/latest/berry_short_manual.pdf). Berry's EBNF grammar definition: [tools/grammar/berry.ebnf](./tools/grammar/berry.ebnf) @@ -111,9 +109,9 @@ Berry's EBNF grammar definition: [tools/grammar/berry.ebnf](./tools/grammar/berr make install ``` -## Editor pulgins +## Editor plugins -[Visual Studio Code](https://code.visualstudio.com/) pulgin are in this directory: [./tools/pulgins/vscode](./tools/pulgins/vscode). +[Visual Studio Code](https://code.visualstudio.com/) plugin are in this directory: [./tools/plugins/vscode](./tools/plugins/vscode). ## Examples diff --git a/lib/libesp32/berry/src/be_byteslib.c b/lib/libesp32/berry/src/be_byteslib.c index e91b6ed14..11857963a 100644 --- a/lib/libesp32/berry/src/be_byteslib.c +++ b/lib/libesp32/berry/src/be_byteslib.c @@ -1216,7 +1216,7 @@ static int m_fromhex(bvm *vm) from = be_toint(vm, 3); } const char *s = be_tostring(vm, 2); - size_t s_len = strlen(s); + int32_t s_len = strlen(s); if (from < 0) { from = 0; } if (from > s_len) { from = s_len; } int32_t bin_len = (s_len - from) / 2; diff --git a/lib/libesp32/berry/src/be_lexer.c b/lib/libesp32/berry/src/be_lexer.c index cc3f1068e..ca11141c0 100644 --- a/lib/libesp32/berry/src/be_lexer.c +++ b/lib/libesp32/berry/src/be_lexer.c @@ -12,6 +12,7 @@ #include "be_exec.h" #include "be_map.h" #include "be_vm.h" +#include "be_strlib.h" #define SHORT_STR_LEN 32 #define EOS '\0' /* end of source */ diff --git a/lib/libesp32/berry/tests/bytes.be b/lib/libesp32/berry/tests/bytes.be index c0cef873a..d7b1bbdf8 100644 --- a/lib/libesp32/berry/tests/bytes.be +++ b/lib/libesp32/berry/tests/bytes.be @@ -190,3 +190,15 @@ b.setfloat(0, 0.33) assert(b == bytes('C3F5A83E')) b = bytes("0000C03F") assert(b.getfloat(0) == 1.5) + +#- fromhex -# +b = bytes("112233") +b.fromhex("FFFEAABBCC") +assert(b == bytes("FFFEAABBCC")) +b.fromhex("") +assert(b == bytes()) + +#- tohex -# +b = bytes("FFFEAABBCC") +assert(b.tohex() == "FFFEAABBCC") +assert(bytes().tohex() == "") diff --git a/lib/libesp32/berry/tests/bytes_fixed.be b/lib/libesp32/berry/tests/bytes_fixed.be index e4a64f67f..1f3e5532b 100644 --- a/lib/libesp32/berry/tests/bytes_fixed.be +++ b/lib/libesp32/berry/tests/bytes_fixed.be @@ -64,4 +64,5 @@ assert(b1 == b2) b2.set(0,0xAABB,2) assert(b2 == bytes("BBAA33445566")) assert(b1 == bytes("BBAA33445566")) -assert(b1 == b2) \ No newline at end of file +assert(b1 == b2) +assert(b1.ismapped() == false) \ No newline at end of file diff --git a/lib/libesp32/berry/tests/class_const.be b/lib/libesp32/berry/tests/class_const.be index e8f4c1920..950ce8b4b 100644 --- a/lib/libesp32/berry/tests/class_const.be +++ b/lib/libesp32/berry/tests/class_const.be @@ -8,11 +8,11 @@ def assert_attribute_error(f) end class A - static a + static var a def init() self.b = 2 end def f() end var b - static c, s, r + static var c, s, r end assert(A.a == nil)