#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