# S-Lang Cheatsheet

## Overview
- Interpreted programming language
- C-like syntax
- Dynamic typing
- Supports both procedural and object-oriented programming
- Comes with a standard library of useful functions

## Variables
- Variables are dynamically typed
- Declaration not required
- Naming conventions:
    - Must start with a letter or underscore
    - Can contain letters, digits, and underscores
- Examples:
    ```
    x = 5
    str = "hello"
    b = true
    ```

## Functions
- Can take any number of arguments
- Can return any type
- Arguments are passed by value
- Examples:
    ```
    function add(x, y) {
        return x + y
    }
    function print(str) {
        printf("%s\n", str)
    }
    ```

## Loops
- Supports while and for loops
- Examples:
    ```
    while (x < 10) {
        x = x + 1
    }
    for (i = 0; i < 10; i++) {
        print(i)
    }
    ```

## Conditionals
- Supports if-else statements
- Examples:
    ```
    if (x < 5) {
        print("x is less than 5")
    } else {
        print("x is greater than or equal to 5")
    }
    ```

## File manipulation
- Supports reading and writing to files
- Examples:
    ```
    f = fopen("file.txt", "r")
    line = fgets(f)
    fclose(f)
    ```
    ```
    f = fopen("file.txt", "w")
    fprintf(f, "hello\n")
    fclose(f)
    ```

## Resources
- [S-Lang Programming Language](https://www.jedsoft.org/slang/)
- [S-Lang Programming Language Wiki](https://github.com/jedburke/slang/wiki)
- [S-Lang Examples](https://github.com/jedburke/slang/tree/master/examples)