mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-05-14 23:22:52 +00:00
This commit replaces the former, hand-written parser with a new one that can be generated automatically according to a state change diagram. The new `EscapeSequenceParser` class provides a more ergonomic interface to dealing with escape sequences. This interface has been inspired by Alacritty's [vte library](https://github.com/alacritty/vte/). I tried to avoid changing the application logic inside the `Terminal` class. While this code has not been thoroughly tested, I can't find regressions in the basic command line utilities or `vttest`. `Terminal` now displays nicer debug messages when it encounters an unknown escape sequence. Defensive programming and bounds checks have been added where we access parameters, and as a result, we can now endure 4-5 seconds of `cat /dev/urandom`. :D We generate EscapeSequenceStateMachine.h when building the in-kernel LibVT, and we assume that the file is already in place when the userland library is being built. This will probably cause problems later on, but I can't find a way to do it nicely.
12 lines
345 B
CMake
12 lines
345 B
CMake
# FIXME: this assumes that EscapeSequenceStateMachine.h has been
|
|
# already generated when the kernel was built. This will probably
|
|
# mess builds up later on.
|
|
set(SOURCES
|
|
Line.cpp
|
|
Terminal.cpp
|
|
TerminalWidget.cpp
|
|
EscapeSequenceParser.cpp
|
|
)
|
|
|
|
serenity_lib(LibVT vt)
|
|
target_link_libraries(LibVT LibC LibCore LibGUI LibGfx LibDesktop)
|