Your gonig to then need to create a list with priorities. Can't say exactly how to do it. There are many ways. but if we are using your example you don't really need one. Just do the action you pressed. I think what your looking for is to NOT overide current priority as canceling is naturally built into programming.
pc.cur_priority
On Press Attack
if pc.cur_priority < pc.attack_priority
-> pc.animate stuff
-> pc.cur_priotiy = pc.attack_priority<1>
On Press Jump
if pc.cur_priority < pc.jump_priority
-> pc.animation stuff
-> pc.cur_priority = pc.jump_priority<2>
On Press Dash
if pc.cur_priority < pc.dash_priority
-> pc.animation stuff
-> pc.cur_priority = pc.dash_priority<1>
Now as we can see in this simple example assuming that idle = 0.
That from Idle the PC can do any and all action.
However from Attack, Dash cannot be done. But Jump can.
From Jump neither Dash or attack can be performed.
You may want to add timer triggers to reduce priority after a period of time.
On Press Dash
if pc.cur_priority < pc.dash_priority
-> pc.animation stuff
-> pc.cur_priority = pc.dash_priority<1>
-> wait(0.5) -> pc.cur_priority = 0
That way available actions can open up.