По формальной спецификации, я думаю, ваш инструктор имеет в виду BNF , что является единственным формальным описанием, которое вы найдете в JLS .Цель формальных спецификаций - слишком выразительные компьютерные языки в форме, которая может быть математически проанализирована.
Я не хочу делать вашу домашнюю работу за вас, но вот пример формального выражения языка в BNF:
grammar ::= [{ assignment }] eoi
assignment ::= name ('::=' | '=') expression
expression = term [{ '|' term }]
term = factor [{ white factor }]
factor = IO | name | '[' expression ']' | '&{' expression '&}'
IO = '\'' string '\'' | '"' string '"' | '`' string '`'
Этот маленький драгоценный камень - BNF, который по иронии судьбы, определяет грамматика БНФ .Вы заметите, что каждый элемент в строке описывается линиями под ним.BNF - это всего лишь один тип формальной нотации, но он очень часто используется для математического выражения языков программирования, поскольку он легко разбивается синтаксическими анализаторами.
Неформальными частями JLS будут те части, которые не выражено в BNF.Они могут принимать форму простых предложений или маркированных списков, которые описывают функцию на простом английском языке.Вы найдете их довольно много в домашнем задании.Удачи!