marginally less unreadable
This commit is contained in:
@@ -75,56 +75,31 @@ fn run2(s: []const u8) !u64 {
|
|||||||
try s_fbs.seekBy(-1);
|
try s_fbs.seekBy(-1);
|
||||||
break :sw STATE.waiting;
|
break :sw STATE.waiting;
|
||||||
},
|
},
|
||||||
|
|
||||||
STATE.waiting => {
|
STATE.waiting => {
|
||||||
switch (reader.readByte() catch {
|
switch (reader.readByte() catch { break :read; }) {
|
||||||
break :read;
|
'm' => { break :sw STATE.m; },
|
||||||
}) {
|
'd' => { break :sw STATE.d; },
|
||||||
'm' => {
|
else => { break :sw STATE.waiting; },
|
||||||
break :sw STATE.m;
|
|
||||||
},
|
|
||||||
'd' => {
|
|
||||||
break :sw STATE.d;
|
|
||||||
},
|
|
||||||
else => {
|
|
||||||
break :sw STATE.waiting;
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
STATE.m => if (reader.readByte() catch {
|
|
||||||
break :read;
|
|
||||||
} == 'u') STATE.u else STATE.rewind,
|
|
||||||
STATE.u => if (reader.readByte() catch {
|
|
||||||
break :read;
|
|
||||||
} == 'l') STATE.l else STATE.rewind,
|
|
||||||
STATE.l => if (reader.readByte() catch {
|
|
||||||
break :read;
|
|
||||||
} == '(') STATE.open else STATE.rewind,
|
|
||||||
|
|
||||||
STATE.d => if (reader.readByte() catch {
|
STATE.m => if (reader.readByte() catch { break :read; } == 'u') STATE.u else STATE.rewind,
|
||||||
break :read;
|
STATE.u => if (reader.readByte() catch { break :read; } == 'l') STATE.l else STATE.rewind,
|
||||||
} == 'o') STATE.o else STATE.rewind,
|
STATE.l => if (reader.readByte() catch { break :read; } == '(') STATE.open else STATE.rewind,
|
||||||
STATE.o => switch (reader.readByte() catch {
|
|
||||||
break :read;
|
STATE.d => if (reader.readByte() catch { break :read; } == 'o') STATE.o else STATE.rewind,
|
||||||
}) {
|
STATE.o => switch (reader.readByte() catch { break :read; }) {
|
||||||
'n' => STATE.n,
|
'n' => STATE.n,
|
||||||
'(' => STATE.open_do,
|
'(' => STATE.open_do,
|
||||||
else => STATE.rewind,
|
else => STATE.rewind,
|
||||||
},
|
},
|
||||||
STATE.open_do => if (reader.readByte() catch {
|
STATE.n => if (reader.readByte() catch { break :read; } == '\'') STATE.apo else STATE.rewind,
|
||||||
break :read;
|
STATE.apo => if (reader.readByte() catch { break :read; } == 't') STATE.t else STATE.rewind,
|
||||||
} == ')') STATE.close_do else STATE.rewind,
|
STATE.t => if (reader.readByte() catch { break :read; } == '(') STATE.open_dont else STATE.rewind,
|
||||||
STATE.n => if (reader.readByte() catch {
|
|
||||||
break :read;
|
STATE.open_do => if (reader.readByte() catch { break :read; } == ')') STATE.close_do else STATE.rewind,
|
||||||
} == '\'') STATE.apo else STATE.rewind,
|
STATE.open_dont => if (reader.readByte() catch { break :read; } == ')') STATE.close_dont else STATE.rewind,
|
||||||
STATE.apo => if (reader.readByte() catch {
|
|
||||||
break :read;
|
|
||||||
} == 't') STATE.t else STATE.rewind,
|
|
||||||
STATE.t => if (reader.readByte() catch {
|
|
||||||
break :read;
|
|
||||||
} == '(') STATE.open_dont else STATE.rewind,
|
|
||||||
STATE.open_dont => if (reader.readByte() catch {
|
|
||||||
break :read;
|
|
||||||
} == ')') STATE.close_dont else STATE.rewind,
|
|
||||||
|
|
||||||
STATE.close_do => {
|
STATE.close_do => {
|
||||||
do_mul = true;
|
do_mul = true;
|
||||||
@@ -185,18 +160,10 @@ fn run1(s: []const u8) !u64 {
|
|||||||
// state transition
|
// state transition
|
||||||
state = sw: {
|
state = sw: {
|
||||||
break :sw switch (state) {
|
break :sw switch (state) {
|
||||||
STATE.waiting => if (reader.readByte() catch {
|
STATE.waiting => if (reader.readByte() catch { break :read; } == 'm') STATE.m else STATE.waiting,
|
||||||
break :read;
|
STATE.m => if (reader.readByte() catch { break :read; } == 'u') STATE.u else STATE.waiting,
|
||||||
} == 'm') STATE.m else STATE.waiting,
|
STATE.u => if (reader.readByte() catch { break :read; } == 'l') STATE.l else STATE.waiting,
|
||||||
STATE.m => if (reader.readByte() catch {
|
STATE.l => if (reader.readByte() catch { break :read; } == '(') STATE.open else STATE.waiting,
|
||||||
break :read;
|
|
||||||
} == 'u') STATE.u else STATE.waiting,
|
|
||||||
STATE.u => if (reader.readByte() catch {
|
|
||||||
break :read;
|
|
||||||
} == 'l') STATE.l else STATE.waiting,
|
|
||||||
STATE.l => if (reader.readByte() catch {
|
|
||||||
break :read;
|
|
||||||
} == '(') STATE.open else STATE.waiting,
|
|
||||||
|
|
||||||
STATE.open => {
|
STATE.open => {
|
||||||
var fbs = std.io.fixedBufferStream(&buf);
|
var fbs = std.io.fixedBufferStream(&buf);
|
||||||
|
Reference in New Issue
Block a user