diff --git a/.gitignore b/.gitignore index 0447b8b..cd531cf 100644 --- a/.gitignore +++ b/.gitignore @@ -1,116 +1,54 @@ -# Byte-compiled / optimized / DLL files -__pycache__/ -*.py[cod] -*$py.class +# ---> C +# Prerequisites +*.d -# C extensions +# Object files +*.o +*.ko +*.obj +*.elf + +# Linker output +*.ilk +*.map +*.exp + +# Precompiled Headers +*.gch +*.pch + +# Libraries +*.lib +*.a +*.la +*.lo + +# Shared objects (inc. Windows DLLs) +*.dll *.so +*.so.* +*.dylib -# Distribution / packaging -.Python -build/ -develop-eggs/ -dist/ -downloads/ -eggs/ -.eggs/ -lib/ -lib64/ -parts/ -sdist/ -var/ -wheels/ -pip-wheel-metadata/ -share/python-wheels/ -*.egg-info/ -.installed.cfg -*.egg -MANIFEST +# Executables +*.exe +*.out +*.app +*.i*86 +*.x86_64 +*.hex -# PyInstaller -# Usually these files are written by a python script from a template -# before PyInstaller builds the exe, so as to inject date/other infos into it. -*.manifest -*.spec +# Debug files +*.dSYM/ +*.su +*.idb +*.pdb -# Installer logs -pip-log.txt -pip-delete-this-directory.txt +# Kernel Module Compile Results +*.mod* +*.cmd +.tmp_versions/ +modules.order +Module.symvers +Mkfile.old +dkms.conf -# Unit test / coverage reports -htmlcov/ -.tox/ -.nox/ -.coverage -.coverage.* -.cache -nosetests.xml -coverage.xml -*.cover -.hypothesis/ -.pytest_cache/ - -# Translations -*.mo -*.pot - -# Django stuff: -*.log -local_settings.py -db.sqlite3 - -# Flask stuff: -instance/ -.webassets-cache - -# Scrapy stuff: -.scrapy - -# Sphinx documentation -docs/_build/ - -# PyBuilder -target/ - -# Jupyter Notebook -.ipynb_checkpoints - -# IPython -profile_default/ -ipython_config.py - -# pyenv -.python-version - -# celery beat schedule file -celerybeat-schedule - -# SageMath parsed files -*.sage.py - -# Environments -.env -.venv -env/ -venv/ -ENV/ -env.bak/ -venv.bak/ - -# Spyder project settings -.spyderproject -.spyproject - -# Rope project settings -.ropeproject - -# mkdocs documentation -/site - -# mypy -.mypy_cache/ -.dmypy.json -dmypy.json - -# Pyre type checker -.pyre/ diff --git a/jortsc/__init__.py b/jortsc/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/jortsc/grammar b/jortsc/grammar deleted file mode 100644 index 43938ba..0000000 --- a/jortsc/grammar +++ /dev/null @@ -1,10 +0,0 @@ -digit = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" ; -integer = ['-' | '+'] "0" digit {digit} ; - -hex_letters = "a" | "b" | "c" | "d" | "e" | "f" -hex_integer = "0x", {hex_letters | digit} ; - -oct_digits = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" ; -octal_integer = "0o", {oct_digits} ; - -program = diff --git a/jortsc/main.py b/jortsc/main.py deleted file mode 100644 index 4e4b64f..0000000 --- a/jortsc/main.py +++ /dev/null @@ -1,16 +0,0 @@ -#!/usr/bin/python3 - -import sys -from parser.lexer import lex_jorts - -def main(): - """main entry point""" - try: - in_data = sys.stdin.read() - except EOFError: - pass - - print(lex_jorts(in_data)) - -if __name__ == '__main__': - main() diff --git a/jortsc/parser/__init__.py b/jortsc/parser/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/jortsc/parser/lexer.py b/jortsc/parser/lexer.py deleted file mode 100644 index bcd4fc7..0000000 --- a/jortsc/parser/lexer.py +++ /dev/null @@ -1,61 +0,0 @@ -import re -import enum - - -class TokenType(enum.Enum): - """Defines the type of a token""" - RESERVED = enum.auto() - IDENTIFIER = enum.auto() - - -class LexerError(Exception): - """Lexer error.""" - pass - - -TOKENS = [ - (r'fn', TokenType.RESERVED), -] - - -def lex(string: str, token_defs: list) -> list: - """Generate tokens out of the given string.""" - pos = 0 - strlen = len(string) - tokens = [] - - # generate a dict for compiled regexes out of the token defs - # instead of compiling on each token definition per token. - compiled = {pattern: re.compile(pattern) - for pattern, _ in token_defs} - - while pos < strlen: - valid = False - - for definition in token_defs: - pattern, tok_type = definition - regex = compiled[pattern] - - match = regex.match(string, pos) - - if not match: - continue - - text = match.group(0) - pos = match.end(0) - - valid = True - tokens.append((text, tok_type)) - - # go to next token instead - break - - if not valid: - raise LexerError(f'Invalid character: {string[pos]}') - - return tokens - - -def lex_jorts(string: str) -> list: - """Lex with the jorts token definitions""" - return lex(string, TOKENS) diff --git a/src/main.c b/src/main.c new file mode 100644 index 0000000..1e562d6 --- /dev/null +++ b/src/main.c @@ -0,0 +1,6 @@ +#include + +int main(void) +{ + return 0; +}