module languages/ansi-c/syntax/Identifiers

exports

sorts Identifier AnonymousIdentifier Keyword

lexical syntax

"auto"			|
"break"			|
"case"			|
"char"			|
"const"			|
"continue"		|
"default"		|
"do"			|
"double"		|
"else"			|
"enum"			|
"extern"		|
"float"			|
"for"			|
"goto"			|
"if"			|
"int"			|
"long"		  	|
"register"		|
"return"		|
"short"			|
"signed"		|
"sizeof"		|
"static"		|
"struct"		|
"switch"		|
"typedef"		|
"union"			|
"unsigned"		|
"void"			|
"volatile"		|
"while"			-> Keyword

Keyword -> Identifier {reject}

lexical syntax

[a-zA-Z\_][a-zA-Z\_0-9]* -> Identifier
	                -> AnonymousIdentifier

lexical restrictions

Identifier -/- [0-9a-zA-Z\_]