当前位置: 首页 > news >正文

有经验的武进网站建设wordpress锚文字

有经验的武进网站建设,wordpress锚文字,南通网站推广怎么收费,做内贸什么网站资源比较多什么是编辑器#xff1f; 对我来说#xff0c;编辑器是我工作中使用的主要工具。 作为语言工程师#xff0c;我创建新的语言#xff0c;使用现有的语言#xff0c;并且需要其他工具来使用它们。 我希望能够在一个定制的IDE中将所有这些黑客一起入侵#xff0c;我可以为我… 什么是编辑器 对我来说编辑器是我工作中使用的主要工具。 作为语言工程师我创建新的语言使用现有的语言并且需要其他工具来使用它们。 我希望能够在一个定制的IDE中将所有这些黑客一起入侵我可以为我成长。 这就是为什么我要使用可破解的编辑器Kanvas的原因。 当然在GitHub上 。 在许多情况下我需要一个用于DSL的简单文本编辑器并且倾向于使用ANTLR构建它们。 我将需要其他东西例如表格或图形投影模拟器等但是我需要从某个地方开始对吗 另外我认为目前还没有一种简单的方法来获得具有最小依赖性和简单结构的DSL独立编辑器。 菜单上没有灯光选项。 是时候添加一个了。 快速从语法中获取编辑器 定义语言语法后您可以从中提取很多信息。 我认为您应该能够免费从中获得尽可能多的价值并可以根据需要进一步自定义它。 这类似于Xtext的想法减去理解EMF所需阅读的400页。 您能多快获得ANTLR语法的编辑器 您为编辑器创建一个新项目将Kanvas添加为依赖项并注册您打算支持的语言 fun main(args: ArrayString) {languageSupportRegistry.register(sm, smLangSupport)val kanvas Kanvas()SwingUtilities.invokeLater {kanvas.createAndShowKanvasGUI()kanvas.addTab(My SM, languageSupport smLangSupport)} 并添加以下行以支持您的语言 object smLangSupport : BaseLanguageSupport() {override val antlrLexerFactory: AntlrLexerFactoryget() object : AntlrLexerFactory {override fun create(code: String): Lexer SMLexer(org.antlr.v4.runtime.ANTLRInputStream(code))}override val parserData: ParserData?get() ParserData(SMParser.ruleNames, SMParser.VOCABULARY, SMParser._ATN) } 这样很快。 少于10行代码。 我们只需要指定Lexer和Parser类在此示例中为SMLexer和SMParser 。 如果您想知道那是什么语言那就是Kotlin一种用于JVM的简洁静态语言可以轻松与Java互操作。 让我们对其进行一些改进语法突出显示 因此我有一种简单的语言基本上可以免费获得编辑器然后开始使用它。 首先我想为不同种类的标记定义样式。 我们正在做一些简单的事情只需设置颜色即可 object smLangSyntaxScheme : SyntaxScheme(true) {override fun getStyle(index: Int): Style {val style Style()val color when (index) {// TypesSMLexer.STRING, SMLexer.INT, SMLexer.DECIMAL - Color(42, 53, 114)// LiteralsSMLexer.STRINGLIT - Color(21, 175, 36)SMLexer.INTLIT, SMLexer.DECLIT - Color.BLUE// CommentsSMLexer.COMMENT - Color(170, 181, 171)// OperatorsSMLexer.ASTERISK, SMLexer.DIVISION, SMLexer.PLUS, SMLexer.MINUS - Color.WHITE// KeywordsSMLexer.VAR - Color.GREENSMLexer.INPUT - Color(200, 250, 200)SMLexer.SM - Color(200, 250, 200)SMLexer.EVENT - Color(200, 250, 200)SMLexer.AS - Color(50, 12, 96)// IdentifiersSMLexer.ID - Color.MAGENTA// SeparatorsSMLexer.ARROW - Color(50, 12, 96)SMLexer.COLON - Color(50, 12, 96)SMLexer.ASSIGN - Color(50, 12, 96)SMLexer.LPAREN, SMLexer.RPAREN - Color.WHITE// RestSMLexer.UNMATCHED - Color.REDelse - null}if (color ! null) {style.foreground color}return style} } 我们没有将某些标记设置为粗体或斜体因为我们想使事情简单。 顺便说一句如果您对Kanvas中语法突出显示的工作方式感兴趣我将在本文中进行介绍。 然后是自动补全 现在我们免费获得了一些有限的自动完成功能。 基本上我们会根据语言的结构获得自动补全功能因此我们的算法可以告诉我们哪些关键字可以插入当前位置或者在某个位置可以接受标识符。 该算法不能免费确定的是应该建议哪些标识符。 让我们实现一个非常简单的逻辑当我们可以插入一个标识符时我们将查看前面的标记并使用它们来确定要提出的建议。 例如在定义输入时我们可以建议“ anInput”而在定义变量时我们可以建议“ aVar” override val propositionProvider: PropositionProviderget() object : PropositionProvider {override fun fromTokenType(completionProvider: CompletionProvider,preecedingTokens: ListToken, tokenType: Int): ListCompletion {val res LinkedListCompletion()var proposition : String? thissmLangSupport.parserData!!.vocabulary.getLiteralName(tokenType)if (proposition ! null) {if (proposition.startsWith() proposition.endsWith()) {proposition proposition.substring(1, proposition.length - 1)}res.add(BasicCompletion(completionProvider, proposition))} else {when (tokenType) {SMParser.ID - {val determiningToken preecedingTokens.findLast { setOf(SMLexer.SM, SMLexer.VAR, SMLexer.EVENT, SMLexer.INPUT).contains(it.type) }val text when (determiningToken?.type) {SMLexer.SM - aStateMachineSMLexer.EVENT - anEventSMLexer.INPUT - aInputSMLexer.VAR - aVarelse - someID}res.add(BasicCompletion(completionProvider, text))}}}return res}} 这是代码。 这够了吗 我不知道但是我所知道的是这是一个很小的系统可以理解并且简单到可以轻松扩展和定制。 因此我计划将其用于这种小型语言并根据需要改进自动完成功能尤其是针对该语言。 游戏的名称是有机地和迭代地增长的工具支持。 设计目标类似于Sublime Text但开源 我们都喜欢Sublime Text。 我想从中得到启发但是开源。 为什么要开源 这样我就可以根据需要自定义它。 现在是这样的 是的它还没有Sublime Text精美。 但这意味着我还有改进的空间。 到语言工作台还是不到语言工作台 我经常使用Jetbrains MPS和Xtext等语言工作台。 它们之所以出色是因为它们允许很快地获得非常好的工具支持。 在许多情况下它们是您的最佳选择。 但是作为每种工程选择都需要考虑不同的方面。 Jetbrains MPS和Xtext是非常大而复杂的软件这种东西重数百MB。 要了解这些平台的内部知识需要进行大量的工作和大量的努力。 只需使用这些平台您将获得巨大收益。 但是它们并不是在所有情况下的最佳解决方案因为在某些情况下您需要将语言与现有系统集成在一起因此您必须以非设计的方式来弯​​曲这些语言工作台。 也许您想将您的编辑器或工具嵌入到现有平台中也许您想要在平板电脑上使用一个简单的编辑器也许您希望从命令行使用这些工具。 也许您想以某种特殊的方式将系统组合在一起以满足您的特定需求。 在这些情况下使用语言工作台不是正确的选择。 您需要一些简单的东西可以入侵的东西。 这是我正在尝试的方法。 为此我正在研究一些开源项目并写了一本书 。 结论 这会飞吗 我不知道。 我很开心地花了一些时间在这个项目上。 我觉得这是为使用ANTLR构建的DSL获得简单的独立编辑器的好方法。 我还想将其用作Kotlin支持的vim一种新千年的vim。 具有超投射力。 让我们看看它是如何增长的。 是的我知道Atom将自己描述为可入侵的编辑器。 但是从我的角度来看这还不够黑客入侵。 翻译自: https://www.javacodegeeks.com/2017/01/kanvas-generating-simple-ide-antlr-grammar.html
http://www.zqtcl.cn/news/468621/

相关文章:

  • 上海网站排名团队推广链接跳转
  • 寻找郑州网站优化公司上海高端网站定制
  • 网站关键词排名优化长城建设投资有限公司网站
  • 网站专题优化电子商务网站运营方案
  • 唐山建网站公司湖南网站制作电话
  • 做神马网站优化合肥城乡建设局官网
  • 网站开发与管理心得体会建设高流量网站
  • 网站安全建设的重要性减粘装置设备设计要点
  • 建设一个网站的所有代码Django和wordpress速度
  • 临沂市建设局网站公示php建站系统
  • 有哪些好的做问卷调查的网站好学的专业是编课 网站开发英语翻译
  • 个人网站免费推广广饶网站制作
  • 怎么检测网站是否安全拍卖网站开发
  • 沂源网站制作自建网站的流程
  • 网站关键词收录查询网站最好服务器
  • 做百度移动网站优网站建设类论文选题
  • 自己做的网站怎样让百度搜到长沙专业外贸建站公司
  • 上海缔客网站建设公司网站策划书内容不包括什么
  • 找团队做网站网站建设 通知
  • 网站标题上的小图标怎么做的霞浦建设局网站
  • 国外那些网站做展厅比较好vp代理商网站管理系统
  • 广州最大网站建设wordpress数字超市
  • 怎么提高网站seo优化关键字排名wordpress媒体库搜索
  • 伊春网站制作怎么做视频网站赚钱吗
  • 前端网站开发邹城住房城乡建设部网站
  • 淘宝u站怎么做网站的网站建设费 科研 类
  • 代点任意广告链接网站怎样做才能让百度搜到网站产品
  • 宿迁网站搭建南宁建设局
  • app官网入口昆明排名优化
  • 新乡网站建设开发wordpress如何添加一个文章列表页