A minimal implementation of the While language
Project description
Whilelang
Usage: python while.py source.while [...arguments]
Implemented grammar
The grammar implemented here is slightly different to the definitions of While that can be found online, largely for ease of implementation.
<suite> = EOF
| "(" <suite> ")"
| <statement> *(";" <statement>)
<statement> = "skip"
| "while" <expr_a> "do" <suite>
| "if" <expr_a> "then" <suite> ["else" <suite>]
| NAME ":=" <expr_a>
| <directive>
<directive> = "@" ("trace" | "exit" | "print" NAME)
<factor> = [("!" | "¬")] (NAME | NUMBER | BOOLEAN | "(" <expr_a> ")")
<expr_f> = <factor> [("*" | "/") <factor>]
<expr_e> = <expr_f> [("+" | "-") <expr_f>]
<expr_d> = <expr_e> [("<=" | "<" | ">=" | ">") <expr_e>]
<expr_c> = <expr_d> ["=" <expr_d>]
<expr_b> = <expr_c> ["&" <expr_c>]
<expr_a> = <expr_b> ["|" <expr_b>]
This logic can be seen implemented as code in parser.py
. Compared to the
simpler grammars often quoted, this grammar provides proper operator
precedence.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
whilelang-0.0.2.tar.gz
(8.1 kB
view details)
Built Distribution
File details
Details for the file whilelang-0.0.2.tar.gz
.
File metadata
- Download URL: whilelang-0.0.2.tar.gz
- Upload date:
- Size: 8.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/3.7.3 pkginfo/1.7.0 requests/2.24.0 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.9.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | de04c68df0f16270aec630aea961462fb2d9af712b3ddb3f5c06c0356249b375 |
|
MD5 | c2bcca5998a7f7a7aaa532410c5a9f5e |
|
BLAKE2b-256 | afb544d0ce21ffd176492463d46bfdfe8cd61f59e6e64d9c4f157c80f4cc28b3 |
File details
Details for the file whilelang-0.0.2-py3-none-any.whl
.
File metadata
- Download URL: whilelang-0.0.2-py3-none-any.whl
- Upload date:
- Size: 9.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/3.7.3 pkginfo/1.7.0 requests/2.24.0 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.9.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2893dcdfa530728fd8225a37170a05785e8d4223da85e7eb35bd3df9d1dc26ff |
|
MD5 | a680f6b43bedbbd2201fecf50e5da448 |
|
BLAKE2b-256 | c7e18623d43d6071173d36ceca12b40f94681ce13c28cddb3a5788825ba7cee7 |