在工作中,我的团队使用 Ruby 和 Treetop 解析器创建了我们自己的小型脚本语言。 该语言本身的语法与 Ruby 非常相似。 我正在使用 Ruby 和 Ruby 扩展名来突出显示我们的文件的这种语言的语法,但是 Ruby 扩展名会引发错误,因为该语言实际上不是 Ruby 有没有办法禁用特定文 ...
在工作中,我的团队使用 Ruby 和 Treetop 解析器创建了我们自己的小型脚本语言。 该语言本身的语法与 Ruby 非常相似。 我正在使用 Ruby 和 Ruby 扩展名来突出显示我们的文件的这种语言的语法,但是 Ruby 扩展名会引发错误,因为该语言实际上不是 Ruby 有没有办法禁用特定文 ...
我正在尝试用 Treetop 编写一个简单的计算语法。 为了简化这个问题的示例,我只使用变量、数字和+运算符。 我希望能够写出这样的表达式: A 1 A+B A+1 A+1+B 这是我的语法: 当我运行它时,它会无限递归。 谷歌搜索了一段时间后,我认为我的问题与左递归有关,但我是解析器的新手,我不太 ...
我想创建一个规则,要求非数字,非字母字符连续重复三遍。 该规则如下所示: 是否有任何方法要求将检测到的第一个字符重复三遍? 以前存在有关检测缩进数量的类似问题: PEG用于Python样式的缩进 解决方法是首先初始化缩进堆栈: 然后保存当前行的缩进: 每当新 ...
我正在尝试创建一个自定义语法节点类,以映射其所有非终端节点。 问题在于,在自定义语法节点类中使用elements.map时,并不一定要有一个节点存在,因为语法节点树会为其创建SyntaxNode:“”,而我有没有为其创建类。 例如,如果我尝试解析:“ begin document \\ ...
我使用树梢已有一段时间了。 我写了以下规则 http://thingsaaronmade.com/blog/a-quick-intro-to-writing-a-parser-using-treetop.html 我可以解析我的整个输入字符串,但是除了初始的之外,没有其他to_ar ...
我是ruby和treetop新手。 我完成了本教程,并提出了以下规则。 我希望解析器提取出下面的blob。 它总是以Port.开头Port. 并以空白行结尾。 上面提到的规则在单独传递时可以识别文本中的所有行,但是我无法提取出斑点。 我也只想提取匹配的文本,而忽略其余 ...
我有一个与某些键匹配的Treetop PEG语法。 我想在给解析器的哈希中查找与这些键相关联的值。 如何使语法节点可以访问解析器中的方法或变量? 例如,下面是一个简单的语法,该语法找到一个单词并尝试查找其值: # var.treetop grammar VarResolver i ...
大家,早安, 我目前正在尝试描述一些基本的Ruby语法,但现在仍无法解析空间? 我可以处理x = 1 + 1 但无法解析x = 1 + 1, 如何解析空间? 我尝试在每个终端之后添加足够的空间。 但是它无法解析,为零.....我该如何解决? 非常感谢,祝你有美好的一天。 ...
我有一个如下的树梢语法: 当我解析表达式时,这是有效的: 。 。 。 有一个语法节点匹配"1234"与ExprNumber类型。 但是,如果我将括号添加到规则中,如下所示: 它与ExprNumber类不匹配。 为什么会这样? ...
我试图使用树梢在ruby中创建一个简单的文本解析器。 尽管我已经按照博客中的说明执行了所有步骤,但是我仍然无法运行该程序。 它失败并显示错误消息: 我在树梢上的网络上找不到很多资源,但很高兴获得一些帮助。 以下是代码: -myParser.rb- -node_ext ...
我已经使用treetop编写了一个解析器,该解析器成功生成了一个解析树,其一部分在下面复制。 现在我有了这棵树,我不知道如何过滤它,因此我只处理与特定规则匹配的特定节点。 我想用一个标识符替换字符串文字,该标识符引用字符串文件中的字符串。 cool_parser.treet ...
我有以下简单的语法: 当我解析字符串> ,它成功返回: 当我解析string = ,它返回时没有语法错误,但是没有将匹配的字符串与ComparisonOperator实例关联,而只关联到 如果我颠倒语法中字符的顺序...... 然后它适用于=但不适用于> ...
我正在实现具有语法的DSL: 每个关键字都将转换为布尔值( true , false ),之后应使用运算符and, or, not 我当前的语法规则只匹配字符串[keyword] or [other keyword]并且在stings [keyword] or [other key ...
我正在尝试为以下语言创建语法 正确解析先前代码的正确树梢语法规则是什么? 我应该能够为三个变量提取以下值 这是一个字符串,我知道它没有双引号 该字符串具有延续性,这意味着我可以像这样在多行上写它 该字符串用引号引起来 谢谢 ...
关于您使用Treetop时出现的反复出现的问题,我想请您提出建议,我有时无法解决。 我可能错过了一些东西。 我怀疑你们中的许多人都有解决这个问题的正确习惯或习惯。 我通常使用Treetop如下所示: 我在.tt文件中定义语法 我对其进行了修改,以发出自定义的分析树 ...
对于下面的树梢语法,在解析'3/14/01'时(通过ir中的t = Parser.parse('3/14/01') ),我得到一个“TypeError:错误的参数类型Class(expected Module)” 。 首先 ,如果我注释掉<MonthLiteral>和< ...
我在玩树顶游戏,只是无法使用简单的语法来工作并生成我期望的AST。 我的规则是 1:LINE可以由一个或多个以分隔的PIPED COMMAND组成。 2:PIPED COMMAND是一个或多个由|分隔的命令。 3:COMMAND是一个或多个由空格分隔的标识符 我希望有一棵这 ...
我最近一直在尝试使用Treetop为我的一位客户创建CFG DSL语言的简单解析器。 我成功实现了他所需的所有功能,但是与Treetop一起工作真是一个痛苦的经历。 问题是我无法从Treetop获得任何可用的错误消息。 我得到的唯一输出是 它始终指向文件中的第一个字符。 在解 ...
我正在尝试学习使用Treetop PEG语法解析器,但是从一开始我就遇到了奇怪的错误。 我有这个文件结构 和文件的内容如下(列出的顺序是上面列出的文件) node_extensions.rb parser.rb tranlan.treetop 当我运行 ...