- Rust (2021 edition or later)
- Cargo package manager
- Git
-
Fork the repository
# Fork on GitHub, then clone your fork git clone https://github.com/YOUR_USERNAME/OxyPy.git cd OxyPy
-
Set up the development environment
cargo build cargo test # Run tests (if available)
-
Create a feature branch
git checkout -b feature/your-feature-name
Interactive Testing:
cargo run
>> let x: i32 = 42
>> print(x)File Testing: Create a test file and run:
echo 'print("Hello, World!")' > test.lang
cargo run test.lang- Follow Rust naming conventions
- Use
cargo fmtfor code formatting - Use
cargo clippyfor linting - Add comments for complex logic
When adding features, consider:
-
Tokenizer Changes (
tokenizer.rs)- Add new token types for new keywords/operators
- Update token recognition logic
-
Parser Changes (
AstTree.rs)- Add new AST node types
- Implement parsing rules
- Handle operator precedence
-
Runtime Changes (
runtime.rs)- Implement execution logic for new features
- Handle environment updates
-
Built-in Functions (
Functions.rs)- Add new built-in functions
- Ensure proper error handling
- Error handling improvements
- More comprehensive test suite
- Better error messages
- Performance optimizations
- Module system and imports
- File I/O operations
- More built-in data structures
- Standard library expansion
- IDE integration
- Debugging support
- Package manager
- Documentation improvements
-
Ensure your code works
cargo build cargo run # Test REPL -
Create meaningful commits
git add . git commit -m "Add: New feature description"
-
Push to your fork
git push origin feature/your-feature-name
-
Create a Pull Request
- Describe what your changes do
- Explain why the changes are needed
- Include examples if applicable
- All changes require review before merging
- Be responsive to feedback
- Keep discussions constructive and focused
- Update documentation for user-facing changes
- Open an issue for questions
- Check existing issues and documentation
- Reach out to maintainers for guidance
Contributors will be acknowledged in the project documentation and releases.