lib/activefacts/cql/compiler.rb in activefacts-0.8.9 vs lib/activefacts/cql/compiler.rb in activefacts-0.8.10
- old
+ new
@@ -2,18 +2,19 @@
#
# Copyright (c) 2009 Clifford Heath. Read the LICENSE file.
#
require 'activefacts/vocabulary'
require 'activefacts/cql/parser'
-
require 'activefacts/cql/compiler/shared'
require 'activefacts/cql/compiler/value_type'
require 'activefacts/cql/compiler/entity_type'
-require 'activefacts/cql/compiler/reading'
+require 'activefacts/cql/compiler/clause'
require 'activefacts/cql/compiler/fact_type'
+require 'activefacts/cql/compiler/expression'
require 'activefacts/cql/compiler/fact'
require 'activefacts/cql/compiler/constraint'
+require 'activefacts/cql/compiler/join'
module ActiveFacts
module CQL
class Compiler < ActiveFacts::CQL::Parser
attr_reader :vocabulary
@@ -29,10 +30,11 @@
@filename = filename
File.open(filename) do |f|
compile(f.read)
end
@filename = old_filename
+ @vocabulary
end
def compile input
@string = input
# The syntax tree created from each parsed CQL statement gets passed to the block.
@@ -41,10 +43,10 @@
debug :parse, "Parsed '#{node.text_value.gsub(/\s+/,' ').strip}'" do
begin
ast = node.ast
next unless ast
debug :ast, ast.inspect
- ast.source = node.body
+ ast.tree = node
ast.constellation = @constellation
ast.vocabulary = @vocabulary
value = compile_definition ast
debug :definition, "Compiled to #{value.is_a?(Array) ? value.map{|v| v.verbalise}*', ' : value.verbalise}" if value
@vocabulary = value if ast.is_a?(Compiler::Vocabulary)