The Magma Language
==================

.. toctree::
   :hidden:

   Syntax/index-syntax
   TypesCategories/index-types-categories
   ControlFlow/index-control-flow
   ProceduresFunctions/index-procedures-functions
   InputOutput/index-input-output
   ErrorHandling/index-error-handling
   Packages/index-packages

.. grid:: 1 2 3 3
   :gutter: 3
   :class-container: index-topic-grid

   .. grid-item-card:: Syntax
      :link: Syntax/index-syntax
      :link-type: doc

      Lexical structure, operators, expressions and statement syntax.

   .. grid-item-card:: Types & Categories
      :link: TypesCategories/index-types-categories
      :link-type: doc

      Magma's type system, categories, structures and coercion rules.

   .. grid-item-card:: Control Flow
      :link: ControlFlow/index-control-flow
      :link-type: doc

      Conditionals, loops, break, continue and return statements.

   .. grid-item-card:: Procedures & Functions
      :link: ProceduresFunctions/index-procedures-functions
      :link-type: doc

      Defining and calling procedures, functions, intrinsics and forward declarations.

   .. grid-item-card:: Input & Output
      :link: InputOutput/index-input-output
      :link-type: doc

      Reading from stdin, writing to stdout, file I/O and formatting.

   .. grid-item-card:: Error Handling
      :link: ErrorHandling/index-error-handling
      :link-type: doc

      Exceptions, try/catch, assertions and debugging facilities.

   .. grid-item-card:: Packages
      :link: Packages/index-packages
      :link-type: doc

      Defining, attaching and using Magma packages and spec files.
