gpt4 book ai didi

java - 需要 Javascript 解析器(用于 Java 应用程序)以获取有关 Ext.define 对象的基本属性值信息

转载 作者:行者123 更新时间:2023-11-29 09:01:29 25 4
gpt4 key购买 nike

我有数百个遵循以下格式的小 javascript 文件,其中 Ext.define 定义了一个 javascript 类。我需要能够在 Java 应用程序中解析这些文件并获取“SOMECLASSNAME”以及“扩展”和“要求”等各种属性的值。我想忽略评论,我不关心功能。

我实际上已经使用正则表达式实现了它并且它有效。然而,它相当脆弱。我已经处理过一些问题,例如使用 "而不是 ' 的文件以及不方便放置的注释,这些注释会破坏正则表达式。我真的很想使用不那么脆弱的解决方案来做到这一点,这意味着使用 javascript 解析器。

我已经使用各种搜索进行了搜索,例如“java javascript ast parser”,但似乎没有任何内容适合我正在尝试做的事情。我找到的最接近的是 Using ScriptEngine in java, How can I extract function list?但这似乎要求脚本可以运行,并且这些文件中的每一个都不能单独运行。

Ext.define('SOMECLASSNAME', {
extend: 'JSCommon.remoting.RESTService',
alternateClassName: 'AccountSettingService',

requires: [
'JSCommon.security.Privilege',
'JSCommon.security.PrivilegeConstants',
'JSCommon.security.store.UIPrivilege',
'JSCommon.util.StringUtil'
],

statics: {
/**
* Creates and returns a new instance of the ReportsService
*/
getNewInstance: function() {
return Ext.create('JSCommon.acctSetting.AccountSettingService');
}
},

config: {
customer: 'abc',
service: 'companySetting'
},

constructor: function(config) {
this.initConfig(config);
return this;
},

getCompanyID: function() {
return PlatformCache.getCompanyContextByAttribute('id');
},

getAccountSetting: function(onResult, onFault) {
var me = this;
var svc = RESTService.getNewInstance();
var ops = Ext.create('JSCommon.remoting.URLElements');
var params = Ext.create('JSCommon.remoting.URLParams');

params.add('action', 'find');
var postbody = {
};

svc.sendGETRequest(svc.getURL(this.getCustomer(), me.getCompanyID(), me.getService(), ops, params), postbody, onResult, onFault);
}
});

最佳答案

由于您不尝试解析完整的 javascript 语言,因此您可能不需要完整的 javascript 引擎。你看过ANTLR吗?由于您可以将问题简化为一堆属性(如果我理解正确的话),我认为您应该能够或多或少地为您的问题编写简单的语法。

关于java - 需要 Javascript 解析器(用于 Java 应用程序)以获取有关 Ext.define 对象的基本属性值信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17158068/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com