当系统生成系统使用的源代码时,该代码是否应仅用于用户"填充空白"的脚手架(如在rails中),或者是否存在生成并且从未修改的生成代码的情况除了代码生成器之外的任何人.
有谁知道有助于生成C#代码的库?例如,如果我需要生成一个包含类定义的*.cs文件,我希望能够使用对象树(类似于表达式树)指定类和方法体,然后告诉库给我好格式化的C#代码作为字符串.
谢谢.
假设我有一个 make 规则:
.PHONY:gen
gen: auto.template
generate-sources auto.template
Run Code Online (Sandbox Code Playgroud)
创建一批文件,例如auto1.src,auto2.src,auto3.src等等。
如果我现在有从*.src文件构建目标的规则,如下所示:
$(patsubst %.src,%.target,$(wildcard *.src)): %.target: %.src
build $< > $@
Run Code Online (Sandbox Code Playgroud)
如何告诉 make 首先执行gen规则,然后扩展第二个规则模板的前提条件?欢迎使用 GNU 扩展。
注意:我想将它保留在一次 make调用中;对此的一个简单解决方案是将第二条规则放在次要规则中Makefile.secondrun并$(MAKE) -f Makefile.secondrun在gen处理后调用。但我想知道是否有更好的选择。
我正在做一个与编译器设计相关的项目。我需要为基于 Java 的语言生成三个地址代码,这意味着使用对象和范围。我想您是否可以帮助我为以下示例生成 TAC(或向我推荐教程):
class A {
int x;
String y;
public A(int x, String y) {
this.x = x;
this.y = y;
}
}
Run Code Online (Sandbox Code Playgroud)
import A;
class B {
int f;
A foo;
public B() {
this.foo = null;
this.f = -1;
}
public boolean createFoo() {
this.foo = new A(0, "TAC Example");
return true;
}
public static void main() {
B bar = new B();
A baz = new A(666, "TAC generation");
bar.createFoo();
bar.foo.y = "Hello World";
if(bar.foo.x …Run Code Online (Sandbox Code Playgroud) java compiler-construction code-generation compiler-optimization
我试图了解 Kony Studio 的“一次编写,随处部署”功能。原生代码呢?我知道 Kony 在 V5 中添加了 JavaScript 支持,但据我所知,这仅适用于基于 Web 的应用程序部分。我是否正确地假设本机代码仍然是用 Lua 编写的,然后为每个平台生成?他们是否将 Lua 转换为 Java、Objective-C 和 C# 用于 3 个主要平台?调试时你是在看 Lua 还是本地语言?- 谢谢。
我正在Jeffrey Way Generator用来生成我的控制器,但在Laravel 4的版本中,我找不到一种方法来生成带有方法列表的控制器。
这个命令:php artisan generate:controller,给了我一个带有预定义模板的控制器,但我想自己声明这些方法。
我有一组网络协议的 XML 描述,我试图从中生成 Go 代码,因此我没有任何现有的 Go 代码可以使用。所有使用go/ast(例如go fmt)的示例都采用现有代码,对 AST 进行一些转换,然后将它们写回。因为我只有 XML 文件,所以我正在使用的 AST 必须手工编写。问题是我无法让我的手写 AST 输出。
package main
import (
"go/ast"
"go/printer"
"go/token"
"os"
)
func main() {
f := ast.File{
Name: ast.NewIdent("foo"),
Decls: []ast.Decl{
&ast.GenDecl{
Tok: token.TYPE,
Specs: []ast.Spec{
&ast.TypeSpec{
Name: ast.NewIdent("Bar"),
Type: ast.NewIdent("uint32"),
},
},
},
},
}
fset := token.NewFileSet()
printer.Fprint(os.Stdout, fset, f)
}
Run Code Online (Sandbox Code Playgroud)
预期输出:
package foo
type Bar uint32
Run Code Online (Sandbox Code Playgroud)
实际输出:无
如何让 AST 打印?
我目前正在为具有全局变量和嵌套子例程功能的语言构建编译器。以前,我只为只有局部变量而没有嵌套子例程的语言构建了一个编译器。
我在代码生成阶段如何重用在语义分析阶段填充的符号表有问题。我将符号表作为一个链表堆栈,其中每个链表代表在特定范围内声明的标识符。每次它进入一个范围时,都会创建一个新列表并将其推送到堆栈中,它成为当前范围。同样,每次离开作用域时,栈顶的列表都会被弹出。最后,在语义分析完成后,我实际上有空符号表,就像它开始时一样。但是,代码生成器需要一个完全填充的符号表才能正确生成代码。如何在不重新做语义分析期间所做的事情(即向符号表输入标识符)的情况下做到这一点?
compiler-construction code-reuse code-generation semantic-analysis symbol-table
的code_build(https://pub.dartlang.org/packages/code_builde)封装提供了一种解决方案,以产生那个类的类和构造函数,字段和方法。
我的最终目标是根据给定的 json 结构生成 Flutter ( https://flutter.io ) Widgets,但我不知道如何使用code_build或其他包来做到这一点。
所以帮助将不胜感激!
我正在尝试使用jhipster.
# Ubuntu 18.04
node -v
# v10.15.1
npm -v
# 6.4.1
jhipster --version
# 6.0.0
jhipster
# (I only press enter, so that the defaults are selected)
npm start
Run Code Online (Sandbox Code Playgroud)
现在我在端口 9000 上访问应用程序,但是当我按照提示尝试使用admin/登录时admin,它失败了
[HPM] Error occurred while trying to proxy request /management/info from localhost:9000 to http://localhost:8080 (ECONNREFUSED) (https://nodejs.org/api/errors.html#errors_common_system_errors)
[HPM] Error occurred while trying to proxy request /api/account from localhost:9000 to http://localhost:8080 (ECONNREFUSED) (https://nodejs.org/api/errors.html#errors_common_system_errors)
[HPM] Error occurred while trying to proxy request /api/authenticate from localhost:9000 …Run Code Online (Sandbox Code Playgroud) code-generation ×10
c# ×1
code-reuse ×1
dart ×1
flutter ×1
go ×1
java ×1
jhipster ×1
laravel ×1
laravel-4 ×1
lua ×1
makefile ×1
objective-c ×1
php ×1
symbol-table ×1