Shrubbery notation is a line- and indentation-sensitive text-level notation for the Rhombus programming language in Racket, designed to partially group input for further parsing.
# Shrubbery Notation
Source: [https://docs.racket-lang.org/shrubbery/index.html](https://docs.racket-lang.org/shrubbery/index.html)
0\.46\+9\.2
Rhombus
[top](https://docs.racket-lang.org/index.html)contents← prev[up](https://docs.racket-lang.org/index.html)[next →](https://docs.racket-lang.org/shrubbery/example.html)
Shrubbery notation is a set of text\-level conventions that build toward a full programming language, such as[Rhombus](https://download.racket-lang.org/releases/9.2/doc/local-redirect/index.html?doc=rhombus&rel=index.html&version=9.2)\. The notation is line\- and indentation\-sensitive, and it is intended to partially group input, but leave further parsing to another layer, especially[enforestation](https://download.racket-lang.org/releases/9.2/doc/local-redirect/index.html?doc=enforest&rel=index.html&version=9.2)\. The parsed form of a shrubbery imposes grouping to ensure that further parsing is consistent with the shrubbery’s lines and indentation\.
[1Quick Overview](https://docs.racket-lang.org/shrubbery/example.html)
[1\.1Simple Terms](https://docs.racket-lang.org/shrubbery/example.html#%28part._.Simple_.Terms%29)
[1\.2Comments](https://docs.racket-lang.org/shrubbery/example.html#%28part._.Comments%29)
[1\.3Lines and Indentation](https://docs.racket-lang.org/shrubbery/example.html#%28part._.Lines_and_.Indentation%29)
[1\.4Parentheses, Brackets, Braces, and Quotes](https://docs.racket-lang.org/shrubbery/example.html#%28part._.Parentheses__.Brackets__.Braces__and_.Quotes%29)
[1\.5S\-Expression Interoperability](https://docs.racket-lang.org/shrubbery/example.html#%28part._.S-.Expression_.Interoperability%29)
[2Shrubbery Specification](https://docs.racket-lang.org/shrubbery/spec.html)
[2\.1Groups and Blocks](https://docs.racket-lang.org/shrubbery/group-and-block.html)
[2\.1\.1Grouping by Lines](https://docs.racket-lang.org/shrubbery/group-and-block.html#%28part._.Grouping_by_.Lines%29)
[2\.1\.2Grouping by Opener–Closer Pairs](https://docs.racket-lang.org/shrubbery/group-and-block.html#%28part._.Grouping_by_.Opener--.Closer_.Pairs%29)
[2\.1\.3Blocking with:and Indentation](https://docs.racket-lang.org/shrubbery/group-and-block.html#%28part._.Blocking_with___and_.Indentation%29)
[2\.1\.4Continuing with Indentation and an Operator](https://docs.racket-lang.org/shrubbery/group-and-block.html#%28part._continuing-op%29)
[2\.1\.5Alternatives with\|](https://docs.racket-lang.org/shrubbery/group-and-block.html#%28part._alts%29)
[2\.1\.6Separating Groups with;and,](https://docs.racket-lang.org/shrubbery/group-and-block.html#%28part._semicolon%29)
[2\.1\.7Line\- and Column\-Insensitivity with«and»](https://docs.racket-lang.org/shrubbery/group-and-block.html#%28part._guillemet%29)
[2\.1\.8Continuing a Line with\\](https://docs.racket-lang.org/shrubbery/group-and-block.html#%28part._continuing-backslash%29)
[2\.1\.9Group Comments with\#//](https://docs.racket-lang.org/shrubbery/group-and-block.html#%28part._group-comment%29)
[2\.1\.10At\-Notation Using@](https://docs.racket-lang.org/shrubbery/group-and-block.html#%28part._at-notation%29)
[2\.2Token Parsing](https://docs.racket-lang.org/shrubbery/token-parsing.html)
[2\.3At\-Notation Parsing](https://docs.racket-lang.org/shrubbery/at-parsing.html)
[3Parsed Representation](https://docs.racket-lang.org/shrubbery/parsed-rep.html)
[4Shrubbery Language](https://docs.racket-lang.org/shrubbery/language.html)
[5Shrubbery APIs](https://docs.racket-lang.org/shrubbery/Shrubbery_APIs.html)
[5\.1Parsing](https://docs.racket-lang.org/shrubbery/parse.html)
[5\.2Source Locations and Raw\-Text Properties](https://docs.racket-lang.org/shrubbery/raw-text.html)
[5\.3Reconstructing Shrubbery Notation](https://docs.racket-lang.org/shrubbery/print.html)
[5\.4Writing Shrubbery Notation](https://docs.racket-lang.org/shrubbery/write.html)
[5\.5Tool Support](https://docs.racket-lang.org/shrubbery/tool.html)
[5\.5\.1Language Configuration](https://docs.racket-lang.org/shrubbery/tool.html#%28part._.Language_.Configuration%29)
[5\.5\.2Syntax Coloring](https://docs.racket-lang.org/shrubbery/tool.html#%28part._.Syntax_.Coloring%29)
[5\.5\.3Indentation](https://docs.racket-lang.org/shrubbery/tool.html#%28part._.Indentation%29)
[5\.5\.4Term and Group Navigation](https://docs.racket-lang.org/shrubbery/tool.html#%28part._.Term_and_.Group_.Navigation%29)
[5\.5\.5Keystrokes](https://docs.racket-lang.org/shrubbery/tool.html#%28part._.Keystrokes%29)
[5\.6Shrubbery Variants](https://docs.racket-lang.org/shrubbery/variant.html)
[6Design Considerations](https://docs.racket-lang.org/shrubbery/Design_Considerations.html)
[6\.1Rationale](https://docs.racket-lang.org/shrubbery/Design_Considerations.html#%28part._.Rationale%29)
[6\.2Prior Art](https://docs.racket-lang.org/shrubbery/Design_Considerations.html#%28part._.Prior_.Art%29)
[7Editor Support](https://docs.racket-lang.org/shrubbery/tool-support.html)
[7\.1Shrubbery Support in DrRacket](https://docs.racket-lang.org/shrubbery/tool-support.html#%28part._drracket-shrubbery%29)
[7\.2How to Type«…»](https://docs.racket-lang.org/shrubbery/tool-support.html#%28part._type-guillemet%29)
[top](https://docs.racket-lang.org/index.html)contents← prev[up](https://docs.racket-lang.org/index.html)[next →](https://docs.racket-lang.org/shrubbery/example.html)
Rubish is a Unix shell written in pure Ruby that aims for full bash compatibility while deeply integrating Ruby features such as blocks, iterators, and method chaining.
Nibble is a C-like systems programming language implemented in 3000 lines of C that generates LLVM IR without external dependencies or heap allocations. It supports defer, recursion, various types, structs, pointers, and includes graphical demos.