我在大学学习编译器学科,我们必须为我们发明的语言生成我们想要的任何平台的代码。我认为最简单的情况是为 Java JVM 或 .NET CLR 生成代码。有什么建议可以选择,以及哪些 API 可以帮助我完成这项任务?我已经完成了所有语义分析,只需要为给定程序生成代码。
谢谢
我正在做遗传编程框架,我需要能够执行一些代表完整Python程序的字符串。我正在使用Python 2.7。我有一个配置类,其中定义了原始集。可以说
class Foo():
def a(self,x):
return x
def b(self,y):
return y
Run Code Online (Sandbox Code Playgroud)
我正在使用 python 检查模块提取函数,并且我想创建一些包含导入和所有内容的可执行源代码。我最终得到了一个看起来像这样的字符串
import sys
def a(x,y):
return x
def b(y):
return y
def main(x,y)
lambda x,y: a(b(y),a(x,y))
main(*sys.argv)
Run Code Online (Sandbox Code Playgroud)
我的问题是我不知道如何将命令行参数传递给我正在运行的字符串eval()。如何将命令行参数传递给我想要运行的源文件eval()?
编辑:有数百万人,因此写入文件并不是一个好的选择。
编辑:我犯了一个错误。eval() 方法仅用于表达式而不是语句,因此使用 exec() 是正确的方法
我正在尝试实现一个特殊的编译器级 LLVM pass,它必须在 ARM 微架构中可用的 32 个 GPR 中保留 20 个寄存器,以便我将在这些保留的寄存器上执行我的实验。我打算在 IR 层面上做这件事。是否可以?
我正在生成一个 Go 文件(包括构建版本等常量),以便这些常量可以在其他包中使用。我创建了一个小工具来创建文件,go generate但我正在尝试想一个合适的名称,以便
很明显它是生成的,所以如果它丢失(在构建时),用户就会知道运行go generate
然后我可以将文件添加到 .gitignore
我的第一个猜测是这样的version_GENERATED.go
我应该注意哪些约定或更好的建议?
我想用代码生成替换这个样板:
import qualified Y15.D01
import qualified Y15.D02
import qualified Y15.D03
import qualified Y15.D04
import qualified Y15.D05
import qualified Y15.D06HM
import qualified Y15.D06IO
import qualified Y15.D06ST
import qualified Y15.D07
import qualified Y15.D08
import qualified Y15.D09
import qualified Y15.D10
import qualified Y15.D11
import qualified Y15.D12
import qualified Y15.D13
...
days :: [(String, [String -> IO String])]
days =
[ ("Y15.D01", i2ios [Y15.D01.solve1, Y15.D01.solve2])
, ("Y15.D02", i2ios [Y15.D02.solve1, Y15.D02.solve2])
, ("Y15.D03", i2ios [Y15.D03.solve1, Y15.D03.solve2])
, ("Y15.D04", i2ios [Y15.D04.solve1, Y15.D04.solve2])
, ("Y15.D05", i2ios [Y15.D05.solve1, …Run Code Online (Sandbox Code Playgroud) 当我在 Angular 9 项目中执行以下命令来生成例如组件时
$ ng generate component
Run Code Online (Sandbox Code Playgroud)
我想自定义生成的源 - 特别是单元和 e2e 测试文件。
有没有一种机制可以让我提供模板或修改现有模板?
我的项目中的所有团队成员也应该可以访问它们。
我知道yo generators,但我宁愿坚持下去ng。
我在使用 Flutter 的 Injectable 包时遇到问题:https ://pub.dev/packages/injectable
我收到一条错误消息,告诉我我没有注册工厂,但我正在尝试获取它
这是我想要获取的类,但正如你所看到的,它用@injectable注释
auth_bloc.dart
import 'package:freezed_annotation/freezed_annotation.dart';
@injectable
class AuthBloc extends Bloc<AuthEvent, AuthState> {
}
Run Code Online (Sandbox Code Playgroud)
同样在injection.config.dart中,您可以清楚地看到AuthBloc已在工厂定义
Future<GetIt> $initGetIt(
GetIt get, {
String environment,
EnvironmentFilter environmentFilter,
}) async {
final gh = GetItHelper(get, environment, environmentFilter);
...
gh.factory<AuthBloc>(() => AuthBloc(get<IAuthRepository>()));
...
return get;
}
Run Code Online (Sandbox Code Playgroud)
这是我的 main.dart
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
configureInjection(Environment.dev);
runApp(MyApp());
}
Run Code Online (Sandbox Code Playgroud)
这是我想要得到它的地方
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MultiBlocProvider(
providers: [
BlocProvider<AuthBloc>(
create: (context) …Run Code Online (Sandbox Code Playgroud) 我想加快 build_runner 所需的构建时间,并且我还想在build watch编辑没有任何要生成的文件的文件时防止运行时重新构建。
我知道这需要在build.yaml文件中进行编辑,但我无法让任何东西发挥作用。
这是我的构建文件
targets:
$default:
builders:
auto_route_generator:
generate_for:
include: [".route.dart"]
freezed:
generate_for:
include: [".model.dart"]
json_serializable:
generate_for:
include: [".model.dart"]
options:
explicit_to_json: true
include_if_null: false
Run Code Online (Sandbox Code Playgroud)
即使尝试添加enabled: false(这让我相信它会禁用该依赖项的构建),也不会执行任何操作并且文件会继续生成。
也许我只是误解了构建文件应该如何使用......?
auto_route您好,我在 Flutter 项目中启动和运行软件包时遇到问题。根据官方文档,我做了以下工作:
@MaterialAutoRouter--enable-experiment=enhanced-enums)MaterialApp当我尝试使用 运行应用程序时flutter run,这是我收到的错误消息:
lib/app_router.gr.dart:16:26: Error: Type \'NavigatorState\' not found.\n _$AppRouter([GlobalKey<NavigatorState>? navigatorKey]) : super(navigatorKey);\n ^^^^^^^^^^^^^^\nlib/app_router.gr.dart:16:16: Error: Type \'GlobalKey\' not found.\n _$AppRouter([GlobalKey<NavigatorState>? navigatorKey]) : super(navigatorKey);\n ^^^^^^^^^\nlib/app_router.gr.dart:16:26: Error: \'NavigatorState\' isn\'t a type.\n _$AppRouter([GlobalKey<NavigatorState>? navigatorKey]) : super(navigatorKey);\n ^^^^^^^^^^^^^^\nlib/app_router.gr.dart:16:16: Error: \'GlobalKey\' isn\'t a type.\n _$AppRouter([GlobalKey<NavigatorState>? navigatorKey]) : super(navigatorKey);\nRun Code Online (Sandbox Code Playgroud)\n的输出flutter --version:
Flutter 3.0.0 \xe2\x80\xa2 channel stable \xe2\x80\xa2 https://github.com/flutter/flutter.git\nFramework …Run Code Online (Sandbox Code Playgroud) 我正在开发一个Facebook应用程序,现在都是我的寂寞.我正试图在onclick事件上进行javascript调用.在这个onclick事件中,我正在根据被链接的项填充一些参数(来自php中的服务器端).我正在插入一些JSON和其他一些带有时髦角色的东西.
Facebook期望锚的所有属性字段都是严格的字母数字.没有引号,感叹号,0-9a-Z_以外的任何内容.所以当用户点击该链接时,我想要传递给我的javascript函数(例如JSON)的参数barfs.
所以我想,为什么我不使用我的模板系统来自动生成javascript?对于我想要生成的每个链接,我生成一个唯一的javascript函数(DoItX,其中X是此页面的唯一整数).然后我不会尝试通过onclick将参数传递给我的javascript函数,而是将我的参数作为DoX的局部变量插入.在链接"X"上我只说onclick ="DoX()".
所以我这样做了,中提琴就可以了!(这也有助于我避免引用逃离地狱的声明).但我觉得icky.
我的问题是,我疯了吗?有更简单的方法吗?我理解某些人能够改变我的模板化局部变量的含义,即:
var local = {TEMPLATED FIELD};
Run Code Online (Sandbox Code Playgroud)
用分号插入某个东西,向客户端插入任意javascript.(而且我正在尝试编写代码以使其偏执).
什么时候从服务器生成javascript是否正常(是否可以)?我应该注意什么/最佳实践?
code-generation ×10
flutter ×3
dart ×2
javascript ×2
angular ×1
arm ×1
build-runner ×1
clr ×1
compilation ×1
eval ×1
facebook ×1
fbjs ×1
go ×1
haskell ×1
jvm ×1
llvm ×1
llvm-ir ×1
package ×1
python ×1