如何在Erlang中创建一个解析器。

6
如何在Erlang中创建一个解析器来接收一个正确格式化的命题公式并将其转换为某种内部表示。
列出用于在Erlang中创建解析器的可用工具以及使用这些工具的项目可能会有所帮助。

为了回答你的问题,需要了解更多的细节。 - user4651282
2
查阅 leexyecc 的文档。 - Steve Vinoski
以下是如何建立自己的表达式解析器,而无需使用解析器生成工具的方法:https://dev59.com/v3E95IYBdhLWcg3wlu6z#2336769 - Ira Baxter
1个回答

8
你可以使用leexyeccspell1和其他一些工具。
  • leex:一种基于正则表达式的词法分析器生成器,类似于lex或flex。Lexer文件包括DefinitionRules和Erlang代码部分。

  • yecc:一种LALR-1解析器生成器,类似于yacc。解析器生成器文件包括Non-terminalsTerminalsRulesRoot-symbols部分。

  • spell1:一种LL(1)解析器生成器,用于Erlang和LFE,这是一种在Erlang之上的Lisp方言语言。

  • neotoma:用于Erlang的Packrat解析器生成器,用于解析表达式语法(PEGs)。


一些使用它们的开源项目:

  • Efene:面向简单性和易用性的Erlang编程语言的替代语法。它使用leex和yecc来解析Efene的语言语法。
  • ErlyDTL:针对Erlang的Django模板,使用leex和yecc来解析基于Django的模板语言。
  • Tnesia:时间序列数据库,具有类似SQL的语言(TQL),使用leex和yecc实现。

幻灯片包含一些关于如何使用它们的有用示例。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接