# Main keywords.
@begin mainTable 47

# Types.
null		NULLTOKEN
true		TRUETOKEN
false		FALSETOKEN

# Keywords.
await       AWAIT
break		BREAK
case		CASE
catch		CATCH
class		CLASSTOKEN
const		CONSTTOKEN
default		DEFAULT
extends	EXTENDS
finally		FINALLY
for		FOR
instanceof	INSTANCEOF
new		NEW
var		VAR
let		LET
continue	CONTINUE
function	FUNCTION
return		RETURN
void		VOIDTOKEN
delete		DELETETOKEN
if		IF
this		THISTOKEN
do		DO
while		WHILE
else		ELSE
in		INTOKEN
super		SUPER
switch		SWITCH
throw		THROW
try		TRY
typeof		TYPEOF
with		WITH
debugger	DEBUGGER
yield	YIELD

# Reserved for future use.
enum            RESERVED
export          EXPORT
import          IMPORT

# Reserved for future use in strict code.
implements      RESERVED_IF_STRICT
interface       RESERVED_IF_STRICT
package         RESERVED_IF_STRICT
private         RESERVED_IF_STRICT
protected       RESERVED_IF_STRICT
public          RESERVED_IF_STRICT
static          RESERVED_IF_STRICT

@end
