What are different ways to provide a semantics to a language?
There are many possible approaches. Here's a few "classic" styles.


Operational semantics (e.g. small step / reduction, or big step)
Denotational semantics (e.g. domain-theoretic, or category-theoretic)
Axiomatic semantics (e.g. hoare logic)


You can also define the semantics of a language through a translation to another language (already having its semantics). CPS transforms could also be mentioned here.

Also note that many languages admit several distinct semantics. Lazy &amp; eager semantics of functional programs are possible, for instance. Prolog also has many different semantics (I recall someone stating "there's no such a thing as THE semantics of Prolog").

Further, concurrent languages like CCS or $\pi$-calculus have a LTS semantics. Game semantics is also used sometimes (but I don't know much about it).

I'm pretty sure there are many other kinds of semantics. I'd be surprised if in the future someone does not invent a new kind of semantics.