`
JerryWang_SAP
  • 浏览: 1003707 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

ABAP的语法高亮是如何在浏览器里显示的

阅读更多

这篇文章的原文我发表在SAP官方社区上:https://blogs.sap.com/2018/03/09/how-abap-syntax-highlight-is-implemented-in-webide-launched-via-browser/

在S/4HANA里,我们现在能在浏览器里写ABAP了,并且支持语法高亮。

 

 

你也许会问,ABAP的语法高亮是如何在浏览器里显示的?下面跟我一起来通过调试的方式自己找到问题的答案。

(1). 在浏览器里敲个ABAP的关键字,比如data。发现被高亮了。通过Chrome开发工具发现高亮是通过一个叫ace_keyword的css类实现的。

 

在Chrome开发工具里以关键字".ace_keyword"搜索: 发现这个css类是硬编码在theme-sap-cumulus.js里的。

 

(2). 现在需要找到浏览器里进行ABAP代码编辑的编辑器的实现。在Chrome开发工具里Network tab里输入“.xml”作为过滤条件,于是找到编辑器的Fiori实现: Editor.view.xml

 

具体的编辑器是实现在命名空间reuse的ABAPWrapper标签里。

 

根据这个命名空间找到实现ABAP编辑器的UI5应用,如下图: nw_aps_ext_lib.

 
 

打开ABAPWrapper-dbg.js, 在第68行设置断点。这个函数负责从ABAP后台取PAD文件,该文件和语法高亮有关。

 

刷新ABAP编辑器页面,断点触发,在调试器里观察PAD文件的内容:

 

所有的ABAP关键字都列在该PAD文件里,这样UI5就知道编辑器里哪些字符串应该做高亮显示。

 
 

(3). 最后一个问题就是,比如当我敲了一个ABAP关键字"new"之后,UI5应用具体哪行代码将对应的css类加到这个字符串对应的DOM节点上?

如下图,一旦我敲了一个字符w之后,字符串new作为一个关键字需要被高亮:

 

具体逻辑如下图:一旦敲入字符"w"后,onInput作为事件处理函数触发:

 

函数$renderLine负责生成对应的HTML源代码。输入字符"new"被传入函数getLineTokens来计算该字符串是关键字还是普通变量。

 

在文件AceRndTokenizer.js里, ABAP解析器按照我们期望的将“new”解析成关键字,因为解析器拥有PAD文件的引用,因此它知道哪些字符串是关键字,哪些是普通变量。

 

(4). DOM节点的源代码在此处生成,"ace"和“keyword"做连接操作,生成最后我们在Chrome开发工具里看到的完整css类ace_keyword.

 
 

谜底就这样揭晓了。
要获取更多Jerry的原创技术文章,请关注公众号"汪子熙"或者扫描下面二维码:

 
 
0
0
分享到:
评论

相关推荐

    ABAP语法详解教材

    在第000章“ABAP4基础”中,我们将了解ABAP的基本概念,包括其历史、应用领域以及在SAP系统中的角色。这一章节会涵盖ABAP的工作原理,如ABAP工作区、事务码和开发环境。此外,还会介绍ABAP的编程环境,如SE80编辑器...

    SAP-ABAP语法详解教材

    12. **ABAP与SAP NetWeaver**:理解ABAP在SAP NetWeaver平台中的角色,以及如何与其他技术如Java、Web服务等进行集成。 13. **错误处理和日志记录**:学习使用TRY-CATCH块进行异常处理,以及使用DEBUGGER和LOG记录...

    ABAP语法详解教程

    ABAP(Advanced Business Application Programming)是SAP系统中用于企业应用开发的主要编程...通过深入学习和实践这些ABAP语法和概念,你将能够熟练地在SAP环境中编写高效、可维护的业务代码,实现企业的信息化需求。

    abap语法大全中文版

    在ABAP语法中,以下几个关键部分是必须了解的: 1. **声明与定义**:在ABAP中,变量、数据结构、类型和常量的声明和定义是程序的基础。例如,使用`DATA`关键字声明局部变量,使用`TYPE`关键字定义数据类型。 2. **...

    ABAP 740 新语法.pdf

    在SAP软件的各个版本中,ABAP7.40是一个重要的里程碑,因为它带来了一系列新的语法和特性,使开发者能够更加高效地编写代码,同时提升了程序的性能和可读性。以下是ABAP7.40新语法的一些主要知识点: 1. 内联声明...

    SAP - ABAP UltraEdit 高亮显示文件

    SAP - ABAP UltraEdit 高亮显示文件

    Notepad++ ABAP代码高亮显示 ABAP.XML

    Notepad++ ABAP代码高亮显示

    ABAP语法详解中文教材

    在ABAP语法中,首先会涉及基本的数据类型,包括字符型(CHAR)、数值型(INT、FLOAT)、日期型(DATE)、时间型(TIME)等,以及变量的声明和赋值。理解这些基础数据类型和操作是学习任何编程语言的第一步。 接下来...

    ABAP新语法.txt

    SAP HANA系统的查询语法有了许多更新,使用新语法能提高查询速度,特别是大数据的。本文档里面的内容放了大量的新语法,欢迎各位下载。

    非常全的 S4 ABAP 新语法(适用S4不适用ECC等老系统)

    在S4 ABAP新语法中,开发者可以利用一系列更新的关键字和特性来提高代码的效率和可读性。以下是对这些关键特性的详细介绍: 1. **DATA**: `DATA`关键字用于声明新的变量或数据结构。在S4 ABAP中,你可以更灵活地...

    EditPlus ABAP 语法文件

    用Editplus查看ABAP文件的好帮手,可以实现语法高亮,网上下的,我又修改了一下。

    ABAP语法简明资料.doc

    ABAP(Advanced Business Application Programming)是SAP R/3系统中的主要编程语言,它属于第四代编程语言(4GL),其语法与Visual Basic和Java有相似之处,与传统的C、PASCAL等第三代语言则有所不同。在ABAP程序...

    图解abap 语法(学习abap语法最贵的资料)

    This documentation describes how to write application programs within the three-tier client/server architecture of the R/3 System.

    ABAP 基本语法介绍.

    详细的abap基础语法介绍

    带 ABAP 高亮的 Notepad2

    这款Notepad2版本特别优化了对ABAP语法的高亮显示,能够帮助开发者更好地理解和编辑ABAP代码。高亮显示是编程环境中一个非常实用的功能,它可以突出显示关键字、常量、变量、字符串、注释等不同部分,使代码更易读,...

    SAP ABAP基本语法介绍.pdf

    SAP ABAP基本语法介绍 SAP ABAP是一种高级商务应用编程语言,用于开发SAP系统中的应用程序。ABAP编辑器是SAP系统中的一个集成开发环境,提供了代码编辑、编译、调试和测试等功能。 ABAP语法特点: * 由各自独立的...

Global site tag (gtag.js) - Google Analytics