CN109542420A - 一种基于标记的代码编辑方法 - Google Patents
一种基于标记的代码编辑方法 Download PDFInfo
- Publication number
- CN109542420A CN109542420A CN201811193484.0A CN201811193484A CN109542420A CN 109542420 A CN109542420 A CN 109542420A CN 201811193484 A CN201811193484 A CN 201811193484A CN 109542420 A CN109542420 A CN 109542420A
- Authority
- CN
- China
- Prior art keywords
- label
- editor
- flag sequence
- code
- sentence
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 83
- 230000009471 action Effects 0.000 claims abstract description 49
- 239000003550 marker Substances 0.000 claims abstract description 11
- 230000014509 gene expression Effects 0.000 claims description 211
- 230000006870 function Effects 0.000 claims description 40
- 238000012217 deletion Methods 0.000 claims description 29
- 230000037430 deletion Effects 0.000 claims description 29
- 238000010008 shearing Methods 0.000 claims description 20
- 230000003068 static effect Effects 0.000 claims description 12
- 238000003780 insertion Methods 0.000 claims description 10
- 230000037431 insertion Effects 0.000 claims description 10
- 238000000354 decomposition reaction Methods 0.000 claims description 8
- 239000003607 modifier Substances 0.000 claims description 6
- 239000004568 cement Substances 0.000 claims description 4
- 238000006243 chemical reaction Methods 0.000 claims description 4
- 230000004048 modification Effects 0.000 claims description 4
- 238000012986 modification Methods 0.000 claims description 4
- 238000009877 rendering Methods 0.000 claims description 4
- 239000000654 additive Substances 0.000 claims description 2
- 230000000996 additive effect Effects 0.000 claims description 2
- 239000004744 fabric Substances 0.000 claims description 2
- 230000000877 morphologic effect Effects 0.000 claims description 2
- GOLXNESZZPUPJE-UHFFFAOYSA-N spiromesifen Chemical compound CC1=CC(C)=CC(C)=C1C(C(O1)=O)=C(OC(=O)CC(C)(C)C)C11CCCC1 GOLXNESZZPUPJE-UHFFFAOYSA-N 0.000 claims description 2
- 230000000694 effects Effects 0.000 abstract description 3
- 230000008859 change Effects 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000004321 preservation Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000002372 labelling Methods 0.000 description 1
- 230000002265 prevention Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/33—Intelligent editors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/34—Graphical or visual programming
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种基于标记的代码编辑方法,将代码文本转化为编程语言语法标记序列,在图形界面上显示语法标记序列,通过选择标记上的编辑动作,修改标记序列,最后将标记序列保存为代码文本。本发明提供的代码编辑方法,适于触摸屏和鼠标操作,方便在手机及平板电脑上编辑代码;标记的编辑动作有提示和限制作用,方便初学者学习编程。
Description
技术领域
本发明涉及一种基于标记的代码编辑方法,属于代码编辑技术领域。
背景技术
目前代码编辑大多通过键盘编辑代码文本。但是,在手机和平板等触摸屏设备上编辑代码时,需要外接键盘或使用触摸屏上的软键盘,都不是足够方便。同时,初学者学习编程时,缺少直观的提示工具,容易出现语法错误。
发明内容
为了解决上述问题,本发明的目的在于提供一种基于标记的代码编辑方法,将代码文本转化为编程语言语法标记序列,在图形界面上显示语法标记序列,通过选择标记上的编辑动作,修改标记序列,最后将标记序列保存为代码文本。本发明提供的代码编辑方法,适于触摸屏和鼠标操作,方便在手机及平板电脑上编辑代码;标记的编辑动作有提示和限制作用,方便初学者学习编程。
本发明解决其技术问题所采用的技术方案是:一种基于标记的代码编辑方法,包括:
输入步骤,接受代码字符序列;
标记步骤,根据代码编程语言语法规则将代码字符序列经过词法分析转换为代码语法标记序列,如果代码语法标记序列为空或只包含分隔符标记,则将一个待定标记作为第一个标记加入标记序列,标记的类型包括关键字、标识符、字面量、运算符、分隔符、待定标记,其中标识符包括变量名、函数名、类名,字面量包括数字、字符串、布尔值,待定标记是未确定其字符序列的标记;
渲染步骤,在图形界面上,换行分隔符标记显示为换行,行首的空格和制表分隔符标记显示为一定距离的空白,忽略位于其它类型标记之间的空格分隔符标记,将待定标记显示为一个空白按钮,剩余标记单独或组合后分别显示在按钮上,最后将代码标记序列渲染为一行到多行从左到右排列的按钮组合;
编辑步骤,编辑者通过点击或触摸标记按钮,选择相应的一个或多个标记,根据当前所选标记或标记序列表示的代码编程语言语法结构,显示一个编辑动作列表给编辑者,编辑者选择其中一个编辑动作后,根据该编辑动作的含义,按照代码编程语言的语法规则,修改代码标记序列;
重复渲染步骤和编辑步骤直到完成编辑;
保存步骤,在显示为按钮的标记之间加入必要的空格分隔符标记,将代码标记序列转换为代码字符序列,如果代码标记序列为空或只包含待定标记,则将其转换为空的代码字符序列;
输出步骤,输出代码字符序列。
所述编辑步骤中:
如果一行标记中只有一个标记且为待定标记或其它标记都是分隔符标记,此待定标记的编辑动作包括:替换为变量定义语句标记序列、替换为常量定义语句标记序列、替换为函数定义语句标记序列、替换为类定义语句标记序列、替换为类成员方法定义语句标记序列、替换为类成员变量定义语句标记序列、替换为接口定义语句标记序列、替换为接口方法定义语句标记序列、替换为赋值语句标记序列、替换为条件语句标记序列、替换为循环语句标记序列、替换为函数调用语句标记序列、替换为类实例方法调用语句标记序列、替换为类静态方法调用语句标记序列、替换为返回语句标记序列;
若代码编程语言不支持编辑动作中所述的语法结构,则隐藏该编辑动作;
若要替换的语句在当前上下文中不符合代码编程语言语法规则,则隐藏相应的编辑动作;
替换为变量定义、常量定义或赋值语句标记序列时,该语句的左值和右值都以一个待定标记表示;
替换为条件语句标记序列时,其中条件判断表达式以待定标记表示;
替换为循环语句标记序列时,其中循环结构所需的表达式以待定标记表示;
替换为函数定义、类定义、接口定义语句标记序列时,函数名、类名、接口名以一个待定标记表示;
替换为函数定义、类定义、类成员方法定义、接口定义、条件语句、循环语句标记序列时,这些语法结构的内部语句以一个待定标记和所需的分隔符标记表示;
替换为函数调用语句标记序列时,不能确定的函数名、函数的参数名以待定标记表示;
替换为类实例方法调用语句标记序列时,不能确定的类实例名、类实例方法名、类实例方法的参数名以待定标记表示;
替换为类静态方法调用语句标记序列时,不能确定的类名、类静态方法名、类静态方法的参数名以待定标记表示;
替换为返回语句标记序列时,返回值表达式用一个待定标记表示;
在图形界面空间足够时,替换为条件语句标记序列编辑动作分解为替换代码编程语言所支持的各种判断结构语句标记序列;
在图形界面空间足够时,替换为循环语句标记序列编辑动作分解为替换代码编程语言所支持的各种循环结构语句标记序列。
所述编辑步骤中:
按下键盘Shift键并连续点击多个标记按钮,若这些按钮对应标记在同一个语句内,且包含这些标记的最小语法结构是表达式,则选择组成这个表达式的标记序列;
在一个标记按钮上按下鼠标左键或触摸屏,保持按下并移动到同一语句内的其它标记按钮上松开鼠标左键或触摸屏,若包含这些移动经过的按钮对应标记的最小语法结构是表达式,则选择组成这个表达式的标记序列;
点击图形界面空白处,隐藏编辑动作列表,并取消标记的选中状态。
所述编辑步骤中:
待定标记的编辑动作包括:选择表达式、录入字面量、录入标识符、录入关键字;
表达式标记序列的编辑动作包括:选择表达式、录入字面量、录入标识符、录入关键字;
关键字标记的编辑动作包括:录入关键字;
标识符标记的编辑动作包括:录入标识符、录入字面量;
字面量标记的编辑动作包括:录入字面量、录入标识符;
运算符标记的编辑动作包括:录入运算符;
选择表达式时,将显示一个表达式模板列表供编辑者选择,此表达式模板列表中包括单目表达式、双目表达式、三目表达式、Lambda表达式、匿名函数、属性访问表达式、数组下标表达式、类型转换表达式、正则表达式、对象字面量表达式、数组字面量表达式,编辑者选择一个表达式模板后,使用一个该表达式模板定义的标记序列替换所选标记或标记序列,其中新表达式标记序列内的操作数以待定标记表示;
录入关键字时,同时显示一个关键字列表,列出所有当前上下文中可用的关键字,供编辑者选择后替换所选标记或标记序列;
录入标识符时,同时显示一个标识符列表,列出所有当前上下文中可用的标识符,供编辑者选择后替换所选标记或标记序列;
在图形界面空间足够时,录入标识符编辑动作分解为:录入变量名、录入常量名、录入函数或方法名、录入类名、录入属性名;
录入字面量时,将显示一个文本框用于录入字面量,并用录入的字面量标记替换所选标记或标记序列;
在图形界面空间足够时,录入字面量编辑动作分解为:录入数字、录入字符串、录入布尔值;
字符串标记和其左右的字符串分隔符标记一起显示在同一个按钮上,此按钮被选择时显示字符串字面量标记的编辑动作列表;
录入布尔值时,同时显示一个布尔值列表,供编辑者选择后替换所选标记;
录入运算符时,同时显示一个运算符列表,列出所有当前上下文中可用的运算符,供编辑者选择后替换所选标记。
所述编辑步骤中:
标识符标记、字面量标记、组成表达式的标记序列、待定标记的编辑动作包括:添加左值、添加右值、改为三目条件表达式;
添加左值时,在所选标记或标记序列左侧添加一个作为左操作数的待定标记和一个双目运算符标记;
添加右值时,在所选标记或标记序列右侧添加一个双目运算符标记和一个作为右操作数的待定标记;
改为三目条件表达式时,会将所选标记或标记序列作为三目条件表达式条件,在所选标记或标记序列右侧添加当前代码编程语言中组成三目条件表达式所需要的其它操作符标记和操作数标记,新加的表达式操作数以待定标记表示。
所述编辑步骤中:
标识符标记、字面量标记、组成表达式的标记序列、待定标记的编辑动作包括:添加表达式括号;
添加表达式括号时,在所选标记或标记序列两侧分别添加表达式左括号标记和表达式右括号标记;
表达式左括号标记和表达式右括号标记的编辑动作包括:左移、右移、添加左值、添加右值、改为三目条件表达式、添加表达式括号、删除;
左移或右移表达式括号标记时,可跳过一个或多个标记,直到括号标记移动后形成一个合法的表达式,否则不移动表达式括号标记;
添加左值时,在括号表达式的左侧添加一个作为左操作数的待定标记和一个双目运算符标记;
添加右值时,在括号表达式的右侧添加一个双目运算符标记和一个作为右操作数的待定标记;
改为三目条件表达式时,将括号表达式作为三目条件表达式条件,在表达式右括号标记右侧添加当前代码编程语言中组成三目条件表达式所需要的其它操作符标记和操作数标记,新加的表达式操作数以待定标记表示;
在表达式左括号标记和表达式右括号标记上添加表达式括号时,在括号表达式标记序列两侧,分别添加表达式左括号标记和表达式右括号标记;
删除时,将同时删除成对的两个表达式括号标记。
所述编辑步骤中:
标识符标记、字面量标记、括号包围的表达式标记序列、待定标记的编辑动作包括:添加属性访问、添加数组下标、在前添加单目运算符、在后添加单目运算符;
括号表达式右括号标记的编辑动作包括:添加属性访问、添加数组下标、在后添加单目运算符;
括号表达式左括号标记的编辑动作包括:在前添加单目运算符;
添加属性访问时,会在所选标记或标记序列右侧添加一个属性访问符标记和一个待定标记,这个待定标记用来表示属性名;
添加数组下标时,会在所选标记或标记序列右侧添加一个数组下标运算符标记和一个待定标记,这个待定标记用来表示数组索引;
在前添加单目运算符时,在所选标记或标记序列左侧插入单目运算符标记;
在后添加单目运算符时,若代码编程语言支持右侧的单目运算符,在所选标记或标记序列右侧插入单目运算符标记,否则不显示此编辑动作。
所述编辑步骤中:
标识符标记、字面量标记、组成表达式的标记序列、待定标记的编辑动作包括:剪切、复制;
剪切或复制后,标识符标记、字面量标记、组成表达式的标记序列、待定标记的编辑动作还包括:粘贴;
剪切和复制时,将所选标记或标记序列复制到剪贴板;
剪切后,从代码标记序列中删除所选标记或标记序列,并在被删除标记或标记序列的原始位置插入一个新的待定标记;
粘贴时,使用剪贴板中的标记或标记序列替换所选标记或标记序列。
所述编辑步骤中:
标识符标记、字面量标记、组成表达式的标记序列、待定标记、单目运算符标记、关键字标记、属性访问符标记、数组下标运算符标记的编辑动作包括:删除;
删除标识符标记、字面量标记、表达式标记序列时,使用一个待定标记替换所选标记或标记序列;
删除单目运算符标记时,只删除该单目运算符标记;
删除待定标记、关键字标记时,从代码标记序列中删除所选标记,若删除后导致错误的语法结构,则隐藏此编辑动作;
删除属性访问符标记时,将同时删除属性访问符标记和属性标识符标记;
删除数组下标运算符标记时,将同时删除成对的数组下标运算符标记和数组下标索引标记。
所述编辑步骤中:
双目运算符的编辑动作包括:删除左值、删除右值、交换左右值、删除;
删除左值时,删除所选双目运算符标记和作为双目运算符左值的表达式标记序列;
删除右值时,删除所选双目运算符标记和作为双目运算符右值的表达式标记序列;
交换左右值时,交换所选双目运算符标记的左值表达式标记序列和右值表达式标记序列的位置;
删除时,使用一个待定标记替换此双目运算符所在的双目表达式标记序列。
所述编辑步骤中:
若代码编程语言支持对象字面量、数组字面量,待定标记的编辑动作包括:替换为对象字面量标记序列、替换为数组字面量标记序列;
替换为对象字面量标记序列时,其中默认包含一个对象属性,此对象属性的名称和值都以一个待定标记表示;
替换为数组字面量标记序列时,其中默认包含一个数组元素,该数组元素以待定标记表示。
所述编辑步骤中:
代码编程语言支持的列表元素分隔符的编辑动作包括:在前添加元素、在后添加元素、删除前方元素;
代码编程语言支持的列表左括号分隔符标记的编辑动作包括:添加元素、清空元素、删除;
代码编程语言支持的列表右括号分隔符标记的编辑动作包括:追加元素、清空元素、删除;
在前添加元素时,将在列表元素分隔符标记前添加一个列表分隔符标记和一个列表元素标记序列;
在后添加元素时,将在列表元素分隔符标记后添加一个列表元素标记序列和一个列表元素分隔符标记;
删除前方元素时,将删除所选的列表元素分隔符标记和其前方列表元素的标记序列;
添加元素时,将一个列表元素标记序列添加为第一个列表元素,若其后有其它列表元素,在新元素后添加一个列表分隔符标记;
追加元素时,将一个列表元素标记序列添加为最后一个列表元素,若其前有其它列表元素,在新元素前添加一个列表元素分隔符标记;
清空元素时,将删除列表中的所有元素标记和列表元素分隔符标记;
若当前列表为函数参数列表,新列表元素中的参数名以一个待定标记表示;
若当前列表为字面量对象,新列表元素即对象属性的名称和值都以一个待定标记表示;
若当前列表为数组字面量,新列表元素即数组元素以一个待定标记表示;
对于列表左括号分隔符标记或列表右括号分隔符标记上的删除编辑动作,若当前列表为函数参数列表,则隐藏删除编辑动作,删除其它类型列表时,将使用一个待定标记替换列表标记序列。
所述编辑步骤中:
长按或双击任意一个标记按钮,将选择该按钮对应标记所在语句的所有标记,并显示编辑动作列表:在上添加语句、在下添加语句、剪切、复制、删除;
按下键盘Shift键并连续点击多个标记按钮,若这些按钮对应标记在不同语句内,将选择这些标记所在语句和所在语句之间语句的所有标记,并显示编辑动作列表:在上添加语句、在下添加语句、剪切、复制、删除;
在一个标记按钮上按下鼠标左键或触摸屏,保持按下并移动到其它语句内的某一标记按钮上松开鼠标左键或触摸屏,将选择移动经过的按钮对应标记所在语句和所在语句之间语句的所有标记,并显示编辑动作列表:在上添加语句、在下添加语句、剪切、复制、删除;
当剪切或复制语句标记序列后,以上所述编辑动作列表还包括:粘贴、在上方插入、在下方插入;
在上添加语句、在下添加语句时,新添加的语句以一个待定标记和代码编程语言语法要求的分隔符标记表示;
剪切和复制时,将所选语句复制到剪贴板;
剪切后,从代码标记序列中删除所选语句标记序列;
粘贴时,用剪贴板中的语句标记序列替换当前所选语句标记序列;
在上方插入时,将剪贴板中的语句标记序列插入到当前所选语句之上;
在下方插入时,将剪贴板中的语句标记序列插入在当前所选语句之下;
删除时,删除所选语句的所有标记,若删除后代码标记序列为空或只包含分隔符标记,则添加一个待定标记到所删除位置。
所述编辑步骤中:
代码块分隔符标记的编辑动作列表包括:添加行;
添加行时,若所选代码块分隔符标记是代码块开始标记,则在代码块内部添加一个新代码行作为第一行,若所选代码块分隔符标记是代码块结束标记,则在代码块内部添加一个新代码行作为最后一行;
新代码行以一个待定标记和表示缩进的分隔符标记组成。
所述编辑步骤中:
条件判断结构的关键字标记和代码块结束分隔符标记的编辑动作包括:在前添加判断分支、在后添加判断分支、删除判断分支;
在前或在后添加判断分支时,在当前所选标记所在判断分支的之前或之后,添加一个判断分支,即插入构成这个新判断分支的所有标记,其中判断条件表达式以一个待定标记表示,新判断分支的内部语句以一个待定标记和所需的分隔符标记表示;
删除判断分支时,删除当前所选标记所在判断分支的所有标记。
所述编辑步骤中:
若代码编程语言支持定义类,则类定义关键字标记和类名标记的编辑动作包括:添加构造函数、添加实例方法、添加静态方法、添加类变量、添加静态变量;
若代码编程语言支持定义接口,则接口定义关键字标记和接口名标记的编辑动作包括:添加接口方法;
执行上述编辑动作时,将添加相应定义语句的标记序列,其中不确定的方法名、变量名、参数名以待定标记表示,新方法的内部语句以一个待定标记和所需的分隔符标记表示;
类定义中方法名标记、成员变量名标记的编辑动作包括:添加访问修饰符;
添加访问修饰符时,将在对应的方法名标记或成员变量名标记前添加访问修饰符标记;
若代码编程语言支持类继承,则类定义关键字标记和类名标记的编辑动作包括:继承;
继承时,将显示一个当前类可继承的类列表,编辑者选择某一个类后,添加继承此类的所需标记;
若代码编程语言支持接口,类定义中类名标记的编辑动作包括:实现接口;
实现接口时,将显示一个当前类可实现的接口列表,编辑者选择某一个接口后,添加实现此接口的所需标记,其中实现接口方法的内部语句以一个待定标记和所需的分隔符标记表示;
若代码编程语言不支持上述某一语法结构,则隐藏相应的编辑动作。
所述编辑步骤中:
编辑代码时,显示一个语句模板列表给用户,该语句模板列表包括变量定义语句、常量定义语句、函数定义语句、类定义语句、类成员方法定义语句、类成员变量定义语句、接口定义语句、接口方法定义语句、赋值语句、条件语句、循环语句、函数调用语句、类实例方法调用语句、类静态方法调用语句、返回语句,用户可通过鼠标或触摸屏手势拖放某一语句模板到标记按钮构成的某一代码语句上,或拖放到某一代码语句之前或之后;
拖放到某一语句上时,将使用此语句模板定义的标记序列替换该行语句的标记序列;
拖放到某一代码语句之前或之后时,将在该语句标记之前或之后插入此语句模板定义的标记序列;
如果拖放某一语句模板后会导致错误的语法结构,则禁止在此位置拖放该语句模板;
语句模板定义的标记序列中不确定的标识符以待定标记表示。
所述编辑步骤中:
编辑代码时,显示一个表达式模板列表给用户,该表达式模板列表包括数字、字符串、布尔值、单目表达式、双目表达式、三目表达式、Lambda表达式、匿名函数、属性访问表达式、数组下标表达式、类型转换表达式、正则表达式、对象字面量表达式、数组字面量表达式,用户可通过鼠标或触摸屏手势拖放某一表达式模板到现有的待定标记、标识符标记、字面量标记按钮上,并使用该表达式模板定义的标记序列替换现有标记,其中新表达式内的操作数以待定标记表示。
所述编辑步骤中:
若事先限定了所支持的代码编程语言语法结构类型集合,则仅显示与此语法结构类型集合相关的编辑动作;
若某编辑动作执行后会导致错误的语法结构,则隐藏或不执行此编辑动作;
若某编辑动作中所述的语法结构不被当前代码编程语言所支持,则隐藏此编辑动作。
所述标记步骤或保存步骤可被忽略,输入步骤、输出步骤中可直接接收或输出标记序列:可输入代码文本输出标记序列,也可输入标记序列输出代码文本,也可即输入标记序列又输出标记序列。
本发明的有益效果是:本发明所提供的代码编辑方法是通过将代码文本转换为代码语法标记序列,在各种标记上提供多种符合代码语法规则的编辑动作,通过执行编辑动作自动完成相应的代码语法结构修改,将代码编辑从字符编辑升华为语法结构编辑,降低字符编辑时对全键盘的依赖,适用于不便于使用全键盘的情景;对于不熟悉代码语法的初学者,编辑动作有提示作用,初学者可选择可用的编辑动作,同时这些编辑动作执行后,代码标记序列仍符合代码语法,预防初学者写出语法错误的代码。
附图说明
下面结合附图和实施例对本发明进一步说明。
图1至图22为实施例一中代码编辑过程的图示。
图23、图24、图25为实施例二中代码编辑过程的图示。
具体实施方式
本发明即可用于编辑已有代码,也可用于从头开始编辑代码;即可用于编辑代码表达式,又可用于编辑代码语句;适用于编辑各种编程语言。
实施例一:
下面以本发明在触摸屏上从头开始编辑简单的ECMAScript 5代码,详细说明本发明。ECMAScript 5是一种JavaScript语言,本实施例仅用于编辑简单代码,所以只举例使用了部分编辑动作;除不被ECMAScript 5语法所支持的编辑动作外,其它未提及的编辑动作均可容易的类推实现。
开始时,输入一个空串代码文本,将生成一个空代码标记序列,并将一个待定标记加入此标记序列,在触摸屏上显示此标记序列,如图1中的1-1所示。这里待定标记按钮是一个空白按钮,并有一个双线的底边。
第1步,用户点击这个待定标记按钮,即选择此待定标记,显示这个待定标记的编辑动作列表给用户,在本实施例中,这个编辑动作列表显示为一个菜单,其中每个菜单项对应一个编辑动作,显示在所选标记按钮的下方,如图1中的1-2所示。这个编辑动作列表中包含的编辑动作有:定义变量、赋值语句、条件语句、循环语句、调用函数。这里对编辑动作进行了缩写,如“定义变量”就是将所选的待定标记替换为变量定义语句标记序列,其它以此类推。ECMAScript 5语言不支持定义常量、类和接口,所以这里隐藏了“定义常量”、“类定义语句”、“接口定义语句”等编辑动作。且本实施例用于编辑语句,当前行中只有一个标记且是待定标记,所以此时隐藏了将待定标记替换为标识符等表达式编辑相关的编辑动作。用户选择“定义变量”编辑动作,将所选的待定标记被替换为一个定义变量语句标记序列:一个变量定义关键字标记“var”、 一个作为赋值表达式左值的待定标记、一个赋值运算符标记“=”、 一个作为赋值表达式右值的待定标记、一个语句结束分隔符标记“;”,结果如图2所示。
第2步,在图2所示状态中,用户点击选择作为左值的待定标记按钮时,此时该待定标记仅有一个适于上下文情景的编辑动作“录入变量名”,可简化处理,不显示编辑动作列表菜单,直接显示一个含有文本框的界面让用户在文本框中录入新变量名称,如“x”,使用录入的标识符标记“x”替换当前所选的待定标记,结果如图3所示。修改标记序列后,将自动重新显示标记序列。
第3步,在图3所示状态中,用户点击选择操作符标记“=”右面的待定标记时,将显示一个待定标记的编辑动作列表给用户,这个编辑动作列表包括:选择表达式、添加左值、添加右值、改为条件表达式、在前添加单目运算符、录入数字、录入字符串、录入布尔值、录入变量、录入函数、录入属性、添加表达式括号、替换为对象字面量标记序列、替换为数组字面量标记序列、添加属性访问、添加数组下标、复制、剪切、粘贴、删除。这里我们选择编辑动作“选择表达式”,将显示一个表达式类型列表,其中包括:单目表达式、双目表达式、三目表达式、匿名函数、属性访问表达式、数组下标表达式、类型转换表达式、正则表达式、对象字面量表达式、数组字面量表达式。这里选择“双目表达式”,将生成一个双目表达式标记序列:一个作为左值的待定标记、一个加法双目运算符标记“+”、一个作为右值的待定标记,之后使用此双目表达式标记序列替换所选标记,结果如图4所示。
第4步,在图4所示状态中,用户点击选择双目运算符标记“+”左面的待定标记按钮,待定标记的编辑动作列表如第3步中所述,用户选择“录入数字”编辑动作,将显示一个含有文本框的界面让用户在文本框中录入数字,如“1”,结果如图5所示。
第5步,在图5所示状态中,用户点击选择作为右值的待定标记按钮,待定标记的编辑动作列表如第3步中所述,用户选择“录入数字”编辑动作,将显示一个含有文本框的界面让用户在文本框中录入数字,如“2”,使用字面量标记“2”替换所选标记,结果如图6所示。
第6步,在图6所示状态中,用户点击选择数字“2”标记按钮,显示的编辑动作列表与第3步中待定标记的编辑动作列表相同,选择“添加表达式括号”编辑动作,将在数字标记“2”的左右分别添加一个表达式左括号标记和一个表达式右括号标记,结果如图7所示。
第7步,在图7所示状态中,点击选择数字“2”标记按钮,显示的编辑动作列表与第3步中待定标记的编辑动作列表相同,选择“添加右值”编辑动作,将在数字标记“2”右侧添加一个加法运算符标记“+”、一个作为右值的待定标记,结果如图8所示。
第8步,在图8所示状态中,点击选择数字标记“2”按钮右面的加法运算符标记按钮“+”,显示的编辑动作列表包括:删除左值、删除右值、交换左右值、录入运算符、删除。这里选择“删除右值”编辑动作,将删除“+”标记和它右面的待定标记,结果如图7所示。
第9步,在图7所示状态中,在左括号标记“(”按钮上按下触摸屏,保持按下并滑动到右括号标记“)”按钮上松开触摸屏,按下途中经过数字“2” 标记按钮,将选择滑动经过的标记组成的表达式标记序列,即左括号标记“(”、数字标记“2”、右括号标记“)”。此时,显示的编辑动作列表与第3步中待定标记的编辑动作列表相同,选择“删除”编辑动作,将用一个待定标记替换所选的表达式标记序列,结果如图5所示。
第10步,在图5所示状态中,点击选择数字“1”标记按钮,显示的编辑动作列表与第3步中待定标记的编辑动作列表相同,选择“复制”编辑动作,把数字标记“1”复制到剪贴板。继续点击选择待定标记按钮,显示的编辑动作列表如第3步中所述,选择“粘贴”编辑动作,将使用剪贴板中的数字标记“1”替换所选的待定标记,结果如图9所示。
第11步,在图9所示状态中,点击选择运算符标记“+”, 显示的编辑动作列表包括:删除左值、删除右值、交换左右值、录入运算符、删除,选择“删除”编辑动作,将使用一个待定标记替换运算符标记“+”和它的左右值标记序列,结果如图3所示。
第12步,在图3所示状态中,点击选择赋值运算符标记“=”右面的待定标记,显示的编辑动作列表如第3步中所述,这里我们选择编辑动作“替换为数组字面量标记序列”,将生成一个数组字面量表达式标记序列:一个数组左括号标记“[”、一个待定标记、一个数组左括号标记“]”,其中待定标记表示一个默认添加的数组元素,之后使用此数组字面量表达式标记序列替换所选的待定标记,结果如图10所示。
第13步,在图10所示状态中,点击选择数组左括号标记“[”,显示的编辑动作列表包括:添加元素、清空元素、删除,这里选择“清空元素”编辑动作,将删除数组左括号标记“[”和数组右括号标记“]”之间的所有标记,即删除待定标记,结果如图11所示。
此时用户可以选择保存代码,可将代码标记序列保存为代码文本:“var x =[];”,并输出代码文本。此过程中,自动在显示为按钮的标记之间加入必要的空格分隔符标记,如变量定义关键字标记“var”和变量标识符标记“x”之间的空格标记。
若重新输入代码文本“var x = [];”,转化为标记序列之后,按如下规则显示标记:换行分隔符标记显示为换行,行首的空格和制表分隔符标记显示为一定距离的空白,忽略位于其它类型标记之间的空格分隔符标记,待定标记显示为一个空白按钮,剩余标记单独或组合后分别显示在一个按钮上,最后将代码标记序列渲染为一行到多行从左到右排列的按钮组合。结果仍如图11所示,用户可继续进行编辑。
也可直接输出图11所示的标记序列,并直接解释执行这个标记序列。
第14步,在图11所示状态中,点击选择数组右括号标记“]”,显示的编辑动作列表包括:追加元素、清空元素、删除,选择“删除”编辑动作,将删除当前数组的标记序列,即数组左括号标记“[”和数组右括号标记“]”,并在删除的位置添加一个待定标记,结果如图3所示。
第15步,在图3所示状态中,用户点击选择操作符标记“=”右面的待定标记时,显示的编辑动作列表如第3步中所述,选择“录入字符串”编辑动作,将显示一个含有文本框的界面让用户在文本框中输入字符串,用户输入字符串“abc”,将生成一个字符串标记序列,包括一个左引号分隔符标记““”、一个字符串标记“abc”、一个右引号分隔符标记“””,使用此标记序列替换所选待定标记,同时这三个标记将组合显示在一个按钮上,结果如图12所示。
第16步,在图12所示状态中,长按变量定义关键词标记“var”,将选择其所在语句,显示的编辑动作列表包括:在上添加语句、在下添加语句、剪切、复制、删除。选择“在下添加语句”编辑动作,将在“var”标记所在语句下方添加一行,新行中包含一个待定标记,结果如图13所示。
第17步,在图13所示状态中,点击选择第二行中的待定标记按钮,显示的编辑动作列表如第1步中所述,选择“调用函数”编辑动作,将显示一个函数列表供用户选择,这里我们选择alert函数,生成一个alert函数调用标记序列:一个函数名标识符标记“alert”、 一个左括号标识符标记“(”、 一个作为函数参数的待定标记、一个右括号标识符标记“)”,用此标记序列替换所选的待定标记,结果如图14所示。
第18步,在图14所示状态中,用户点击选择第二行的待定标记按钮,待定标记的编辑动作列表如第3步中所述,选择“录入变量”编辑动作,将显示一个包含文本框的界面让用户在文本框中录入变量名,同时列出当前上下文可用的变量列表,其中包括第一行中出现的变量“x”,这里我们选择“x”,将使用标识符标记“x”替换所选的待定标记,结果如图15所示。
第19步,在图15所示状态中,用户点击选择第二行的标识符“x”标记按钮,显示的编辑动作列表与第3步中待定标记的编辑动作列表相同,选择“添加属性访问”编辑动作,将在“x”标记右侧添加一个属性访问运算法标记“.”和一个表示要访问属性的待定标记,结果如图16所示。
第20步,在图16所示状态中,用户点击选择第二行的待定标记按钮,显示的编辑动作列表如第3步中所述,选择“录入属性”编辑动作,将显示一个带有文本框的编辑界面让用户在文本框中录入属性名,这里录入x的“length”属性,使用标识符标记“length”替换所选待定标记,结果如图17所示。
第21步,在图17所示状态中,用户点击选择第二行的属性访问运算符标记“.”按钮,显示的编辑动作列表包括:删除,选择“删除”编辑动作,将删除当前所选的属性访问符标记“.”和它右面的属性标记“length”,结果如图15所示。
第22步,在图15所示状态中,在第一行的关键词标记“var”按钮上按下触摸屏,保持按下滑动到第二行的关键词标记“alert”按钮上松开触摸屏,将选择“var”标记和“alert”标记所在的两行语句,显示的编辑动作列表包括:在上添加语句、在下添加语句、剪切、复制、删除。选择“删除”编辑动作,删除所选的两行语句,删除后代码标记序列为空,则添加一个待定标记到所删除位置,结果如图18所示。
第23步,在图18所示状态中,点击选择待定标记按钮,显示的编辑动作表如第1步中所述。选择“条件语句”编辑动作,将使用只有一个条件分支的条件语句标记序列替换所选标记,结果如图19所示,其中第一行中的条件判断表达式以一个待定标记表示,第二行是该条件语句的内部语句也以一个待定标记表示。第二行中还包括在待定标记前面的制表分隔符标记,显示为一定距离的空白表示代码缩进。
第24步,在图19所示状态中,点击选择第一行的条件结构关键词 “if”标记按钮,或点击选择第三行的条件结构代码块结束分隔符“}”标记按钮,显示的编辑动作包括:添加判断分支、删除判断分支、添加行。这里选择编辑动作“添加判断分支”,将在“}”标记之后添加一个新的判断分支,其中新分支的条件判断表达式以一个待定标记表示,新分支的内部语句以一个待定标记表示,结果如图20所示。
第25步,在图20所示状态中,用户从一个表达式模板列表中拖拽一个表达式模板到第一行的待定标记上,该表达式模板列表包括:数字、字符串、布尔值、单目表达式、双目表达式、三目表达式、Lambda表达式、匿名函数、属性访问表达式、数组下标表达式、类型转换表达式、正则表达式、对象字面量表达式、数组字面量表达式。其中双目表达式包含各种常用的双操作数表达式,如加法表达式、减法表达式、除法表达式、乘法表达式、取模表达式等,其中操作数以待定标记表示。这里拖放的是加法表达式模板,将使用加法表达式模板定义的标记序列:一个作为左操作数的待定标记、一个加法操作符标记、一个作为右操作数的待定标记,替换图20中第一行的待定标记,结果如图21所示。
第26步,在图21所示状态中,用户从一个语句模板列表中拖拽一个语句模板到代码行之间或某行代码上,该语句模板列表包括:变量定义语句、函数定义语句、赋值语句、条件语句、循环语句、函数调用语句。这里拖放变量定义语句模板到第二行代码上。将生成一个变量定义语句定义的标记序列:一个制表分隔符标记、一个变量定义关键字标记“var”、一个作为赋值语句左值的待定标记、一个赋值运算符标记“=”、一个作为赋值语句右值的待定标记、一个语句结束分隔符标记“;”、一个换行分隔符标记,其中制表分隔符标记根据第二行代码的缩进生成。然后使用该标记序列替换第二行代码的所有标记,结果如图22所示。
此时,用户可选择直接保存代码标记序列,等下次编辑时继续录入其中的待定标记。
实施例二:
下面以本发明在触摸屏上编辑一段C#代码,详细说明本发明。本实施例仅用于编辑简单代码,所以只举例使用了部分编辑动作,其它未提及的编辑动作根据代码编程语言语法知识均可容易的类推实现。
开始时,输入如下的C#代码文本:
public class A
{
}
public class B
{
}
其中包含两个类的定义,类A和类B,将此代码文本转换为C#编程语言语法标记序列,结果如图23所示。
之后点击选择类名标记“B”,显示的编辑动作列表包括录入类名、继承、删除,选择“继承”编辑动作,将显示一个类B可继承的类列表,其中包括类A,这里在列表中选择类A,即让类B继承于类A,将在类名标记“B”的右侧添加一个类继承操作符标记“:”和一个类名标识符“A”,结果如图24所示。
在图24所示状态中,点击选择最后一行中的代码块结束符标记“}”,显示的编辑动作包括:添加行。选择“添加行”编辑动作,将在“}”标记的上面添加一个新代码行,新代码行以一个制表分隔符标记和一个待定标记表示,其中制表分隔符标记显示为一定距离的空白,表示代码缩进,结果如图25所示。
之后,用户可通过将新行中的待定标记编辑为类成员变量或成员方法定义语句,完成类的定义。也可通过点击类定义关键词标记“class”或类名标记添加类成员变量或成员方法。
以上所述仅为本发明的具体实施例而已,并不用于限制本发明。本发明可以有各种更改和变化,凡在本发明的精神和原则之内,所作的任何修改、等效替换、改进等,均在本发明保护范围之内。
Claims (20)
1.一种基于标记的代码编辑方法,其特征在于,包括:
输入步骤,接受代码字符序列;
标记步骤,根据代码编程语言语法规则将代码字符序列经过词法分析转换为代码语法标记序列,如果代码语法标记序列为空或只包含分隔符标记,则将一个待定标记作为第一个标记加入标记序列,标记的类型包括关键字、标识符、字面量、运算符、分隔符、待定标记,其中标识符包括变量名、函数名、类名,字面量包括数字、字符串、布尔值,待定标记是未确定其字符序列的标记;
渲染步骤,在图形界面上,换行分隔符标记显示为换行,行首的空格和制表分隔符标记显示为一定距离的空白,忽略位于其它类型标记之间的空格分隔符标记,将待定标记显示为一个空白按钮,剩余标记单独或组合后分别显示在按钮上,最后将代码标记序列渲染为一行到多行从左到右排列的按钮组合;
编辑步骤,编辑者通过点击或触摸标记按钮,选择相应的一个或多个标记,根据当前所选标记或标记序列表示的代码编程语言语法结构,显示一个编辑动作列表给编辑者,编辑者选择其中一个编辑动作后,根据该编辑动作的含义,按照代码编程语言的语法规则,修改代码标记序列;
重复渲染步骤和编辑步骤直到完成编辑;
保存步骤,在显示为按钮的标记之间加入必要的空格分隔符标记,将代码标记序列转换为代码字符序列,如果代码标记序列为空或只包含待定标记,则将其转换为空的代码字符序列;
输出步骤,输出代码字符序列。
2.根据权利要求1所述的一种基于标记的代码编辑方法,其特征在于,所述编辑步骤中:
如果一行标记中只有一个标记且为待定标记或其它标记都是分隔符标记,此待定标记的编辑动作包括:替换为变量定义语句标记序列、替换为常量定义语句标记序列、替换为函数定义语句标记序列、替换为类定义语句标记序列、替换为类成员方法定义语句标记序列、替换为类成员变量定义语句标记序列、替换为接口定义语句标记序列、替换为接口方法定义语句标记序列、替换为赋值语句标记序列、替换为条件语句标记序列、替换为循环语句标记序列、替换为函数调用语句标记序列、替换为类实例方法调用语句标记序列、替换为类静态方法调用语句标记序列、替换为返回语句标记序列;
若代码编程语言不支持编辑动作中所述的语法结构,则隐藏该编辑动作;
若要替换的语句在当前上下文中不符合代码编程语言语法规则,则隐藏相应的编辑动作;
替换为变量定义、常量定义或赋值语句标记序列时,该语句的左值和右值都以一个待定标记表示;
替换为条件语句标记序列时,其中条件判断表达式以待定标记表示;
替换为循环语句标记序列时,其中循环结构所需的表达式以待定标记表示;
替换为函数定义、类定义、接口定义语句标记序列时,函数名、类名、接口名以一个待定标记表示;
替换为函数定义、类定义、类成员方法定义、接口定义、条件语句、循环语句标记序列时,这些语法结构的内部语句以一个待定标记和所需的分隔符标记表示;
替换为函数调用语句标记序列时,不能确定的函数名、函数的参数名以待定标记表示;
替换为类实例方法调用语句标记序列时,不能确定的类实例名、类实例方法名、类实例方法的参数名以待定标记表示;
替换为类静态方法调用语句标记序列时,不能确定的类名、类静态方法名、类静态方法的参数名以待定标记表示;
替换为返回语句标记序列时,返回值表达式用一个待定标记表示;
在图形界面空间足够时,替换为条件语句标记序列编辑动作分解为替换代码编程语言所支持的各种判断结构语句标记序列;
在图形界面空间足够时,替换为循环语句标记序列编辑动作分解为替换代码编程语言所支持的各种循环结构语句标记序列。
3.根据权利要求1所述的一种基于标记的代码编辑方法,其特征在于,所述编辑步骤中:
按下键盘Shift键并连续点击多个标记按钮,若这些按钮对应标记在同一个语句内,且包含这些标记的最小语法结构是表达式,则选择组成这个表达式的标记序列;
在一个标记按钮上按下鼠标左键或触摸屏,保持按下并移动到同一语句内的其它标记按钮上松开鼠标左键或触摸屏,若包含这些移动经过的按钮对应标记的最小语法结构是表达式,则选择组成这个表达式的标记序列;
点击图形界面空白处,隐藏编辑动作列表,并取消标记的选中状态。
4.根据权利要求1所述的一种基于标记的代码编辑方法,其特征在于,所述编辑步骤中:
待定标记的编辑动作包括:选择表达式、录入字面量、录入标识符、录入关键字;
表达式标记序列的编辑动作包括:选择表达式、录入字面量、录入标识符、录入关键字;
关键字标记的编辑动作包括:录入关键字;
标识符标记的编辑动作包括:录入标识符、录入字面量;
字面量标记的编辑动作包括:录入字面量、录入标识符;
运算符标记的编辑动作包括:录入运算符;
选择表达式时,将显示一个表达式模板列表供编辑者选择,此表达式模板列表中包括单目表达式、双目表达式、三目表达式、Lambda表达式、匿名函数、属性访问表达式、数组下标表达式、类型转换表达式、正则表达式、对象字面量表达式、数组字面量表达式,编辑者选择一个表达式模板后,使用一个该表达式模板定义的标记序列替换所选标记或标记序列,其中新表达式标记序列内的操作数以待定标记表示;
录入关键字时,同时显示一个关键字列表,列出所有当前上下文中可用的关键字,供编辑者选择后替换所选标记或标记序列;
录入标识符时,同时显示一个标识符列表,列出所有当前上下文中可用的标识符,供编辑者选择后替换所选标记或标记序列;
在图形界面空间足够时,录入标识符编辑动作分解为:录入变量名、录入常量名、录入函数或方法名、录入类名、录入属性名;
录入字面量时,将显示一个文本框用于录入字面量,并用录入的字面量标记替换所选标记或标记序列;
在图形界面空间足够时,录入字面量编辑动作分解为:录入数字、录入字符串、录入布尔值;
字符串标记和其左右的字符串分隔符标记一起显示在同一个按钮上,此按钮被选择时显示字符串字面量标记的编辑动作列表;
录入布尔值时,同时显示一个布尔值列表,供编辑者选择后替换所选标记;
录入运算符时,同时显示一个运算符列表,列出所有当前上下文中可用的运算符,供编辑者选择后替换所选标记。
5.根据权利要求1所述的一种基于标记的代码编辑方法,其特征在于,所述编辑步骤中:
标识符标记、字面量标记、组成表达式的标记序列、待定标记的编辑动作包括:添加左值、添加右值、改为三目条件表达式;
添加左值时,在所选标记或标记序列左侧添加一个作为左操作数的待定标记和一个双目运算符标记;
添加右值时,在所选标记或标记序列右侧添加一个双目运算符标记和一个作为右操作数的待定标记;
改为三目条件表达式时,会将所选标记或标记序列作为三目条件表达式条件,在所选标记或标记序列右侧添加当前代码编程语言中组成三目条件表达式所需要的其它操作符标记和操作数标记,新加的表达式操作数以待定标记表示。
6.根据权利要求1所述的一种基于标记的代码编辑方法,其特征在于,所述编辑步骤中:
标识符标记、字面量标记、组成表达式的标记序列、待定标记的编辑动作包括:添加表达式括号;
添加表达式括号时,在所选标记或标记序列两侧分别添加表达式左括号标记和表达式右括号标记;
表达式左括号标记和表达式右括号标记的编辑动作包括:左移、右移、添加左值、添加右值、改为三目条件表达式、添加表达式括号、删除;
左移或右移表达式括号标记时,可跳过一个或多个标记,直到括号标记移动后形成一个合法的表达式,否则不移动表达式括号标记;
添加左值时,在括号表达式的左侧添加一个作为左操作数的待定标记和一个双目运算符标记;
添加右值时,在括号表达式的右侧添加一个双目运算符标记和一个作为右操作数的待定标记;
改为三目条件表达式时,将括号表达式作为三目条件表达式条件,在表达式右括号标记右侧添加当前代码编程语言中组成三目条件表达式所需要的其它操作符标记和操作数标记,新加的表达式操作数以待定标记表示;
在表达式左括号标记和表达式右括号标记上添加表达式括号时,在括号表达式标记序列两侧,分别添加表达式左括号标记和表达式右括号标记;
删除时,将同时删除成对的两个表达式括号标记。
7.根据权利要求1所述的一种基于标记的代码编辑方法,其特征在于,所述编辑步骤中:
标识符标记、字面量标记、括号包围的表达式标记序列、待定标记的编辑动作包括:添加属性访问、添加数组下标、在前添加单目运算符、在后添加单目运算符;
括号表达式右括号标记的编辑动作包括:添加属性访问、添加数组下标、在后添加单目运算符;
括号表达式左括号标记的编辑动作包括:在前添加单目运算符;
添加属性访问时,会在所选标记或标记序列右侧添加一个属性访问符标记和一个待定标记,这个待定标记用来表示属性名;
添加数组下标时,会在所选标记或标记序列右侧添加一个数组下标运算符标记和一个待定标记,这个待定标记用来表示数组索引;
在前添加单目运算符时,在所选标记或标记序列左侧插入单目运算符标记;
在后添加单目运算符时,若代码编程语言支持右侧的单目运算符,在所选标记或标记序列右侧插入单目运算符标记,否则不显示此编辑动作。
8.根据权利要求1所述的一种基于标记的代码编辑方法,其特征在于,所述编辑步骤中:
标识符标记、字面量标记、组成表达式的标记序列、待定标记的编辑动作包括:剪切、复制;
剪切或复制后,标识符标记、字面量标记、组成表达式的标记序列、待定标记的编辑动作还包括:粘贴;
剪切和复制时,将所选标记或标记序列复制到剪贴板;
剪切后,从代码标记序列中删除所选标记或标记序列,并在被删除标记或标记序列的原始位置插入一个新的待定标记;
粘贴时,使用剪贴板中的标记或标记序列替换所选标记或标记序列。
9.根据权利要求1所述的一种基于标记的代码编辑方法,其特征在于,所述编辑步骤中:
标识符标记、字面量标记、组成表达式的标记序列、待定标记、单目运算符标记、关键字标记、属性访问符标记、数组下标运算符标记的编辑动作包括:删除;
删除标识符标记、字面量标记、表达式标记序列时,使用一个待定标记替换所选标记或标记序列;
删除单目运算符标记时,只删除该单目运算符标记;
删除待定标记、关键字标记时,从代码标记序列中删除所选标记,若删除后导致错误的语法结构,则隐藏此编辑动作;
删除属性访问符标记时,将同时删除属性访问符标记和属性标识符标记;
删除数组下标运算符标记时,将同时删除成对的数组下标运算符标记和数组下标索引标记。
10.根据权利要求1所述的一种基于标记的代码编辑方法,其特征在于,所述编辑步骤中:
双目运算符的编辑动作包括:删除左值、删除右值、交换左右值、删除;
删除左值时,删除所选双目运算符标记和作为双目运算符左值的表达式标记序列;
删除右值时,删除所选双目运算符标记和作为双目运算符右值的表达式标记序列;
交换左右值时,交换所选双目运算符标记的左值表达式标记序列和右值表达式标记序列的位置;
删除时,使用一个待定标记替换此双目运算符所在的双目表达式标记序列。
11.根据权利要求1所述的一种基于标记的代码编辑方法,其特征在于,所述编辑步骤中:
若代码编程语言支持对象字面量、数组字面量,待定标记的编辑动作包括:替换为对象字面量标记序列、替换为数组字面量标记序列;
替换为对象字面量标记序列时,其中默认包含一个对象属性,此对象属性的名称和值都以一个待定标记表示;
替换为数组字面量标记序列时,其中默认包含一个数组元素,该数组元素以待定标记表示。
12.根据权利要求1所述的一种基于标记的代码编辑方法,其特征在于,所述编辑步骤中:
代码编程语言支持的列表元素分隔符的编辑动作包括:在前添加元素、在后添加元素、删除前方元素;
代码编程语言支持的列表左括号分隔符标记的编辑动作包括:添加元素、清空元素、删除;
代码编程语言支持的列表右括号分隔符标记的编辑动作包括:追加元素、清空元素、删除;
在前添加元素时,将在列表元素分隔符标记前添加一个列表分隔符标记和一个列表元素标记序列;
在后添加元素时,将在列表元素分隔符标记后添加一个列表元素标记序列和一个列表元素分隔符标记;
删除前方元素时,将删除所选的列表元素分隔符标记和其前方列表元素的标记序列;
添加元素时,将一个列表元素标记序列添加为第一个列表元素,若其后有其它列表元素,在新元素后添加一个列表分隔符标记;
追加元素时,将一个列表元素标记序列添加为最后一个列表元素,若其前有其它列表元素,在新元素前添加一个列表元素分隔符标记;
清空元素时,将删除列表中的所有元素标记和列表元素分隔符标记;
若当前列表为函数参数列表,新列表元素中的参数名以一个待定标记表示;
若当前列表为字面量对象,新列表元素即对象属性的名称和值都以一个待定标记表示;
若当前列表为数组字面量,新列表元素即数组元素以一个待定标记表示;
对于列表左括号分隔符标记或列表右括号分隔符标记上的删除编辑动作,若当前列表为函数参数列表,则隐藏删除编辑动作,删除其它类型列表时,将使用一个待定标记替换列表标记序列。
13.根据权利要求1所述的一种基于标记的代码编辑方法,其特征在于,所述编辑步骤中:
长按或双击任意一个标记按钮,将选择该按钮对应标记所在语句的所有标记,并显示编辑动作列表:在上添加语句、在下添加语句、剪切、复制、删除;
按下键盘Shift键并连续点击多个标记按钮,若这些按钮对应标记在不同语句内,将选择这些标记所在语句和所在语句之间语句的所有标记,并显示编辑动作列表:在上添加语句、在下添加语句、剪切、复制、删除;
在一个标记按钮上按下鼠标左键或触摸屏,保持按下并移动到其它语句内的某一标记按钮上松开鼠标左键或触摸屏,将选择移动经过的按钮对应标记所在语句和所在语句之间语句的所有标记,并显示编辑动作列表:在上添加语句、在下添加语句、剪切、复制、删除;
当剪切或复制语句标记序列后,以上所述编辑动作列表还包括:粘贴、在上方插入、在下方插入;
在上添加语句、在下添加语句时,新添加的语句以一个待定标记和代码编程语言语法要求的分隔符标记表示;
剪切和复制时,将所选语句复制到剪贴板;
剪切后,从代码标记序列中删除所选语句标记序列;
粘贴时,用剪贴板中的语句标记序列替换当前所选语句标记序列;
在上方插入时,将剪贴板中的语句标记序列插入到当前所选语句之上;
在下方插入时,将剪贴板中的语句标记序列插入在当前所选语句之下;
删除时,删除所选语句的所有标记,若删除后代码标记序列为空或只包含分隔符标记,则添加一个待定标记到所删除位置。
14.根据权利要求1所述的一种基于标记的代码编辑方法,其特征在于,所述编辑步骤中:
代码块分隔符标记的编辑动作列表包括:添加行;
添加行时,若所选代码块分隔符标记是代码块开始标记,则在代码块内部添加一个新代码行作为第一行,若所选代码块分隔符标记是代码块结束标记,则在代码块内部添加一个新代码行作为最后一行;
新代码行以一个待定标记和表示缩进的分隔符标记组成。
15.根据权利要求1所述的一种基于标记的代码编辑方法,其特征在于,所述编辑步骤中:
条件判断结构的关键字标记和代码块结束分隔符标记的编辑动作包括:在前添加判断分支、在后添加判断分支、删除判断分支;
在前或在后添加判断分支时,在当前所选标记所在判断分支的之前或之后,添加一个判断分支,即插入构成这个新判断分支的所有标记,其中判断条件表达式以一个待定标记表示,新判断分支的内部语句以一个待定标记和所需的分隔符标记表示;
删除判断分支时,删除当前所选标记所在判断分支的所有标记。
16.根据权利要求1所述的一种基于标记的代码编辑方法,其特征在于,所述编辑步骤中:
代码编程语言支持定义类,则类定义关键字标记和类名标记的编辑动作包括:添加构造函数、添加实例方法、添加静态方法、添加类变量、添加静态变量;
若代码编程语言支持定义接口,则接口定义关键字标记和接口名标记的编辑动作包括:添加接口方法;
执行上述编辑动作时,将添加相应定义语句的标记序列,其中不确定的方法名、变量名、参数名以待定标记表示,新方法的内部语句以一个待定标记和所需的分隔符标记表示;
类定义中方法名标记、成员变量名标记的编辑动作包括:添加访问修饰符;
添加访问修饰符时,将在对应的方法名标记或成员变量名标记前添加访问修饰符标记;
若代码编程语言支持类继承,则类定义关键字标记和类名标记的编辑动作包括:继承;
继承时,将显示一个当前类可继承的类列表,编辑者选择某一个类后,添加继承此类的所需标记;
若代码编程语言支持接口,类定义中类名标记的编辑动作包括:实现接口;
实现接口时,将显示一个当前类可实现的接口列表,编辑者选择某一个接口后,添加实现此接口的所需标记,其中实现接口方法的内部语句以一个待定标记和所需的分隔符标记表示;
若代码编程语言不支持上述某一语法结构,则隐藏相应的编辑动作。
17.根据权利要求1所述的一种基于标记的代码编辑方法,其特征在于,所述编辑步骤中:
编辑代码时,显示一个语句模板列表给用户,该语句模板列表包括变量定义语句、常量定义语句、函数定义语句、类定义语句、类成员方法定义语句、类成员变量定义语句、接口定义语句、接口方法定义语句、赋值语句、条件语句、循环语句、函数调用语句、类实例方法调用语句、类静态方法调用语句、返回语句,用户可通过鼠标或触摸屏手势拖放某一语句模板到标记按钮构成的某一代码语句上,或拖放到某一代码语句之前或之后;
拖放到某一语句上时,将使用此语句模板定义的标记序列替换该行语句的标记序列;
拖放到某一代码语句之前或之后时,将在该语句标记之前或之后插入此语句模板定义的标记序列;
如果拖放某一语句模板后会导致错误的语法结构,则禁止在此位置拖放该语句模板;
语句模板定义的标记序列中不确定的标识符以待定标记表示。
18.根据权利要求1所述的一种基于标记的代码编辑方法,其特征在于,所述编辑步骤中:
编辑代码时,显示一个表达式模板列表给用户,该表达式模板列表包括数字、字符串、布尔值、单目表达式、双目表达式、三目表达式、Lambda表达式、匿名函数、属性访问表达式、数组下标表达式、类型转换表达式、正则表达式、对象字面量表达式、数组字面量表达式,用户可通过鼠标或触摸屏手势拖放某一表达式模板到现有的待定标记、标识符标记、字面量标记按钮上,并使用该表达式模板定义的标记序列替换现有标记,其中新表达式内的操作数以待定标记表示。
19.根据权利要求1所述的一种基于标记的代码编辑方法,其特征在于,所述编辑步骤中:
若事先限定了所支持的代码编程语言语法结构类型集合,则仅显示与此语法结构类型集合相关的编辑动作;
若某编辑动作执行后会导致错误的语法结构,则隐藏或不执行此编辑动作;
若某编辑动作中所述的语法结构不被当前代码编程语言所支持,则隐藏此编辑动作。
20.根据权利要求1所述的一种基于标记的代码编辑方法,其特征在于,所述标记步骤或保存步骤可被忽略,输入步骤、输出步骤中可直接接收或输出标记序列:可输入代码文本输出标记序列,也可输入标记序列输出代码文本,也可即输入标记序列又输出标记序列。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811193484.0A CN109542420A (zh) | 2018-10-15 | 2018-10-15 | 一种基于标记的代码编辑方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811193484.0A CN109542420A (zh) | 2018-10-15 | 2018-10-15 | 一种基于标记的代码编辑方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109542420A true CN109542420A (zh) | 2019-03-29 |
Family
ID=65844152
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811193484.0A Pending CN109542420A (zh) | 2018-10-15 | 2018-10-15 | 一种基于标记的代码编辑方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109542420A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111530082A (zh) * | 2020-05-25 | 2020-08-14 | 网易(杭州)网络有限公司 | 判断语句的编辑方法及装置 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020095658A1 (en) * | 1997-05-27 | 2002-07-18 | Microsoft Corporation | Computer programming language statement building and information tool |
CN1825279A (zh) * | 2006-02-14 | 2006-08-30 | 大连大有吴涛易语言软件开发有限公司 | 计算机编程中运用表格处理声明项的方法 |
US20090313613A1 (en) * | 2008-06-16 | 2009-12-17 | Real Dice Inc. | Methods and Apparatus for Automatic Translation of a Computer Program Language Code |
US20100162210A1 (en) * | 2008-12-22 | 2010-06-24 | International Business Machines Corporation | Visual Editor for Editing Complex Expressions |
WO2015099008A1 (ja) * | 2013-12-27 | 2015-07-02 | 株式会社おおとり | コンピュータプログラム生成装置 |
CN106227668A (zh) * | 2016-07-29 | 2016-12-14 | 腾讯科技(深圳)有限公司 | 数据处理方法和装置 |
CN106874019A (zh) * | 2017-03-17 | 2017-06-20 | 微梦创科网络科技(中国)有限公司 | 一种骨架代码的生成方法和骨架代码生成器 |
CN107797794A (zh) * | 2017-10-17 | 2018-03-13 | 北京华航唯实机器人科技股份有限公司 | 程序代码的编辑方法、装置、存储介质、处理器及终端 |
-
2018
- 2018-10-15 CN CN201811193484.0A patent/CN109542420A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020095658A1 (en) * | 1997-05-27 | 2002-07-18 | Microsoft Corporation | Computer programming language statement building and information tool |
CN1825279A (zh) * | 2006-02-14 | 2006-08-30 | 大连大有吴涛易语言软件开发有限公司 | 计算机编程中运用表格处理声明项的方法 |
US20090313613A1 (en) * | 2008-06-16 | 2009-12-17 | Real Dice Inc. | Methods and Apparatus for Automatic Translation of a Computer Program Language Code |
US20100162210A1 (en) * | 2008-12-22 | 2010-06-24 | International Business Machines Corporation | Visual Editor for Editing Complex Expressions |
WO2015099008A1 (ja) * | 2013-12-27 | 2015-07-02 | 株式会社おおとり | コンピュータプログラム生成装置 |
CN106227668A (zh) * | 2016-07-29 | 2016-12-14 | 腾讯科技(深圳)有限公司 | 数据处理方法和装置 |
CN106874019A (zh) * | 2017-03-17 | 2017-06-20 | 微梦创科网络科技(中国)有限公司 | 一种骨架代码的生成方法和骨架代码生成器 |
CN107797794A (zh) * | 2017-10-17 | 2018-03-13 | 北京华航唯实机器人科技股份有限公司 | 程序代码的编辑方法、装置、存储介质、处理器及终端 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111530082A (zh) * | 2020-05-25 | 2020-08-14 | 网易(杭州)网络有限公司 | 判断语句的编辑方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10592073B2 (en) | Exposing non-authoring features through document status information in an out-space user interface | |
US10642927B2 (en) | Transitions between user interfaces in a content editing application | |
CA2937964C (en) | Systems and methods for bi-directional visual scripting for programming languages | |
US8510650B2 (en) | Multiple synchronized views for creating, analyzing, editing, and using mathematical formulas | |
US20030090473A1 (en) | Multiple screen automatic programming interface | |
MXPA03005875A (es) | Metodo para validar un documento xml y reportar violaciones al esquema. | |
Brown et al. | Frame-based editing: Combining the best of blocks and text programming | |
US8307333B2 (en) | System and computer program product for assisting a user in the process of creating software code | |
US20210405977A1 (en) | Method of converting source code in a universal hybrid programming environment | |
CN109710686A (zh) | 可视化构建图表的分析系统 | |
US20110080409A1 (en) | Formula input method using a computing medium | |
Kölling et al. | Stride in BlueJ--computing for all in an educational IDE | |
US20060107220A1 (en) | Method and system for displaying an annotated file | |
CN109542420A (zh) | 一种基于标记的代码编辑方法 | |
CN110929100B (zh) | 获取取值路径的方法、装置、存储介质和电子设备 | |
Bertot et al. | CtCoq: A system presentation | |
Bahlke et al. | Context-sensitive editing with PSG environments | |
Bertot et al. | The ctcoq experience | |
Martynovsky | Developing an Interactive Visualization Tool for Pangenome Graphs | |
Henry et al. | Visual tracer for logic programming | |
Anderson | Visual Basic 6 In Easy Steps | |
Jin et al. | Design and implementation for report layout merging | |
Zllllh | JJASIPER2 Faeilitating Snftware Maintenanee Aetiyiities With Expliieit Task Re presentatinns | |
van Cittert | Redesigning the IDE | |
Mears | TextMate How-to |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |