diff --git a/data/presentations_3_3_3.txt b/data/presentations_3_3_3.txt new file mode 100644 index 0000000..6d24cf9 --- /dev/null +++ b/data/presentations_3_3_3.txt @@ -0,0 +1,117 @@ +// 14 14 14 0 1 2 6 +G_14_14_14_0 := Group; +G_14_14_14_1 := Group; +G_14_14_14_2 := Group; +G_14_14_14_6 := Group; +// 14 14 16 0 1 4 5 +G_14_14_16_0 := Group; +G_14_14_16_1 := Group; +G_14_14_16_4 := Group; +G_14_14_16_5 := Group; +// 14 14 18 0 4 +G_14_14_18_0 := Group; +G_14_14_18_4 := Group; +// 14 14 24 0 1 4 5 +G_14_14_24_0 := Group; +G_14_14_24_1 := Group; +G_14_14_24_4 := Group; +G_14_14_24_5 := Group; +// 14 14 26 0 1 3 4 5 7 +G_14_14_26_0 := Group; +G_14_14_26_1 := Group; +G_14_14_26_3 := Group; +G_14_14_26_4 := Group; +G_14_14_26_5 := Group; +G_14_14_26_7 := Group; +// 14 16 16 0 1 +G_14_16_16_0 := Group; +G_14_16_16_1 := Group; +// 14 16 18 0 +G_14_16_18_0 := Group; +// 14 16 24 0 1 +G_14_16_24_0 := Group; +G_14_16_24_1 := Group; +// 14 16 26 0 1 3 7 +G_14_16_26_0 := Group; +G_14_16_26_1 := Group; +G_14_16_26_3 := Group; +G_14_16_26_7 := Group; +// 14 18 18 0 +G_14_18_18_0 := Group; +// 14 18 24 0 +G_14_18_24_0 := Group; +// 14 18 26 0 3 +G_14_18_26_0 := Group; +G_14_18_26_3 := Group; +// 14 24 24 0 1 +G_14_24_24_0 := Group; +G_14_24_24_1 := Group; +// 14 24 26 0 1 3 7 +G_14_24_26_0 := Group; +G_14_24_26_1 := Group; +G_14_24_26_3 := Group; +G_14_24_26_7 := Group; +// 14 26 26 0 1 3 4 5 15 +G_14_26_26_0 := Group; +G_14_26_26_1 := Group; +G_14_26_26_3 := Group; +G_14_26_26_4 := Group; +G_14_26_26_5 := Group; +G_14_26_26_15 := Group; +// 16 16 16 0 1 +G_16_16_16_0 := Group; +G_16_16_16_1 := Group; +// 16 16 18 0 +G_16_16_18_0 := Group; +// 16 16 24 0 1 +G_16_16_24_0 := Group; +G_16_16_24_1 := Group; +// 16 16 26 0 1 +G_16_16_26_0 := Group; +G_16_16_26_1 := Group; +// 16 18 18 0 +G_16_18_18_0 := Group; +// 16 18 24 0 +G_16_18_24_0 := Group; +// 16 18 26 0 +G_16_18_26_0 := Group; +// 16 24 24 0 1 +G_16_24_24_0 := Group; +G_16_24_24_1 := Group; +// 16 24 26 0 1 +G_16_24_26_0 := Group; +G_16_24_26_1 := Group; +// 16 26 26 0 1 3 5 +G_16_26_26_0 := Group; +G_16_26_26_1 := Group; +G_16_26_26_3 := Group; +G_16_26_26_5 := Group; +// 18 18 18 0 +G_18_18_18_0 := Group; +// 18 18 24 0 +G_18_18_24_0 := Group; +// 18 18 26 0 +G_18_18_26_0 := Group; +// 18 24 24 0 +G_18_24_24_0 := Group; +// 18 24 26 0 +G_18_24_26_0 := Group; +// 18 26 26 0 1 +G_18_26_26_0 := Group; +G_18_26_26_1 := Group; +// 24 24 24 0 1 +G_24_24_24_0 := Group; +G_24_24_24_1 := Group; +// 24 24 26 0 1 +G_24_24_26_0 := Group; +G_24_24_26_1 := Group; +// 24 26 26 0 1 3 5 +G_24_26_26_0 := Group; +G_24_26_26_1 := Group; +G_24_26_26_3 := Group; +G_24_26_26_5 := Group; +// 26 26 26 0 1 5 21 +G_26_26_26_0 := Group; +G_26_26_26_1 := Group; +G_26_26_26_5 := Group; +G_26_26_26_21 := Group; diff --git a/src/groupparse.jl b/src/groupparse.jl index 1790678..4f39a46 100644 --- a/src/groupparse.jl +++ b/src/groupparse.jl @@ -29,20 +29,19 @@ function parse_grouppresentations(filename::AbstractString) groups = Dict{String, FPGroup}() names_idcs = findall(x->startswith(x, "//"), groups_strs) - push!(names_idcs, names_idcs[end]+1) + push!(names_idcs, length(groups_strs)+1) for (first_idx, next_idx) in zip(names_idcs, Iterators.rest(names_idcs, 2)) - m = match(r"//\s?((\d{2}\s){2}\d\d).*", groups_strs[first_idx]) - - name = replace(m.captures[1], " "=>"_") + m = match(r"//\s?((\d{2}\s?){3}).*", groups_strs[first_idx]) + name = replace(strip(m.captures[1]), " "=>"_") for idx in first_idx+1:next_idx-1 - m = match(r"(.*)\s:=\sGroup<(.*)\|(.*)>", groups_strs[idx]) + m = match(r"G((_\d\d){3})?_(\d+)\s:=\sGroup<(.*)\|(.*)>", groups_strs[idx]) if isnothing(m) - @warn "Can't parse presentation at line $idx:\n $(str[idx])" + @warn "Can't parse presentation at line $idx:\n $(groups_strs[idx])" else - group_name = "$(name)_$(m.captures[1])" - G = parse_magma_grouppresentation(m.captures[2], m.captures[3]) + group_name = "$(name)_$(m.captures[3])" + G = parse_magma_grouppresentation(m.captures[4], m.captures[5]) groups[group_name] = G end end