Los árboles de sintaxis abstracta (AST) representan la estructura recursiva de un documento formal (código fuente del programa).

Más sobre abstract-syntax-tree...

Tengo un gran proyecto y una gran cantidad de funciones de miembros de la clase C ++ de la forma: Return CClass::MemberFunction( Arg1 arg1, //... std::weak_ptr<IMemberFunctionListenerInterface> listener) { //... } Estoy tratando de escribir un comparador que encuentre funciones como estas,....
Estoy tratando de reemplazar los nombres en un archivo de Python. Para esto he escrito una clase que reconoce y reemplaza nombres. Todo funciona bien. Sin embargo, los nombres de las funciones de los módulos importados también son .......
27 feb. 2021 a las 22:49
Tengo este ejemplo de código de Python simple que analiza un código de Python y extrae las variables asignadas en él: import ast import sys import astunparse import json tree=ast.parse('''\ a = 10 b,c=5,6 [d,e]=7,8 (f,g)=9,10 h=20 ''',mode="exec") for thing in tree.body: if isinstance(thing, a....
Estoy tratando de extraer todas las variables en mi código que no tienen sangría, aquí hay un ejemplo simple: import ast import astunparse class AnalysisNodeVisitor(ast.NodeVisitor): def __init__(self, nodename): super().__init__() self.nodename=nodename self.setVariabl....
Después de leer el artículo Uso de la API del compilador, pude obtener el AST del código de cadena. Pero cuando intento generar el código (por escodegen) desde AST (no transpilarlo) a codificar me sale un error: Unknown node type: undefined ¿Hay alguna forma de generar el código ast? import * a....
9 dic. 2020 a las 12:23
Tengo una estructura similar a AST aproximada; una matriz que contiene una cadena o un objeto, donde el objeto tiene una identificación y argumentos, donde los argumentos son una matriz de una cadena o un objeto, como se indicó anteriormente. El objetivo es generar una cadena a partir de las cadenas....
30 nov. 2020 a las 13:08
para contexto : las expresiones OCL se proporcionarán junto con un archivo "Ecore" que contiene información sobre el UML con el que está asociada la expresión. Como parte de una investigación que estoy realizando, estoy tratando de analizar una expresión OCL en un árbol de sintaxis abstracta (AST) ....
13 nov. 2020 a las 18:00
¿Existe una herramienta AST que permita extraer fácilmente metadatos de un método Java? Por ejemplo, usando el siguiente fragmento de código /* Checks if a target integer is present in the list of integers. */ public Boolean contains(Integer target, List<Integer> numbers) { for(Integer number: ....
31 oct. 2020 a las 19:53
Antecedentes de la situación: XSD con SCH Esquema XML (XSD) Tengo una definición de esquema XML ("el esquema") que incluye varios otros XSD, todos en el mismo espacio de nombres. Algunos de ellos importan otros XSD de espacios de nombres extranjeros. En general, el esquema declara varios elementos g....
6 oct. 2020 a las 01:03
Estoy tratando de hacer coincidir todos los operadores binarios en una sola cláusula case, pero el siguiente código da el error: object BinOp is not a case class, nor does it have a valid unapply/unapplySeq member Note: def unapply(a: AST.this.Expr, b: AST.this.Expr): Option[(AST.this.Expr, AST.this....
Estoy usando la siguiente función para quitar los números de línea de Julia AST: function filter_lineno(ex::Expr) filter!(ex.args) do e isa(e, LineNumberNode) && return false if isa(e, Expr) (e::Expr).head === :line && return false ....
Leí aquí el siguiente ejemplo: >>> def double_inputs(): ... while True: # Line 1 ... x = yield # Line 2 ... yield x * 2 # Line 3 ... >>> gen = double_inputs() >>> next(gen) # Run up to the first yield >>> gen.send(10) # goes into 'x' variable Si entiendo lo ant....
Digamos que quiero una función que imprima todas las expresiones que se le da: > foo(abc(def),gh[i],j) abc(def) gh[i] j Quiero saber si hay una buena manera de hacer esto. He resuelto cómo hacerlo usando la recursividad: foo <- function(x, ...) { if (!is.missing(x)) { print(substitute(x....
28 abr. 2020 a las 18:04
¿Hay alguna forma de configurar LangOptions para AST Matcher? Tenemos siguiente matcher: using namespace clang; using namespace clang::ast_matchers; static llvm::cl::OptionCategory OptionCategory("options"); class CMatcherCallback : public MatchFinder::MatchCallback { public: virtual void run(....
26 feb. 2020 a las 23:55
Tengo problemas para completar una tarea donde debo crear una función que use una función de plegado generalizada para evaluar un AST booleano. Te mostraré algunos ejemplos para ilustrar. Primero, un ejemplo de lo que quiero, pero para un AST que suma enteros: data Expr = Val Int | Add Expr Expr der....
1 feb. 2020 a las 17:15
Buen día, tengo una colección de código Python 3 en árboles de sintaxis abstracta (AST). He estado intentando durante varios días descubrir la mejor manera de convertir los nodos en representaciones de vector / número utilizables. Por ejemplo, aquí hay un AST volcado (sin campos anotados): Module([I....
Hay diferentes comportamientos de ast con diferentes versiones: python2, python3.7: ast.literal_eval("3 -1") >> ValueError: malformed node or string python3.4 ast.literal_eval("3 -1") >> 2 ¿Hay alguna documentación al respecto?....
18 dic. 2019 a las 18:15
Estamos trasladando de 32 bits a LP64 con gcc / linux. Estoy buscando un método para rastrear el uso de los tipos de datos que cambian en el diseño de la memoria (largo, Ptr). Estoy interesado en la ubicación de todas las posibles "interacciones" problemáticas con estos tipos. Los tipos de letra deb....
12 dic. 2019 a las 17:33
Con Clang podemos hacer: clang -cc1 -ast-dump j.c TranslationUnitDecl 0x7fbcfc00f608 <<invalid sloc>> <invalid sloc> |-TypedefDecl 0x7fbcfc00fea0 <<invalid sloc>> <invalid sloc> implicit __int128_t '__int128' | `-BuiltinType 0x7fbcfc00fba0 '__int128' |-TypedefDecl 0x7fbcfc00ff08 <<invalid sloc>> <in....
19 nov. 2019 a las 01:45
Manual de Julia estados: Cada programa de Julia comienza la vida como una cadena: julia> prog = "1 + 1" "1 + 1" Puedo obtener fácilmente el AST de la expresión simple, o incluso una función con la ayuda de quote / code_*, o usando Meta.parse / Meta.show_sexpr si tengo la expresión en una cuerda. L....
17 nov. 2019 a las 12:06
Supongamos que construyo un árbol de sintaxis abstracta de operadores aritméticos simples, como Div(left,right), Add(left,right), Prod(left,right),Sum(left,right), Sub(left,right). Sin embargo, cuando quiero convertir el AST en una cadena, descubrí que es difícil eliminar esa parálisis innecesaria. ....
1 nov. 2019 a las 14:01
Estoy tratando de usar los comparadores AST de clang para apuntar código como el siguiente: #include<memory> namespace Demo { class Widget {}; } int main () { auto w = std::make_unique<Demo::Widget>(); } En clang-query, he intentado lo siguiente: callExpr(callee(functionDecl( // includi....
Quiero encontrar y extraer todas las variables en una cadena que contiene código Python. Solo quiero extraer las variables (y las variables con subíndices) pero no las llamadas a funciones. Por ejemplo, de la siguiente cadena: code = 'foo + bar[1] + baz[1:10:var1[2+1]] + qux[[1,2,int(var2)]] + bob[l....
4 oct. 2019 a las 16:23
Soy nuevo en Haskell y estoy trabajando en una tarea en la que intento hacer una función de análisis para un lenguaje de calculadora simple. Me han dado una gramática y no tengo permitido cambiarla. He intentado resolverlo yendo a través de la cadena y usando mi función de análisis de forma recursiv....
4 oct. 2019 a las 10:01
Los valores predeterminados deben permanecer. También se deben quitar los decoradores, pero es menos preocupante. Fuente original: # Comments @decorator1 @decorator2( a=1, b=1, ) def my_func( a: typing.List = 14, b: 'CustomType' = None, c: Whatever('foo') = 42, d: Whatever('f....
26 sep. 2019 a las 23:45