Module: Gobstones::Parser

Includes:
Lang
Defined in:
lib/gobstones/parser/ast/ast.rb,
lib/gobstones/parser/parse_error.rb,
lib/gobstones/parser/treetop_parser.rb

Overview

TODO divide into smaller modules

Defined Under Namespace

Classes: ParseError, TreetopParser

Constant Summary collapse

RESERVED_IDS =
%w[
  if else not True False case of while Skip repeatWith in procedure function
  return Mover Sacar Poner BOOM IrAlOrigen VaciarTablero div mod hayBolitas
  nroBolitas puedeMover Norte Sur Este Oeste minBool maxBool minDir maxDir
  minColor maxColor siguiente previo opuesto Verde Rojo Azul Negro Main
].freeze

Constants included from Lang

Lang::TypeBoundFunc

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.ast_node(name, &value_block) ⇒ Object



15
16
17
18
19
20
21
22
23
# File 'lib/gobstones/parser/ast/ast.rb', line 15

def self.ast_node(name, &value_block)
  # TODO check if it is better to have classes
  ast_module = Module.new do
    define_method(:value) do
      instance_eval(&value_block)
    end
  end
  const_set name, ast_module
end

Instance Method Details

#create_commands(commands) ⇒ Object



188
189
190
# File 'lib/gobstones/parser/ast/ast.rb', line 188

def create_commands(commands)
  commands.elements.map { |node| node.command.value }
end