| // Copyright 2019 Google LLC | |
| // | |
| // Licensed under the Apache License, Version 2.0 (the "License"); | |
| // you may not use this file except in compliance with the License. | |
| // You may obtain a copy of the License at | |
| // | |
| // http://www.apache.org/licenses/LICENSE-2.0 | |
| // | |
| // Unless required by applicable law or agreed to in writing, software | |
| // distributed under the License is distributed on an "AS IS" BASIS, | |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| // See the License for the specific language governing permissions and | |
| // limitations under the License. | |
| const TokenType = { | |
| kEOF: "end of file", | |
| kError: "error", | |
| kIdentifier: "identifier", | |
| kIntegerLiteral: "integer_literal", | |
| kFloatLiteral: "float_literal", | |
| kStringLiteral: "string_literal", | |
| kResultId: "result_id", | |
| kOp: "Op", | |
| kEqual: "=", | |
| kPipe: "|", | |
| }; | |
| class Token { | |
| /** | |
| * @param {TokenType} type The type of token | |
| * @param {Integer} line The line number this token was on | |
| * @param {Any} data Data attached to the token | |
| * @param {Integer} bits If the type is a float or integer the bit width | |
| */ | |
| constructor(type, line, data) { | |
| this.type_ = type; | |
| this.line_ = line; | |
| this.data_ = data; | |
| this.bits_ = 0; | |
| } | |
| get type() { return this.type_; } | |
| get line() { return this.line_; } | |
| get data() { return this.data_; } | |
| set data(val) { this.data_ = val; } | |
| get bits() { return this.bits_; } | |
| set bits(val) { this.bits_ = val; } | |
| } | |
| export {Token, TokenType}; |