[Mlir-commits] [mlir] mlir/Presburger: contribute a free-standing parser (PR #94916)
Jay Foad
llvmlistbot at llvm.org
Thu Jun 27 01:26:20 PDT 2024
================
@@ -0,0 +1,58 @@
+//===- Lexer.h - Presburger Lexer Interface ---------------------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+//
+// This file declares the Presburger Lexer class.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef MLIR_ANALYSIS_PRESBURGER_PARSER_LEXER_H
+#define MLIR_ANALYSIS_PRESBURGER_PARSER_LEXER_H
+
+#include "Token.h"
+#include "llvm/ADT/Twine.h"
+#include "llvm/Support/SourceMgr.h"
+
+namespace mlir::presburger {
+/// This class breaks up the current file into a token stream.
+class Lexer {
+public:
+ explicit Lexer(const llvm::SourceMgr &sourceMgr);
+
+ Token lexToken();
+
+ /// Change the position of the lexer cursor. The next token we lex will start
+ /// at the designated point in the input.
+ void resetPointer(const char *newPointer) { curPtr = newPointer; }
+
+ /// Returns the start of the buffer.
+ const char *getBufferBegin() { return curBuffer.data(); }
+
+private:
+ // Helpers.
+ Token formToken(Token::Kind kind, const char *tokStart) {
+ return Token(kind, StringRef(tokStart, curPtr - tokStart));
+ }
+
+ Token emitError(const char *loc, const llvm::Twine &message);
+
+ // Lexer implementation methods.
+ Token lexAtIdentifier(const char *tokStart);
----------------
jayfoad wrote:
Not used?
https://github.com/llvm/llvm-project/pull/94916
More information about the Mlir-commits
mailing list