線上示範位址:
源代碼翻譯兩部分如下.
獨立的Java代碼翻譯庫
續前文
代碼翻譯嘗試-使用Roaster解析和生成Java源碼源碼庫:
program-in-chinese/java_code_translator功能
在前文基礎上: 重構; 完善測試(基本涵蓋主要接口); 小改進 - 支援數組類型的屬性和方法傳回類型的翻譯, 如"String[]" -> "字元串[]"
源碼節選
翻譯Java代碼.java, 按類/Bean屬性/方法三部分翻譯命名. 仍不處理方法内容.
public static String 翻譯源碼結構(String 源碼) {
JavaClassSource 類結構;
try {
類結構 = 取類結構(源碼);
} catch (ParserException e) {
return e.getLocalizedMessage();
}
翻譯類(類結構);
翻譯屬性(類結構);
翻譯方法(類結構);
return 類結構.toUnformattedString();
}
部署
暫未釋出到Maven, 在部署時, 運作'mvn install'安裝jar包到本地(伺服器同樣).
Spring Boot實作源碼服務
Java源碼英翻中庫以及服務原型 program-in-chinese/code_translator_service, maven依賴上面的庫
java_code_translator前端部分暫時合在同一庫"前端"檔案夾:
- 前端方面
- 實作了最簡單的前端, 左邊輸入源碼, 右邊顯示翻譯結果
- 支援文法高亮: 基于CodeMirror, 包括行号, 關鍵詞高亮, 類名等等. 它支援100多程式設計語言, 适于今後添加其他語言支援.
前端-Java模式文法高亮:
var 輸入 = CodeMirror.fromTextArea(document.getElementById("英文源碼輸入"), {
mode : "text/x-java",
lineNumbers : true,
matchBrackets : true
});
輸入.setSize(500, 500);
前端-通路背景
$(document).ready(function() {
$("#翻譯按鈕").click(function() {
輸出.setValue("進行中...");
$.post("http://74.91.17.250:8091/", {
code : 輸入.getValue()
}, function(結果) {
輸出.setValue(結果.内容);
}, "json");
});
});
背景部分-翻譯控制器.java
@RestController
public class 翻譯控制器 {
private static final Logger 筆錄 = LoggerFactory.getLogger(翻譯控制器.class);
@CrossOrigin(origins = "http://74.91.17.250:9000")
@RequestMapping(value = "/", method = RequestMethod.POST)
@ResponseBody
public 翻譯 翻譯(@RequestParam(name = "code", required = false, defaultValue = "") String 英文源碼) {
筆錄.info("輸入: " + 英文源碼);
return new 翻譯(翻譯Java代碼.翻譯源碼結構(英文源碼));
}
}
背景部分
打包: mvn package
運作: nohup java -jar target/code_translator_service-0.0.1-SNAPSHOT.jar --server.port=8091 &
前端部分
伺服器: 将'前端'的public部分拷貝到tomcat(設定port為9000).
本地調試: 運作'spring run app.groovy'即在8080啟動前端服務; 需修改post位址為"http://localhost:8091/", 以正确配置CORS.