cost 242 ms
Python 仅使用内置库进行注释保留解析? - Python comment-preserving parsing using only builtin libraries?

我只使用ast和inspect库编写了一个库来解析和发出 [在 Python < 3.9 上使用astor ] 内部 Python 构造。 刚刚意识到我真的需要保留评论。 最好不要求助于RedBaron或LibCST ; 因为我只需要发出未改变的评论; 是否有一种简洁明了的注释保留解析/发出 ...

libcst:插入新节点会添加内联代码和分号 - libcst: Inserting new node adds inline code and a semicolon

我正在尝试在分配节点之前引入一个新节点(作为新的代码行)。 使用FlattenSentinel引入新节点时会出现问题,因为我希望节点是分开的,但 libcst 使用分号 ( ; ) 将它们连接起来,例如: 变成: 重现示例的代码: 我也尝试引入一个新行,但看起来更糟,代码示例: 我想要的结果是将新节 ...

如何将LR(1)解析转换为抽象语法树? - How do I translate LR(1) Parse into a Abstract syntax tree?

我已经编码了一个表驱动的LR(1)解析器,并且运行良好,但是在将解析解析为语法树/抽象语法树的阶段中,我有些脱节。 这是一个我非常热衷的项目,但是我真的在这里陷入了僵局。 提前谢谢你的帮助。 编辑:同样,我的解析器仅使用2d数组和一个动作对象,该对象告诉它下一步去哪里,或者它减少了哪里 ...

如何阻止`ast.parse` 将数值转换为整数/浮点数? - How to stop `ast.parse` from converting numerical values into int/floats?

例如:: 如何让解析器将 python 源文件转换为语法树,同时保留str类型节点的原始值? 因为我需要使用尽可能精确的分数将例如 '1.2' 转换为精确值,而根本不会失去任何精度(值 1.2 不能以浮点格式精确表示)。 最好我希望在不重新实现解析器的情况下做到这一点。 也许还有其他解析器比a ...

如何将解析树缩减为抽象语法树? - How do I reduce my parse tree into an abstract syntax tree?

将解析树(即具体语法树)简化为抽象语法树的一般策略是什么? 例如,我有以下语法规则: 如果保留为解析树,它将生成看起来像扇形输出 如果我连接每个节点的子节点(因为语句列表在解析后没有固有含义),我可以实现以下内容 这很好用 - 但是,我没有意识到这样做的任何“规则” ...

DOM树解析和语法树解析之间的区别? - Difference between a DOM tree parsing and a syntax tree parsing?

解析HTML或XML文件后,我们可以获得DOM树。 在解析C,C ++或JavaScript之后,我们可以获得语法树。 请注意,语法树是基于无上下文语法构造的,该语法指定了有效的C / C ++ / JS程序。 但似乎DOM树只是一个纯HTML层次结构,仅由HTML / XML ...

何时使用抽象或具体的语法树? - When to use an abstract or concrete syntax tree?

我一直在研究编译器。 词法分析器似乎非常直接:取一个“句子”并将其分解为单词(或标记)。 为了确保正确的语法,需要一个解析器。 解析器通常采用令牌并构建一个树,从而产生根节点(将单词分为句子,段落,页面等等)。 从这个问题来看,似乎解析器会构建一个AST。 AST只包含执行代码所需 ...

抽象语法树和具体语法树有什么区别? - What is the difference between an Abstract Syntax Tree and a Concrete Syntax Tree?

我一直在阅读一些关于解释器/编译器如何工作的内容,我感到困惑的一个领域是 AST 和 CST 之间的区别。 我的理解是解析器生成一个 CST,将其交给语义分析器,后者将其转换为 AST。 但是,我的理解是语义分析器只是确保遵循规则。 我真的不明白为什么它实际上会进行任何更改以使其抽象而不是具体。 ...


 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM