Sha256: 332d11ec8d6ca2886145f24f874bb0a26ebebc962cc02760632cde8900c661ee

Contents?: true

Size: 1.25 KB

Versions: 8

Compression:

Stored size: 1.25 KB

Contents

#
#       ActiveFacts CQL Parser.
#       Parse rules relating to definition context.
#
# Copyright (c) 2009 Clifford Heath. Read the LICENSE file.
#
module ActiveFacts
  module CQL
    grammar Context
      rule context_note
        '('
        s w:who_says? s context_type description agreed:(',' a:as_agreed_by)? s
        ')' s
        {
          def value
            [ w.empty? ? nil : w.value, context_type.value, description.text_value, agreed.empty? ? [] : agreed.a.value]
          end
          def ast
            who = w.empty? ? nil : w.value
            ag = agreed.empty? ? [] : agreed.a.value
            Compiler::ContextNote.new context_type.value, description.text_value, who, ag
          end
        }
      end

      rule who_says
        according_to agents s ','
        { def value; agents.value; end }
      end

      rule context_type
        because s       { def value; 'because'; end } /
        as_opposed_to   { def value; 'as_opposed_to'; end } /
        so_that         { def value; 'so_that'; end } /
        to_avoid        { def value; 'to_avoid'; end }
      end

      rule description
        '(' description ')' / (!( [()] / ',' as_agreed_by) .)*
        {
          def node_type; :linking; end
        }
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
activefacts-cql-1.9.6 lib/activefacts/cql/parser/Context.treetop
activefacts-cql-1.9.5 lib/activefacts/cql/parser/Context.treetop
activefacts-cql-1.9.4 lib/activefacts/cql/parser/Context.treetop
activefacts-cql-1.9.3 lib/activefacts/cql/parser/Context.treetop
activefacts-cql-1.9.2 lib/activefacts/cql/parser/Context.treetop
activefacts-cql-1.9.1 lib/activefacts/cql/parser/Context.treetop
activefacts-cql-1.8.3 lib/activefacts/cql/parser/Context.treetop
activefacts-cql-1.8.2 lib/activefacts/cql/parser/Context.treetop