#add translator
This commit is contained in:
parent
0354723711
commit
10c73206a4
@ -415,6 +415,11 @@
|
||||
"command": "digital-ide.lsp.tool.transformOldPropertyFile",
|
||||
"title": "%digital-ide.lsp.tool.transformOldPropertyFile.title%",
|
||||
"category": "Digital-IDE"
|
||||
},
|
||||
{
|
||||
"command": "digital-ide.vhdl2vlog",
|
||||
"title": "%digital-ide.vhdl2vlog.title%",
|
||||
"category": "Digital-IDE"
|
||||
}
|
||||
],
|
||||
"menus": {
|
||||
|
@ -37,5 +37,6 @@
|
||||
"digital-ide.netlist.title": "netlist",
|
||||
"digital-ide.fsm.title": "finite state machine",
|
||||
"digital-ide.lsp.tool.insertTextToUri.title": "insert text to uri",
|
||||
"digital-ide.lsp.tool.transformOldPropertyFile.title": "transform configure file from previous version to new version"
|
||||
"digital-ide.lsp.tool.transformOldPropertyFile.title": "transform configure file from previous version to new version",
|
||||
"digital-ide.vhdl2vlog.title": "translate vhdl code to verilog code"
|
||||
}
|
@ -37,5 +37,6 @@
|
||||
"digital-ide.netlist.title": "netlist",
|
||||
"digital-ide.fsm.title": "有限状态机",
|
||||
"digital-ide.lsp.tool.insertTextToUri.title": "插入文本uri",
|
||||
"digital-ide.lsp.tool.transformOldPropertyFile.title": "转换配置文件从先前版本新版本"
|
||||
"digital-ide.lsp.tool.transformOldPropertyFile.title": "转换配置文件从先前版本新版本",
|
||||
"digital-ide.vhdl2vlog.title": "vhdl代码翻译为verilog代码"
|
||||
}
|
@ -37,5 +37,6 @@
|
||||
"digital-ide.netlist.title": "netlist",
|
||||
"digital-ide.fsm.title": "有限狀態機",
|
||||
"digital-ide.lsp.tool.insertTextToUri.title": "插入文本uri",
|
||||
"digital-ide.lsp.tool.transformOldPropertyFile.title": "轉換配置文件從先前版本新版本"
|
||||
"digital-ide.lsp.tool.transformOldPropertyFile.title": "轉換配置文件從先前版本新版本",
|
||||
"digital-ide.vhdl2vlog.title": "vhdl代碼翻譯为verilog代碼"
|
||||
}
|
7
resources/translator/index.d.ts
vendored
Normal file
7
resources/translator/index.d.ts
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
import type * as vscode from 'vscode';
|
||||
|
||||
declare module Translator {
|
||||
export async function vhdl2vlog(uri: vscode.Uri): Promise<void>;
|
||||
}
|
||||
|
||||
export = Translator;
|
45
resources/translator/index.js
Normal file
45
resources/translator/index.js
Normal file
@ -0,0 +1,45 @@
|
||||
/* eslint-disable @typescript-eslint/naming-convention */
|
||||
const fs = require('fs');
|
||||
const vscode = require('vscode');
|
||||
const vhd2vl = require("./vhd2vlog");
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {vscode.Uri} uri
|
||||
* @return {Promise<void>}
|
||||
*/
|
||||
async function vhdl2vlog(uri) {
|
||||
const path = uri.fsPath.replace(/\\/g, '/');
|
||||
const Module = await vhd2vl();
|
||||
const content = fs.readFileSync(path, "utf-8");
|
||||
const status = Module.ccall('vhdlParse', '', ['string'], [content]);
|
||||
if (!status) {
|
||||
content = Module.ccall('getVlog', 'string', ['string'], []);
|
||||
vscode.window.showSaveDialog({
|
||||
filters: {
|
||||
verilog: ["v", "V", "vh", "vl"], // 文件类型过滤
|
||||
},
|
||||
}).then(fileInfos => {
|
||||
let path_full = fileInfos === null || fileInfos === void 0 ? void 0 : fileInfos.path;
|
||||
if (path_full !== undefined) {
|
||||
if (path_full[0] === '/' && require('os').platform() === 'win32') {
|
||||
path_full = path_full.substring(1);
|
||||
}
|
||||
fs.writeFileSync(path_full, content, "utf-8");
|
||||
vscode.window.showInformationMessage("translate successfully");
|
||||
const options = {
|
||||
preview: false,
|
||||
viewColumn: vscode.ViewColumn.Two
|
||||
};
|
||||
vscode.window.showTextDocument(vscode.Uri.file(path_full), options);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
const error = Module.ccall('getErr', 'string', ['string'], []);
|
||||
vscode.window.showErrorMessage(error);
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
vhdl2vlog
|
||||
};
|
37
resources/translator/vhd2vlog.js
Normal file
37
resources/translator/vhd2vlog.js
Normal file
File diff suppressed because one or more lines are too long
@ -9,6 +9,7 @@ import * as lspDocSymbol from './lsp/docSymbol';
|
||||
import * as lspDefinition from './lsp/definition';
|
||||
import * as lspHover from './lsp/hover';
|
||||
import * as lspFormatter from '../../resources/formatter';
|
||||
import * as lspTranslator from '../../resources/translator';
|
||||
import * as lspDocSemantic from './lsp/docSemantic';
|
||||
|
||||
import * as tool from './tool';
|
||||
@ -59,6 +60,9 @@ function registerLsp(context: vscode.ExtensionContext) {
|
||||
vscode.languages.registerDocumentFormattingEditProvider(vhdlSelector, lspFormatter.hdlFormatterProvider);
|
||||
vscode.languages.registerDocumentFormattingEditProvider(svlogSelector, lspFormatter.hdlFormatterProvider);
|
||||
|
||||
// translator
|
||||
vscode.commands.registerCommand('digital-ide.vhdl2vlog', uri => lspTranslator.vhdl2vlog(uri));
|
||||
|
||||
// verilog lsp
|
||||
vscode.languages.registerDocumentSymbolProvider(vlogSelector, lspDocSymbol.vlogDocSymbolProvider);
|
||||
vscode.languages.registerDefinitionProvider(vlogSelector, lspDefinition.vlogDefinitionProvider);
|
||||
|
Loading…
x
Reference in New Issue
Block a user