Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 /* | |
| 2 * Copyright 2016 Google Inc. | |
| 3 * | |
| 4 * Use of this source code is governed by a BSD-style license that can be | |
| 5 * found in the LICENSE file. | |
| 6 */ | |
| 7 | |
| 8 #ifndef SKSL_TOKEN | |
| 9 #define SKSL_TOKEN | |
| 10 | |
| 11 #include "ast/SkSLASTPositionNode.h" | |
|
dogben
2016/06/20 18:26:25
should be SkSLPosition.h?
| |
| 12 #include "SkSLUtil.h" | |
| 13 | |
| 14 namespace SkSL { | |
| 15 | |
| 16 /** | |
| 17 * Represents a lexical analysis token. Token is generally only used during the parse process, but | |
| 18 * Token::Kind is also used to represent operator kinds. | |
| 19 */ | |
| 20 struct Token { | |
| 21 enum Kind { | |
| 22 END_OF_FILE, | |
| 23 IDENTIFIER, | |
| 24 INT_LITERAL, | |
| 25 FLOAT_LITERAL, | |
| 26 TRUE_LITERAL, | |
| 27 FALSE_LITERAL, | |
| 28 LPAREN, | |
| 29 RPAREN, | |
| 30 LBRACE, | |
| 31 RBRACE, | |
| 32 LBRACKET, | |
| 33 RBRACKET, | |
| 34 DOT, | |
| 35 COMMA, | |
| 36 PLUSPLUS, | |
| 37 MINUSMINUS, | |
| 38 PLUS, | |
| 39 MINUS, | |
| 40 STAR, | |
| 41 SLASH, | |
| 42 PERCENT, | |
| 43 SHL, | |
| 44 SHR, | |
| 45 BITWISEOR, | |
| 46 BITWISEXOR, | |
| 47 BITWISEAND, | |
| 48 LOGICALOR, | |
| 49 LOGICALXOR, | |
| 50 LOGICALAND, | |
| 51 NOT, | |
| 52 QUESTION, | |
| 53 COLON, | |
| 54 EQ, | |
| 55 EQEQ, | |
| 56 NEQ, | |
| 57 GT, | |
| 58 LT, | |
| 59 GTEQ, | |
| 60 LTEQ, | |
| 61 PLUSEQ, | |
| 62 MINUSEQ, | |
| 63 STAREQ, | |
| 64 SLASHEQ, | |
| 65 PERCENTEQ, | |
| 66 SHLEQ, | |
| 67 SHREQ, | |
| 68 BITWISEOREQ, | |
| 69 BITWISEXOREQ, | |
| 70 BITWISEANDEQ, | |
| 71 LOGICALOREQ, | |
| 72 LOGICALXOREQ, | |
| 73 LOGICALANDEQ, | |
| 74 SEMICOLON, | |
| 75 IF, | |
| 76 ELSE, | |
| 77 FOR, | |
| 78 WHILE, | |
| 79 DO, | |
| 80 RETURN, | |
| 81 BREAK, | |
| 82 CONTINUE, | |
| 83 DISCARD, | |
| 84 IN, | |
| 85 OUT, | |
| 86 INOUT, | |
| 87 CONST, | |
| 88 LOWP, | |
| 89 MEDIUMP, | |
| 90 HIGHP, | |
| 91 UNIFORM, | |
| 92 STRUCT, | |
| 93 LAYOUT, | |
| 94 DIRECTIVE, | |
| 95 PRECISION, | |
| 96 INVALID_TOKEN | |
| 97 }; | |
| 98 | |
| 99 static std::string OperatorName(Kind kind) { | |
| 100 switch (kind) { | |
| 101 case Token::PLUS: return "+"; | |
| 102 case Token::MINUS: return "-"; | |
| 103 case Token::STAR: return "*"; | |
| 104 case Token::SLASH: return "/"; | |
| 105 case Token::PERCENT: return "%"; | |
| 106 case Token::SHL: return "<<"; | |
| 107 case Token::SHR: return ">>"; | |
| 108 case Token::LOGICALAND: return "&&"; | |
| 109 case Token::LOGICALOR: return "||"; | |
| 110 case Token::LOGICALXOR: return "^^"; | |
| 111 case Token::BITWISEAND: return "&"; | |
| 112 case Token::BITWISEOR: return "|"; | |
| 113 case Token::BITWISEXOR: return "^"; | |
| 114 case Token::EQ: return "="; | |
| 115 case Token::EQEQ: return "=="; | |
| 116 case Token::NEQ: return "!="; | |
| 117 case Token::LT: return "<"; | |
| 118 case Token::GT: return ">"; | |
| 119 case Token::LTEQ: return "<="; | |
| 120 case Token::GTEQ: return ">="; | |
| 121 case Token::PLUSEQ: return "+="; | |
| 122 case Token::MINUSEQ: return "-="; | |
| 123 case Token::STAREQ: return "*="; | |
| 124 case Token::SLASHEQ: return "/="; | |
| 125 case Token::PERCENTEQ: return "%="; | |
| 126 case Token::SHLEQ: return "<<"; | |
|
dogben
2016/06/20 18:26:26
missing = for the next 5
| |
| 127 case Token::SHREQ: return ">>"; | |
| 128 case Token::LOGICALANDEQ: return "&&"; | |
| 129 case Token::LOGICALOREQ: return "||"; | |
| 130 case Token::LOGICALXOREQ: return "^^"; | |
| 131 case Token::BITWISEANDEQ: return "&="; | |
| 132 case Token::BITWISEOREQ: return "|="; | |
| 133 case Token::BITWISEXOREQ: return "^="; | |
| 134 case Token::PLUSPLUS: return "++"; | |
| 135 case Token::MINUSMINUS: return "--"; | |
| 136 case Token::NOT: return "!"; | |
| 137 default: | |
| 138 ABORT("unsupported operator: %d\n", kind); | |
| 139 } | |
| 140 } | |
| 141 | |
| 142 Token() { | |
| 143 } | |
| 144 | |
| 145 Token(Position position, Kind kind, std::string text) | |
| 146 : fPosition(position) | |
| 147 , fKind(kind) | |
| 148 , fText(text) {} | |
|
dogben
2016/06/20 18:26:25
nit: std::move
| |
| 149 | |
| 150 Position fPosition; | |
| 151 Kind fKind; | |
| 152 std::string fText; | |
| 153 }; | |
| 154 | |
| 155 } // namespace | |
| 156 #endif | |
| OLD | NEW |