From b8ed94adf38cb1de9af6d52ad3571a02508c3647 Mon Sep 17 00:00:00 2001 From: Marek Kaluba Date: Mon, 17 Jan 2022 21:49:49 +0100 Subject: [PATCH] add new parsing of presentation --- data/parse_presentations.jl | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 data/parse_presentations.jl diff --git a/data/parse_presentations.jl b/data/parse_presentations.jl new file mode 100644 index 0000000..9892ae2 --- /dev/null +++ b/data/parse_presentations.jl @@ -0,0 +1,28 @@ +include("../src/groupparse.jl") + +function parse_grouppresentations_abstract(filename::AbstractString) + lines = strip.(readlines(filename)) + groups = let t = (; generators = String[], relations = String[]) + Dict{String,typeof(t)}() + end + group_regex = r"(?\w.*)\s?:=\s?(?Group.*)" + for line in lines + isempty(line) && continue + newline = if iscomment(line) + line[3:end] + else + line[1:end] + end + m = match(group_regex, newline) + if isnothing(m) + @debug "Can't parse line as group presentation \n $line" + continue + else + name = strip(m[:name]) + group_str = m[:group_str] + gens, rels = split_magma_presentation(group_str) + groups[name] = (generators = String.(gens), relations = String.(rels)) + end + end + return groups +end