我为我的大学开发了一个迷你贝壳。要解析命令行,我使用lex和yacc。
当我向上/向下/向左/向右箭头按下字符串“^ [[显示A或B或C或D时。
按下此键时是否可以识别此字符以执行操作?也许使用ncurses库的功能(我在Linux中)?
我表示,bash使用yacc语法(https://en.wikipedia.org/wiki/GNU_bison),我们可以使用箭头键。所以我认为是可能的。
谢谢。
答案 0 :(得分:4)
你可以......
基本上, yacc
使用 lex
终端令牌(符号常量)为您提供状态机>。可以把它想象成一个很大的switch
陈述。
curses 返回的箭头键( ,如果 ,您调用keypad
)在 curses <中定义/ em>头文件作为符号常量,例如 KEY_UP
, KEY_HOME
等等。{{3}中有一个列表手册页。
curses 库使用自己的状态机读取字符序列,根据终端描述匹配序列并返回常量。
是否从 lex
或 curses
获取常量并不重要。 yacc并不关心。此外,您是否在这种情况下使用 lex
,或者直接拨打 getch 可能无关紧要(取决于您的计划组织方式)。
但大多数人都不会为了解析输入缓冲区上的编辑序列而烦恼lex / yacc。