No description
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-10-15 07:20:14 -07:00
.vscode Added tests. Fixed range bug 2025-02-26 23:46:59 -08:00
codegen Wrote some more tests and fixed comparison and allocation bug 2025-10-17 17:08:27 -07:00
.gitignore Added tests. Fixed range bug 2025-02-26 23:46:59 -08:00
generated.odin Cleaned up operator code 2025-10-16 19:09:12 -07:00
improvements.md Operator refactor 2025-09-17 13:44:27 -07:00
interpret.odin No longer crashes with invalid struct values. Prints a helpful error message instead 2026-10-15 07:20:14 -07:00
main.odin Take the core:io interface instead of core:string Builder. Renamed AST_Node to Instruction. Add more procs that handle store automatically before interpreting 2025-10-01 23:27:00 -07:00
memory.odin No longer crashes with invalid struct values. Prints a helpful error message instead 2026-10-15 07:20:14 -07:00
operators.odin Take the core:io interface instead of core:string Builder. Renamed AST_Node to Instruction. Add more procs that handle store automatically before interpreting 2025-10-01 23:27:00 -07:00
output_test.odin Keep track of curly brace nesting for tokenizer 2025-11-29 07:13:40 -08:00
parser.odin Keep track of curly brace nesting for tokenizer 2025-11-29 07:13:40 -08:00
README.md Fully resizable store memory 2025-11-01 19:19:56 -07:00
temple-odin.sublime-project Float ops 2025-10-29 18:01:31 -07:00
token.odin Operator refactor 2025-09-17 13:44:27 -07:00
tokenizer.odin Keep track of curly brace nesting for tokenizer 2025-11-29 07:13:40 -08:00
tokenizer_test.odin Keep track of curly brace nesting for tokenizer 2025-11-29 07:13:40 -08:00
types.odin No longer crashes with invalid struct values. Prints a helpful error message instead 2026-10-15 07:20:14 -07:00

Temple of Odin

ToO is a template language that models itself to work well with Odin types and resembles Odin syntax.

Syntax:

You can find syntax examples in output_test.odin

Current Language Features (Sort of ordered by importance to me):

  • Template variables
  • Arithmatic operators (including >, <, >=, and <=):
    • Integers
    • Floats
    • Arrays
    • Matrices
    • Complex numbers
    • Quaternians
    • Strings
    • Strings (null terminated)
    • Strings (utf16)
  • Equality operators (== and !=):
    • Integers
    • Floats
    • Pointers
    • Multi-pointers
    • Runes
    • Bit fields
    • Bit sets
    • Enums
    • Structs
    • Unions
    • Type IDs
    • Booleans
    • Strings
    • Strings (null terminated)
    • Strings (utf16)
    • Arrays
    • Enum arrays
    • Dynamic arrays
    • Maps
    • Complex numbers
    • Matrices
    • Quaternians
  • Array indexing
  • Slice indexing
  • Dynamic array indexing
  • Range slicing [start:end]
  • Map lookups
  • Logical operators:
    • &&
    • ||
    • &
    • |
    • << and >>
    • ~
  • Variables
    • Declare with type
    • Assignments
    • Declare with assignment and implicit type (:=)
    • +=
    • -=
    • *=
    • /=
  • if, if else, and else statements
  • for loops over:
    • ..< and ..= ranges
    • Arrays
    • Slices
    • Dynamic arrays
    • Enum arrays
    • Enum types
    • Strings
    • Strings (null terminated)
    • Strings (utf16)
    • Maps
    • Bit sets
  • in and not_in:
    • Bit sets
    • Maps
  • Format specifiers
  • or_else
  • Unwrap Maybe($T) with ? operator
  • Builtin procs:
    • len and cap
    • String manipulation
    • Levenshtein distance
    • Sorting
  • Function callback
  • Rename fields with struct tags