I'm trying to understand DDD and one of the key concepts in DDD are the Domain Objects. As i understand they're supposed to 'hide' the internal state and allow modification of it by only by using methods (behaviors?) and only in a way that keeps the (internal) state always valid.
Would it be an over simplification to say that (at least from technical point of view) Domain Objects are nothing more than Finite State Machines with business logic inside, strict validation and names meaningful for the business?
Parser
would be a Domain Object, but it cannot possibly be an FSM, because even very simple arithmetic expressions with +, -, *, /, and grouping already cannot be parsed by an FSM, you'd need at least a pushdown-automaton for that. There is nothing that restricts a DO to sub-Turing computation.