yacc

    1热度

    2回答

    嗨,我正在写一个简单的yacc程序,它需要一个程序代码并计算它有多少个分配语句。 例如,对于下面的代码片段: void main() { int a = 3; int bb = 10; } 我想我YACC打印出有2分分配的句子。由于我是初学者,因此我在网上找到了来自Oreily书籍的示例代码并修改了代码。 yacc.y %{ 2 #include <stdio.h>

    0热度

    1回答

    %option case-insensitive %option noyywrap %option yylineno id [a-zA-Z][a-zA-Z_0-9]* integer (0[xX][0-9A-Fa-f]+)|([0-9]+) real [0-9]*\.[0-9](e|E)?[0-9]* undefined [^"\r\n \t] %x ST

    1热度

    1回答

    我正在编写一个简单的Yacc程序,它接收程序代码并返回int和double类型的变量和函数的计数。 我遇到了一个奇怪的问题,即当有一条匹配的规则时,程序返回一个语法错误,但是这条线拾起了一条不同的规则。我带来了显示了这个错误代码的组成部分:(如果你看到未使用的变量,那是因为我删除了不相关的这种错误的其他部分) YACC代码 %{ #define YYDEBUG 1 #include <stdi

    0热度

    1回答

    以下是YACC代码: %{ #include<stdio.h> #include<math.h> %} %token NUMBER %left '-' '+' %left '*' '/' %nonassoc UMINUS %% statement:expression {printf("Answer=%g\n",$1);} ; expression:expression'+'

    0热度

    1回答

    我知道我的语法错误的部分原因,但我不知道如何解决它,我甚至使用%左和右,但它没有帮助。任何人都可以帮助我找出这个语法有什么问题。 在此先感谢您的帮助。 %token VARIABLE NUM %right '=' %left '+' '-' %left '*' '/' %left '^' %start S_PROOP EQUATION_SEQUENCE : FORMULA

    0热度

    1回答

    编辑#1:我认为问题出在我的.l文件中。我不认为规则被视为规则,我不知道如何将规则的终端视为字符串。 我编译器类的最后一个项目是为一个简单的SQL语法编写一个.l和一个.y文件。我没有Flex或Yacc的经验,所以我写的所有东西都拼凑在一起。我只对这些文件的工作原理有一个基本的了解,所以如果你发现我的问题,你是否也可以解释文件的那部分应该做什么?我甚至不确定'%'符号的作用。 基本上,当我尝试解析

    5热度

    2回答

    我试图创建一个使用golang's yacc tool解析器。我发现nex可以简化为解析器创建词法分析器。我现在的问题是,生成的分析器没有方法或字段让我访问解析结果。我可以将分析结果存储在全局变量中,但这似乎是错误的。 目前我已经添加以下内容作为初次尝试我parser.y文件的顶部: type ResultParser interface { yyParser // Generated

    -1热度

    1回答

    我正在写一个解析器一个相当简单的语言。该语言将允许描述具有房间的游戏。房间包含“人物”和“事物”。角色有“选项”,可以让你与他们互动;选项可以在开始与角色交互后形成允许多个分支的树。 我经历了几次反复去了,问了一些问题,并最终得到了我的分析器进行编译。但是当我在示例输入上运行它时,我得到了语法错误,但没有指出错误发生在哪一行。 我用我的谷歌福,发现应该生成代码,将让yylloc充满了当前的行号旗-

    -2热度

    1回答

    我正在使用lex和yacc,我需要创建两个输出文件。我需要做什么(如果有任何功能可以制作多个文件),以及如何命名每个文件? 使用lex和yacc,我需要用css测试一个html文件,并从中生成两个文件,一个使用html,另一个使用css。基本上从HTML分离的CSS,并把它放在不同的文件。 如果有人可以提供如何生成两个输出文件的简单示例。

    0热度

    3回答

    我想在YACC文件中添加结构工会,但我发现这个错误: "error : member 'Info YYSTYPE ::info' with constructor not allowed in union " %{ #include <cstdio> #include <iostream> using namespace std; extern "C" int yylex();