I think the most important thing is that syntax is consitent. There are already a lot of different ways, which makes it imho not so easy to achive.
var and
const are the most used sections.
threadvar,
resourcestring defines sections with very special meaning.
class var in classes is kind of a section as well, but in opposite to the others it consists of two seperated words.
Then there are the modifiers:
export,
cvar,
external are all seperated from the declaration itself with a semicolon.
absolute instead isn't seperated by a semicolon.
There is also a modifier for consts describing the place where the const should be saved:
const
HelloStr: string[5] = 'Hello'; section '.progmem';
For persistant local variables (static vars) what we actually do is to tell the compiler to put the local variable on the static memory (surprise~) instead of the stack. But on the other hand having such persistent variables is a high level language feature, the programmer doesn't need to know about the internals, the storage place. So in that regard its very different to the "section '.progmem';" feature.
Then there are also the procedure modifiers, outside of classes they don't know sections at all.
I'd still tend to a modifier.
(e.g. unit as suggested by kupferstecher).
The credits shoud go to Martin_fr.
Using
unit does really follow some logic, i.e. where the variable belongs to. But simultaneously it doesn't expose the purpose of that special variable at all. E.g.
persistent would be more telling. But still I'd rather go with "static", no matter if its done as section or as modifier.