Working mapping

This commit is contained in:
2026-05-19 01:47:02 +02:00
parent 11e408cc17
commit 2b43e0c004
2 changed files with 20 additions and 5 deletions
+4 -2
View File
@@ -2,8 +2,10 @@ WHITESPACE = _{ " " | "\t" | "\r" | "\n" }
integer = @{ ASCII_DIGIT+ }
map = { "/*" ~ integer ~ ":" ~ integer ~ "*/" }
next_line = { "+" }
map = { "/*" ~ integer ~ ":" ~ integer ~ next_line? ~ "*/" }
non_map = { (!map ~ ANY)+ }
mapping = { map | non_map }
mapping = { SOI ~ (map | non_map)* ~ EOI }
+16 -3
View File
@@ -16,18 +16,31 @@ pub struct RustMap(pub usize, pub usize);
pub fn get_mapping(input: &str) -> HashSet<(RustMap, MistMap)> {
let mut mapping = HashSet::new();
let pairs = MistMapperParser::parse(Rule::mapping, input).unwrap();
let pairs = MistMapperParser::parse(Rule::mapping, input)
.unwrap()
.next()
.unwrap()
.into_inner();
for pair in pairs {
if pair.as_rule() == Rule::map {
let rs = pair.as_span().start_pos().line_col();
let mut inner = pair.into_inner();
let (line, col) = (
inner.next().unwrap().as_str().parse().unwrap(),
inner.next().unwrap().as_str().parse().unwrap(),
);
mapping.insert((
RustMap(rs.0, rs.1),
MistMap(
inner.next().unwrap().as_str().parse().unwrap(),
inner.next().unwrap().as_str().parse().unwrap(),
if inner.next().is_some() {
line
} else {
line - 1
},
col,
),
));
}