in lib/lexer.js [28:95]
constructor(source, filename) {
super(source, filename);
this.reserve(new Keyword('import', Tag.IMPORT));
this.reserve(new Keyword('extends', Tag.EXTENDS));
this.reserve(new Keyword('super', Tag.SUPER));
this.reserve(new Keyword('const', Tag.CONST));
this.reserve(new Keyword('rpc', Tag.RPC));
this.reserve(new Keyword('static', Tag.STATIC));
// data types
this.reserve(new Keyword('class', Tag.TYPE));
this.reserve(new Keyword('void', Tag.TYPE));
this.reserve(new Keyword('string', Tag.TYPE));
this.reserve(new Keyword('number', Tag.TYPE));
this.reserve(new Keyword('integer', Tag.TYPE));
this.reserve(new Keyword('int8', Tag.TYPE));
this.reserve(new Keyword('int16', Tag.TYPE));
this.reserve(new Keyword('int32', Tag.TYPE));
this.reserve(new Keyword('int64', Tag.TYPE));
this.reserve(new Keyword('long', Tag.TYPE));
this.reserve(new Keyword('uint8', Tag.TYPE));
this.reserve(new Keyword('uint16', Tag.TYPE));
this.reserve(new Keyword('uint32', Tag.TYPE));
this.reserve(new Keyword('uint64', Tag.TYPE));
this.reserve(new Keyword('ulong', Tag.TYPE));
this.reserve(new Keyword('float', Tag.TYPE));
this.reserve(new Keyword('double', Tag.TYPE));
this.reserve(new Keyword('boolean', Tag.TYPE));
this.reserve(new Keyword('bytes', Tag.TYPE));
this.reserve(new Keyword('any', Tag.TYPE));
this.reserve(new Keyword('map', Tag.TYPE));
this.reserve(new Keyword('entry', Tag.TYPE));
this.reserve(new Keyword('object', Tag.TYPE));
this.reserve(new Keyword('writable', Tag.TYPE));
this.reserve(new Keyword('readable', Tag.TYPE));
this.reserve(new Keyword('asyncIterator', Tag.TYPE));
this.reserve(new Keyword('iterator', Tag.TYPE));
// boolean
this.reserve(new Keyword('true', Tag.BOOL));
this.reserve(new Keyword('false', Tag.BOOL));
// null
this.reserve(new Keyword('null', Tag.NULL));
this.reserve(new Keyword('if', Tag.IF));
this.reserve(new Keyword('else', Tag.ELSE));
this.reserve(new Keyword('return', Tag.RETURN));
this.reserve(new Keyword('yield', Tag.YIELD));
this.reserve(new Keyword('throw', Tag.THROW));
this.reserve(new Keyword('while', Tag.WHILE));
this.reserve(new Keyword('for', Tag.FOR));
this.reserve(new Keyword('break', Tag.BREAK));
this.reserve(new Keyword('var', Tag.VAR));
// module
this.reserve(new Keyword('new', Tag.NEW));
// try/catch/finally
this.reserve(new Keyword('try', Tag.TRY));
this.reserve(new Keyword('catch', Tag.CATCH));
this.reserve(new Keyword('finally', Tag.FINALLY));
// add $type to assign instance
this.reserve(new Keyword('$type', Tag.TYPE));
// the state for template string
this.inTemplate = false;
}