flex / c ++正则表达式逻辑错误
flex / c++ regex logic error
我尽力包含所有(且仅)所需的信息。让我知道看到更多是否可以帮助你帮助我。
我的正则表达式有问题。我的程序打印到.txt文件词法 - 令牌对。除了标识符和整数外,一切正常。例如,标识符的令牌为 262。
示例输入文件:
function main a: integer returns integer;
b: integer is a * 2;
示例输出:
function - 269
maina - 262
integer - 272
returns - 274
integer - 272
; - 59
b - 262
integer - 272
is - 271
a - 262
2 - 263
; - 59
正确的输出是:
function - 269
main - 262
a - 262
: - 58
integer - 272
returns - 274
integer - 272
; - 59
b - 262
: - 58
integer - 272
is - 271
a - 262
* - 261
2 - 263
; - 59
总而言之,它结合了两个由空格分隔的标识符,并且还会删除标识符之后的任何标记。
您只是忘记在某些名称周围加上大括号。而不是
{letter}(letter|digit)*
你应该写
{letter}({letter}|{digit})*
您还需要将函数、整数和返回的规则移到标识符规则之前,因为标识符规则也与这些规则匹配。
相关文章:
- 在 C++ 中使用正则表达式错误时出现问题 括号表达式中的范围无效
- FindPackageHandleStandardArgs.cmake:137 的 CMake 错误(消息):找不到 Boost (缺少:正则表达式)(找到合适的版本"1.72.0",
- std::正则表达式捕获组语法错误
- 带有正则表达式的 c++ 中的错误
- 为什么这个正则表达式在 STL 世界中是错误的?
- C++抛出错误"Invalid special open parenthesis."中的正则表达式
- 正则表达式分段错误
- 使用boost正则表达式时出现shared_ptr错误
- 正则表达式中带有卷轴大括号的正则表达式错误
- 提升正则表达式错误:未初始化的提升::match_results
- C++ 正则表达式错误(未处理的异常)
- 提升正则表达式中的链接器错误
- Ubuntu 上的正则表达式错误
- C++正则表达式错误
- Mingw32-w64 GCC 4.9.2 正则表达式错误,或者我不知道C++
- 函数正则表达式C++在 linux(CentOS) 中遇到错误,但在 OSX 中
- 在 C++14 模式下为 libstdc++ 编译 clang 正则表达式程序会导致错误
- boost的正则表达式错误
- 在c++中使用正则表达式时出现错误
- 提升::正则表达式在长表达式不匹配时抛出错误