Sha256: 000034ebdfd1197ebb1db0257be9a4e9c12e3e73c9a4674c39060a557c936665

Contents?: true

Size: 1.12 KB

Versions: 2

Compression:

Stored size: 1.12 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
        '('
        w:who_says? s context_type discussion agreed:(',' a:as_agreed_by)? s
        ')'
        {
	  def value
	    [ w.empty? ? nil : w.value, context_type.value, discussion.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, discussion.text_value, who, ag
	  end
	}
      end

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

      rule context_type
        because         { 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 discussion
        '(' discussion ')' / (!( [()] / ',' as_agreed_by) .)*
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
activefacts-0.8.9 lib/activefacts/cql/Context.treetop
activefacts-0.8.8 lib/activefacts/cql/Context.treetop