Flex和Bison忽略了函数体
Flex and Bison ignore function body
嗨,我正在尝试使用 flex 和 bison 制作简单的 C 编译器来检查是否实现了每个声明的函数。我的问题是我想跳过函数体中的所有内容。例
int main()
{
int n, flag;
printf("Enter a positive integer: ");
scanf("%d", &n);
// Check prime number
flag = checkPrimeNumber(n);
if (flag == 1)
printf("%d is a prime number.n", n);
else
printf("%d is not a prime number.n", n);
// Check Armstrong number
flag = checkArmstrongNumber(n);
if (flag == 1)
printf("%d is an Armstrong number.", n);
else
printf("%d is not an Armstrong number.",n);
return 0;
}
所有"{"和"}"的一切。但是在函数内部,我们可以有 if(({} 和 while 等。
如何防止这种情况
现在我的 lex 文件
%{
#include "compilator_p.hpp"
#include <stdlib.h>
#include <string.h>
void yyerror(const char *);
%}
alpha [a-zA-Z_]
digit [0-9]
%%
[t] ;
[n] { yylineno = yylineno + 1;}
int return INT;
float return FLOAT;
char return CHAR;
void return VOID;
"{".*"}" return BODY;
^"#include ".+ ;
[/][*][^*]*[*]+([^*/][^*]*[*]+)*[/] { /* DO NOTHING */ }
";" return yytext[0];
"(" return yytext[0];
")" return yytext[0];
"," return yytext[0];
%%
除非你需要从头开始为学校作业编写解析器,否则我建议你使用现有的语法(如 https://www.lysator.liu.se/c/ANSI-C-grammar-y.html(,并将大部分操作留空。
相关文章:
- 用C++在单独的头文件中完成函数体
- 我可以在 C++ 中的函数体之外进行操作吗?
- 有没有办法在不使用 #ifdef 的情况下不编译发布版本中的单元测试函数体?
- binary_search() 函数在我的函数体中不起作用
- 如何显示函数开始、结束行和函数体?
- 主函数体未检测到对重载可变变量模板化函数C++的调用
- 错误:函数声明符之后的预期函数体
- C++编译器如何检测非常量函数体
- 使用委托调用构造函数和在另一个构造函数体中调用的区别
- Flex和Bison忽略了函数体
- 我看到将我的类成员函数指定为内联实际上会增加执行时间,即使函数体非常小
- 为什么将函数体放置在单独的源代码文件而不是标题中的C/C 中
- 类(模板)成员函数体内部的ADL查找
- 如果未设置编译符号,如何排除方法?如何传递可变数量的参数并在函数体中格式化它们
- constexpr函数体c++14中可以有非文字类型的定义变量吗
- 内联失败:可以在链接时覆盖函数体
- C++函数体中的Const变量
- 在类定义之外的模板类成员函数体中,何时需要模板参数
- c++--直接--访问非成员函数体中的类成员
- 是否可以在初始化列表以外的构造函数体中进行一些计算