Class: Gitlab::Ci::Pipeline::Expression::Lexer
- Inherits:
-
Object
- Object
- Gitlab::Ci::Pipeline::Expression::Lexer
- Includes:
- Utils::StrongMemoize
- Defined in:
- lib/gitlab/ci/pipeline/expression/lexer.rb
Constant Summary collapse
- SyntaxError =
Class.new(Expression::ExpressionError)
- LEXEMES =
[ Expression::Lexeme::ParenthesisOpen, Expression::Lexeme::ParenthesisClose, Expression::Lexeme::Variable, Expression::Lexeme::String, Expression::Lexeme::Pattern, Expression::Lexeme::Null, Expression::Lexeme::Equals, Expression::Lexeme::Matches, Expression::Lexeme::NotEquals, Expression::Lexeme::NotMatches, Expression::Lexeme::And, Expression::Lexeme::Or ].freeze
- MAX_TOKENS =
100
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(statement, max_tokens: MAX_TOKENS) ⇒ Lexer
constructor
A new instance of Lexer.
- #lexemes ⇒ Object
- #tokens ⇒ Object
Constructor Details
#initialize(statement, max_tokens: MAX_TOKENS) ⇒ Lexer
Returns a new instance of Lexer.
33 34 35 36 |
# File 'lib/gitlab/ci/pipeline/expression/lexer.rb', line 33 def initialize(statement, max_tokens: MAX_TOKENS) @scanner = StringScanner.new(statement) @max_tokens = max_tokens end |
Class Method Details
.lexemes ⇒ Object
27 28 29 |
# File 'lib/gitlab/ci/pipeline/expression/lexer.rb', line 27 def self.lexemes LEXEMES end |
Instance Method Details
#lexemes ⇒ Object
42 43 44 |
# File 'lib/gitlab/ci/pipeline/expression/lexer.rb', line 42 def lexemes tokens.map(&:to_lexeme) end |
#tokens ⇒ Object
38 39 40 |
# File 'lib/gitlab/ci/pipeline/expression/lexer.rb', line 38 def tokens strong_memoize(:tokens) { tokenize } end |