Bob/bob-language-extension/README.md

132 lines
3.9 KiB
Markdown

# Bob Language Extension for VS Code
This extension provides syntax highlighting and language support for the Bob programming language in Visual Studio Code and Cursor.
## Features
- **Syntax Highlighting**: Full syntax highlighting for Bob language constructs
- **Code Snippets**: Useful code snippets for common Bob patterns
- **Auto-closing Brackets**: Automatic bracket and quote pairing
- **Indentation**: Smart indentation for Bob code blocks
- **Comments**: Support for line and block comments
- **Folding**: Code folding support with region markers
## Supported Syntax
### Keywords
- Control flow: `if`, `else`, `while`, `for`, `break`, `continue`, `return`
- Variable declaration: `var`
- Function declaration: `func`
- Classes and OOP: `class`, `extends`, `extension`, `this`, `super`
- Logical operators: `and`, `or`, `not`
### Built-in Functions
- `print()`, `assert()`, `input()`, `type()`, `toString()`, `toNumber()`, `toInt()`, `time()`, `sleep()`, `printRaw()`
- Arrays/Dictionaries (preferred method style): `arr.len()`, `arr.push(...)`, `arr.pop()`, `dict.len()`, `dict.keys()`, `dict.values()`, `dict.has()`
- Global forms still available: `len(x)`, `push(arr, ...)`, `pop(arr)`, `keys(dict)`, `values(dict)`, `has(dict, key)`
- Misc: `rand.random()`, `eval.eval()`
### Data Types
- Numbers (integers, floats, binary `0b1010`, hex `0xFF`)
- Strings (single and double quoted)
- Booleans (`true`, `false`)
- None value (`none`)
- Arrays (`[1, 2, 3]`)
### Operators
- Arithmetic: `+`, `-`, `*`, `/`, `%`
- Comparison: `==`, `!=`, `<`, `>`, `<=`, `>=`
- Logical: `&&`, `||`, `!`
- Bitwise: `&`, `|`, `^`, `<<`, `>>`, `~`
- Compound assignment: `+=`, `-=`, `*=`, `/=`, `%=`, `&=`, `|=`, `^=`, `<<=`, `>>=`
- Ternary: `condition ? valueIfTrue : valueIfFalse`
- String multiplication: `"hello" * 3`
## Installation
### From Source
1. Clone this repository
2. Run `npm install` to install dependencies
3. Run `npm run compile` to build the extension
4. Press `F5` in VS Code to launch the extension in a new window
### Manual Installation
1. Copy the extension files to your VS Code extensions directory
2. Restart VS Code
3. Open a `.bob` file to see syntax highlighting
## Usage
### Code Snippets
Type the following prefixes and press `Tab` to insert code snippets:
- `func` - Function definition
- `if` - If statement
- `ifelse` - If-else statement
- `while` - While loop
- `for` - For loop
- `var` - Variable declaration
- `print` - Print statement
- `assert` - Assert statement
- `anon` - Anonymous function
- `return` - Return statement
- `break` - Break statement
- `continue` - Continue statement
- `comment` - Comment block
- `test` - Test function
- `array` - Array declaration
- `arrayaccess` - Array access
- `arrayassign` - Array assignment
- `len` - Array length
- `push` - Array push
- `pop` - Array pop
- `random` - Random number
- `sleep` - Sleep function
- `printraw` - Print raw
- `eval` - Eval function
### File Association
Files with the `.bob` extension will automatically be recognized as Bob language files.
## Example
```go
// This is a comment
var message = "Hello, Bob!";
print(message);
// Array operations (method style)
var numbers = [1, 2, 3, 4, 5];
print("Array length: " + numbers.len());
numbers.push(6);
print("Popped: " + numbers.pop());
print("First element: " + numbers[0]);
// Function with ternary operator
func factorial(n) {
if (n <= 1) {
return 1;
}
return n * factorial(n - 1);
}
var result = factorial(5);
var status = result > 100 ? "large" : "small";
assert(result == 120, "Factorial calculation failed");
// String multiplication
var repeated = "hello" * 3; // "hellohellohello"
```
## Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
## License
This extension is licensed under the MIT License.
## Links
- [Bob Language Repository](https://github.com/bob-lang/bob)
- [VS Code Extension API](https://code.visualstudio.com/api)