Initial commit
This commit is contained in:
323
engines/hpl1/engine/libraries/angelscript/sources/as_tokendef.h
Normal file
323
engines/hpl1/engine/libraries/angelscript/sources/as_tokendef.h
Normal file
@@ -0,0 +1,323 @@
|
||||
/*
|
||||
AngelCode Scripting Library
|
||||
Copyright (c) 2003-2019 Andreas Jonsson
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any
|
||||
damages arising from the use of this software.
|
||||
|
||||
Permission is granted to anyone to use this software for any
|
||||
purpose, including commercial applications, and to alter it and
|
||||
redistribute it freely, subject to the following restrictions:
|
||||
|
||||
1. The origin of this software must not be misrepresented; you
|
||||
must not claim that you wrote the original software. If you use
|
||||
this software in a product, an acknowledgment in the product
|
||||
documentation would be appreciated but is not required.
|
||||
|
||||
2. Altered source versions must be plainly marked as such, and
|
||||
must not be misrepresented as being the original software.
|
||||
|
||||
3. This notice may not be removed or altered from any source
|
||||
distribution.
|
||||
|
||||
The original version of this library can be located at:
|
||||
http://www.angelcode.com/angelscript/
|
||||
|
||||
Andreas Jonsson
|
||||
andreas@angelcode.com
|
||||
*/
|
||||
|
||||
|
||||
//
|
||||
// as_tokendef.h
|
||||
//
|
||||
// Definitions for tokens identifiable by the tokenizer
|
||||
//
|
||||
|
||||
|
||||
#ifndef AS_TOKENDEF_H
|
||||
#define AS_TOKENDEF_H
|
||||
|
||||
#include "as_config.h"
|
||||
|
||||
BEGIN_AS_NAMESPACE
|
||||
|
||||
enum eTokenType {
|
||||
ttUnrecognizedToken,
|
||||
|
||||
ttEnd, // End of file
|
||||
|
||||
// White space and comments
|
||||
ttWhiteSpace, // ' ', '\t', '\r', '\n', UTF8 byte-order-mark
|
||||
ttOnelineComment, // // \n
|
||||
ttMultilineComment, // /* */
|
||||
|
||||
// Atoms
|
||||
ttIdentifier, // abc123
|
||||
ttIntConstant, // 1234
|
||||
ttFloatConstant, // 12.34e56f
|
||||
ttDoubleConstant, // 12.34e56
|
||||
ttStringConstant, // "123"
|
||||
ttMultilineStringConstant, //
|
||||
ttHeredocStringConstant, // """text"""
|
||||
ttNonTerminatedStringConstant, // "123
|
||||
ttBitsConstant, // 0xFFFF
|
||||
|
||||
// Math operators
|
||||
ttPlus, // +
|
||||
ttMinus, // -
|
||||
ttStar, // *
|
||||
ttSlash, // /
|
||||
ttPercent, // %
|
||||
ttStarStar, // **
|
||||
|
||||
ttHandle, // @
|
||||
|
||||
ttAddAssign, // +=
|
||||
ttSubAssign, // -=
|
||||
ttMulAssign, // *=
|
||||
ttDivAssign, // /=
|
||||
ttModAssign, // %=
|
||||
ttPowAssign, // **=
|
||||
|
||||
ttOrAssign, // |=
|
||||
ttAndAssign, // &=
|
||||
ttXorAssign, // ^=
|
||||
ttShiftLeftAssign, // <<=
|
||||
ttShiftRightLAssign, // >>=
|
||||
ttShiftRightAAssign, // >>>=
|
||||
|
||||
ttInc, // ++
|
||||
ttDec, // --
|
||||
|
||||
ttDot, // .
|
||||
ttScope, // ::
|
||||
|
||||
// Statement tokens
|
||||
ttAssignment, // =
|
||||
ttEndStatement, // ;
|
||||
ttListSeparator, // ,
|
||||
ttStartStatementBlock, // {
|
||||
ttEndStatementBlock, // }
|
||||
ttOpenParanthesis, // (
|
||||
ttCloseParanthesis, // )
|
||||
ttOpenBracket, // [
|
||||
ttCloseBracket, // ]
|
||||
ttAmp, // &
|
||||
|
||||
// Bitwise operators
|
||||
ttBitOr, // |
|
||||
ttBitNot, // ~
|
||||
ttBitXor, // ^
|
||||
ttBitShiftLeft, // <<
|
||||
ttBitShiftRight, // >> // TODO: In Java this is the arithmetical shift
|
||||
ttBitShiftRightArith, // >>> // TODO: In Java this is the logical shift
|
||||
|
||||
// Compare operators
|
||||
ttEqual, // ==
|
||||
ttNotEqual, // !=
|
||||
ttLessThan, // <
|
||||
ttGreaterThan, // >
|
||||
ttLessThanOrEqual, // <=
|
||||
ttGreaterThanOrEqual, // >=
|
||||
|
||||
ttQuestion, // ?
|
||||
ttColon, // :
|
||||
|
||||
// Reserved keywords
|
||||
ttIf, // if
|
||||
ttElse, // else
|
||||
ttFor, // for
|
||||
ttWhile, // while
|
||||
ttBool, // bool
|
||||
ttFuncDef, // funcdef
|
||||
ttImport, // import
|
||||
ttInt, // int
|
||||
ttInt8, // int8
|
||||
ttInt16, // int16
|
||||
ttInt64, // int64
|
||||
ttInterface, // interface
|
||||
ttIs, // is
|
||||
ttNotIs, // !is
|
||||
ttUInt, // uint
|
||||
ttUInt8, // uint8
|
||||
ttUInt16, // uint16
|
||||
ttUInt64, // uint64
|
||||
ttFloat, // float
|
||||
ttVoid, // void
|
||||
ttTrue, // true
|
||||
ttFalse, // false
|
||||
ttReturn, // return
|
||||
ttNot, // not
|
||||
ttAnd, // and, &&
|
||||
ttOr, // or, ||
|
||||
ttXor, // xor, ^^
|
||||
ttBreak, // break
|
||||
ttContinue, // continue
|
||||
ttConst, // const
|
||||
ttDo, // do
|
||||
ttDouble, // double
|
||||
ttSwitch, // switch
|
||||
ttCase, // case
|
||||
ttDefault, // default
|
||||
ttIn, // in
|
||||
ttOut, // out
|
||||
ttInOut, // inout
|
||||
ttNull, // null
|
||||
ttClass, // class
|
||||
ttTypedef, // typedef
|
||||
ttEnum, // enum
|
||||
ttCast, // cast
|
||||
ttPrivate, // private
|
||||
ttProtected, // protected
|
||||
ttNamespace, // namespace
|
||||
ttMixin, // mixin
|
||||
ttAuto, // auto
|
||||
ttTry, // try
|
||||
ttCatch // catch
|
||||
};
|
||||
|
||||
struct sTokenWord {
|
||||
const char *word;
|
||||
size_t wordLength;
|
||||
eTokenType tokenType;
|
||||
};
|
||||
|
||||
#define asTokenDef(str, tok) {str, sizeof(str)-1, tok}
|
||||
|
||||
sTokenWord const tokenWords[] = {
|
||||
asTokenDef("+", ttPlus),
|
||||
asTokenDef("+=", ttAddAssign),
|
||||
asTokenDef("++", ttInc),
|
||||
asTokenDef("-", ttMinus),
|
||||
asTokenDef("-=", ttSubAssign),
|
||||
asTokenDef("--", ttDec),
|
||||
asTokenDef("*", ttStar),
|
||||
asTokenDef("*=", ttMulAssign),
|
||||
asTokenDef("/", ttSlash),
|
||||
asTokenDef("/=", ttDivAssign),
|
||||
asTokenDef("%", ttPercent),
|
||||
asTokenDef("%=", ttModAssign),
|
||||
asTokenDef("**", ttStarStar),
|
||||
asTokenDef("**=", ttPowAssign),
|
||||
asTokenDef("=", ttAssignment),
|
||||
asTokenDef("==", ttEqual),
|
||||
asTokenDef(".", ttDot),
|
||||
asTokenDef("|", ttBitOr),
|
||||
asTokenDef("|=", ttOrAssign),
|
||||
asTokenDef("||", ttOr),
|
||||
asTokenDef("&", ttAmp),
|
||||
asTokenDef("&=", ttAndAssign),
|
||||
asTokenDef("&&", ttAnd),
|
||||
asTokenDef("^", ttBitXor),
|
||||
asTokenDef("^=", ttXorAssign),
|
||||
asTokenDef("^^", ttXor),
|
||||
asTokenDef("<", ttLessThan),
|
||||
asTokenDef("<=", ttLessThanOrEqual),
|
||||
asTokenDef("<<", ttBitShiftLeft),
|
||||
asTokenDef("<<=", ttShiftLeftAssign),
|
||||
asTokenDef(">", ttGreaterThan),
|
||||
asTokenDef(">=", ttGreaterThanOrEqual),
|
||||
asTokenDef(">>", ttBitShiftRight),
|
||||
asTokenDef(">>=", ttShiftRightLAssign),
|
||||
asTokenDef(">>>", ttBitShiftRightArith),
|
||||
asTokenDef(">>>=", ttShiftRightAAssign),
|
||||
asTokenDef("~", ttBitNot),
|
||||
asTokenDef(";", ttEndStatement),
|
||||
asTokenDef(",", ttListSeparator),
|
||||
asTokenDef("{", ttStartStatementBlock),
|
||||
asTokenDef("}", ttEndStatementBlock),
|
||||
asTokenDef("(", ttOpenParanthesis),
|
||||
asTokenDef(")", ttCloseParanthesis),
|
||||
asTokenDef("[", ttOpenBracket),
|
||||
asTokenDef("]", ttCloseBracket),
|
||||
asTokenDef("?", ttQuestion),
|
||||
asTokenDef(":", ttColon),
|
||||
asTokenDef("::", ttScope),
|
||||
asTokenDef("!", ttNot),
|
||||
asTokenDef("!=", ttNotEqual),
|
||||
asTokenDef("!is", ttNotIs),
|
||||
asTokenDef("@", ttHandle),
|
||||
asTokenDef("and", ttAnd),
|
||||
asTokenDef("auto", ttAuto),
|
||||
asTokenDef("bool", ttBool),
|
||||
asTokenDef("break", ttBreak),
|
||||
asTokenDef("case", ttCase),
|
||||
asTokenDef("cast", ttCast),
|
||||
asTokenDef("catch", ttCatch),
|
||||
asTokenDef("class", ttClass),
|
||||
asTokenDef("const", ttConst),
|
||||
asTokenDef("continue", ttContinue),
|
||||
asTokenDef("default", ttDefault),
|
||||
asTokenDef("do", ttDo),
|
||||
#ifdef AS_USE_DOUBLE_AS_FLOAT
|
||||
asTokenDef("double", ttFloat),
|
||||
#else
|
||||
asTokenDef("double", ttDouble),
|
||||
#endif
|
||||
asTokenDef("else", ttElse),
|
||||
asTokenDef("enum", ttEnum),
|
||||
asTokenDef("false", ttFalse),
|
||||
asTokenDef("float", ttFloat),
|
||||
asTokenDef("for", ttFor),
|
||||
asTokenDef("funcdef", ttFuncDef),
|
||||
asTokenDef("if", ttIf),
|
||||
asTokenDef("import", ttImport),
|
||||
asTokenDef("in", ttIn),
|
||||
asTokenDef("inout", ttInOut),
|
||||
asTokenDef("int", ttInt),
|
||||
asTokenDef("int8", ttInt8),
|
||||
asTokenDef("int16", ttInt16),
|
||||
asTokenDef("int32", ttInt),
|
||||
asTokenDef("int64", ttInt64),
|
||||
asTokenDef("interface", ttInterface),
|
||||
asTokenDef("is", ttIs),
|
||||
asTokenDef("mixin", ttMixin),
|
||||
asTokenDef("namespace", ttNamespace),
|
||||
asTokenDef("not", ttNot),
|
||||
asTokenDef("null", ttNull),
|
||||
asTokenDef("or", ttOr),
|
||||
asTokenDef("out", ttOut),
|
||||
asTokenDef("private", ttPrivate),
|
||||
asTokenDef("protected", ttProtected),
|
||||
asTokenDef("return", ttReturn),
|
||||
asTokenDef("switch", ttSwitch),
|
||||
asTokenDef("true", ttTrue),
|
||||
asTokenDef("try", ttTry),
|
||||
asTokenDef("typedef", ttTypedef),
|
||||
asTokenDef("uint", ttUInt),
|
||||
asTokenDef("uint8", ttUInt8),
|
||||
asTokenDef("uint16", ttUInt16),
|
||||
asTokenDef("uint32", ttUInt),
|
||||
asTokenDef("uint64", ttUInt64),
|
||||
asTokenDef("void", ttVoid),
|
||||
asTokenDef("while", ttWhile),
|
||||
asTokenDef("xor", ttXor),
|
||||
};
|
||||
|
||||
const unsigned int numTokenWords = sizeof(tokenWords) / sizeof(sTokenWord);
|
||||
|
||||
const char *const whiteSpace = " \t\r\n";
|
||||
|
||||
// Some keywords that are not considered tokens by the parser
|
||||
// These only have meaning in specific situations. Outside these
|
||||
// situations they are treated as normal identifiers.
|
||||
const char *const THIS_TOKEN = "this";
|
||||
const char *const FROM_TOKEN = "from";
|
||||
const char *const SUPER_TOKEN = "super";
|
||||
const char *const SHARED_TOKEN = "shared";
|
||||
const char *const FINAL_TOKEN = "final";
|
||||
const char *const OVERRIDE_TOKEN = "override";
|
||||
const char *const GET_TOKEN = "get";
|
||||
const char *const SET_TOKEN = "set";
|
||||
const char *const ABSTRACT_TOKEN = "abstract";
|
||||
const char *const FUNCTION_TOKEN = "function";
|
||||
const char *const IF_HANDLE_TOKEN = "if_handle_then_const";
|
||||
const char *const EXTERNAL_TOKEN = "external";
|
||||
const char *const EXPLICIT_TOKEN = "explicit";
|
||||
const char *const PROPERTY_TOKEN = "property";
|
||||
|
||||
END_AS_NAMESPACE
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user