# README.md
## Introduction
`maryChain` is a powerful programming language designed to meet modern programming needs. It combines characteristics from functional and object-oriented programming paradigms to create an expressive, dynamic, and powerful syntax. The language includes important features such as:
- Functions and lambdas
- Pipelining
- Binary operations
- Control structures (conditional and loops)
- Lazy evaluation
- Support for standard data types like numbers, strings, and booleans
- Type casting functions
- Support for modules and namespaces
- Support for comments
## Main Features
### Functions and Lambdas
Functions are first-class citizens in `maryChain` and can be declared using the `def` keyword. Lambda expressions, on the other hand, are represented by the `LAMBDA` keyword and allow for creating inline anonymous functions.
### Pipelining
Pipelining is a feature that allows the output of one function to be directly fed as the input of the next. The `PIPE` symbol is used to represent this operation.
### Binary Operations
Standard mathematical binary operations are supported, including addition (`PLUS`), subtraction (`MINUS`), multiplication (`TIMES`), and division (`DIVIDE`). Comparison operators are also supported, including equals (`EQUALITY`), greater than (`GREATER`), less than (`LESS`), greater or equal (`GREATEREQUAL`), and less or equal (`LESSEQUAL`).
### Control Structures
Conditional structures like `IF`, `THEN`, `ELSE`, along with loops like `WHILE` `DO`, are provided in the `maryChain` language.
### Lazy Evaluation
In `maryChain`, expressions can be declared as lazy, which means they are not evaluated until their result is needed.
### Data Types
`maryChain` supports standard data types such as numbers, strings, and booleans.
### Type Casting Functions
Type casting is supported through casting functions like `INTEGERCAST`, `DOUBLECAST`, `STRINGCAST`, `BOOLEANCAST`.
### Support for Modules and Namespaces
`maryChain` provides support for modules and namespaces using `IMPORT` and `NAMESPACE_OP` features. This allows for better code organization and modular programming.
### Comments
Comments in `maryChain` are supported, enabling developers to include explanations and documentation within the code itself.
## BNF Grammar for `maryChain`
The BNF (Backus-Naur Form) grammar for `maryChain` can be inferred from the parser implementation and is as follows:
```
<program> ::= <import>* <expression>?
<import> ::= IMPORT <IDENTIFIER> AS <IDENTIFIER>
<expression> ::= <assignment> | <let_in> | <binop> | <uminus> | <paren_expression> | <term>
<assignment> ::= <IDENTIFIER> EQUALS <expression>
<let_in> ::= LET <IDENTIFIER> EQUALS <expression> IN <expression>
<binop> ::= <expression> <bin_op> <expression>
<uminus> ::= MINUS <expression>
<paren_expression> ::= LPAREN <expression> RPAREN
<term> ::= <factor>
<factor> ::= NUMBER | STRING | BOOLEAN | <function_call> | <IDENTIFIER>
<function_call> ::= <IDENTIFIER> LPAREN <args> RPAREN
<args> ::= <arg>*
<arg> ::= <expression>
```
This grammar represents the syntactic structure of a `maryChain` program. The keywords in the language are represented as they are, while in `<bin_op>`, `<IDENTIFIER>`, `<args>`, and `<arg>`, the angle brackets signify a category of symbol.
Please note that this is a simplified representation of the `mary
Chain` grammar for illustration purposes. In the actual parser, additional rules and constructs are included to handle precedence, associativity, and complex expressions.
Raw data
{
"_id": null,
"home_page": "https://github.com/alessioricco/maryChain",
"name": "maryChain",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.6",
"maintainer_email": "",
"keywords": "pypi,maryChain,programming language,functional,ai,llm",
"author": "Alessio Ricco",
"author_email": "alessio.ricco@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/67/83/8f41de6376c9c01b9ac01f1311d87b4fbdc10ff33d030fe999485fb4f4c7/maryChain-0.0.3.tar.gz",
"platform": null,
"description": "# README.md\n\n## Introduction\n\n`maryChain` is a powerful programming language designed to meet modern programming needs. It combines characteristics from functional and object-oriented programming paradigms to create an expressive, dynamic, and powerful syntax. The language includes important features such as: \n\n- Functions and lambdas\n- Pipelining\n- Binary operations\n- Control structures (conditional and loops)\n- Lazy evaluation\n- Support for standard data types like numbers, strings, and booleans\n- Type casting functions\n- Support for modules and namespaces\n- Support for comments\n\n## Main Features\n\n### Functions and Lambdas\n\nFunctions are first-class citizens in `maryChain` and can be declared using the `def` keyword. Lambda expressions, on the other hand, are represented by the `LAMBDA` keyword and allow for creating inline anonymous functions.\n\n### Pipelining\n\nPipelining is a feature that allows the output of one function to be directly fed as the input of the next. The `PIPE` symbol is used to represent this operation.\n\n### Binary Operations\n\nStandard mathematical binary operations are supported, including addition (`PLUS`), subtraction (`MINUS`), multiplication (`TIMES`), and division (`DIVIDE`). Comparison operators are also supported, including equals (`EQUALITY`), greater than (`GREATER`), less than (`LESS`), greater or equal (`GREATEREQUAL`), and less or equal (`LESSEQUAL`).\n\n### Control Structures\n\nConditional structures like `IF`, `THEN`, `ELSE`, along with loops like `WHILE` `DO`, are provided in the `maryChain` language. \n\n### Lazy Evaluation\n\nIn `maryChain`, expressions can be declared as lazy, which means they are not evaluated until their result is needed.\n\n### Data Types\n\n`maryChain` supports standard data types such as numbers, strings, and booleans.\n\n### Type Casting Functions\n\nType casting is supported through casting functions like `INTEGERCAST`, `DOUBLECAST`, `STRINGCAST`, `BOOLEANCAST`.\n\n### Support for Modules and Namespaces\n\n`maryChain` provides support for modules and namespaces using `IMPORT` and `NAMESPACE_OP` features. This allows for better code organization and modular programming.\n\n### Comments\n\nComments in `maryChain` are supported, enabling developers to include explanations and documentation within the code itself.\n\n## BNF Grammar for `maryChain` \n\nThe BNF (Backus-Naur Form) grammar for `maryChain` can be inferred from the parser implementation and is as follows:\n\n```\n<program> ::= <import>* <expression>?\n<import> ::= IMPORT <IDENTIFIER> AS <IDENTIFIER>\n<expression> ::= <assignment> | <let_in> | <binop> | <uminus> | <paren_expression> | <term> \n<assignment> ::= <IDENTIFIER> EQUALS <expression>\n<let_in> ::= LET <IDENTIFIER> EQUALS <expression> IN <expression>\n<binop> ::= <expression> <bin_op> <expression>\n<uminus> ::= MINUS <expression>\n<paren_expression> ::= LPAREN <expression> RPAREN\n<term> ::= <factor>\n<factor> ::= NUMBER | STRING | BOOLEAN | <function_call> | <IDENTIFIER>\n<function_call> ::= <IDENTIFIER> LPAREN <args> RPAREN\n<args> ::= <arg>* \n<arg> ::= <expression>\n```\n\nThis grammar represents the syntactic structure of a `maryChain` program. The keywords in the language are represented as they are, while in `<bin_op>`, `<IDENTIFIER>`, `<args>`, and `<arg>`, the angle brackets signify a category of symbol.\n\nPlease note that this is a simplified representation of the `mary\n\nChain` grammar for illustration purposes. In the actual parser, additional rules and constructs are included to handle precedence, associativity, and complex expressions.\n\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "maryChain - lightweight programming functional language for LLM",
"version": "0.0.3",
"project_urls": {
"Bug Tracker": "https://github.com/alessioricco/maryChain/issues",
"Download": "https://github.com/alessioricco/maryChain/releases/tag/v0.0.3",
"Homepage": "https://github.com/alessioricco/maryChain"
},
"split_keywords": [
"pypi",
"marychain",
"programming language",
"functional",
"ai",
"llm"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "0d1a96968a784b944943e456058f09d2c6535e3466d5ca62667cc5682ce48f3d",
"md5": "1e7a0aa5c41049b7c0e3f2e761340ff8",
"sha256": "8321abea641c37c3e951bd4c7815181241700da77a073cfe6bde0df3c83dcb83"
},
"downloads": -1,
"filename": "maryChain-0.0.3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "1e7a0aa5c41049b7c0e3f2e761340ff8",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.6",
"size": 19062,
"upload_time": "2023-06-17T12:44:58",
"upload_time_iso_8601": "2023-06-17T12:44:58.497637Z",
"url": "https://files.pythonhosted.org/packages/0d/1a/96968a784b944943e456058f09d2c6535e3466d5ca62667cc5682ce48f3d/maryChain-0.0.3-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "67838f41de6376c9c01b9ac01f1311d87b4fbdc10ff33d030fe999485fb4f4c7",
"md5": "eb2367c12e98fd267e99f353ee00c2be",
"sha256": "e216a335f06a34c06d432d8a8baf0439e4e488d108d198ea51e0555f662d1c56"
},
"downloads": -1,
"filename": "maryChain-0.0.3.tar.gz",
"has_sig": false,
"md5_digest": "eb2367c12e98fd267e99f353ee00c2be",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.6",
"size": 20150,
"upload_time": "2023-06-17T12:44:59",
"upload_time_iso_8601": "2023-06-17T12:44:59.893864Z",
"url": "https://files.pythonhosted.org/packages/67/83/8f41de6376c9c01b9ac01f1311d87b4fbdc10ff33d030fe999485fb4f4c7/maryChain-0.0.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-06-17 12:44:59",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "alessioricco",
"github_project": "maryChain",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"requirements": [
{
"name": "ply",
"specs": [
[
"==",
"3.11"
]
]
}
],
"lcname": "marychain"
}