FarpyScript is an experimental interpreted programming language focused on security, developed as an open-source educational project.
- Version: 0.0.1
- Status: Early development
- Last update: 16/02/2025 | 02/16/2025
FarpyScript was born out of curiosity about the inner workings of programming languages. The project aims to provide hands-on experience in interpreter development, being built completely from scratch.
Partially inspired by the guide-to-interpreters-series project, FarpyScript implements a recursive descent parser, ideal for educational purposes and small-scale projects.
git clone https://github.com/FernandoTheDev/farpyscript
cd farpyscript
Repl:
deno run -A main.ts
File:
deno run -A main.ts <FILE>.fscript
In the future, binary with path will come
- Lexer (Lexical Analyzer)
- Verbose error handling system
- Parser (Syntax Analyzer)
- Type System
- Mutable and immutable variables
- Strong typing
- Variable redeclaration
- Language Features
- Function declaration and calls
- Recursion
- Control flow structures (if)
- Built-in constants
- Type System
- Complex types (objects, arrays, vectors)
- Language Features
- Control flow structures (for, while, try/catch)
- Native Libraries
- I/O
- Math
- HTTP
The interpreter follows a recursive descent parser architecture, chosen for its:
- Simplicity of implementation
- Ease of understanding
- Suitability for educational purposes
Your contributions are welcome! To contribute:
- Fork the repository
- Create a branch for your feature (
git checkout -b feature/NewFeature
) - Commit your changes (
git commit -m 'Add new feature'
) - Push to the branch (
git push origin feature/NewFeature
) - Open a Pull Request
All PRs will be reviewed by the main maintainer (fernandothedev).
MIT License
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
📝 Note: This is an experimental project under active development. Contributions and feedback are always welcome!