core: redesign expression, add expression matcher, make a specific expression for assignment (BROKEN)