Sha256: 3238f76c77a762072ab2ee1cbcf379c5f071f1958eddbe7fb75b63a0431527d7

Contents?: true

Size: 1.13 KB

Versions: 3

Compression:

Stored size: 1.13 KB

Contents

#!/usr/bin/env ruby
# AnalyisParse -- BlockListParser -- 10.11.2005 -- hwyss@ywesee.com

require 'parser'

module ODDB
	module AnalysisParse
		class BlockListParser < Parser
			LINE_PTRN = /^\s*([CNS]|N,\s*ex|TP)?\s*\d{4}\.\d{2,}\s+\d/u
			labareas = %w{C G H I M}
			permutations = []
			while(la = labareas.shift)
				str = "(" << la
				labareas.each { |other| str << other << '?' }
				str << ")"
				permutations << str
			end
			grammar = <<-EOG
Grammar AnalysisList
	Tokens
		SPACE				= /[\\n\\s\\t ]/u [:Skip]
		NEWLINE			= /\\n/u
		GROUP				=	/[0-9]{4}/u
		LABAREA			= /(#{permutations.join('|')}) *$/u
		POSITION		=	/[0-9]{2,}/u
		REVISION		= /^[CS]|N(,\s*ex)?|TP/u
		TAXPOINTS		=	/[0-9]+/u
		WORD				=	/((\\d{1,2}\\.){2}\\d{4})|(\\d{4}\.\\d{2})|([^#{STOPCHARS}\\s\\t ]+)|([#{STOPCHARS}])/imu
	Productions
		Line				->	REVISION? GROUP '.' POSITION
										TAXPOINTS Description LABAREA
										Description NEWLINE
										[: revision, group, _, position,
											taxpoints, description, 
											labarea, morelines, _ ]
		Description	->	WORD+ 
										[^: description ]
			EOG
			PARSER = Parse.generate_parser grammar
		end
	end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
oddb.org-1.0.2 ext/analysisparse/src/block_list_parser.rb
oddb.org-1.0.1 ext/analysisparse/src/block_list_parser.rb
oddb.org-1.0.0 ext/analysisparse/src/block_list_parser.rb