Class: Gitlab::Ci::Pipeline::Expression::Lexer
- Inherits:
-
Object
- Object
- Gitlab::Ci::Pipeline::Expression::Lexer
show all
- 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
#clear_memoization, #strong_memoize, #strong_memoized?
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
|