Skip to main content

PyHorizon custom language interpreter

Project description

PyHorizon

PyHorizon is a tiny custom programming language written in Python. Program files use the .pyh extension and are executed by pyhori.

Project Structure

  • main.py - command-line entry point. Reads a .pyh file and runs it.
  • lexer.py - converts source code into tokens.
  • parser.py - turns tokens into an abstract syntax tree.
  • ast_nodes.py - AST node definitions.
  • interpreter.py - executes the AST.
  • environment.py - variable scope handling.
  • errors.py - readable lexer, parser, and runtime errors.
  • tokens.py - token data model.
  • example.pyh - sample program in the language.
  • calculator.pyh - interactive calculator app written in PyHorizon.
  • app.pyh - GUI app that opens a window.
  • telegram_send.pyh - Telegram Bot API example.
  • ai_request.pyh - AI HTTP request example.
  • ai_starter.pyh - AI starter template.
  • pyhori_ai.py - machine-readable AI manifest.

Syntax

Supported commands:

  • say "Hello"
  • say Hello world name
  • imp x = 10
  • x = x + 1
  • if x > 5 ... else ... end
  • loop x < 10 ... end
  • func add(a, b) ... end
  • return value
  • # comment

In say, plain words without quotes are treated as text, and variables are inserted automatically. Example:

imp name = Gh
say Hello name

ask reads user input and automatically converts numbers and booleans when possible:

imp value = ask Введи число

Built-ins for bots and AI:

  • http_get(url)
  • http_post(url, body)
  • http_post_headers(url, body, headers_json)
  • json_parse(text)
  • json_stringify(value)
  • sleep(seconds)
  • run_cmd(command)
  • to_text(value)

JSON data can be accessed with brackets:

imp data = json_parse("{\"ok\": true, \"n\": 3}")
imp value = data["n"]
say value

How It Works

  1. The lexer reads text from a .pyh file and turns it into tokens.
  2. The parser builds a structured tree of statements and expressions.
  3. The interpreter walks that tree and executes the program.

Run

Install

From PyPI:

pip install pyhori

From local source:

pip install .

Windows

pyhori example.pyh

Linux

pyhori example.pyh

Termux

pkg install python
pip install .
pyhori example.pyh

You can also run your own file:

pyhori program.pyh

Run the included app:

pyhori calculator.pyh

Open the GUI app:

pyhori app.pyh

Run the Telegram example:

pyhori telegram_send.pyh

Run the AI example:

pyhori ai_request.pyh

Run the AI starter template:

pyhori ai_starter.pyh

Print the machine-readable AI manifest:

python pyhori_ai.py

Show the version:

pyhori --version

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyhori-0.1.3.tar.gz (14.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pyhori-0.1.3-py3-none-any.whl (14.3 kB view details)

Uploaded Python 3

File details

Details for the file pyhori-0.1.3.tar.gz.

File metadata

  • Download URL: pyhori-0.1.3.tar.gz
  • Upload date:
  • Size: 14.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.11

File hashes

Hashes for pyhori-0.1.3.tar.gz
Algorithm Hash digest
SHA256 c05ec57b6bfc4b8d22bead4eeac00ba2eccfc81c85b025368bca27d652dc251d
MD5 b62de52a7e518d90371954b229efab94
BLAKE2b-256 9279437b260efb3b6d4dcb2460e2172087309e6c221cc81f2cbef47cecca5abc

See more details on using hashes here.

File details

Details for the file pyhori-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: pyhori-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 14.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.11

File hashes

Hashes for pyhori-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 22dbb94737bb1f1a237e3c54ef0c6c1994fe9d2365ffe62fecac420793163549
MD5 87df6004a49f8f621462941c0a1041b9
BLAKE2b-256 3cc8cb48e251b0342a5381967e5caae552b182c2845eed2a69738c30a3889559

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page