Каждый файл программы на Jack — это описание одного класса:
class ClassName {
Variable_declaration* // поля
Subroutine_declaration* // конструкторы, методы, функции в любом порядке
}
SubroutineKeyword Type Name ( Type ParamName , Type ParamName2 , ... ) {
Local_variable_declaration*
Statement*
}
...
constructorдля определения конструкторов;methodдля определения методов объекта;functionдля определения функций (статических методов).
field Type VarName1 , VarName2 , ... ;
static Type VarName1 , VarName2 , ... ;
var Type VarName1 , VarName2 , ... ;
int | char | boolean | ClassName
let VarName = Expression ; // присваивание значения переменной
let VarName [ Expression ] = Expression ; // присваивание значения элементу массива
if ( Expression ) {
Statement*
} else {
Statement*
}
while ( Expression ) {
Statement*
}
do Subroutine_call ; // вызов подпрограммы, результат которой нам не нужен
return Expression ;
return ;
Expression — то, что можно вычислить и получить значение. Есть следующие способы составлять выражения:
Constant
VarName
this
VarName [ Expression ] // доступ к элементу массива
Subroutine_call // подпрограмма должна возвращать значение
- Expression // унарный минус
~ Expression // логическое NOT
Expression op Expression // op — бинарная операция + - * / & | < > =
( Expression ) // приоритетов операций в Jack нет,
// но можно использовать скобки для группировки
// вызов функции или создание объекта конструктором:
ClassName.FunctionName ( Expression , Expression , … , Expression )
// вызов метода у объекта varName
VarName.MethodName ( Expression , Expression , … , Expression)
// вызов метода у объекта this
MethodName ( Expression , Expression , … , Expression )
Операционная система содержит следующие классы, которыми могут пользоваться все программисты на Jack:
- Math — часто используемые математические функции
- String — работа со строками
- Array — работа с массивами
- Output — вывод текста на экран
- Screen — вывод графики на экран
- Keyboard — ввод с клавиатуры
- Memory — прямой доступ к памяти
- Sys — управление выполнением программы
Полное описание классов операционной системы: Jack_OS_API.pdf