Probably I am new-school, but, as I can imagine from point of OOP: Grammar -> Language family (there are a lot of different syntax: Fortran & Basic & Python dependent on character positions, Prolog where text is not the code actually) -> Language syntax (C/Pascal, actually there are only two most popular dialects (Java,JS are clones of C++, Ada, PLSQL are clones of Pascal, C# is clone of C++ and Pascal)) -> Compiler. Somewhere here lying the common part of compiler/syntax highliter/codetools and any others, lets say, interpreter of the programming language.
Finally: IMO FPC compiler and f.i. JCF should to have the common ancestor.