# this list is used for autogeneration of:
# - Keywords.cs
# - Tokens.cs
# - ATGTokensSection.txt - the TOKENS section of the ATG file

# use BuildKeywords to generate the different lists.

$Namespace=ICSharpCode.NRefactory.Parser.CSharp
$UpperCaseKeywords=False

# TERMINAL_CLASSES
EOF
Identifier
Literal

# SPECIAL_CHARACTERS
Assign = "="
Plus = "+"
Minus = "-"
Times = "*"
Div = "/"
Mod = "%"
		
Colon = ":"
DoubleColon = "::"
Semicolon = ";"
Question = "?"
DoubleQuestion = "??"
Comma = ","
Dot = "."
	
OpenCurlyBrace = "{"
CloseCurlyBrace = "}"

OpenSquareBracket = "["
CloseSquareBracket = "]"

OpenParenthesis = "("
CloseParenthesis = ")"

GreaterThan = ">"
LessThan = "<"

Not = "!"
LogicalAnd = "&&"
LogicalOr = "||"

BitwiseComplement = "~"
BitwiseAnd = "&"
BitwiseOr = "|"
Xor = "^"

Increment = "++"
Decrement = "--"
Equal = "=="
NotEqual = "!="
GreaterEqual = ">="
LessEqual = "<="
		
ShiftLeft = "<<"
#Removed because of generics
#ShiftRight = ">>"
		
PlusAssign = "+="
MinusAssign = "-="
TimesAssign = "*="
DivAssign = "/="
ModAssign = "%="
BitwiseAndAssign = "&="
BitwiseOrAssign = "|="
XorAssign = "^="
ShiftLeftAssign = "<<="
#Removed because of generics
#ShiftRightAssign = ">>="
Pointer = "->"

# Keywordlist
"abstract"
"as"
"base"
"bool"
"break"
"byte"
"case"
"catch"
"char"
"checked"
"class"
"const"
"continue"
"decimal"
"default"
"delegate"
"do"
"double"
"else"
"enum"
"event"
"explicit"
"extern"
"false"
"finally"
"fixed"
"float"
"for"
"foreach"
"goto"
"if"
"implicit"
"in"
"int"
"interface"
"internal"
"is"
"lock"
"long"
"namespace"
"new"
"null"
"object"
"operator"
"out"
"override"
"params"
"private"
"protected"
"public"
"readonly"
"ref"
"return"
"sbyte"
"sealed"
"short"
"sizeof"
"stackalloc"
"static"
"string"
"struct"
"switch"
"this"
"throw"
"true"
"try"
"typeof"
"uint"
"ulong"
"unchecked"
"unsafe"
"ushort"
"using"
"virtual"
"void"
"volatile"
"while"

#Sets

OverloadableUnaryOp("+", "!", "~", "++", "--", "true", "false")
OverloadableBinaryOp("+", "-", "*", "/", "%", "&", "|", "^", "<<", "==", "!=", ">", "<", ">=", "<=")

TypeKW("char", "bool", "object", "string", "sbyte", "byte", "short", "ushort", "int", "uint", "long", "ulong", "float", "double", "decimal")
UnaryHead("+", "-", "!", "~", "*", "++", "--", "&")
AssnStartOp("+", "-", "!", "~", "*")
CastFollower(Identifier, Literal, "(", "new", "this", "base", "null", "checked", "unchecked", "typeof", "sizeof", "delegate", @OverloadableUnaryOp)
AssgnOps("=", "+=", "-=", "*=", "/=", "%=", "&=", "|=", "<<=")
UnaryOp("+", "-", "!", "~", "*", "++", "--", "&")
TypeDeclarationKW("class", "interface", "struct", "enum", "delegate")
