Update grammar.ebnf to Phase 3: generics, interfaces, properties, pointers
Rewrote the EBNF grammar to reflect all language features implemented
through Phase 3 of the Blaise compiler:
- Full token vocabulary: IS, AS, NIL, VIRTUAL, OVERRIDE, TRY, EXCEPT,
FINALLY, RAISE, UNIT, INTERFACE, IMPLEMENTATION, DOWNTO, CARET,
NOT_EQUALS, LESS_EQ, GREATER_EQ, and soft keywords PROPERTY/READ/WRITE
- Unit grammar: UNIT, InterfaceSection, ImplementationSection, UsesClause
- Generic class definitions: CLASS < TypeParamList >
- Interface definitions with optional parent
- Property declarations with soft-keyword read/write accessors
- StandaloneDecl for TTypeName.Method implementation form
- Pointer type syntax: ^TypeName (recursive), pointer dereference (^),
PointerWriteStmt (P^ := Expr)
- Complete statement hierarchy: if/while/for/try-finally/try-except/raise
- Complete expression hierarchy: Expr → Comparison → Additive → Term → Factor
- Factor includes NIL, generic function calls, type casts (via IDENT LPAREN)
- Updated built-ins section (GetMem/FreeMem/ReallocMem, Pointer type)
- Semantic disambiguation notes for generics, virtual dispatch, interfaces
- ARC implicit operations section (string RC, block exit, exception paths)