From 57d2ac5bf288507d188db45fb8ee0e8dc4aed136 Mon Sep 17 00:00:00 2001 From: Jose Rodriguez Date: Thu, 16 Jul 2020 10:22:18 +0200 Subject: [PATCH 1/3] Fix AT link --- docs/library/screen.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/library/screen.md b/docs/library/screen.md index 003eff0af..bf90347e5 100644 --- a/docs/library/screen.md +++ b/docs/library/screen.md @@ -40,4 +40,5 @@ PRINT AT 0, 0; "The character at 9, 10 is "; c$ * [ CSRLIN ](csrlin_.md) * [ POS](pos_.md) -* [ AT ](at_.md) +* [ AT ](../at.md) + From 6b5d03e50a457cfe3503ec4e6f327cbd09cff6c3 Mon Sep 17 00:00:00 2001 From: Jose Rodriguez Date: Thu, 16 Jul 2020 10:32:21 +0200 Subject: [PATCH 2/3] Update FOR documentation --- docs/for.md | 35 +++++++++++++++++++++++++++++++---- 1 file changed, 31 insertions(+), 4 deletions(-) diff --git a/docs/for.md b/docs/for.md index 5ca688e46..956347284 100644 --- a/docs/for.md +++ b/docs/for.md @@ -17,18 +17,31 @@ ##Description -A **For...Next** loop initializes _iterator_ to _startvalue_, then executes the _sentences_, incrementing _iterator_ by _stepvalue_ until it reaches or exceeds _endvalue_. If _stepvalue_ is not explicitly given it will set to 1. +A **For...Next** loop initializes _iterator_ to _startvalue_, then executes the _sentences_, incrementing _iterator_ by +_stepvalue_ until it reaches or exceeds _endvalue_. If _stepvalue_ is not explicitly given it will set to 1. ##Examples ``` +REM Counts from 1 to 10 FOR i = 1 TO 10: PRINT i: NEXT ``` +### Counts downwards +``` +FOR i = 10 TO 1 STEP -1: PRINT i: NEXT +``` + +### Loops using odd numbers +``` +FOR i = 1 TO 10 STEP 2: PRINT i: NEXT +``` + ##Differences From Sinclair Basic * The variable name after the NEXT statement is not required. -* Note that variable types can cause issues with ZX Basic For...Next Loops. If the upper limit of the iterator exceeds the upper limit of the variable type, the loop may not complete. +* Note that variable types can cause issues with ZX Basic For...Next Loops. If the upper limit of the iterator exceeds +the upper limit of the variable type, the loop may not complete. For example: ``` DIM i as UByte @@ -40,9 +53,23 @@ NEXT i Clearly, since the largest value a byte can hold is 255, it's not possible for i in the above example to exceed 300. The variable will "wrap around" to 0 and as a result, the loop will not ever terminate. -This can happen in much more subtle ways when STEP is used. +This can happen in much more subtle ways when `STEP` is used. There has to be "room" within the variable type for the iterator to exceed the terminator when it is being -incremented by "STEP" amounts. +incremented by amounts. + +For example, this loop will neved end + +``` +DIM i as UInteger + +FOR i = 65000 TO 65500 STEP 100 + ... +NEXT i +``` + +This loop will never end. `UInteger` type allows values in the range `[0..65535]` so apparently it's ok, because +65500 fits in it. However `STEP` is 100, so 65500 + 100 = 65600 which fall out if such range. There will be an +_overflow_ and the variable `i` will take the value 64 and the loop will continue. ##See Also From bbf171e84a0dac0588aeb79c2194f82169093087 Mon Sep 17 00:00:00 2001 From: Jose Rodriguez Date: Sat, 18 Jul 2020 01:49:32 +0200 Subject: [PATCH 3/3] Reorganize code * Dropped pyinstaller zxbasic.spec (no longer used) * Rename module zxb to libzxbc * Rename module zxbasm to libzxbasm * Rename module zxbpp to libzxbpp This will allow to create proper script names 'zxbc', 'zxbasm', 'zxbpp' now that these folders have been renamed. --- arch/zx48k/optimizer/asm.py | 2 +- arch/zx48k/optimizer/memcell.py | 2 +- arch/zx48k/translator.py | 2 +- {zxbasm => libzxbasm}/__init__.py | 0 {zxbasm => libzxbasm}/asm.py | 2 +- {zxbasm => libzxbasm}/asmlex.py | 0 {zxbasm => libzxbasm}/asmparse.py | 2 +- {zxbasm => libzxbasm}/basic.py | 0 {zxbasm => libzxbasm}/z80.py | 0 {zxbasm => libzxbasm}/zxbasm.py | 2 +- {zxbasm => libzxbasm}/zxnext.py | 2 +- {zxb => libzxbc}/__init__.py | 0 {zxb => libzxbc}/keywords.py | 0 {zxb => libzxbc}/version.py | 0 {zxb => libzxbc}/zxb.py | 4 +- {zxb => libzxbc}/zxblex.py | 0 {zxb => libzxbc}/zxbparser.py | 2 +- {zxbpp => libzxbpp}/__init__.py | 0 {zxbpp => libzxbpp}/prepro/__init__.py | 0 {zxbpp => libzxbpp}/prepro/args.py | 0 {zxbpp => libzxbpp}/prepro/definestable.py | 0 {zxbpp => libzxbpp}/prepro/exceptions.py | 0 {zxbpp => libzxbpp}/prepro/id_.py | 0 {zxbpp => libzxbpp}/prepro/macrocall.py | 0 {zxbpp => libzxbpp}/prepro/output.py | 0 {zxbpp => libzxbpp}/zxbasmpplex.py | 2 +- {zxbpp => libzxbpp}/zxbpp.py | 0 {zxbpp => libzxbpp}/zxbpplex.py | 2 +- parsetab/tabs.dbm.bak | 8 +- parsetab/tabs.dbm.dat | Bin 1317003 -> 1318491 bytes parsetab/tabs.dbm.dir | 8 +- poetry.lock | 79 ++++++++--------- pyproject.toml | 13 +-- setup.py | 48 +++++----- tests/cmdline/test_zxb.py | 2 +- tests/functional/test.py | 18 ++-- tests/symbols/test_symbolARRAYACCESS.py | 2 +- tests/symbols/test_symbolBINARY.py | 2 +- tests/symbols/test_symbolBOUND.py | 2 +- tests/symbols/test_symbolTYPECAST.py | 2 +- tox.ini | 2 +- zxb.py | 4 +- zxbasic.spec | 97 --------------------- zxbasm.py | 4 +- zxbc.py | 4 +- zxbpp.py | 4 +- 46 files changed, 112 insertions(+), 211 deletions(-) rename {zxbasm => libzxbasm}/__init__.py (100%) rename {zxbasm => libzxbasm}/asm.py (99%) rename {zxbasm => libzxbasm}/asmlex.py (100%) rename {zxbasm => libzxbasm}/asmparse.py (99%) rename {zxbasm => libzxbasm}/basic.py (100%) rename {zxbasm => libzxbasm}/z80.py (100%) rename {zxbasm => libzxbasm}/zxbasm.py (99%) rename {zxbasm => libzxbasm}/zxnext.py (98%) rename {zxb => libzxbc}/__init__.py (100%) rename {zxb => libzxbc}/keywords.py (100%) rename {zxb => libzxbc}/version.py (100%) rename {zxb => libzxbc}/zxb.py (99%) rename {zxb => libzxbc}/zxblex.py (100%) rename {zxb => libzxbc}/zxbparser.py (99%) rename {zxbpp => libzxbpp}/__init__.py (100%) rename {zxbpp => libzxbpp}/prepro/__init__.py (100%) rename {zxbpp => libzxbpp}/prepro/args.py (100%) rename {zxbpp => libzxbpp}/prepro/definestable.py (100%) rename {zxbpp => libzxbpp}/prepro/exceptions.py (100%) rename {zxbpp => libzxbpp}/prepro/id_.py (100%) rename {zxbpp => libzxbpp}/prepro/macrocall.py (100%) rename {zxbpp => libzxbpp}/prepro/output.py (100%) rename {zxbpp => libzxbpp}/zxbasmpplex.py (99%) rename {zxbpp => libzxbpp}/zxbpp.py (100%) rename {zxbpp => libzxbpp}/zxbpplex.py (99%) delete mode 100644 zxbasic.spec diff --git a/arch/zx48k/optimizer/asm.py b/arch/zx48k/optimizer/asm.py index a30a0a6c3..a83205f74 100644 --- a/arch/zx48k/optimizer/asm.py +++ b/arch/zx48k/optimizer/asm.py @@ -2,7 +2,7 @@ from .patterns import RE_OUTC, RE_INDIR16 from .helpers import single_registers -from zxbasm import z80 +from libzxbasm import z80 # Dict of patterns to normalized instructions. I.e. 'ld a, 5' -> 'LD A,N' Z80_PATTERN = {} diff --git a/arch/zx48k/optimizer/memcell.py b/arch/zx48k/optimizer/memcell.py index ea4fa154b..ef7616063 100644 --- a/arch/zx48k/optimizer/memcell.py +++ b/arch/zx48k/optimizer/memcell.py @@ -6,7 +6,7 @@ from .. import backend from .asm import Asm from api.utils import flatten_list -from zxbasm import asmlex +from libzxbasm import asmlex class MemCell(object): diff --git a/arch/zx48k/translator.py b/arch/zx48k/translator.py index 0d60050aa..7d925f1c4 100644 --- a/arch/zx48k/translator.py +++ b/arch/zx48k/translator.py @@ -21,7 +21,7 @@ from api.errors import InvalidOperatorError from api.errors import InvalidBuiltinFunctionError from api.errors import InternalError -from zxbpp import zxbpp +from libzxbpp import zxbpp from . import backend from .backend.__float import _float diff --git a/zxbasm/__init__.py b/libzxbasm/__init__.py similarity index 100% rename from zxbasm/__init__.py rename to libzxbasm/__init__.py diff --git a/zxbasm/asm.py b/libzxbasm/asm.py similarity index 99% rename from zxbasm/asm.py rename to libzxbasm/asm.py index c8b8c4fa5..279ee86c7 100644 --- a/zxbasm/asm.py +++ b/libzxbasm/asm.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # vim: ts=4:et:sw=4 -from zxbasm.z80 import Opcode, Z80SET +from libzxbasm.z80 import Opcode, Z80SET from api.errors import Error import re diff --git a/zxbasm/asmlex.py b/libzxbasm/asmlex.py similarity index 100% rename from zxbasm/asmlex.py rename to libzxbasm/asmlex.py diff --git a/zxbasm/asmparse.py b/libzxbasm/asmparse.py similarity index 99% rename from zxbasm/asmparse.py rename to libzxbasm/asmparse.py index 2447d26c9..ee0b3a894 100755 --- a/zxbasm/asmparse.py +++ b/libzxbasm/asmparse.py @@ -26,7 +26,7 @@ from api.errmsg import warning from api import global_ as gl import api.utils -from zxbpp import zxbpp +from libzxbpp import zxbpp import outfmt LEXER = asmlex.Lexer() diff --git a/zxbasm/basic.py b/libzxbasm/basic.py similarity index 100% rename from zxbasm/basic.py rename to libzxbasm/basic.py diff --git a/zxbasm/z80.py b/libzxbasm/z80.py similarity index 100% rename from zxbasm/z80.py rename to libzxbasm/z80.py diff --git a/zxbasm/zxbasm.py b/libzxbasm/zxbasm.py similarity index 99% rename from zxbasm/zxbasm.py rename to libzxbasm/zxbasm.py index 4e92384a5..48eaabb39 100755 --- a/zxbasm/zxbasm.py +++ b/libzxbasm/zxbasm.py @@ -16,7 +16,7 @@ import argparse from . import asmparse -from zxbpp import zxbpp +from libzxbpp import zxbpp import api.config from api.config import OPTIONS diff --git a/zxbasm/zxnext.py b/libzxbasm/zxnext.py similarity index 98% rename from zxbasm/zxnext.py rename to libzxbasm/zxnext.py index 63d0fae78..2171d7a5c 100644 --- a/zxbasm/zxnext.py +++ b/libzxbasm/zxnext.py @@ -13,7 +13,7 @@ 'p_push_imm' ] -from zxbasm import asmparse +from libzxbasm import asmparse def p_mul_d_e(p): diff --git a/zxb/__init__.py b/libzxbc/__init__.py similarity index 100% rename from zxb/__init__.py rename to libzxbc/__init__.py diff --git a/zxb/keywords.py b/libzxbc/keywords.py similarity index 100% rename from zxb/keywords.py rename to libzxbc/keywords.py diff --git a/zxb/version.py b/libzxbc/version.py similarity index 100% rename from zxb/version.py rename to libzxbc/version.py diff --git a/zxb/zxb.py b/libzxbc/zxb.py similarity index 99% rename from zxb/zxb.py rename to libzxbc/zxb.py index 6c70e828f..f3aa528e3 100755 --- a/zxb/zxb.py +++ b/libzxbc/zxb.py @@ -17,8 +17,8 @@ from .version import VERSION from . import zxbparser, zxblex -from zxbpp import zxbpp -from zxbasm import asmparse +from libzxbpp import zxbpp +from libzxbasm import asmparse import arch.zx48k.backend as backend from api import global_ as gl diff --git a/zxb/zxblex.py b/libzxbc/zxblex.py similarity index 100% rename from zxb/zxblex.py rename to libzxbc/zxblex.py diff --git a/zxb/zxbparser.py b/libzxbc/zxbparser.py similarity index 99% rename from zxb/zxbparser.py rename to libzxbc/zxbparser.py index 09f4c56b3..1d95cfb8d 100755 --- a/zxb/zxbparser.py +++ b/libzxbc/zxbparser.py @@ -59,7 +59,7 @@ # Lexers and parsers, etc import ply.yacc as yacc from . import zxblex -from zxbpp import zxbpp +from libzxbpp import zxbpp from arch.zx48k.backend import REQUIRES from .zxblex import tokens # analysis:ignore -- Needed for PLY. Do not remove. # noqa diff --git a/zxbpp/__init__.py b/libzxbpp/__init__.py similarity index 100% rename from zxbpp/__init__.py rename to libzxbpp/__init__.py diff --git a/zxbpp/prepro/__init__.py b/libzxbpp/prepro/__init__.py similarity index 100% rename from zxbpp/prepro/__init__.py rename to libzxbpp/prepro/__init__.py diff --git a/zxbpp/prepro/args.py b/libzxbpp/prepro/args.py similarity index 100% rename from zxbpp/prepro/args.py rename to libzxbpp/prepro/args.py diff --git a/zxbpp/prepro/definestable.py b/libzxbpp/prepro/definestable.py similarity index 100% rename from zxbpp/prepro/definestable.py rename to libzxbpp/prepro/definestable.py diff --git a/zxbpp/prepro/exceptions.py b/libzxbpp/prepro/exceptions.py similarity index 100% rename from zxbpp/prepro/exceptions.py rename to libzxbpp/prepro/exceptions.py diff --git a/zxbpp/prepro/id_.py b/libzxbpp/prepro/id_.py similarity index 100% rename from zxbpp/prepro/id_.py rename to libzxbpp/prepro/id_.py diff --git a/zxbpp/prepro/macrocall.py b/libzxbpp/prepro/macrocall.py similarity index 100% rename from zxbpp/prepro/macrocall.py rename to libzxbpp/prepro/macrocall.py diff --git a/zxbpp/prepro/output.py b/libzxbpp/prepro/output.py similarity index 100% rename from zxbpp/prepro/output.py rename to libzxbpp/prepro/output.py diff --git a/zxbpp/zxbasmpplex.py b/libzxbpp/zxbasmpplex.py similarity index 99% rename from zxbpp/zxbasmpplex.py rename to libzxbpp/zxbasmpplex.py index 66a637345..b835e6baf 100755 --- a/zxbpp/zxbasmpplex.py +++ b/libzxbpp/zxbasmpplex.py @@ -14,7 +14,7 @@ import sys from ply import lex import api.utils -from zxbpp.prepro.output import warning, error +from libzxbpp.prepro.output import warning, error EOL = '\n' diff --git a/zxbpp/zxbpp.py b/libzxbpp/zxbpp.py similarity index 100% rename from zxbpp/zxbpp.py rename to libzxbpp/zxbpp.py diff --git a/zxbpp/zxbpplex.py b/libzxbpp/zxbpplex.py similarity index 99% rename from zxbpp/zxbpplex.py rename to libzxbpp/zxbpplex.py index d10fe82d5..a8d5de789 100755 --- a/zxbpp/zxbpplex.py +++ b/libzxbpp/zxbpplex.py @@ -12,7 +12,7 @@ import sys from ply import lex -from zxbpp.prepro.output import warning, error +from libzxbpp.prepro.output import warning, error import api.utils EOL = '\n' diff --git a/parsetab/tabs.dbm.bak b/parsetab/tabs.dbm.bak index 6816ff0c6..e4f12774f 100644 --- a/parsetab/tabs.dbm.bak +++ b/parsetab/tabs.dbm.bak @@ -1,4 +1,4 @@ -'zxbppparse', (0, 69165) -'asmparse', (69632, 253669) -'zxnext_asmparse', (323584, 284580) -'zxbparser', (608256, 708747) +'zxbppparse', (0, 69354) +'asmparse', (69632, 253939) +'zxnext_asmparse', (323584, 284883) +'zxbparser', (608768, 709723) diff --git a/parsetab/tabs.dbm.dat b/parsetab/tabs.dbm.dat index 0aff063520d84f6d79a85bf4955751663e954ce4..dc6aa1f2336cb4a9bd36ed6bec5d735c9cad40af 100644 GIT binary patch delta 7955 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 diff --git a/parsetab/tabs.dbm.dir b/parsetab/tabs.dbm.dir index 6816ff0c6..e4f12774f 100644 --- a/parsetab/tabs.dbm.dir +++ b/parsetab/tabs.dbm.dir @@ -1,4 +1,4 @@ -'zxbppparse', (0, 69165) -'asmparse', (69632, 253669) -'zxnext_asmparse', (323584, 284580) -'zxbparser', (608256, 708747) +'zxbppparse', (0, 69354) +'asmparse', (69632, 253939) +'zxnext_asmparse', (323584, 284883) +'zxbparser', (608768, 709723) diff --git a/poetry.lock b/poetry.lock index 152d0ee35..6ad6059f1 100644 --- a/poetry.lock +++ b/poetry.lock @@ -52,7 +52,7 @@ description = "Distribution utilities" name = "distlib" optional = false python-versions = "*" -version = "0.3.0" +version = "0.3.1" [[package]] category = "dev" @@ -68,7 +68,7 @@ description = "the modular source code checker: pep8 pyflakes and co" name = "flake8" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7" -version = "3.8.2" +version = "3.8.3" [package.dependencies] mccabe = ">=0.6.0,<0.7.0" @@ -86,14 +86,14 @@ marker = "python_version < \"3.8\"" name = "importlib-metadata" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" -version = "1.6.0" +version = "1.7.0" [package.dependencies] zipp = ">=0.5" [package.extras] docs = ["sphinx", "rst.linker"] -testing = ["packaging", "importlib-resources"] +testing = ["packaging", "pep517", "importlib-resources (>=1.3)"] [[package]] category = "dev" @@ -102,13 +102,9 @@ marker = "python_version < \"3.7\"" name = "importlib-resources" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" -version = "1.5.0" +version = "3.0.0" [package.dependencies] -[package.dependencies.importlib-metadata] -python = "<3.8" -version = "*" - [package.dependencies.zipp] python = "<3.8" version = ">=0.4" @@ -130,7 +126,7 @@ description = "More routines for operating on iterables, beyond itertools" name = "more-itertools" optional = false python-versions = ">=3.5" -version = "8.3.0" +version = "8.4.0" [[package]] category = "dev" @@ -166,7 +162,7 @@ description = "library with cross-python path, ini-parsing, io, code, log facili name = "py" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "1.8.1" +version = "1.9.0" [[package]] category = "dev" @@ -198,7 +194,7 @@ description = "pytest: simple powerful testing with Python" name = "pytest" optional = false python-versions = ">=3.5" -version = "5.4.2" +version = "5.4.3" [package.dependencies] atomicwrites = ">=1.0" @@ -224,7 +220,7 @@ description = "py.test plugin to abort hanging tests" name = "pytest-timeout" optional = false python-versions = "*" -version = "1.3.4" +version = "1.4.2" [package.dependencies] pytest = ">=3.6.0" @@ -251,7 +247,7 @@ description = "tox is a generic virtualenv management and test command line tool name = "tox" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" -version = "3.15.1" +version = "3.17.1" [package.dependencies] colorama = ">=0.4.1" @@ -277,11 +273,11 @@ description = "Virtual Python Environment builder" name = "virtualenv" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7" -version = "20.0.21" +version = "20.0.27" [package.dependencies] appdirs = ">=1.4.3,<2" -distlib = ">=0.3.0,<1" +distlib = ">=0.3.1,<1" filelock = ">=3.0.0,<4" six = ">=1.9.0,<2" @@ -291,19 +287,19 @@ version = ">=0.12,<2" [package.dependencies.importlib-resources] python = "<3.7" -version = ">=1.0,<2" +version = ">=1.0" [package.extras] docs = ["sphinx (>=3)", "sphinx-argparse (>=0.2.5)", "sphinx-rtd-theme (>=0.4.3)", "towncrier (>=19.9.0rc1)", "proselint (>=0.10.2)"] -testing = ["pytest (>=4)", "coverage (>=5)", "coverage-enable-subprocess (>=1)", "pytest-xdist (>=1.31.0)", "pytest-mock (>=2)", "pytest-env (>=0.6.2)", "pytest-randomly (>=1)", "pytest-timeout", "packaging (>=20.0)", "xonsh (>=0.9.16)"] +testing = ["pytest (>=4)", "coverage (>=5)", "coverage-enable-subprocess (>=1)", "pytest-xdist (>=1.31.0)", "pytest-mock (>=2)", "pytest-env (>=0.6.2)", "pytest-randomly (>=1)", "pytest-timeout (>=1)", "pytest-freezegun (>=0.4.1)", "flaky (>=3)", "packaging (>=20.0)", "xonsh (>=0.9.16)"] [[package]] category = "dev" -description = "Measures number of Terminal column cells of wide-character codes" +description = "Measures the displayed width of unicode strings in a terminal" name = "wcwidth" optional = false python-versions = "*" -version = "0.1.9" +version = "0.2.5" [[package]] category = "dev" @@ -344,31 +340,32 @@ colorama = [ {file = "colorama-0.4.3.tar.gz", hash = "sha256:e96da0d330793e2cb9485e9ddfd918d456036c7149416295932478192f4436a1"}, ] distlib = [ - {file = "distlib-0.3.0.zip", hash = "sha256:2e166e231a26b36d6dfe35a48c4464346620f8645ed0ace01ee31822b288de21"}, + {file = "distlib-0.3.1-py2.py3-none-any.whl", hash = "sha256:8c09de2c67b3e7deef7184574fc060ab8a793e7adbb183d942c389c8b13c52fb"}, + {file = "distlib-0.3.1.zip", hash = "sha256:edf6116872c863e1aa9d5bb7cb5e05a022c519a4594dc703843343a9ddd9bff1"}, ] filelock = [ {file = "filelock-3.0.12-py3-none-any.whl", hash = "sha256:929b7d63ec5b7d6b71b0fa5ac14e030b3f70b75747cef1b10da9b879fef15836"}, {file = "filelock-3.0.12.tar.gz", hash = "sha256:18d82244ee114f543149c66a6e0c14e9c4f8a1044b5cdaadd0f82159d6a6ff59"}, ] flake8 = [ - {file = "flake8-3.8.2-py2.py3-none-any.whl", hash = "sha256:ccaa799ef9893cebe69fdfefed76865aeaefbb94cb8545617b2298786a4de9a5"}, - {file = "flake8-3.8.2.tar.gz", hash = "sha256:c69ac1668e434d37a2d2880b3ca9aafd54b3a10a3ac1ab101d22f29e29cf8634"}, + {file = "flake8-3.8.3-py2.py3-none-any.whl", hash = "sha256:15e351d19611c887e482fb960eae4d44845013cc142d42896e9862f775d8cf5c"}, + {file = "flake8-3.8.3.tar.gz", hash = "sha256:f04b9fcbac03b0a3e58c0ab3a0ecc462e023a9faf046d57794184028123aa208"}, ] importlib-metadata = [ - {file = "importlib_metadata-1.6.0-py2.py3-none-any.whl", hash = "sha256:2a688cbaa90e0cc587f1df48bdc97a6eadccdcd9c35fb3f976a09e3b5016d90f"}, - {file = "importlib_metadata-1.6.0.tar.gz", hash = "sha256:34513a8a0c4962bc66d35b359558fd8a5e10cd472d37aec5f66858addef32c1e"}, + {file = "importlib_metadata-1.7.0-py2.py3-none-any.whl", hash = "sha256:dc15b2969b4ce36305c51eebe62d418ac7791e9a157911d58bfb1f9ccd8e2070"}, + {file = "importlib_metadata-1.7.0.tar.gz", hash = "sha256:90bb658cdbbf6d1735b6341ce708fc7024a3e14e99ffdc5783edea9f9b077f83"}, ] importlib-resources = [ - {file = "importlib_resources-1.5.0-py2.py3-none-any.whl", hash = "sha256:85dc0b9b325ff78c8bef2e4ff42616094e16b98ebd5e3b50fe7e2f0bbcdcde49"}, - {file = "importlib_resources-1.5.0.tar.gz", hash = "sha256:6f87df66833e1942667108628ec48900e02a4ab4ad850e25fbf07cb17cf734ca"}, + {file = "importlib_resources-3.0.0-py2.py3-none-any.whl", hash = "sha256:d028f66b66c0d5732dae86ba4276999855e162a749c92620a38c1d779ed138a7"}, + {file = "importlib_resources-3.0.0.tar.gz", hash = "sha256:19f745a6eca188b490b1428c8d1d4a0d2368759f32370ea8fb89cad2ab1106c3"}, ] mccabe = [ {file = "mccabe-0.6.1-py2.py3-none-any.whl", hash = "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42"}, {file = "mccabe-0.6.1.tar.gz", hash = "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f"}, ] more-itertools = [ - {file = "more-itertools-8.3.0.tar.gz", hash = "sha256:558bb897a2232f5e4f8e2399089e35aecb746e1f9191b6584a151647e89267be"}, - {file = "more_itertools-8.3.0-py3-none-any.whl", hash = "sha256:7818f596b1e87be009031c7653d01acc46ed422e6656b394b0f765ce66ed4982"}, + {file = "more-itertools-8.4.0.tar.gz", hash = "sha256:68c70cc7167bdf5c7c9d8f6954a7837089c6a36bf565383919bb595efb8a17e5"}, + {file = "more_itertools-8.4.0-py3-none-any.whl", hash = "sha256:b78134b2063dd214000685165d81c154522c3ee0a1c0d4d113c80361c234c5a2"}, ] packaging = [ {file = "packaging-20.4-py2.py3-none-any.whl", hash = "sha256:998416ba6962ae7fbd6596850b80e17859a5753ba17c32284f67bfff33784181"}, @@ -379,8 +376,8 @@ pluggy = [ {file = "pluggy-0.13.1.tar.gz", hash = "sha256:15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0"}, ] py = [ - {file = "py-1.8.1-py2.py3-none-any.whl", hash = "sha256:c20fdd83a5dbc0af9efd622bee9a5564e278f6380fffcacc43ba6f43db2813b0"}, - {file = "py-1.8.1.tar.gz", hash = "sha256:5e27081401262157467ad6e7f851b7aa402c5852dbcb3dae06768434de5752aa"}, + {file = "py-1.9.0-py2.py3-none-any.whl", hash = "sha256:366389d1db726cd2fcfc79732e75410e5fe4d31db13692115529d34069a043c2"}, + {file = "py-1.9.0.tar.gz", hash = "sha256:9ca6883ce56b4e8da7e79ac18787889fa5206c79dcc67fb065376cd2fe03f342"}, ] pycodestyle = [ {file = "pycodestyle-2.6.0-py2.py3-none-any.whl", hash = "sha256:2295e7b2f6b5bd100585ebcb1f616591b652db8a741695b3d8f5d28bdc934367"}, @@ -395,12 +392,12 @@ pyparsing = [ {file = "pyparsing-2.4.7.tar.gz", hash = "sha256:c203ec8783bf771a155b207279b9bccb8dea02d8f0c9e5f8ead507bc3246ecc1"}, ] pytest = [ - {file = "pytest-5.4.2-py3-none-any.whl", hash = "sha256:95c710d0a72d91c13fae35dce195633c929c3792f54125919847fdcdf7caa0d3"}, - {file = "pytest-5.4.2.tar.gz", hash = "sha256:eb2b5e935f6a019317e455b6da83dd8650ac9ffd2ee73a7b657a30873d67a698"}, + {file = "pytest-5.4.3-py3-none-any.whl", hash = "sha256:5c0db86b698e8f170ba4582a492248919255fcd4c79b1ee64ace34301fb589a1"}, + {file = "pytest-5.4.3.tar.gz", hash = "sha256:7979331bfcba207414f5e1263b5a0f8f521d0f457318836a7355531ed1a4c7d8"}, ] pytest-timeout = [ - {file = "pytest-timeout-1.3.4.tar.gz", hash = "sha256:80faa19cd245a42b87a51699d640c00d937c02b749052bfca6bae8bdbe12c48e"}, - {file = "pytest_timeout-1.3.4-py2.py3-none-any.whl", hash = "sha256:95ca727d4a1dace6ec5f0534d2940b8417ff8b782f7eef0ea09240bdd94d95c2"}, + {file = "pytest-timeout-1.4.2.tar.gz", hash = "sha256:20b3113cf6e4e80ce2d403b6fb56e9e1b871b510259206d40ff8d609f48bda76"}, + {file = "pytest_timeout-1.4.2-py2.py3-none-any.whl", hash = "sha256:541d7aa19b9a6b4e475c759fd6073ef43d7cdc9a92d95644c260076eb257a063"}, ] six = [ {file = "six-1.15.0-py2.py3-none-any.whl", hash = "sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced"}, @@ -411,16 +408,16 @@ toml = [ {file = "toml-0.10.1.tar.gz", hash = "sha256:926b612be1e5ce0634a2ca03470f95169cf16f939018233a670519cb4ac58b0f"}, ] tox = [ - {file = "tox-3.15.1-py2.py3-none-any.whl", hash = "sha256:322dfdf007d7d53323f767badcb068a5cfa7c44d8aabb698d131b28cf44e62c4"}, - {file = "tox-3.15.1.tar.gz", hash = "sha256:8c9ad9b48659d291c5bc78bcabaa4d680d627687154b812fa52baedaa94f9f83"}, + {file = "tox-3.17.1-py2.py3-none-any.whl", hash = "sha256:cf130909a224515f6c894023150ccc860c4cf5ecad64f583b9d43ed1aa7e5da8"}, + {file = "tox-3.17.1.tar.gz", hash = "sha256:5968c07b3aeea715ac2fe723a912e0b6a0c53bebad24fc37eb559b7497f217fa"}, ] virtualenv = [ - {file = "virtualenv-20.0.21-py2.py3-none-any.whl", hash = "sha256:a730548b27366c5e6cbdf6f97406d861cccece2e22275e8e1a757aeff5e00c70"}, - {file = "virtualenv-20.0.21.tar.gz", hash = "sha256:a116629d4e7f4d03433b8afa27f43deba09d48bc48f5ecefa4f015a178efb6cf"}, + {file = "virtualenv-20.0.27-py2.py3-none-any.whl", hash = "sha256:c51f1ba727d1614ce8fd62457748b469fbedfdab2c7e5dd480c9ae3fbe1233f1"}, + {file = "virtualenv-20.0.27.tar.gz", hash = "sha256:26cdd725a57fef4c7c22060dba4647ebd8ca377e30d1c1cf547b30a0b79c43b4"}, ] wcwidth = [ - {file = "wcwidth-0.1.9-py2.py3-none-any.whl", hash = "sha256:cafe2186b3c009a04067022ce1dcd79cb38d8d65ee4f4791b8888d6599d1bbe1"}, - {file = "wcwidth-0.1.9.tar.gz", hash = "sha256:ee73862862a156bf77ff92b09034fc4825dd3af9cf81bc5b360668d425f3c5f1"}, + {file = "wcwidth-0.2.5-py2.py3-none-any.whl", hash = "sha256:beb4802a9cebb9144e99086eff703a642a13d6a0052920003a230f3294bbe784"}, + {file = "wcwidth-0.2.5.tar.gz", hash = "sha256:c4d647b99872929fdb7bdcaa4fbe7f01413ed3d98077df798530e5b04f116c83"}, ] zipp = [ {file = "zipp-3.1.0-py3-none-any.whl", hash = "sha256:aa36550ff0c0b7ef7fa639055d797116ee891440eac1a56f378e2d3179e0320b"}, diff --git a/pyproject.toml b/pyproject.toml index d978c41d1..da74d64e9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -37,9 +37,9 @@ packages = [ { include = "parsetab" }, { include = "ply" }, { include = "symbols" }, - { include = "zxb" }, - { include = "zxbasm" }, - { include = "zxbpp" }, + { include = "libzxbc" }, + { include = "libzxbasm" }, + { include = "libzxbpp" }, ] include = [ @@ -49,9 +49,10 @@ include = [ [tool.poetry.scripts] -zxb = 'zxb.zxb:main' -zxbasm = 'zxbasm.zxbasm:main' -zxbpp = 'zxbpp.zxbpp:entry_point' +zxb = 'libzxbc.zxb:main' +zxbc = 'libzxbc.zxb:main' +zxbasm = 'libzxbasm.zxbasm:main' +zxbpp = 'libzxbpp.zxbpp:entry_point' [tool.poetry.dependencies] python = "^3.6" diff --git a/setup.py b/setup.py index 2fd0218d3..506fc40b2 100644 --- a/setup.py +++ b/setup.py @@ -1,32 +1,32 @@ -#!/usr/bin/env python3 # -*- coding: utf-8 -*- - from setuptools import setup -packages = \ - ['api', - 'arch', - 'arch.zx48k', - 'arch.zx48k.backend', - 'arch.zx48k.optimizer', - 'arch.zx48k.peephole', - 'ast_', - 'outfmt', - 'parsetab', - 'ply', - 'symbols', - 'zxb', - 'zxbasm', - 'zxbpp', - 'zxbpp.prepro'] +packages = [ + 'api', + 'arch', + 'arch.zx48k', + 'arch.zx48k.backend', + 'arch.zx48k.optimizer', + 'arch.zx48k.peephole', + 'ast_', + 'libzxbasm', + 'libzxbc', + 'libzxbpp', + 'libzxbpp.prepro', + 'outfmt', + 'parsetab', + 'ply', + 'symbols' +] -package_data = \ - {'': ['*'], 'arch.zx48k.peephole': ['opts/*']} +package_data = {'': ['*'], 'arch.zx48k.peephole': ['opts/*']} -entry_points = \ - {'console_scripts': ['zxb = zxb.zxb:main', - 'zxbasm = zxbasm.zxbasm:main', - 'zxbpp = zxbpp.zxbpp:entry_point']} +entry_points = { + 'console_scripts': ['zxb = libzxbc.zxb:main', + 'zxbasm = libzxbasm.zxbasm:main', + 'zxbc = libzxbc.zxb:main', + 'zxbpp = libzxbpp.zxbpp:entry_point'] +} setup_kwargs = { 'name': 'zxbasic', diff --git a/tests/cmdline/test_zxb.py b/tests/cmdline/test_zxb.py index c222e4c20..6d2d77f90 100644 --- a/tests/cmdline/test_zxb.py +++ b/tests/cmdline/test_zxb.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- import pytest -from zxb import zxb +from libzxbc import zxb import os PATH = os.path.realpath(os.path.dirname(os.path.abspath(__file__))) diff --git a/tests/functional/test.py b/tests/functional/test.py index 0ab34eb9b..b7f563773 100755 --- a/tests/functional/test.py +++ b/tests/functional/test.py @@ -30,9 +30,9 @@ sys.path.append(ZXBASIC_ROOT) # TODO: consider moving test.py to another place to avoid this # Now we can import the modules from the root -import zxb # noqa -import zxbasm # noqa -import zxbpp # noqa +import libzxbc # noqa +import libzxbasm # noqa +import libzxbpp # noqa # global FLAGS CLOSE_STDERR = False # Whether to show compiler error or not (usually not when doing tests) @@ -235,7 +235,7 @@ def updateTest(tfname, pattern_): lines = get_file_lines(tfname, replace_regexp=pattern_, replace_what=ZXBASIC_ROOT, replace_with=_original_root) - with zxb.api.utils.open_file(tfname, 'wt', encoding='utf-8') as f: + with libzxbc.api.utils.open_file(tfname, 'wt', encoding='utf-8') as f: f.write(''.join(lines)) @@ -275,7 +275,7 @@ def testPREPRO(fname, pattern_=None, inline=None, cmdline_args=None): options.extend(cmdline_args) if inline: - func = lambda: zxbpp.entry_point(options) + func = lambda: libzxbpp.entry_point(options) else: cmdline = '{0} {1}'.format(ZXBPP, ' '.join(options)) func = lambda: systemExec(cmdline) @@ -326,7 +326,7 @@ def testASM(fname, inline=None, cmdline_args=None): options.extend(cmdline_args) if inline: - func = lambda: zxbasm.main(options) + func = lambda: libzxbasm.main(options) else: cmdline = '{0} {1}'.format(ZXBASM, ' '.join(options)) func = lambda: systemExec(cmdline) @@ -363,8 +363,8 @@ def testBAS(fname, filter_=None, inline=None, cmdline_args=None): os.unlink(okfile) if inline: - func = lambda: zxb.main(options + ['-I', ':'.join(os.path.join(ZXBASIC_ROOT, x) - for x in ('library', 'library-asm'))]) + func = lambda: libzxbc.main(options + ['-I', ':'.join(os.path.join(ZXBASIC_ROOT, x) + for x in ('library', 'library-asm'))]) else: syscmd = '{0} {1}'.format(ZXB, ' '.join(options)) func = lambda: systemExec(syscmd) @@ -471,7 +471,7 @@ def normalizeDiff(diff): fname0 = getName(fname) fname1 = fname0 + os.extsep + 'asm' options, tfname, ext = _get_testbas_options(fname) - if zxb.main(options): + if libzxbc.main(options): try: os.unlink(tfname) except OSError: diff --git a/tests/symbols/test_symbolARRAYACCESS.py b/tests/symbols/test_symbolARRAYACCESS.py index d8e93c3cd..9386b16ab 100644 --- a/tests/symbols/test_symbolARRAYACCESS.py +++ b/tests/symbols/test_symbolARRAYACCESS.py @@ -10,7 +10,7 @@ import api.config as config from api.symboltable import SymbolTable from symbols.type_ import Type -from zxbpp import zxbpp +from libzxbpp import zxbpp class TestSymbolARRAYACCESS(TestCase): diff --git a/tests/symbols/test_symbolBINARY.py b/tests/symbols/test_symbolBINARY.py index 34bccc3e1..eea1518f7 100644 --- a/tests/symbols/test_symbolBINARY.py +++ b/tests/symbols/test_symbolBINARY.py @@ -7,7 +7,7 @@ from api.config import OPTIONS import symbols from symbols.type_ import Type -from zxbpp import zxbpp +from libzxbpp import zxbpp class TestSymbolBINARY(TestCase): diff --git a/tests/symbols/test_symbolBOUND.py b/tests/symbols/test_symbolBOUND.py index 59f6ba24e..06566d289 100644 --- a/tests/symbols/test_symbolBOUND.py +++ b/tests/symbols/test_symbolBOUND.py @@ -7,7 +7,7 @@ from api.config import OPTIONS import symbols -from zxbpp import zxbpp +from libzxbpp import zxbpp class TestSymbolBOUND(TestCase): diff --git a/tests/symbols/test_symbolTYPECAST.py b/tests/symbols/test_symbolTYPECAST.py index 979dea250..d0ac73b2d 100644 --- a/tests/symbols/test_symbolTYPECAST.py +++ b/tests/symbols/test_symbolTYPECAST.py @@ -9,7 +9,7 @@ from api.config import OPTIONS from six import StringIO from api.constants import CLASS -from zxbpp import zxbpp +from libzxbpp import zxbpp __autor__ = 'boriel' diff --git a/tox.ini b/tox.ini index 9aa47f8a3..77fbc6dfe 100644 --- a/tox.ini +++ b/tox.ini @@ -1,5 +1,5 @@ [tox] -envlist = py36,flake8 +envlist = py38,flake8 [testenv] setenv = LANG=en_US.UTF-8 diff --git a/zxb.py b/zxb.py index 31421532d..ab73a8152 100755 --- a/zxb.py +++ b/zxb.py @@ -4,8 +4,8 @@ import sys -import zxb +import libzxbc if __name__ == '__main__': print('-' * 48 + '\n* WARNING: zxb is deprecated! Use zxbc instead *\n' + '-' * 48, file=sys.stderr) - sys.exit(zxb.main()) # Exit + sys.exit(libzxbc.main()) # Exit diff --git a/zxbasic.spec b/zxbasic.spec deleted file mode 100644 index c83b1a536..000000000 --- a/zxbasic.spec +++ /dev/null @@ -1,97 +0,0 @@ -# -*- mode: python -*- - -block_cipher = None - - -zxb_a = Analysis(['zxb.py'], - pathex=['/Users/boriel/Documents/src/zxbasic'], - binaries=[], - datas=[], - hiddenimports=['parsetab'], - hookspath=[], - runtime_hooks=[], - excludes=[], - win_no_prefer_redirects=False, - win_private_assemblies=False, - cipher=block_cipher) - -zxbasm_a = Analysis(['zxbasm.py'], - pathex=['/Users/boriel/Documents/src/zxbasic'], - binaries=[], - datas=[], - hiddenimports=['parsetab'], - hookspath=[], - runtime_hooks=[], - excludes=[], - win_no_prefer_redirects=False, - win_private_assemblies=False, - cipher=block_cipher) - -zxbpp_a = Analysis(['zxbpp.py'], - pathex=['/Users/boriel/Documents/src/zxbasic'], - binaries=[], - datas=[], - hiddenimports=['ply', 'parsetab'], - hookspath=[], - runtime_hooks=[], - excludes=[], - win_no_prefer_redirects=False, - win_private_assemblies=False, - cipher=block_cipher) - -MERGE( (zxb_a, 'zxb', 'zxb'), (zxbasm_a, 'zxbasm', 'zxbasm'), (zxbpp_a, 'zxbpp', 'zxbpp') ) - -zxb_pyz = PYZ(zxb_a.pure, zxb_a.zipped_data, - cipher=block_cipher) -zxb_exe = EXE(zxb_pyz, - zxb_a.scripts, - exclude_binaries=True, - name='zxb', - debug=False, - strip=False, - upx=False, - console=True ) -zxb_coll = COLLECT(zxb_exe, - zxb_a.binaries, - zxb_a.zipfiles, - zxb_a.datas, - strip=False, - upx=False, - name='zxb') - -zxbasm_pyz = PYZ(zxbasm_a.pure, zxbasm_a.zipped_data, - cipher=block_cipher) -zxbasm_exe = EXE(zxbasm_pyz, - zxbasm_a.scripts, - exclude_binaries=True, - name='zxbasm', - debug=False, - strip=False, - upx=False, - console=True ) -zxbasm_coll = COLLECT(zxbasm_exe, - zxbasm_a.binaries, - zxbasm_a.zipfiles, - zxbasm_a.datas, - strip=False, - upx=False, - name='zxbasm') - -zxbpp_pyz = PYZ(zxbpp_a.pure, zxbpp_a.zipped_data, - cipher=block_cipher) -zxbpp_exe = EXE(zxbpp_pyz, - zxbpp_a.scripts, - exclude_binaries=True, - name='zxbpp', - debug=False, - strip=False, - upx=False, - console=True ) -zxbpp_coll = COLLECT(zxbpp_exe, - zxbpp_a.binaries, - zxbpp_a.zipfiles, - zxbpp_a.datas, - strip=False, - upx=False, - name='zxbpp') - diff --git a/zxbasm.py b/zxbasm.py index 7a33008d9..15c1aceca 100755 --- a/zxbasm.py +++ b/zxbasm.py @@ -12,7 +12,7 @@ # ---------------------------------------------------------------------- import sys -import zxbasm +import libzxbasm if __name__ == '__main__': - sys.exit(zxbasm.main()) + sys.exit(libzxbasm.main()) diff --git a/zxbc.py b/zxbc.py index e5fe559a2..6224565bc 100755 --- a/zxbc.py +++ b/zxbc.py @@ -4,7 +4,7 @@ import sys -import zxb +import libzxbc if __name__ == '__main__': - sys.exit(zxb.main()) # Exit + sys.exit(libzxbc.main()) # Exit diff --git a/zxbpp.py b/zxbpp.py index a4bfcea79..7be98f3e5 100755 --- a/zxbpp.py +++ b/zxbpp.py @@ -12,8 +12,8 @@ # ---------------------------------------------------------------------- import sys -import zxbpp +import libzxbpp if __name__ == '__main__': - sys.exit(zxbpp.entry_point()) + sys.exit(libzxbpp.entry_point())