【问题标题】:dejagnu scan-assembler regexdejagnu 扫描汇编程序正则表达式
【发布时间】:2016-05-19 19:21:17
【问题描述】:

我想用 DejaGnu 扫描一个程序集文件:

ld.h %d2,

但我无法解释点字符和数字字符。 我尝试了以下方法:(一个反斜杠,两个反斜杠和括号)

/* { dg-final { scan-assembler-times "ld\.h\t%d\d," 1 { target { tricore-*-* } } } } */
/* { dg-final { scan-assembler-times "ld\\.h\t%d\\d," 1 { target { tricore-*-* } } } } */
/* { dg-final { scan-assembler-times "ld[.]h\t%d[0-9]," 1 { target { tricore-*-* } } } } */
  1. 带有一个反斜杠的情况:它只是消失了,因此正则表达式的含义正在改变。
  2. 带有两个反斜杠:它保留两个反斜杠,因此在扫描期间没有匹配项。
  3. 带括号:出现错误。

输出:

Running ../../../../testsuite/mytest/TX-1234.exp ...
PASS: testsuite/mytest/size16.c (test for excess errors)
FAIL: testsuite/mytest/size16.c scan-assembler-times \tld.h\t%dd, 1
FAIL: testsuite/mytest/size16.c scan-assembler-times \tld\\.h\t%d\\d, 1
ERROR: (DejaGnu) proc "." does not exist.

那么,我该如何解释\. 字符或\d 十进制字符?

【问题讨论】:

    标签: c regex assembly


    【解决方案1】:

    这个:

    (ld\.h \%d\d\,) 
    

    将验证 ld.h %d2, 但是您仍然必须检查除了所有需要的结果之外是否没有错误的结果,如果是这样,请检查它。 享受

    【讨论】:

    • 这个表达式也失败了。 DejaGnu 的解析器不是常规的 RegEx 解析器。
    【解决方案2】:

    表达式经过过滤器,因此点字符的正确解释是 \\\. ( \\\. -> \. )。 \d 在 DejaGnu 中不起作用。请改用\[0-9\] (\[0-9\] -> [0-9])。

    【讨论】:

      猜你喜欢
      • 2016-01-23
      • 2011-12-07
      • 2015-06-26
      • 2012-01-06
      • 2014-10-31
      • 2021-05-20
      • 2013-04-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多