Sha256: a34630d3560a3254009e68e88be01ddaa30b28ec25fa6ffa0a3e9b6e592683e4

Contents?: true

Size: 1.16 KB

Versions: 104

Compression:

Stored size: 1.16 KB

Contents

require_relative '../ast_filter'
require_relative '../ast_generator'
require_relative '../parsers/common'
require_relative '../parsers/expression'
require_relative '../parsers/bel_script'

module BELParser
  module Script
    # Parser for BEL Script.
    class Parser
      include BELParser::Parsers::Common
      include BELParser::Parsers::Expression
      include BELParser::Parsers::BELScript

      TYPES = [
        :simple_statement,
        :observed_term,
        :nested_statement,
        :annotation_definition,
        :namespace_definition,
        :set,
        :document_property,
        :unset,
        :blank_line,
        :comment_line
      ]

      def each(io)
        if block_given?
          filter = BELParser::ASTFilter.new(
            BELParser::ASTGenerator.new(io),
            *TYPES)
          filter.each do |results|
            yield results
          end
        else
          enum_for(:each, io)
        end
      end
    end
  end
end

if __FILE__ == $PROGRAM_NAME
  BELParser::Script::Parser.new.each($stdin) do |(line_number, line, results)|
    puts "#{line_number}: #{line}"
    results.each do |ast|
      puts ast.to_s(1)
    end
  end
end

Version data entries

104 entries across 104 versions & 1 rubygems

Version Path
bel_parser-1.1.6-java lib/bel_parser/script/parser.rb
bel_parser-1.1.6 lib/bel_parser/script/parser.rb
bel_parser-1.1.5 lib/bel_parser/script/parser.rb
bel_parser-1.1.4-java lib/bel_parser/script/parser.rb
bel_parser-1.1.4 lib/bel_parser/script/parser.rb
bel_parser-1.1.3-java lib/bel_parser/script/parser.rb
bel_parser-1.1.3 lib/bel_parser/script/parser.rb
bel_parser-1.1.2-java lib/bel_parser/script/parser.rb
bel_parser-1.1.2 lib/bel_parser/script/parser.rb
bel_parser-1.1.1-java lib/bel_parser/script/parser.rb
bel_parser-1.1.1 lib/bel_parser/script/parser.rb
bel_parser-1.0.8-java lib/bel_parser/script/parser.rb
bel_parser-1.0.8 lib/bel_parser/script/parser.rb
bel_parser-1.0.7-java lib/bel_parser/script/parser.rb
bel_parser-1.0.7 lib/bel_parser/script/parser.rb
bel_parser-1.0.6-java lib/bel_parser/script/parser.rb
bel_parser-1.0.6 lib/bel_parser/script/parser.rb
bel_parser-1.0.5-java lib/bel_parser/script/parser.rb
bel_parser-1.0.5 lib/bel_parser/script/parser.rb
bel_parser-1.0.4-java lib/bel_parser/script/parser.rb