草庐IT

go - 为什么在定义更多类型时 go yacc 解析器会崩溃?

我写了一个包含更多类型的test.y文件。经过一定的限制,当我用命令编译文件时,去工具yacc测试它panic,“yacc.go:891中的索引超出范围”当我查看文件时https://golang.org/src/cmd/yacc/yacc.go,我在定义常量时看到了这个评论“以下是根据内存大小调整的”他们在第74行(在上面链接中提到的文件中)将类型定义的数量限制为63(NTYPES=63)是有原因的 最佳答案 “它panic,”yacc.go:891中的索引超出范围“”我遇到了同样的问题,因为我需要更多类型(非术语和术语类型),而

go - 为什么在定义更多类型时 go yacc 解析器会崩溃?

我写了一个包含更多类型的test.y文件。经过一定的限制,当我用命令编译文件时,去工具yacc测试它panic,“yacc.go:891中的索引超出范围”当我查看文件时https://golang.org/src/cmd/yacc/yacc.go,我在定义常量时看到了这个评论“以下是根据内存大小调整的”他们在第74行(在上面链接中提到的文件中)将类型定义的数量限制为63(NTYPES=63)是有原因的 最佳答案 “它panic,”yacc.go:891中的索引超出范围“”我遇到了同样的问题,因为我需要更多类型(非术语和术语类型),而

c++ - 在哪里可以找到 C++ 语言的标准 BNF 或 YACC 语法?

我正在尝试开发一种代码生成器来帮助对遗留的C/C++混合项目进行单元测试。我没有发现任何一种独立的工具可以从声明中生成stub代码。所以我决定建一个,应该不会那么难。拜托,任何人都可以给我一个标准的语法链接,用yacc语言更好地描述。希望我不是在重新发明轮子,在这种情况下请帮助我。最好的问候,凯文 最佳答案 来自C++FAQLite:38.11Isthereayacc-ableC++grammar?Theprimaryyaccgrammaryou'llwantisfromEdWillink.Edbelieveshisgrammari

c++ - 在哪里可以找到 C++ 语言的标准 BNF 或 YACC 语法?

我正在尝试开发一种代码生成器来帮助对遗留的C/C++混合项目进行单元测试。我没有发现任何一种独立的工具可以从声明中生成stub代码。所以我决定建一个,应该不会那么难。拜托,任何人都可以给我一个标准的语法链接,用yacc语言更好地描述。希望我不是在重新发明轮子,在这种情况下请帮助我。最好的问候,凯文 最佳答案 来自C++FAQLite:38.11Isthereayacc-ableC++grammar?Theprimaryyaccgrammaryou'llwantisfromEdWillink.Edbelieveshisgrammari

LEX和YACC警告,不按预期工作

Lexer.l%{#include"y.tab.h"%}%%"define"return(TK_KEY_DEFINE);"as"return(TK_KEY_AS);"is"return(TK_KEY_IS);"if"return(TK_KEY_IF);"then"return(TK_KEY_THEN);"else"return(TK_KEY_ELSE);"endif"return(TK_KEY_ENDIF);"with"return(TK_KEY_WITH);"DEFINE"return(TK_KEY_DEFINE_UC);"AS"return(TK_KEY_AS_UC);"IS"return

c++ - 在使用 yacc 和 lex 的 CodeBlocks/Eclipse 中构建 C++ 项目

我有以下makefile,它运行良好,可以构建我的应用程序。我如何配置一个IDE(比如代码块、eclipse)来编译它。当我从eclipse/codeblocks尝试时,与yacc关联的C/C++文件出现一些错误。有什么方法可以使eclipse/codeblocks在构建/链接时直接对某些组件使用目标文件,而无需指定(包括在项目中)相应的.cc文件?如果是这样,我可以直接使用y.tab.o和lex.yy.o,因为它们在我的项目中没有改变。CC=g++-O2-Wno-deprecatedtag=-iifdeflinuxtag=-nendifmain.out:Sentence.oXOper

c++ - 将 Yacc/Bison 解析器与 C++ 程序连接

这不是thisquestion的拷贝因为解决方案不是使用解析器!我有一个Bison解析器,可以通过执行./parser来运行.我想从我的C++程序中调用Bison解析器。我不想做的是system(./parser因为那将假设解析器是预编译的,然后我的整个程序将不是平台独立的。如果我有一个函数:voidfoo(file_name){//callparseronfile_name}那怎么办呢?有任何想法吗?我认为这是调用yyparse或其他东西的情况,但我没有得到任何结果!谢谢:). 最佳答案 您使用的是适用于C++的版本吗?我用的是A

c++ - 有 Yacc 语法调试器吗?

我一直在帮助扩充我公司内一种已有20多年历史的专有语言。它是一种大型的图灵完备语言。将它翻译成另一种语法体系(例如Antlr)不是一种选择(我无法决定这一点)。在大多数情况下,扩展语法进行得很顺利。但每隔一段时间我就会得到一个reduce-reduce或shift-reduce很难消除有时(对我虚弱的大脑)来说是没有意义的在痛苦地盯着y.output文件和实验性语法重构之后,我通常已经到达了我想去的地方。有时我不得不做出无法令人满意的妥协。那么,是否有任何工具可以吸收yacc语法,从而增强浏览、试验并允许调试更改?如果我添加一个产生式,我希望看到的不仅仅是“无处不在的原子产生式”(想想

Python/YACC 词法分析器 : Token priority?

我正在尝试在我的语法中使用保留字:reserved={'if':'IF','then':'THEN','else':'ELSE','while':'WHILE',}tokens=['DEPT_CODE','COURSE_NUMBER','OR_CONJ','ID',]+list(reserved.values())t_DEPT_CODE=r'[A-Z]{2,}'t_COURSE_NUMBER=r'[0-9]{4}'t_OR_CONJ=r'or't_ignore='\t'deft_ID(t):r'[a-zA-Z_][a-zA-Z_0-9]*'ift.valueinreserved.val

c# - C# 是否有(直接)flex/yacc 端口?或者人们为 C# 使用什么词法分析器/解析器?

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。我可能是错的,但目前看来还没有适用于C#/.NET的直接flex/bison(lex/yacc)端口。对于LALR解析器,我找到了GPPG/GPLEX,对于LL解析器,有著名的ANTLR。但是,我想尽可能多地重用我的flex/bison语法。是否有用于C#的flex/bison的任何直接端口?人们通常为C#使用什么词法分析器/解析器?做出这样的选择有什么理