69 explicit Lexer(std::string_view in) : m_in{in} {}
88 Token ScanIdentifier();
91 if (m_pos < m_in.size()) {
92 [[likely]] m_current = m_in[m_pos];
102 if (m_pos < m_in.size()) {
103 [[likely]] m_current = m_in[m_pos];
113 return {kind, m_in.substr(m_tokenStart, m_pos - m_tokenStart)};
116 std::string_view m_in;
118 size_t m_tokenStart = 0;
125using EnumValues = std::vector<std::pair<std::string, int64_t>>;
155 explicit Parser(std::string_view in) : m_lexer{in} {}
171 const std::string&
GetError()
const {
return m_error; }
180 m_token = m_lexer.
Scan();
185 if (m_token.
Is(kind)) {
186 [[likely]]
return true;
192 void Fail(std::string_view msg);
Lexer(std::string_view in)
Construct a raw struct schema lexer.
Definition SchemaParser.hpp:69
Token Scan()
Gets the next token.
size_t GetPosition() const
Gets the starting position of the last lexed token.
Definition SchemaParser.hpp:84
Parser(std::string_view in)
Construct a raw struct schema parser.
Definition SchemaParser.hpp:155
const std::string & GetError() const
Gets the parser error if one occurred.
Definition SchemaParser.hpp:171
bool Parse(ParsedSchema *out)
Parses the schema.
Definition SchemaParser.hpp:14
std::vector< std::pair< std::string, int64_t > > EnumValues
Raw struct set of enumerated values.
Definition SchemaParser.hpp:125
std::string_view ToString(Token::Kind kind)
Raw struct schema declaration.
Definition SchemaParser.hpp:130
EnumValues enumValues
Definition SchemaParser.hpp:133
std::string typeString
Definition SchemaParser.hpp:131
unsigned int bitWidth
Definition SchemaParser.hpp:135
std::string name
Definition SchemaParser.hpp:132
size_t arraySize
Definition SchemaParser.hpp:134
Raw struct schema.
Definition SchemaParser.hpp:141
std::vector< ParsedDeclaration > declarations
Definition SchemaParser.hpp:142
A lexed raw struct schema token.
Definition SchemaParser.hpp:19
std::string_view text
Definition SchemaParser.hpp:54
Kind
A lexed raw struct schema token kind.
Definition SchemaParser.hpp:21
@ kRightBrace
Right curly brace.
Definition SchemaParser.hpp:35
@ kInteger
Integer.
Definition SchemaParser.hpp:25
@ kIdentifier
Identifier.
Definition SchemaParser.hpp:27
@ kColon
Colon.
Definition SchemaParser.hpp:37
@ kSemicolon
Semicolon.
Definition SchemaParser.hpp:39
@ kRightBracket
Right square bracket.
Definition SchemaParser.hpp:31
@ kEquals
Equals.
Definition SchemaParser.hpp:43
@ kComma
Comma.
Definition SchemaParser.hpp:41
@ kLeftBracket
Left square bracket.
Definition SchemaParser.hpp:29
@ kUnknown
Unknown.
Definition SchemaParser.hpp:23
@ kLeftBrace
Left curly brace.
Definition SchemaParser.hpp:33
@ kEndOfInput
End of input.
Definition SchemaParser.hpp:45
Token(Kind kind, std::string_view text)
Definition SchemaParser.hpp:49
bool Is(Kind k) const
Definition SchemaParser.hpp:51
Kind kind
Definition SchemaParser.hpp:53