When you attempt to assign a T/F value to a statement you are treating it as a variable.
“John went into town” can be True or False. (If John went into town, then….)
“A liar went into town” is True or False depending on whether “liar” is True or False (assuming someone did indeed go into town).
If x = liar:
“A liar went into town” = G(x) = x
“I am a liar” = F(x) = not x
We have been confusing semantics with “logic.” Semantically, “I am a liar” is either bad grammar or a limitation of language.
liar: Someone who does not (verifiably) tell the truth.
(an interesting discussion might be treating "logic" as the mathematics of functions of variables which can only have one of 2 (undefined) values, call them T/F.)
"He is a liar" = G(x) = x
"I am a liar" = F(x) = not x