concrete-syntax-tree

    5热度

    1回答

    我一直在研究编译器。词法分析器似乎非常简单:拿一个“句子”并将其分解成单词(或标记)。为了确保正确的语法,需要解析器。解析器通常采用令牌并构建一个导致根节点的树(单词分成句子,段落,页面等)。 从this question它似乎是一个解析器将建立一个AST。 AST仅包含执行代码所必需的内容,因为运算符优先级被内置到AST中,所以像括号这样的内容就不必要了。 AST可能是编译器所需要的。 但是,如

    2热度

    1回答

    例如:: >>> import ast >>> print(type(ast.parse('1.2', mode='eval').body.n) float 如何让解析器转换Python源文件成语法树,同时保留在str类型的节点的原始值?因为我需要使用分数尽可能精确地将例如'1.2'转换为精确值,而不会丢失任何精度(值1.2不能精确地以浮点格式表示)。 最好我希望这样做,而不需要重新实现解

    0热度

    1回答

    我有这个具体的语法: syntax SomeMore = [...] SyncBlock? sync; syntax SyncBlock = "sync" "{" SyncStatement* stats "}"; syntax SyncStatement = [...]; [SyncBlock]"sync { <syncStrings> }"似乎工作,但是当我尝试使用它作为一个SyncB

    5热度

    1回答

    将解析树(即具体语法树)简化为抽象语法树的一般策略是什么? 例如,我有以下的语法规则: statement_list : statement | statement_list statement ,如果留下一个解析树,会产生煽动输出,看起来像 program statement_list statement_list statem

    5热度

    5回答

    有没有人知道在哪里可以找到良好的在线资源,例如如何制作语法和解析树?优选介绍材料。 对noveb友好的信息,Google自己没有发现任何好的东西。 编辑:我在思考理论,而不是具体的解析器软件。

    0热度

    1回答

    Evrything在标题中:我有一个OCL AST(使用root作为org.eclipse.ocl.ecore.Constraint),我修改了它。 我想再次解析它,但我只找到打印约束(或任何OCL事物)时获得的“单行OCL语法” - 在其toString()方法中提供。 任何人都知道从EMF OCL Constraint获取最终可解析的OCL字符串的方法吗? (或来自任何TypedElement

    1热度

    2回答

    我使用pyPEG为简单的语法创建了一个分析树。树使用列表和元组来表示。这里是一个例子: [('command', [('directives', [('directive', [('name', 'retrieve')]), ('directive', [('name', 'commit')])]), ('filename',

    1热度

    1回答

    给定一些具体的语法值,我如何将它映射到不同类型的值(在这种情况下是int)? // Syntax start syntax MyTree = \node: "(" MyTree left "," MyTree right ")" | leaf: Leaf leaf ; layout MyLayout = [\ \t\n\r]*; lexical Lea