Код на языке Nim описывает вычисления, которые воздействуют на память, состоящую из отдельных ячеек, называемых локациями. Переменная — это, по сути, имя локации.
Каждая переменная и локация имеют определенный тип. Тип переменной называется статическим типом, а тип локации — динамическим типом. Если статический тип отличается от динамического, то он является супертипом или подтипом динамического типа.
Идентификатор — это символ, объявленный в качестве имени переменной, типа, процедуры и т. д. Область программы, к которой применяется объявление, называется областью видимости объявления. Области видимости могут быть вложенными. Значение идентификатора определяется наименьшей охватывающей областью видимости, в которой он объявлен, если только правила разрешения перегрузки не предполагают иного.
Выражение задает вычисление, результатом которого является значение или локация. Выражения, результатом которых являются локации, называются L-значениями. L-значение может обозначать либо локацию, либо значение, которое содержит эту локацию, в зависимости от контекста.
Литерал — это часть программы на языке Nim, которая обозначает атомарную часть вычисления, не являющуюся локацией, например: число 3 или строка "abc" — это литералы. Литералы нельзя изменять, например, фрагмент кода 12 = 4 (присвоить значение 4 значению 12) недопустим.
Программа на языке Nim состоит из одного или нескольких текстовых файлов с исходным кодом. Процессор Nim — это инструмент, который может анализировать и при необходимости преобразовывать программы на языке Nim. Один из типов процессоров называется компилятором. Компилятор Nim преобразует код на языке Nim в формат, подходящий для выполнения на конкретной целевой машине.
Эти определения были вдохновлены спецификацией ("report") языка Modula 3. Термин L-value был взят из спецификаций языков C и C++.