Newer
Older
c-interpreter / modules / main / include / lang_token.h
Nomura Kei on 9 Aug 2023 2 KB UPDATE
#ifndef LANG_TOKEN_H
#define LANG_TOKEN_H


/**
 * 扱うトークン種別。
 */
enum TokenType
{
	TT_UNKNOWN,			//< Unknown

	TT_EOF,				//< End Of File
	TT_EOL,				//< End Of Line
	TT_SPACE,			//< Space (\u0020, \u0009, \u000b, \u000c)

	// BLOCK
	// /+ --- +/        LV 0, ESCAPE 不可, NEST 可
	// # --- [EOL]      LV 0, ESCAPE 不可, NEST 不可
	// // --- [EOL]		LV 0, ESCAPE 不可, NEST 不可
	// /* --- */		LV 0, ESCAPE 不可, NEST 不可
	// ``` --- ```      LV 0, ESCAPE 不可, NEST 不可
	// """ --- """      LV 0, ESCAPE 不可, NEST 不可
	// { --- }			LV 0, ESCAPE 不可, NEST 可
	// ( --- )          LV 0, ESCAPE 不可, NEST 可
	// [ --- ]          LV 0, ESCAPE 不可, NEST 可
	// < --- >          LV 0, ESCAPE 不可, NEST 可
	// ` --- `          LV 1, ESCAPE 可,   NEST 不可
	// ' --- '          LV 2, ESCAPE 可,   NEST 不可
	// " --- "          LV 2, ESCAPE 可,   NEST 不可
	//
	// 自分より LV の高いブロックは中に入れ込むことができる。
	// Ex.1) { "abc" : " } " }
	// Ex.2) `echo "exec `command`"`
	//
	TT_COMMENT,			//< Comment


	TT_IDENTIFIER,		//< 識別子
	TT_STRING,			//< 文字列リテラル
	TT_COMMAND,			//< コマンドリテラル
	TT_CHARACTER,		//< 文字リテラル
	TT_INTEGER,			//< 整数リテラル
	TT_FLOAT,			//< 浮動小数リテラル
	TT_KEYWORD,			//< キーワード

	TT_NOT,				//< !
	TT_NOT_E,			//< !=
	TT_NOT_LT,			//< !<
	TT_NOT_GT,			//< !>
	TT_NOT_LT_E,		//< !<=
	TT_NOT_GT_E,		//< !>=
	TT_NOT_LT_GT,		//< !<>
	TT_NOT_LT_GT_E,		//< !<>=

	TT_LT,				//< <
	TT_ARROW_L,			//< <-
	TT_LT_E,			//< <=
	TT_LT_D,			//< <<
	TT_LT_GT,			//< <>
	TT_LT_D_E,			//< <<=
	TT_LT_GT_E,			//< <>=
	TT_HTML_COMMENT_S,	//< <!--

	TT_GT,				//< >
	TT_GT_E,			//< >=
	TT_GT_D,			//< >>
	TT_GT_D_E,			//< >>=
	TT_GT_T,			//< >>>
	TT_GT_T_E,			//< >>>=

	TT_DOT,				//< .
	TT_DOT_D,			//< ..
	TT_DOT_T,			//< ...

	TT_AMP,				//< &
	TT_AMP_E,			//< &=
	TT_AMP_D,			//< &&

	TT_PIPE,			//< |
	TT_PIPE_E,			//< |=
	TT_PIPE_D,			//< ||

	TT_MINUS,			//< -
	TT_MINUS_E,			//< -=
	TT_MINUS_D,			//< --
	TT_ARROW_R,			//< ->
	TT_HTML_COMMENT_E,	//< -->

	TT_PLUS,			//< +
	TT_PLUS_E,			//< +=
	TT_PLUS_D,			//< ++

	TT_SLASH,			//< /
	TT_SLASH_E,			//< /=
	

}


#endif	// LANG_TOKEN_H