module Take::Unit::PredictMatch
Public Instance Methods
match(name)
click to toggle source
Matches the next token of the input. If it is not of the expected type, it raises a SyntaxError. Otherwise, it returns the token.
@param name [Symbol] the token to match. @return [Array] the token. @raise SyntaxError if the peeked token is invalid.
# File lib/take/unit/predict_match.rb, line 32 def match(name) if name == peek input.next else raise SyntaxError, "Unexpected token #{peek}" end end
peek()
click to toggle source
Returns the type of the next token.
@return [Symbol] the type of the next token.
# File lib/take/unit/predict_match.rb, line 43 def peek input.peek[0] rescue StopIteration nil end
predict(*params, actions)
click to toggle source
Makes a prediction based on a set of actions. If the peek token doesn't have an action, it will try the special action `:_`, and then give up. If it finds a corresponding action either time, it will run the action.
@param actions [Hash<Symbol => Symbol>] @return [Object] the result of the compiliation.
# File lib/take/unit/predict_match.rb, line 12 def predict(*params, actions) action = actions.fetch(peek) do actions.fetch(:_) end if action.respond_to?(:call) action.call(*params) else send(:"compile_#{action}", *params) end end