Improve grammar for @optional and @required Obj-C keyword(s)

Description

Let's make changes to handling of @optional and @required keywords in protocols
similarly to how we handle @private, @protected, etc inside instance variables:
1) Add context like protocolDeclarationSection (similar to visibilitySection)
that has @optional or @required keyword followed by interface declarations.
Thus we can easily check if the given interface declaration is within @optional or @required section.
2) Use lexer tokens instead of hardcoded @required, @optional strings.

Environment

None

Assignee

Ivan Kochurkin

Reporter

Alex Petuschak

Labels

None

Git Branch Name

None

GitHub Issue

None

Components

Fix versions

Priority

Medium
Configure