Программа на KScript состоит из одного или нескольких модулей. Модуль является единицей трансляции.
Лексемы. Есть пять классов лексем: идентификаторы, ключевые слова, литералы, операции и прочие разделители. Символы пробела, табуляции и новой строки, а также комментарии, как описано ниже, игнорируются, за исключением тех случаев, когда они служат разделителями лексем.
Комментарии. Символы /* задают начало комментария, заканчивающегося символами */. Комментарии могут быть вложенными. Символы // начинают комментарий, который заканчивается в конце строки, на которой они появились.
Идентификаторы. Идентификатор — последовательность букв латинского алфавита и цифр произвольной длины. Первый символ должен быть буквой, символ подчеркивания ( _ ) считается буквой. Прописные и строчные буквы различаются. Все символы существенны.
Ключевые слова. Следующие идентификаторы зарезервированы для использования в качестве ключевых слов и не могут использоваться иным образом:
Ключевые слова
break |
case |
char |
continue |
default |
do |
double |
else |
float |
for |
if |
import |
int |
long |
return |
short |
string |
struct |
switch |
unsigned |
var |
while |
Следующие символы используются в качестве операций или разделителей:
Символы операций и разделителей
! |
% |
^ |
& |
* |
( |
) |
- |
+ |
= |
{ |
} |
| |
~ |
[ |
] |
; |
' |
: |
" |
< |
> |
? |
, |
. |
/ |
|
|
Следующие комбинации символов используются для задания операций:
Комбинации символов операций
++ |
-- |
<< |
>> |
<= |
>= |
== |
!= |
&& |
|| |
*= |
/= |
%= |
+= |
-= |
<<= |
>>= |
&= |
^= |
|= |
Каждая операция считается отдельной лексемой.
Литералы. Есть несколько видов литералов:
литерал: целая константа символьная константа константа с плавающей точкой символьная строка
Целые константы
Все целые константы, состоящие из последовательности цифр, считаются десятичными (основание счисления десять), если только они не начинаются с 0 (цифра ноль). Последовательность цифр, начинающаяся с 0, считается восьмеричным целым (основание счисления восемь). Цифры 8 и 9 не являются восьмеричными. Последовательность цифр, начинающаяся с 0x или 0X, считается шестнадцатеричным целым (основание счисления шестнадцать). Шестандцатеричные цифры могут состоять из символов от a или A до f или F с десятичными значениями их от десяти до пятнадцати. Последовательность цифр, начинающаяся с 0b или 0B, считается двоичным целым (основание счисления два). Например, число двенадцать можно записать как 12, 014, 0xC или 0b1100. Целые константы имеют тип int.
Символьные константы
Символьной константой является один или несколько символов, заключенные в одиночные кавычки, например 'x'. Значением символьной константы из одного символа является численное значение символа в машинном наборе символов (алфавите). Символьные константы имеют тип int.
Некоторые неграфические символы, одиночная кавычка ( ' ) и обратная косая черта ( \ ), могут быть представлены в соответствие со следующей таблицей escape-последовательностей:
Escape-последовательности
символ новой строки | LF | \n |
горизонтальная табуляция | HT | \t |
вертикальная табуляция | VT | \v |
возврат на шаг | BS | \b |
возврат каретки | CR | \r |
перевод страницы | FF | \f |
обратная косая черта | \ | \\ |
одиночная ковычка (апостроф) | ' | \' |
двойная кавычка | " | \" |
набор битов | 0ooo | \ooo |
0xddd | \xddd |
Escape-последовательность \ooo состоит из обратной косой, за которой следуют одна, две или три восьмеричные цифры, задающие значение требуемого символа. Escape-последовательность \xddd состоит из обратной косой, за которой следуют шестнадцатеричные цифры, задающие значение требуемого символа. Если следующий за обратной косой символ не является одним из перечисленных, то обратная косая игнорируется.
Константы с плавающей точкой
Константы с плавающей точкой состоят из целой части, символа точка, дробной части, e или E, целого показателя с возможным знаком и возможным окончанием, указывающим тип. Целая и дробная части состоят из последовательности десятичных цифр. Или целая часть, или дробная часть (но не обе) могут отсутствовать. Или точка, или символ e (или E) вместе с показателем могут отсутствовать (но не оба). Тип константы с плавающей точкой есть double.
Символьные строки
Символьная строка есть последовательность символов, заключенная в двойные кавычки ( " ). В строке могут использоваться те же escape-последовательности, что были описаны для символьных констант. Тип символьной строки есть string.