CN102495749A - 一种将飞行规则转换成便于计算机执行的指令码的方法 - Google Patents
一种将飞行规则转换成便于计算机执行的指令码的方法 Download PDFInfo
- Publication number
- CN102495749A CN102495749A CN2011103876593A CN201110387659A CN102495749A CN 102495749 A CN102495749 A CN 102495749A CN 2011103876593 A CN2011103876593 A CN 2011103876593A CN 201110387659 A CN201110387659 A CN 201110387659A CN 102495749 A CN102495749 A CN 102495749A
- Authority
- CN
- China
- Prior art keywords
- expression formula
- symbol
- analysis
- expression
- flight
- 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.)
- Granted
Links
Images
Landscapes
- Machine Translation (AREA)
Abstract
本发明公开了一种将飞行规则转换成便于计算机执行的指令码的方法,属于指令码编译领域。该方法是先根据飞行规则的表述,用运算符、自定义关键词以及函数将飞行规则转换成形式化表达式,然后根据编译原理,进一步进行形式化表达式的词法分析、词元语法分析、编译过程容错处理、形式化表达式语义分析,最后生成可执行指令码。本发明为飞行员在飞行训练中操作水平的自动客观评估打下了基础,从而可利用计算机自动获得飞行监控项目的评估结果。
Description
技术领域
本发明涉及一种指令码的转换方法,尤其涉及一种将飞行规则转换成便于计算机执行的指令码的方法,属于指令码编译领域。
背景技术
国内外民用航空公司普遍重视飞行员操纵品质的监控,通过改进和完善飞行机组人员的操作水平,以提高飞行安全的记录。各航空公司针对不同的机型制定了相应的飞行员操纵品质监控项目和标准,监控的项目贯穿整个飞行过程,包括地面滑行、起飞离地、爬升、航线飞行、近进和下滑着陆等。针对这些上百条甚至更多的监控项目,需要设计一个自动分析评估结果的系统,根据飞行过程中记录的飞行数据按飞行标准自动判定飞行员飞行水平,以达到客观、全面、有效、快速地评估飞行员飞行品质的目的,进一步提高航空安全性。
每个航空公司制定的飞行标准必须满足飞行规则,飞行规则一般用文字描述。在这个飞行品质评估系统中,最重要的问题就是如何将飞行规则转换成通用的指令码,以便于计算机能自动解释分析得到各飞行监控项目的评估结果。
目前对飞行员操作水平的评估一般都是采用教练员观察和打分的方式,评估结果相对主观,在飞行品质自动评估方面,还没有将飞行规则转换成可执行指令码的相关研究成果。
发明内容
本发明要解决的技术问题是:提出一种将飞行规则转换成可执行指令码的方法,以使计算机能解释执行飞行规则来评估飞行员的操作水平。
该方法的步骤如下:
(a)根据飞行规则的表述,读取保存在服务器数据库中的飞行参数,用运算符、自定义关键词以及函数,按语法格式将飞行规则转换成形式化表达式,并保存至服务器数据库;
(b)服务器根据编译原理,将步骤(a)得到的形式化表达式编译生成可执行指令码,并保存至服务器数据库。
所述步骤(b)又包括如下步骤:
(b1)服务器对形式化表达式进行词法分析,得出具有语法意义的各种词元;
(b2)对步骤(b1)得到的词元进行语法分析,判定形式化表达式是否符合定义的语法,若不符合则继续下一步,若符合则转入步骤(b4);
(b3)对编译过程进行容错处理,对形式化表达式中的语法错误部分进行修复;
(b4)对形式化表达式进行静态语义分析,检查其中语法合理但语义错误的部分,并提示错误;
(b5)生成可执行指令码,保存至服务器数据库。
技术效果:
本发明将现行飞行规则转换成了便于计算机执行的指令码,为飞行员在飞行训练过程中操纵水平的自动、客观、快速评估奠定了基础,从而可利用计算机自动解释分析得到各飞行监控项目的评估结果,有利于提高飞行员的训练效果,克服了教练员观察和打分方式对评估结果的主观影响。
附图说明
图1是词法分析的有限状态机示意图。
图2是一个表达式类型属性计算对应的语法树示意图。
图3是一个表达式的翻译模式对应的语法树示意图。
具体实施方式
民航总局规定的每条飞行规则均用文字表达,其描述了单个或多个飞行参数在时间约束下的逻辑关系及必须满足的数值范围。在转换过程中,可以用运算符、自定义关键词以及函数将由若干飞行参数组成的表达式形式化描述飞行规则,再通过基于编译原理的方法,将表达式编译成目标代码。因此,在转换过程中需解决的两个关键问题,一是如何由飞行规则转换成形式化表达式,二是寻找由形式化表达式生成可执行指令码的方法。
下面详细说明转换过程中的具体方法和步骤。
转换的第一步是将飞行规则转换成形式化表达式。即,读取保存在服务器数据库中的飞行参数,用运算符、自定义关键词以及函数,按一定的语法格式组织成形式化表达式,用以描述飞行规则,并保存至服务器数据库中。
转换过程中采用的运算符包括常用的数学运算符(加、减、乘、除)、比较运算符(等于、大于、小于、不小于、不大于、不等于)和逻辑运算符(或、且、非)。
关键词采用如下几种:
in...from:表示飞机飞行过程中从某个时刻开始某段时间内必须要完成某些操作;
while:表示飞机飞行过程中在某个操作过程中要完成(或保持)另一个操作;
last:表示飞机飞行过程中某个操作要持续某段时间;
notlast:表示飞机飞行过程中某个操作不持续某段时间;
before:表示飞机飞行过程中在完成某个动作之前要完成另一个动作;
after:表示飞机飞行过程中在完成某个动作之后要完成另一个动作;
when:表示飞机飞行过程中在某个操作完成时需要完成某个动作。
自定义函数包括如下几类:
全行程函数FullTravel(),绝对值函数Abs(),变化函数IsChanged(),区间函数Mid(),取时间函数GetTime(),取参数值GetParamValue(),保持状态函数KeepState()。
例如,飞行规则“速度与目标速度之差的绝对值小于等于3”中涉及的飞行参数有速度airspeed、目标速度targetspeed,该飞行规则可转换为如下形式化表达式:
Abs(airspeed-targetspeed)<=3;
飞行规则“FPV方式转换于启动进近之后,选择襟翼1之前”中涉及的飞行参数有FPV方式FPV_MODE、进近Approach、襟翼flap,该飞行规则可转换为如下形式化表达式:
IsChanged(FPV_MODE)after Approach==1 & & IsChanged(FPV_MODE)before flap==1;
若当前已定义的函数不能描述飞行规则的一些特殊的操作,可以扩充函数库,添加新的函数。例如,飞行规则“转弯角度大于40”,其中对于转弯角度的计算并不能通过常用的运算符或已有函数得到。因此,向函数库添加新的函数TurnAngle(),用于负责根据航向来计算转弯角度,则上述飞行规则换成形式化表达式:TurnAngle(Heading)>40。
转换的第二步是将形式化表达式编译成可执行的指令码。该步骤是本发明方法的关键步骤,如上文所述,对于用运算符、自定义关键词以及函数按一定的语法格式组织成的形式化表达式,借鉴编译原理的思想,按文法将其编译成目标代码。
根据飞行规则到形式化表达式的转换特点,首先制定编译的文法(产生式),如下:
(0)rule→stmt
(1)stmt→loe|stmt kwd loe
(2)kwd→in NUM from|KWD
(3)el→loe|el COMM loe
(4)loe→lae|loe OR_OP lae
(5)lae→re|lae AND_OP re
(6)re→ae|re RL_OP ae
(7)ae→me|ae ADD_OP me
(8)me→ue|me MUL_OP ue me1
(9)ue→pe|ADD_OP pe
(10)ue→pe|pe{el}
(11)pe→ID|NUM|(loe)|FUNC
文法中的单词符号意义如下:
(1)标识符:ID,表示模拟机参数;FUNC,表示函数名称;
(2)常数:NUM,表示常量数值;
(3)运算符:ADD_OP:表示加减运算;MUL_OP:表示乘除运算;RL_OP:表示比较运算;AND_OP表示与运算;OR_OP表示或运算;
(4)界符:包括COMM:逗号;{}:左右花括号;():左右圆括号;
(5)关键词:包括in...from;KWD:while、before、after、last、notlast、when;
针对上述文法,本发明采用LL(1)分析法作语法分析,对所述文法进行消除左递归,文法修改为:
基于制定的文法及其分析法,将形式化表达式编译成可执行指令码的过程包括五个步骤,详述如下。
1.第一步,对形式化表达式进行词法分析,得出具有语法意义的各种词元。在具体实施方式上,本发明设计了一个有限状态机,通过对读入表达式中的字符进行判定,从而确定下一步的状态来实现词法分析的功能。
每个词元都具有一定的语法属性,比如,词元为字母的语法属性可定义为ID,词元为数字的语法属性可定义为NUM。
设计本发明中词元的语法属性结构为:
以上语法属性结构包括了所有产生式中的终结符与非终结符,通过它可以方便地标定某一词元的语法属性。
定义词元的数据结构如下:
词法分析的有限状态机如图1所示,其主要状态转换过程如下:
S0:初始状态,语法属性EMPTY,将输入字符串中的回车符、换行符、制表符用空格代替,设置读取指针P指向输入表达式对应字符串的首个字符;判断首个字符的属性,若为字母则转入状态S1,若为数字则转入状态S3,若为单个基本运算符或界符则转入状态S8,若为其它运算符则分别转入状态S9、S12、S14、S17、S20、S22,若为结束符则转入状态SEND,其它情况为SERROR状态,并将指针P指向下一个字符。
S1:语法属性ID;判断当前指针P指向字符的属性,若为字符或数字,则指针P后移一位,转入状态S1,否则转入状态S2,对已获取的前一段字符串,查找模拟机参数表和函数参数表确定其语法性质,若出错,则记录错误;
S3:语法属性NUM;判断当前指针P指向字符的属性,若为数字,则指针P后移一位,转入状态S3,否则转入状态S4,对已获取的前一段字符串,设置语法性质为NUM;若为小数点,则指针P后移一位,转入状态S5;
S5:语法属性NUM;判断当前指针P指向字符的属性,若为数字,则指针P后移一位,转入状态S6,否则转入出错状态SERROR;
S6:语法属性NUM;判断当前指针P指向字符的属性,若为数字,则指针P后移一位,转入状态S6,否则转入状态S7,对已获取的前一段字符串,设置语法性质为NUM;
S8:根据运算符或界符的具体类型,判定词元的语法性质,如左括号对应的语法性质为LP,乘号对应MUL_OP等;
S9:判断当前指针P指向字符的属性,若为等于号,则转入状态S10,语法属性RL_OP;否则转入状态S11,语法属性ADD_OP;
S12:判断当前指针P指向字符的属性,若为等于号,则转入状态S13,语法属性为RL_OP;否则转入出错状态SERROR,语法属性为ERROR;
S14:判断当前指针P指向字符的属性,若为等于号,则转入状态S15,语法属性为SyntaxElement.RL_OP;否则转入状态S16,语法属性为RL_OP;
S17:判断当前指针P指向字符的属性,若为等于号,则转入状态S18,语法属性为RL_OP;否则转入状态S19,语法属性为RL_OP;
S20:判断当前指针P指向字符的属性,若为&,则转入状态S21,语法属性为AND_OP;否则转进入出错状态SERROR,语法属性为ERROR;
S22:判断当前指针P指向字符的属性,若为|,则转入状态S23,语法属性为OR_OP;否则转入出错状态SERROR状态,语法属性为ERROR;
SEND:语法属性为SHARP。
在进入SEND状态之前,每个终态(包括SERROR)后,都返回初始状态S0,当前语法属性为EMPTY,从指针P当前位置开始继续分析输入表达式对应的字符串。
例如,输入表达式“a+b==10 while abs(a,b);”,其中a、b是数值类型的变量,函数abs包含两个数值型参数,且返回值是布尔型。基于上述状态机,词法分析可将其分解为如下表所示的词元链表。
tokenType | ID | ADD_OP | ID | RL_OP | NUM | KWD | FUNC | LP | ID | COMM | ID | LP | SHARP |
szText | a | + | b | == | 10 | while | abs | ( | a | , | b | ) | ; |
FunName | ADD | EQU | abs | ||||||||||
idtype | 2 | 2 | 4 | 2 | 2 | ||||||||
paramnum | 2 | ||||||||||||
explist | {2,2} |
2.第二步,采用LL(1)预测分析法对词元进行语法分析。首先对上述消除左递归后的上下文无关文法建立LL(1)预测分析表,形式如下表所示。
in | NUM | from | KWD | COM | OR | AND | RL | ADD | MUL | LB | RB | ID | LP | RP | FUN | SHARP | |
rule | 0 | 0 | 0 | 0 | 0 | ||||||||||||
stmt | 1 | 1 | 1 | 1 | 1 | ||||||||||||
stmt1 | 2 | 2 | 3 | 3 | |||||||||||||
kwd | 4 | 5 | |||||||||||||||
el | 6 | 6 | 6 | 6 | 6 | ||||||||||||
el1 | 7 | 8 | 8 | ||||||||||||||
loe | 9 | 9 | 9 | 9 | 9 | ||||||||||||
loe1 | 11 | 11 | 11 | 10 | 11 | 11 | 11 | ||||||||||
lae | 12 | 12 | 12 | 12 | 12 | ||||||||||||
lae1 | 14 | 14 | 14 | 14 | 13 | 14 | 14 | 14 | |||||||||
re | 15 | 15 | 15 | 15 | 15 | ||||||||||||
re1 | 17 | 17 | 17 | 17 | 17 | 16 | 17 | 17 | 17 | ||||||||
ae | 18 | 18 | 18 | 18 | 18 | ||||||||||||
ae1 | 20 | 20 | 20 | 20 | 20 | 20 | 19 | 20 | 20 | 20 | |||||||
me | 21 | 21 | 21 | 21 | 21 | ||||||||||||
me1 | 23 | 23 | 23 | 23 | 23 | 23 | 23 | 22 | 23 | 23 | 23 | ||||||
ue | 25 | 24 | 25 | 25 | 25 | ||||||||||||
ue1 | 27 | 27 | 27 | 27 | 27 | 27 | 27 | 27 | 26 | 27 | 27 | 27 | |||||
pe | 29 | 28 | 30 | 31 |
表中横排第一行表示文法中所有终结符,竖排第一列表示文法中所有非终结符,表中的数值表示产生式编号,与消除左递归后的产生式对应,在后面的内容中用M来代替LL(1)预测分析表,用M[X,Y]来表示X行Y列的数值,如M[loe,NUM]=9。
根据LL(1)预测分析法一般步骤,假设堆栈STACK栈顶符号是X(堆栈STACK中保存的是文法中所有的终结符和非终结符),当前输入符号是a,语法分析过程如下:
(1)若X=a=‘;’,则语法分析成功,停止分析;
(2)若X=a≠‘;’,将X从栈中弹出,读入下一个输入符号a;
(3)若X为非终结符,查阅预测分析表,如果M[A,a]中是出错标志(将在语法容错步骤中介绍),调用出错处理过程;否则,将X弹出栈,将M[A,a]中产生式右部的符号反序压入栈内(注:若右端是ε,不压任何元素入栈)。
3.第三步,进行编译过程中的容错处理,对形式化表达式中语法错误部分进行修复。
在语法分析过程中,在下列情况下可发现语法错误:
(1)X是终结符,X≠a;
(2)X是非终结符,分析表中M[X,a]为空。
发现错误后,必须尽快从错误中恢复过来,使得分析能够继续下去。
设α∈(VN U VT)*,定义α的前缀集合pr(α)为α通过0步或若干步可推导出的终结符号串的集合
因此,终结符号串w是符号Z的一个前缀的充要条件是w∈pr(Z)。
设输入串为mdev,如果m∈pr(Z)而则在d处有一个语法错误,或说d是个错误符号。LL(1)文法具有“正确前缀”特性,所以可以肯定当前符号d就是错误符号。而语法栈中的现有内容是对正确输入的一种预测,应作为修复的主要依据。
可能的语法错误类型有:如果me∈pr(Z),称d是“多余符号”;如果mad∈pr(Z),称d是“遗漏符号”;如果mae∈pr(Z),称d是“错误符号”;如果med∈pr(Z),则称d、e“符号错位”;否则属于其它错误。
对于可能出现的连续符号错误,几乎不可能判定他们的错误类型,只能跳过输入串的一些符号直到遇到“同步符号”为止(同步符号指可能的正确符号)。非终结符号A的同步符号集包含A的FOLLOW集(所有可能出现的A的后继终结符)和FIRST集(所有A可能推出的首终结符)中的所有符号,这样,当跳过输入符号串中的一些符号,如果遇到FIRST(A)中的符号,可根据A恢复语法分析;或者遇到FOLLOW(A)中的符号,可将A从语法栈中弹出,也可能使得分析继续下去。
如果输入符号不能匹配栈顶的终结符号,将栈顶元素直接弹出,继续进行语法分析。
对LL(1)分析表进一步处理,加入出错标志和栈顶符号不匹配标志后,完整的预测分析表如下表所示:
in | NUM | from | KWD | COM | OR | AND | RL | ADD | MUL | LB | RB | ID | LP | RP | FUN | SHARP | |
rule | -1 | 0 | -1 | -1 | -1 | -1 | -1 | -1 | 0 | -1 | -1 | -1 | 0 | 0 | -1 | 0 | 32 |
stmt | -1 | 1 | -1 | -1 | -1 | -1 | -1 | -1 | 1 | -1 | -1 | -1 | 1 | 1 | -1 | 1 | 32 |
stmt1 | 2 | -1 | -1 | 2 | -1 | -1 | -1 | -1 | -1 | -1 | -1 | -1 | -1 | -1 | 3 | -1 | 3 |
kwd | 4 | -1 | -1 | 5 | -1 | -1 | -1 | -1 | -1 | -1 | -1 | -1 | -1 | -1 | -1 | -1 | -1 |
el | -1 | 6 | -1 | -1 | -1 | -1 | -1 | -1 | 6 | -1 | -1 | -1 | 6 | 6 | 32 | 6 | -1 |
el1 | -1 | -1 | -1 | -1 | 7 | -1 | -1 | -1 | -1 | -1 | -1 | 8 | -1 | -1 | 8 | -1 | -1 |
loe | -1 | 9 | -1 | -1 | 32 | -1 | -1 | -1 | 9 | -1 | -1 | -1 | 9 | 9 | 32 | 9 | 32 |
loe1 | 11 | -1 | -1 | 11 | 11 | 10 | -1 | -1 | -1 | -1 | -1 | 11 | -1 | -1 | 11 | -1 | 11 |
lae | -1 | 12 | -1 | -1 | 32 | 32 | -1 | -1 | 12 | -1 | -1 | -1 | 12 | 12 | 32 | 12 | 32 |
lae1 | 14 | -1 | -1 | 14 | 14 | 14 | 13 | -1 | -1 | -1 | -1 | 14 | -1 | -1 | 14 | -1 | 14 |
re | -1 | 15 | -1 | -1 | 32 | 32 | 32 | -1 | 15 | -1 | -1 | -1 | 15 | 15 | 32 | 15 | 32 |
re1 | 17 | -1 | -1 | 17 | 17 | 17 | 17 | 16 | -1 | -1 | -1 | 17 | -1 | -1 | 17 | -1 | 17 |
ae | -1 | 18 | -1 | -1 | 32 | 32 | 32 | 32 | 18 | -1 | -1 | -1 | 18 | 18 | 32 | 18 | 32 |
ae1 | 20 | -1 | -1 | 20 | 20 | 20 | 20 | 20 | 19 | -1 | -1 | 20 | -1 | -1 | 20 | -1 | 20 |
me | -1 | 21 | -1 | -1 | 32 | 32 | 32 | 32 | 21 | -1 | -1 | -1 | 21 | 21 | 32 | 21 | 32 |
me1 | 23 | -1 | -1 | 23 | 23 | 23 | 23 | 23 | 23 | 22 | -1 | 23 | -1 | -1 | 23 | -1 | 23 |
ue | -1 | 25 | -1 | -1 | 32 | 32 | 32 | 32 | 24 | 32 | -1 | -1 | 25 | 25 | 32 | 25 | 32 |
ue1 | 27 | -1 | -1 | 27 | 27 | 27 | 27 | 27 | 27 | 27 | 26 | 27 | -1 | -1 | 27 | -1 | 27 |
pe | -1 | 29 | -1 | -1 | 32 | 32 | 32 | 32 | 32 | 32 | -1 | -1 | 28 | 30 | 32 | 31 | 32 |
表中“-1”表示出错,“32”表示栈顶终结符不匹配,“0~31”与消除左递归后的产生式一一对应。当遇到无法修复的情况时,如果M[A,a]中是-1,忽略当前输入符号,指针后移一位继续分析,直到遇到同步符号为止;如果M[A,a]中是32,表示输入符号不能匹配栈顶符号,将栈顶符号从语法栈中弹出,继续分析当前输入符号。
设输入串为mdez,发现错误时语法栈中由顶向底为ynyn-1...y2y1;,此时输入串为dez。修复用终结符号串u,w,u’,w’,修复代价值ucost,wcost,栈内符号下标i。
语法错误修复算法的步骤如下:
①输入串为mdez,且在d处有一个语法错误;
②根据语法栈顶符号X和终结符d,找到X推出d所需的最短插入修复串w的路径m,推不出d时给出0,并将X弹出堆栈;
③循环执行②,直到堆栈为空,找出循环操作中修复串长度最小(修复代价wcost最小)的修复串w;
④如果wcost无穷大,将d从输入串中删除,返回修复结果;否则,转入⑤;
⑤恢复语法栈,对栈顶符号X和终结符e,找出X退出e所需的最短插入修复串u的路径m,推不出时给出0,并将X弹出堆栈;
⑥循环执行⑤,直到堆栈为空,找出循环操作中修复代价ucost最小的修复串u;
⑦对比wcost和ucost,找出最优的修复操作,返回修复结果;
wcost>1 & & ucost=0将d从输入串中删除
wcost=1 & & ucost>=0将最优修复串w插到输入串中
wcost>1 & & ucost=1将d替换为最优修复串u
若wcost、ucost不满足上述关系,则不执行任何修复,根据M[A,a]中的内容,选择跳过输入串的一些符号直到遇到“同步符号”为止,或者弹出堆栈顶元素,继续语法分析。
4.第四步,对形式化表达式进行静态语义分析(类型检查),检查其中语法合理但语义错误的部分。
表达式类型由运算符和操作数的类型决定,本发明采用语法节点GrammarNode的综合属性node.exptype和继承属性node.t来传递底层的表达式类型,并计算顶层的表达式类型。定义语法节点GrammarNode的数据结构如下:
如运算符“+”用于两个子表达式时,这两个子表达式的类型都是数值类型num(或同为布尔类型bool),结果类型也是num(或bool),否则,类型检查报错,赋给这个语句的类型是error。规则如下:
例如,表达式“aa+flag==7;”,其中aa是数值类型的变量,flag是布尔类型的变量。变量的数字代码是0x01,数值的数字代码是0x02,布尔类型的数字代码是0x04,语义错误的数字代码是0x40。
因此,aa的表达式类型为aa.exptype=0x01+0x02=0x03;
flag的表达式类型为flag.exptype=0x01+0x04=0x05。
表达式类型属性计算可用语法树表示,如图2所示。由图2可以看出,运算符“+”两端:ae1.t=0x03;me.exptype=0x05;因此,在产生式ae1→ADD_OP me ae1处查出语义错误——表达式类型不匹配,将错误提示语句记录在产生式右端的ae1.err中。
这样就完成了子表达式aa+flag的类型检查,进一步可以完成飞行规则对应的完整的形式化表达式的类型检查。
为简便起见,在实现语义分析时只需对表达式的类型进行逻辑异或运算,即可进行比较。只要判断逻辑运算结果的倒数第二位和第三位是否为零,若不为零,则运算符两端类型不匹配。
如上例中,ae1.t=0x03,me.exptype=0x05,而(ae1t^me.exptype)=0x06,所以运算符两端类型不匹配,语义出错。
5.第五步,生成可执行指令码,并保存至服务器数据库中,便于计算机使用。
表达式的计值顺序与四元式出现的顺序相同,因此很容易将其翻译成四元式形式。四元式是一种比较普遍采用的中间代码形式,具有四个域(op,arg1,arg2,result),其中:op为运算符,操作数为arg1、arg2,结果为result。
为了实现由表达式到四元式的翻译,需要定义文法的翻译模式,以便在进行语法分析的同时执行翻译。翻译模式中所涉及的语义变量、函数说明如下:
(1)对非终结符E定义语义变量E.place、E.code、E.p、E.i、E.s,即用E.place表示E综合属性的词元代码,E.p表示E继承属性的词元代码,用E.code、E.i、E.s存放四元式代码序列;
(2)定义函数newplace(),用于产生一个代表新临时变量的整数码,临时变量名按产生的顺序可设为$T1、$T2、......;
(3)定义函数gen(op,arg1,arg2,result),用于产生一个四元式;
基于上述规则,按文法组织的表达式的翻译模式如下(下表只列举了部分类型的表达式,其中LocalToken表示当前分析的词元)。
例如,表达式“aa>7;”的翻译模式可用如图3所示的语法树形象地表示,图中,箭头表明属性的计算顺序,最后生成的可执行指令码为“LT,aa,7,$T1”。
Claims (2)
1.一种将飞行规则转换成便于计算机执行的指令码的方法,其特征在于:
该方法包括如下步骤:
(a)根据飞行规则的表述,读取保存在服务器数据库中的飞行参数,用运算符、自定义关键词以及函数,按语法格式将飞行规则转换成形式化表达式,并保存至服务器数据库;
(b)服务器根据编译原理,将步骤(a)得到的形式化表达式编译生成可执行指令码,并保存至服务器数据库。
2.根据权利要求1所述的将飞行规则转换成便于机器执行指令码的方法,其特征在于:所述步骤(b)包括如下步骤:
(b1)服务器对形式化表达式进行词法分析,得出具有语法意义的各种词元;
(b2)对步骤(b1)得到的词元进行语法分析,判定形式化表达式是否符合定义的语法,若不符合则继续下一步,若符合则转入步骤(b4);
(b3)对编译过程进行容错处理,对形式化表达式中的语法错误部分进行修复;
(b4)对形式化表达式进行静态语义分析,检查其中语法合理但语义错误的部分,并提示错误;
(b5)生成可执行指令码,保存至服务器数据库。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110387659.3A CN102495749B (zh) | 2011-11-29 | 2011-11-29 | 一种将飞行规则转换成便于计算机执行的指令码的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110387659.3A CN102495749B (zh) | 2011-11-29 | 2011-11-29 | 一种将飞行规则转换成便于计算机执行的指令码的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102495749A true CN102495749A (zh) | 2012-06-13 |
CN102495749B CN102495749B (zh) | 2014-03-05 |
Family
ID=46187577
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110387659.3A Active CN102495749B (zh) | 2011-11-29 | 2011-11-29 | 一种将飞行规则转换成便于计算机执行的指令码的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102495749B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109388445A (zh) * | 2017-08-03 | 2019-02-26 | 深圳市道通科技股份有限公司 | 一种软件示波器输入信号处理方法及装置、软件示波器 |
CN112083917A (zh) * | 2020-08-14 | 2020-12-15 | 陕西千山航空电子有限责任公司 | 一种基于飞参数据的计算参数生成方法 |
CN117057640A (zh) * | 2023-07-26 | 2023-11-14 | 广东优翼航空技术有限公司 | 一种基于解释器对飞行品质进行评估的方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5428792A (en) * | 1991-12-12 | 1995-06-27 | International Business Machines Corporation | System for producing language neutral objects and generating an interface between the objects and multiple computer languages |
CN1573759A (zh) * | 2003-06-23 | 2005-02-02 | 微软公司 | 公共查询运行期系统以及应用编程接口 |
CN101587445A (zh) * | 2009-06-19 | 2009-11-25 | 国网电力科学研究院 | 一种plc编译执行方法 |
CN102135898A (zh) * | 2011-03-08 | 2011-07-27 | 中山大学 | 一种通用gui开发编译处理方法及系统 |
-
2011
- 2011-11-29 CN CN201110387659.3A patent/CN102495749B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5428792A (en) * | 1991-12-12 | 1995-06-27 | International Business Machines Corporation | System for producing language neutral objects and generating an interface between the objects and multiple computer languages |
CN1573759A (zh) * | 2003-06-23 | 2005-02-02 | 微软公司 | 公共查询运行期系统以及应用编程接口 |
CN101587445A (zh) * | 2009-06-19 | 2009-11-25 | 国网电力科学研究院 | 一种plc编译执行方法 |
CN102135898A (zh) * | 2011-03-08 | 2011-07-27 | 中山大学 | 一种通用gui开发编译处理方法及系统 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109388445A (zh) * | 2017-08-03 | 2019-02-26 | 深圳市道通科技股份有限公司 | 一种软件示波器输入信号处理方法及装置、软件示波器 |
CN109388445B (zh) * | 2017-08-03 | 2022-04-12 | 深圳市道通科技股份有限公司 | 一种软件示波器输入信号处理方法及装置、软件示波器 |
CN112083917A (zh) * | 2020-08-14 | 2020-12-15 | 陕西千山航空电子有限责任公司 | 一种基于飞参数据的计算参数生成方法 |
CN112083917B (zh) * | 2020-08-14 | 2023-11-14 | 陕西千山航空电子有限责任公司 | 一种基于飞参数据的计算参数生成方法 |
CN117057640A (zh) * | 2023-07-26 | 2023-11-14 | 广东优翼航空技术有限公司 | 一种基于解释器对飞行品质进行评估的方法及系统 |
CN117057640B (zh) * | 2023-07-26 | 2024-04-12 | 广东优翼航空技术有限公司 | 一种基于解释器对飞行品质进行评估的方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN102495749B (zh) | 2014-03-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Crippa et al. | A systematic review of BIM usage for life cycle impact assessment | |
CN105022803A (zh) | 一种提取网页正文内容的方法及系统 | |
CN102495749B (zh) | 一种将飞行规则转换成便于计算机执行的指令码的方法 | |
US9031672B2 (en) | Logic diagram processing device and logic diagram processing method | |
CN109189820B (zh) | 一种煤矿安全事故本体概念抽取方法 | |
CN111527459A (zh) | 用于识别工厂模型中的变化的设备、方法和程序 | |
WO2019160096A1 (ja) | 関係性推定モデル学習装置、方法、及びプログラム | |
CN112949324A (zh) | 飞机维修技术手册数据的翻译、管理方法及其系统和终端 | |
CN103914379A (zh) | 故障自动注入与故障检测的方法及其系统 | |
WO2016056236A1 (ja) | 情報処理装置、情報処理方法、及び、記録媒体 | |
Bhattacharya et al. | Enabling portable building applications through automated metadata transformation | |
Massey et al. | Modeling regulatory ambiguities for requirements analysis | |
Fornlöf | Improved remaining useful life estimations for on-condition parts in aircraft engines | |
Brunel et al. | Performing safety analyses with AADL and AltaRica | |
US9002809B2 (en) | Method and apparatus for generating a data repository | |
CN113377962B (zh) | 一种基于图像识别和自然语言处理的智能过程模拟方法 | |
Ballarin et al. | Leveraging feature location to extract the clone-and-own relationships of a family of software products | |
Putrycz et al. | Connecting legacy code, business rules and documentation | |
CN117501275A (zh) | 用于分析由大量单独消息组成的数据的方法、计算机程序产品和计算机系统 | |
Svärd | Residual generation methods for fault diagnosis with automotive applications | |
Nur et al. | User scenario 2 seq: Automated system to generate sequence diagram from user stories scenario | |
Hiraoka et al. | Method of computer-aided FTA (fault tree analysis) in reliability design and development; using knowledge management based on quantity dimension indexing and block diagram | |
Morris | Streamlining the electronic component derating process: an electrical engineering perspective | |
CN116245108B (zh) | 验证匹配导向方法、验证匹配导向器、设备及存储介质 | |
Viehhauser-Mery et al. | Towards a Digital Narratology of Space. |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |