我的任务是扫描程序。我的字母表如下:
all english letters (upper and lower), digits,
plus the extra character _ (underscore) & ws. Identifier begins with a letter and can
continue with any number of letters, digits or _ up to 10 significant characters.
我想确保我的桌子是正确的。由于某种原因,我的扫描仪不使用下划线。我可以用字母和数字来工作。我正试图缩小我的问题,并希望确保它不是表格。
这是我的表,只是部分内容:
// state token ws L D _
{ 0, 0, 0, 1, 11, 21,
{ 1, id_tk, -1, 2, 2, 2,
{ 2, id_tk, -1, 3, 3, 3,
{ 3, id_tk, -1, 4, 4, 4,
{ 4, id_tk, -1, 5, 5, 5,
{ 5, id_tk, -1, 6, 6, 6,
{ 6, id_tk, -1, 7, 7, 7,
{ 7, id_tk, -1, 8, 8, 8,
{ 8, id_tk, -1, 9, 9, 9,
{ 9, id_tk, -1, 10, 10, 10,
{ 10, id_tk, -1, -2, -2, -2,
{ 11, num_tk, -1, -1, 12, -2,
{ 12, num_tk, -1, -1, 13, -2,
{ 13, num_tk, -1, -1, 14, -2,
{ 14, num_tk, -1, -1, 14, -2,
{ 15, num_tk, -1, -1, 15, -2,
{ 16, num_tk, -1, -1, 16, -2,
{ 17, num_tk, -1, -1, 17, -2,
{ 18, num_tk, -1, -1, 18, -2,
{ 19, num_tk, -1, -1, 19, -2,
{ 20, num_tk, -1, -1, 20, -2,
{ 21, undrs_tk, -1, -2, -2, -2,
传奇如下:
WS = whitespace
L = letter
D = digit
_ = underscore
-1 = final state
-2 = error state
这个表是否与上述字母表一致?我非常感谢你的帮助。感谢
答案 0 :(得分:1)
您的规范说标识符包含10个重要字符,这通常意味着标识符可以更长,只是为了比较而忽略超过10的任何字符。您的自动机拒绝任何超过10个字符的标识符。
您的规范未指定num_tk和undrs_tk应该是什么,因此我无法对其进行评论。
表格中处理下划线没有明显问题。如果它不起作用,则问题可能在您未显示的驱动程序代码中。