在我的日常工作,我,和别人在我的团队编写了大量的硬件模型在电气电子工程师学会AMS、语言支持主要是通过商业销售商和一些开放源代码模拟器项目。一件事,这将使支持每个人的代码的更有用的将是一个棉绒会检查我们的代码常见的问题,并协助执行一个共用代码格式风格。我当然希望能够加入我自己的规则之后,我证明他们用我自己,促进他们的团队其他人..我不介意做这项工作,有工作要做,但当然也要利用工作的其他现有的项目。

不允许语言语法中的一个yacc或野牛格式给我一条腿?或者我是不是应该吸的每种语言发言变成一个perl串,并采用模式匹配找到的东西,我不喜欢?

(最语法和汇编的错误很容易陷入商业工具..但是,我们有一些我们自己的扩张.)

有帮助吗?

解决方案

lex/flex和yacc/bison提供易于使用、很好理解的语法分析程序和分析器发电机,并且我真的建议做东西一样,为反对这样做在程序上是在例如Perl。经常表达强有力的材料为翻开字相对的,但不完全固定的结构。与任何真正的编程语言中,大小国家的机会只是难以控制的,与任何短暂的一个真正的语法分析程序/分析器(tm)。想象一下处理所有可能的交错的关键字标识符,营运商,多余的括号,无分号,以及评论意见,允许在什么样的电气电子工程师学会AMS,与普通的表达方式和程序的代码单。

不可否认,有一个大的学习曲线,但编写文法,可以使用flex和野牛,并且在做一些有用的东西的语法树出来的野牛,将能更好地利用你的时间比写一吨的特殊情况下的串处理的代码的更自然地处理与使用的语法树放在第一位。此外,什么你学会了写这样会真正的扩大的技能方式编写了一堆的哈克Perl代码就不会,这样如果你有的手段,我极力推荐;-)

此外,如果你懒,检查了日食的插件,这一做法突出显示和基本重构为电气电子工程师学会和VHDL.他们在一个令人难以置信的原始状态,上次我检查,但他们可能有一些代码你要找的,或至少一个基线的一块代码看到更好的提前通知你的方法在滚你自己的。

其他提示

我已经写了几个电气电子工程师学分析器和我建议PCCTS/这些代码如果你最喜欢的编程语言是C/C++/Java。还有一个 PCCTS/这些代码电气电子工程师学语法 你可以开始。我最喜欢的分析器发生器 这是基于共同的口齿不清。

当然大工作是指定所有掉毛规则。它是有道理做出某种语言指定的掉毛规则。

不要低估量的工作进入了一个棉绒.分析是容易的部分因为你有工具(野牛,flex,这些代码/PCCTS)自动化多。

但是,一旦你有一个分析,然后什么?你必须建立一个语义树的设计。这取决于如何复杂的投入,必须制定电气电子工程师学会AMS设计(即解决参数,产生展开,等等。如果您使用的这些特点)。并且只有到那时,你可以尝试实施规则。

我会认真考虑其他可能的解决方案之前编写棉绒,除非用户的数量和潜在节省时间,从而证明的发展时间。

在试图找到我的答案,我发现这个 这些代码 -可能有用

如果你使用Java在所有(并因此想法),IDE的 扩展定义的语言 可能有用

yacc/bison 肯定给了你一条腿,因为良好掉毛需要分析程序。Regex(true regex,至少)可能复盖琐碎的情况,但是很容易编写代码,regex不匹配,但是仍然很糟糕的风格。

这些代码看起来是一个替代路径的更多共同("确定" 听说他们之前)YACC/野牛的方法,其中事实证明,通常也使用LEX/FLEX作为前端。

快速阅读挠人页样的让我觉得这可能是框架,regex类型的想法..

好..我会让这炖肉一点时间,然后看看我能快建立一个原型的分析器在一个或另一个。

和一个小点的时间

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top