Both are correct because they mean different things to the same thing, i.e., reserved word means that that word cannot be used for identifiers in your code, the language prohibits this because it possibly has use for them. Already the keyword is the one that indicates that does something special in the code. The words are usually the same, but has exceptions.
There may be reserved words that are not effectively used by the language and therefore cannot be considered a keyword (e.g..: goto
Java). There are keywords that are contextual, so in certain contexts they are not reserved (e.g..: where
or value
of the C#).
There are languages that allow all keywords to be used freely, so they do not have reserved words, since Udo in identifier can be done unambiguously.