版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第十七講 基于屬性文法的圖形用戶界面規(guī)約方法本講描述一種基于屬性文法,并結(jié)合了事件模型的圖形用戶界面規(guī)約方法,主要強調(diào)如何在直接操作式用戶界面中表示多線索控制模型。我們說明如何用屬性文法的語法和語義記號指定一個對話內(nèi)部的控制序列、對話之間的通信、以及界面語義的計算。這種屬性文法的規(guī)約可以用一個內(nèi)嵌在支持通信、同步、和對話執(zhí)行的運行時結(jié)構(gòu)中的屬性文法解釋器來實現(xiàn)。一、引言用戶界面開發(fā)環(huán)境,例如用戶界面管理系統(tǒng)(UIMS)和用戶界面設計系統(tǒng)(UIDE)的目標是提供圖形用戶界面(GUI)的設計和開發(fā)工具,及運行時支持系統(tǒng),以支持圖形用戶界面的設計、實現(xiàn)、運行,及評估。一般而言,交互式應用系統(tǒng)中處理和
2、完成各種具體任務的軟件稱為應用的計算部分或稱為應用語義,而處理用戶與系統(tǒng)交互的軟件稱為用戶界面。一個用戶界面一般可看成由相互通信的三部分構(gòu)成:(1)界面表示:作用是在詞法層次上指定顯示對象,并收集用戶的交互命令;(2)對話控制:作用是在語法層次上指定輸入及輸出序列,并定義對話的結(jié)構(gòu);(3)應用接口:作用是在語義層次上指定應用模型(數(shù)據(jù)結(jié)構(gòu)及任務接口)。圖形用戶界面通常采用“直接操作(direct-manipulation)”1 的交互方式。與用戶任務相關(guān)的應用對象在界面上表示為可見的圖形,圖形可被用戶直接地操作,如選擇、移動或刪除。直接操作一般具有三個特征:(1)對象可視化,用戶感興趣對象的連
3、續(xù)表示;(2) 語法極小化,采用物理動作或按鈕代替復雜的語法;(3) 語義反饋,在對象上快速、增量式和可逆的操作立即帶來可視的效果。其中(2)要求每個獨立的表示構(gòu)件能處理各自的語法,而(3)使得交互從語義上更為接近特殊的應用語義,故界面表示及對話控制應有能力處理相應的語義計算,以減少各部分之間的通信。本文主要強調(diào)如何使用一種擴充了事件模型的屬性文法來指定這類控制結(jié)構(gòu)和通信。直接操作式界面中的對話過程通常是多線式(multi-thread)的。這意味著同時可有多個對話路徑供用戶隨機訪問。每個應用對象的圖形表示都表示了一個有關(guān)它自己的特殊子對話。一旦用戶選擇了其中某個對象的表示,則他可以開始一個有
4、關(guān)該對象的對話。他也可以暫時中斷這個對話,轉(zhuǎn)移到并進入另一個對話(典型地通過移動鼠標),而后又可返回至被中斷的對話繼續(xù)進行即用戶與系統(tǒng)的交互可在多個線索中切換2。但需注意到雖然可能有多個正在活動的交互設備(如鍵盤和鼠標),然而通常每個應用只有一個輸入/出流。對話實際上是以交替方式異步進行的。這樣,多線式對話的基本控制結(jié)構(gòu)可看成由兩部分構(gòu)成:其低級成分是由單個對話組成的并發(fā)例程集合,而高級成分是一個對話控制器。一個并發(fā)例程描述一組在對話中邏輯上相關(guān)的操作。為了滿足語法極小化的需求,與輸入/輸出事件直接相關(guān)的局部控制應與對話的全局控制邏輯分離,并表示為表示構(gòu)件上的子對話。該子對話通過事件與對話控制
5、通信。如刪除一個應用對象的語法為delete (object),則命令delete和對象object的選擇應在界面表示層次上表示為兩個不同的子對話。對話控制器應能夠在任意時刻激活、掛起,或恢復一個對話例程的執(zhí)行。該控制器負責并發(fā)例程之間的通信和同步,并協(xié)調(diào)它們的執(zhí)行。用戶界面開發(fā)者一般毋須關(guān)心控制器的設計和實現(xiàn),它是界面開發(fā)環(huán)境的一個構(gòu)件,并已作為運行時支持結(jié)構(gòu)嵌入。因此,用于多線式對話的規(guī)約技術(shù)應允許分別指定單個對話及相應的子對話,并能通過頂級控制器相互交換控制和信息。如果所采用的規(guī)約語言是直接可執(zhí)行的,則它可直接用于支持用戶界面的自動生成。目前存在兩類對話描述技術(shù):基于文法的和基于事件的。
6、基于文法的模型(如有代表性的狀態(tài)轉(zhuǎn)換網(wǎng)3,4,上下文無關(guān)文法5,6等)使得開發(fā)者容易在高級層次上定義對話結(jié)構(gòu),有助于界面快速原型的建立,但采用的技術(shù)類似于編譯器構(gòu)造技術(shù),因此不適于多線式對話的場合。雖然Jacob將狀態(tài)轉(zhuǎn)換網(wǎng)與事件機制結(jié)合,以描述多線式對話7,但其未能在不同的層次上分離全局及局部對話,且對復雜對話的描述過于復雜。基于事件的模型(如事件語言8,9和事件響應語言10)的能力強于前者,通常用于描述多線式對話,但其必須在十分低級的程序設計層次上進行描述。屬性文法是由Knuth作為一種形式語言規(guī)約技術(shù)引入的11,并已廣泛地作為規(guī)約語言、程序設計語言和實現(xiàn)語言使用。屬性文法的成功應用提示我
7、們研究將其應用于圖形用戶界面規(guī)約方面的可行性。首先,屬性文法是一種形式規(guī)約語言,容易在語法和語義兩個層次上定義個別對話及子對話,其次,多數(shù)有效的屬性文法解釋器可用于實現(xiàn)的目的。然而,純的屬性文法僅適用于描述順序(單線索)控制場合,它必須被擴充,以支持指定異步(多線索)控制對話。本文的目標是采用擴充了事件模型的屬性文法描述一種定義單個對話和子對話的形式方法。我們說明這樣一個規(guī)約語言可在語法和語義兩個層次上指定多線式對話的控制邏輯。該屬性文法規(guī)約語言的實現(xiàn)可由嵌套在界面開發(fā)環(huán)境的運行時支持結(jié)構(gòu)中的屬性解釋器完成。以下首先在第二節(jié)中引入我們使用的屬性文法記號系統(tǒng)。然后在第三節(jié)中表示兩個獨立對話的實例
8、,它們即可作為全局對話表示在對話控制層次上,又可作為局部對話表示在表示構(gòu)件內(nèi)部,這取決于采用何種控制和通信策略及其具體的應用需求。在第四節(jié)中我們引入一個表示全局對話的實例,它反映了對某種子對話的并發(fā)處理邏輯。在第五節(jié)中我們指出該記號系統(tǒng)至少具有事件語言的描述能力。在附錄中我們給出一個復雜的多折線的屬性文法描述,它超出了通常的文法模型的描述能力。二、所使用的屬性文法記號我們使用屬性文法(AG)作為一種規(guī)約工具的基本思想是使用一個文法來描述一個對話或子對話。在我們的方法中,基本的語法規(guī)則被用于定義對話的順序和結(jié)構(gòu)。與語法符號相關(guān)聯(lián)的屬性被用于指定輸入事件的值。語義規(guī)則被用于計算屬性的值,并用于表示
9、語義動作(如與圖形對象及應用語義接口的事件通信)。因此,一個文法可被理解為是一個處理過程的描述,其中用戶的動作序列被識別,屬性依賴被實現(xiàn),且界面表示及應用的語義被引用。這樣描述所有對話和子對話的一組文法便形成了整個用戶界面的規(guī)約。我們使用的記號將基于左線性屬性文法(L AG),其基本語法為LL(1)文法12。我們使用一個稱為guard的布爾前置條件擴充該屬性文法的描述能力。每個規(guī)則均可以有一個guard,用于在對話處理過程中檢查該規(guī)則是否可以被觸發(fā)。如果guard返回值為假,則分析器認為該規(guī)則不能被觸發(fā),并且如果有可能該分析器將選擇其它規(guī)則之一執(zhí)行。否則,分析器將掛起當前對話,并將控制返回至頂
10、級對話控制器。此時,如果有可能頂級對話控制器將選擇其它對話過程執(zhí)行,否則進入錯誤診斷過程或忽略輸入。通過使用guard,分析可以由語義來制導。因此,該記號系統(tǒng)可以用于指定多線式對話。事實上,該guard引入一種事件模型,使得相關(guān)聯(lián)的規(guī)則可以由輸入事件驅(qū)動。為了保證guard值的計算可以在語法分析前完成,一個guard的操作數(shù)僅允許包含語法規(guī)則左部符號的繼承屬性,或終結(jié)符號的值(綜合)屬性。這樣,分析便可由語義制導:一條語法規(guī)則 C ® g 可以被觸發(fā),如果S0 Þ* a C b Þ a g b Þ* a T b 1,T Î first(C) 且
11、T 是輸入串的頭部;(1)與C ® g 和T 相關(guān)聯(lián)的guard為真。(2)這樣的屬性文法族可看成為其屬性可以自頂而下、從左至右單遍計算,且屬性計算可以與語法分析同時完成。這對表示對話過程是相當重要的,因為與語言翻譯器所處理的任務不同,“程序”(對話所產(chǎn)生的序列)本身是在交互過程中動態(tài)生成的,在每個分析步上必須完成相應的語義計算。雖然L-AG是一類描述能力有限的簡單屬性文法,但guard的引入擴充了它的表示能力(見第五節(jié)的討論)。Bachmann給出了一個保證語義可以從左至右單遍計算的條件13。因此,可以采用一個擴充了guard機制的簡單LL(1)分析器。在我們的方法中,文法可以被實
12、例化。一個文法的實例可以由頂級對話控制機制創(chuàng)建、復制、掛起,或刪除。我們允許一個文法在非終結(jié)符號上包含無窮遞歸。一個文法可以包含若干參數(shù)用于其實例的初始化過程。這樣的文法可以作為類型或模板對待。一個模板包括四個節(jié)定義文法的參數(shù)(其名字開始于大寫字母,且其值可以通過缺省值定義,或在實例創(chuàng)建時指定),輸入單詞,屬性變量,以及由三個部分組成的規(guī)則:(1)guard布爾表達式作為前置條件;(2)syntax語法規(guī)則采用上下文無關(guān)形式。每個文法均有自己的開始符號。作為輸入單詞的終結(jié)符號按慣例表示為大寫符號串TERM。輸入單詞所表示的數(shù)據(jù)是它的值屬性,即終結(jié)符號的綜合屬性,表示為TERM value。非終
13、結(jié)符號表示為<non-term>。語法規(guī)則的作用是指定個別對話內(nèi)部的控制邏輯;(3)semantic語義規(guī)則用于表示必要的語義處理。一般包括以下幾種形式:<x> (¯)attribute := <expression>這是通常的屬性計算語句,其中屬性變量attribute的前綴 ¯ 用于表示一個繼承屬性,而前綴用于表示一個綜合屬性。<x> (¯)attribute := create(G, e1, e2, , en);該語句創(chuàng)建一個語法G的一個實例,其中e1, e2, , en為G
14、的實例的初始值。Destroy(G, attribute);這是一個語義函數(shù),用于刪除一個通過attribute標識的G的實例。Output(D, E, e1, e2, , en);這是一個語義函數(shù),用于發(fā)送一個事件(單詞或消息),其中E和e1, e2, , en分別表示該事件的名和值,D為接受該事件的一個語法實例(其它的對話),或一個界面表示構(gòu)件。App(FM, E, e1, e2, , en);這是一個語義函數(shù),用于發(fā)送一個事件至應用模型接口(即采用對FM的隱式方法引用),其中E和e1, e2, , en分別表示該事件的名和值,F(xiàn)M為接受該事件的一個應用語義函數(shù)。其中語義函數(shù)被認為是?。╠
15、ummy)綜合屬性。圖1. 橡筋線的狀態(tài)轉(zhuǎn)換圖表示通過使用上述屬性文法記號系統(tǒng),個別對話的結(jié)構(gòu)由該文法的語法指定。對輸入單詞(事件)的響應由該文法的語義規(guī)則指定。屬性解釋器用于負責運行時的對話控制和屬性計算。每當創(chuàng)建文法的一個實例時,屬性文法解釋器便建立一棵新的語義樹(事實上,因為采用L-AG,其語義計算與語法分析同時完成,故具體的實現(xiàn)毋須建立語義樹)。該語義樹跟隨用戶的交互動作逐漸生長。如果沒有任何規(guī)則能夠進一步與當前輸入單詞相匹配,則屬性計算器將返回控制至頂級控制器,而不執(zhí)行任何語義動作。當一棵語義樹已經(jīng)成為完全樹時,屬性計算器將自動刪除該樹,否則,該語義樹可以用顯式的刪除操作來刪除。三、
16、個別對話的屬性文法規(guī)約本節(jié)我們說明兩個典型的實例,第一個表示了應用主窗口內(nèi)的圖形操作的交互結(jié)構(gòu)和動作,而第二個用于反映交互式技術(shù)對象(又稱界面元素、widget或控件)的語法和語義。每個個別對話可以用一個上述的屬性文法指定。圖1表示了一個采用狀態(tài)轉(zhuǎn)換圖的橡筋線(rubber band line)規(guī)約。使用上述記號,我們可以將其表示如下:Grammar rubber-band-lineparameterPosition,/ coordinates of drawing regionDialogue;/ another dialogue componentADT/ the abstract dat
17、e type of the application attr-varfirst, second,/ line start- and end-pointPosition;/ current mouse positiontokenBUTTON,/ mouse button clickedMOVE;/ mouse movedRuleguardBUTTONposition is in the Position(1)syntax<line> := BUTTON <end-point>semantic<end-point> ¯ first := BUTTONp
18、osition; /record the first pointoutput(Dialogue, LINE, BUTTONposition, <end-point> second);/notify another dialogue which may be concerned this message guardMOVEposition is in the Position(2)syntax<end-line>0 := MOVE <end-point>1semantic<end-point>1 ¯ first := <
19、end-line>0 ¯ first; /transfer the first pointapp(ADT, DRAWALINE, <end-line>0 ¯ first, MOVEposition);/notify the application to draw a line<end-point>0 ¯ second := <end-line>1 second; /transfer the second pointguardBUTTONposition is in the Position(3)syntax&
20、lt;end-point> := BUTTON semantic<end-point> second := BUTTONposition; /record the second point該文法的語法結(jié)構(gòu)是LL(1)的。所有的guard僅使用了終結(jié)符號的綜合屬性。這里我們顯式定義了有關(guān)輸入單詞(事件)的語義限制,如規(guī)則(1)能夠被采用,僅當鼠標處于參數(shù)Position指定的作圖區(qū)域內(nèi)。而且規(guī)則(2)能夠被應用,只有規(guī)則(1)已經(jīng)被使用,且鼠標在作圖區(qū)域內(nèi)移動。在該規(guī)約的語義規(guī)則中,我們使用了兩個語義函數(shù)output和app。前者用于輸出一個單詞,它可能與另一個對
21、話相關(guān),例如給用戶顯示一個提示信息的對話。后者用于輸出一個事件至應用相關(guān)的抽象數(shù)據(jù)類型,要求引用一個具體的處理方法。為了便于理解,圖2表示了該文法的一個可能實例的語義樹和相應的信息流,因為該語義樹為完全樹,因此它將被自動刪除。如第二節(jié)所述,分析可由語義制導,那里我們給出了觸發(fā)一條規(guī)則的條件。如果在文法的當前實例中不存在規(guī)則可以被觸發(fā),如鼠標被移出該作圖區(qū)域,則分析器將記錄當前下推棧狀態(tài),掛起該語義樹,并將控制返回至頂級對話控制器。當用戶恢復相應操作時,將在目前尚未完全導出的最左非終結(jié)符號Xi處(棧頂符號)進入該掛起的語義樹。將我們在此表示的模型與上述的基于文法的模型相比較,可以看出guard的
22、使用擴充了該文法的能力。通過采用guard,我們可以指定一個采用多線式控制的對話結(jié)構(gòu)。該文法的一個實例表示了一個對話過程,通過用戶的動作它可以被開始、進入、掛起,或被恢復。雖然相同例子的規(guī)約可以使用以前的模型(如圖1)來指定,但這樣的實例一旦啟動則無法在對話過程中暫停。在此我們得到一個其描述能力比上下文無關(guān)分析更強的文法。在直接操作方式下,存在許多要求這種能力的例子,例如我們在附錄中給出了一個具刪除的多折線(polyline with cancel)的屬性文法描述,它不能由上下文無關(guān)文法指定14。圖 2. 橡筋線的語義樹表示圖 3. 一個簡單應用的按鈕界面通過使用我們的方法,容易提供直接操作方
23、式所強調(diào)的某些類型的語義反饋。例如它可以作為一種輸出至用戶界面的表示構(gòu)件的事件處理。圖3表示了包含一個按鈕的窗口,當鼠標進入按鈕時,該按鈕采用反視頻顯示自己,而鼠標退出時返回原來顯示狀態(tài)。當鼠標左鍵在該按鈕區(qū)域內(nèi)點擊時,應用退出。其規(guī)約可以表示如下:Grammar button-windowparameterPosition,/ coordinates of the button regionPresentation;/ display object in the presentation componentADT/ the abstract date type of the applicat
24、ion attr-varposition,/ current mouse pointclick;/ mouse button statetokenENTER,/ mouse moved into the window regionEXIT,/ mouse moved out the window regionLEFT;/ the left button of mouse clicked RuleguardENTERposition is in the Position(1)syntax<button-window> := ENTER <selector>semantic
25、output(Presentation, HIGHLIGHT, Position);guardEXITposition is not in the Position(2)syntax<selector> := EXITsemanticoutput(Presentation, DEHIGHLIGHT, Position);guardLEFTclick = Left-down(3)syntax<selector> := LEFTsemanticoutput(Presentation, DISAPPER, Position);app(ADT, EXIT);/notify th
26、e application to exit itself在此例中不存在任何屬性變量與非終結(jié)符號關(guān)聯(lián),因為沒有必要的屬性計算。四、并發(fā)對話的屬性文法規(guī)約并發(fā)對話(concurrent dialogue)是多線式對話,其中一個以上的對話線索可能同時被執(zhí)行2。例如,一個時鐘和一個動畫應用,其中時鐘為動畫提供同步信號(事件)。以下我們采用Hill的命令處理器作為一個例子,說明該記號系統(tǒng)可以用于并發(fā)過程的規(guī)約。Hill采用了一種非形式的事件響應語言10。以下的例子表明了具有某種同步的屬性文法規(guī)約。在該例中,一個用戶界面重復等待客戶(如用戶、線程、或其它進程)指定一個命令和一個參數(shù)。命令和參數(shù)可以用任意順
27、序給定。一旦兩者均已給定,則命令被應用執(zhí)行。其屬性文法規(guī)約可以描述如下:Grammar command-handlerparameterADT/ the abstract date type of the application attr-varcom, / the command applied by clientarg;/ the argument applied by clienttokenCOMMAND,ARGUMENT; Rulesyntax<command-handler> := <command-loop>(1) syntax<command-loo
28、p>0 := <com-arg-pair> <command-loop>1(2)syntax<com-arg-pair> := <com-arg>1 <com-arg>2(3)semantic<com-arg>1 ¯ com := nil;<com-arg>1 ¯ arg := nil;<com-arg>2 ¯ com := <com-arg>1 com;<com-arg>2 ¯ arg := <com-arg
29、>1 arg;app(ADT, <com-arg>2 com, <com-arg>2 arg);guard<com-arg> ¯ com = nil(4)syntax<com-arg> := COMMAND;semantic<com-arg> com := COMMANDcommand;<com-arg> arg := <com-arg> ¯ arg;guard<com-arg> ¯ arg =
30、 nil(5)syntax<com-arg> := ARGUMENT;semantic<com-arg> arg := ARGUMENTargument;<com-arg> com := <com-arg> ¯ com;假定客戶首先提供一個命令,而后提供一個參數(shù)(例如從menu中首先選擇save命令,然后提供file-name),則運行時執(zhí)行順序如下(由一棵生長的語義樹實例化)。進入該對話時語義樹為一棵空樹。該執(zhí)行將等待直至在輸入串(隊列)中存在一個單詞(事件)。假定第一個單詞為一個命令,則規(guī)則(1)、(2)
31、、(3)和(4)被觸發(fā)。該執(zhí)行將繼續(xù)等待客戶輸入(語義樹被掛起)。如果下一個單詞為一個參數(shù),則規(guī)則(5)被觸發(fā)(如果該當前單詞又為命令,而非參數(shù),則規(guī)則(4)的guard計值為假,且規(guī)則(4)不能被再次觸發(fā))。此時控制返回至結(jié)點<com-arg-pair>,且語義函數(shù)app被引用。當該命令完成時,執(zhí)行將返回等待狀態(tài)。在這種情形下的語義樹見圖4。如果客戶首先提供一個參數(shù),而后提供一個命令,則規(guī)則觸發(fā)的順序為(1)、(2)、(3)、(5)和(4)。值得注意的是該語義樹不會被自動刪除,因為在規(guī)則(2)中含有一個無窮遞歸。但它可以由一個顯式命令刪除(例如通過一個menu命令)。事實上,該規(guī)
32、約要求兩個并發(fā)子對話:一個子對話收集命令,而另一個收集參數(shù)。它們即可以在該文法中一并指定,也可以作為兩個分離的文法指定。規(guī)則(3)的右部用一種簡單直接的風格指定同步,即在兩個并發(fā)子對話同時運行時,允許它們在此處匯集。這樣的規(guī)約技術(shù)容易用于表示各種不同的交互風格,如在上例中可以將交互的順序限制為首先為命令,而后為參數(shù),或限制為相反順序。這種風格的變化對應用語義不會產(chǎn)生任何影響,提高了界面的獨立性??梢钥闯觯覀兊囊?guī)約技術(shù)容易將一個復雜的對話結(jié)構(gòu)表示為由低級對話的子文法和高級對話的父文法組成的一個層次結(jié)構(gòu)。子文法在父文法中表示為終結(jié)符號,子文法和父文法之間通過該終結(jié)符號及相關(guān)聯(lián)的屬性(事件)進行通
33、信。因為我們的文法模板是高度參數(shù)化的,故容易引入一種類似于Jacob在文7中采用的面向?qū)ο蟮乃枷?,以提供文法描述的可復用性。例如可以允許一個復雜的文法描述繼承簡單的文法描述,該文法可以重載被繼承文法的終結(jié)符號和屬性,及語義函數(shù)。圖4 . 一個命令實例的語義樹可以將這樣的文法“程序”看成時一個表示完整信息處理系統(tǒng)的agent15。該文法程序具有自己的線程,有自己的事件接受和發(fā)送機制,有維護自己狀態(tài)的存儲裝置,且有重復處理輸入的能力。因此,表示完整用戶界面的一組在邏輯上獨立的文法描述便構(gòu)成了一個multi-agent系統(tǒng)。雖然Chiren系統(tǒng)16采用了multi-agent的體系結(jié)構(gòu),但其對話描述
34、使用了標準的事件語言。五、討論用戶界面形式描述技術(shù)的研究主要有兩個趨勢,其一是使其易于指定一個用戶界面的對話結(jié)構(gòu),其二是擴充它能夠描述的用戶界面范圍。對于前者,一般的方法是提供良定義的語言或規(guī)約技術(shù)。雖然傳統(tǒng)的規(guī)約技術(shù),如狀態(tài)轉(zhuǎn)換圖和上下文無關(guān)文法,易于用于設計、測試和維護一個用戶界面原型,但不能或難于指定直接操作界面中的多線式對話。Green指出基于事件的模型(他采用了一種事件語言10作為例子)比常規(guī)的規(guī)約技術(shù)具有更強的描述能力14。然而,事件語言本身不是一種規(guī)約技術(shù),故實踐上必須使用某種程序設計語言實現(xiàn)。在多數(shù)用戶界面開發(fā)環(huán)境中,規(guī)約技術(shù)常與事件模型相結(jié)合,以擴充其描述能力(如擴充狀態(tài)轉(zhuǎn)換
35、網(wǎng)7和交互器17)。在本節(jié)中我們將說明事件模型可以由我們的屬性文法記號系統(tǒng)給出。我們的方法也提供了對事件模型的一種實現(xiàn)。Grammar rubber-band-line: <line> := <init><loop>(1)<loop>.state := <init>.state; <loop>.first := <init>.first; <loop>.second := <init>.second; <init> := nil(2) <init>.state :
36、= 0; <imit>.first := initial-value; <init>.second := initial-value; <loop>0 := <event><loop>1(3) <event>.state := <loop>0.state; <event>.first := <loop>0.first; <event>.second := <loop>0.second; <loop>1.state := <event>.st
37、ate; <loop>1.first := <event>.first; <loop>1.second := <event>.second; <event> := BUTTON(4) if <event>.state = 0then <event>.state := 1;<event>.first := BUTTONposition;else <event>.second := BUTTONposition;destroy(itself); <event> := MOVE(5
38、) if <event>.state = 1then app(ADT, DRAWALINE, <event>.first, MOVEposition);圖6. 圖5的屬性文法表示在事件模型中,用戶界面的控制構(gòu)件可看成是一組事件處理器。每個事件處理器的行為有一個模板定義。一個模板主要由它所處理的事件和處理這些事件的語義過程組成。一個處理過程可以執(zhí)行某些計算、生成新的事件、引用應用語義、建立新的事件處理器或刪除存在的事件處理器。例如橡筋線的事件處理器可以表示為圖5。按照該模型,我們可以使用屬性文法記號將其寫成圖6。其中我們使用了混合屬性變量,即語法符號的繼承屬性和綜合屬性使
39、用同一個變量定義。因為屬性分析是順序從左至右的,所以不會引起沖突。我們假定對低級輸入事件的處理由獨立的子文法完成,它輸出兩個高級事件BUTTONposition和MOVEposition,故毋須使用guard。Event-handler rubber-band-line:var state, first, second;event BUTTON do if state = 0 then first := current position; state := 1;else second := current position; deactiveate(itself); event MOVE do
40、 if state = 1 then draw a line from first to current position; initstate := 0;圖5. 橡筋線的事件處理器描述將圖6與第三節(jié)中相同的例子進行比較,可以看出前者必須使用屬性變量state控制執(zhí)行順序。所有的單詞均處于相同的位置上。而后者較為合理,因為可以按照對話的邏輯在語法結(jié)構(gòu)上指定單詞的位置。一般地,假定一個事件處理器具有n個變量和m個事件,則該事件處理器的屬性文法規(guī)約可定義為:<event-handler> := <init><event-loop>(1)<event-loo
41、p>.vari := <init>.vari ;1 £ i £ n<init> := nil(2)<init>.vari := initial-value;1 £ i £ n<event-loop>0 := <event><event-loop>1(3)<event>.vari := <event-loop>0.vari ;1 £ i £ n<event-loop>1.vari := <event>.vari
42、; 1 £ i £ n<event> := EVENTj1 £ j £ m(4)the attribute evaluation rules correspond to the event processing procedure;所以,通過一個簡單的轉(zhuǎn)換算法,我們?nèi)菀讓⑹录幚砥鬓D(zhuǎn)換為一個屬性文法規(guī)約表示。這里我們說明了在節(jié)二中說明的屬性文法記號至少與上述事件處理器具有相同的描述能力??梢哉J為我們的屬性文法記號是事件模型和文法記號的結(jié)合。這樣的屬性文法記號系統(tǒng)具有以下三個特征:1. 方便設計。用戶界面的對話設計建立在簡單的左線性屬性文法的基
43、礎上,以上我們僅采用了能夠從左至右單遍掃描的文法形式。復雜的對話結(jié)構(gòu)可劃分為由主、子文法組成的層次結(jié)構(gòu)。容易在應用任務級上定義全局對話順序,這是目前廣泛采用的面向?qū)ο蠹夹g(shù)和多代理模型所難以表示的。我們的記號可以實現(xiàn)為高度參數(shù)化的模版,可對常規(guī)的對話范型定義一組文法模板供設計者選擇和定制。2. 語法與語義分離。與使用一個復雜的語法結(jié)構(gòu)的狀態(tài)轉(zhuǎn)換圖和上下文無關(guān)文法不同,我們僅使用語法結(jié)構(gòu)指定對話的邏輯控制結(jié)構(gòu)。如果語法結(jié)構(gòu)是非確定的,則guard機制用于控制對話順序。如果語法是上下文無關(guān)的,則設計者可以自由選擇使用復雜的語法結(jié)構(gòu)或采用guard機制。例如,如果不采用guard,則第四節(jié)中的命令處理
44、器需要使用四條規(guī)則來取代規(guī)則(4)和(5)。也不像事件處理器那樣利用語義定義對話的控制邏輯,我們使用語義的目的主演是執(zhí)行與應用語義相關(guān)的操作。3. 具有更強的能力。我們的屬性文法記號既支持順序?qū)υ捒刂泼枋?,又支持異步對話控制。支持順序?qū)υ捒刂剖抢昧松舷挛臒o關(guān)文法的特征,而支持異步控制是因為引入了事件模型。我們允許采用顯式或隱式操作支持語義樹的建立、掛起,或刪除。對話之間的通信采用一個消息發(fā)送機制。六、結(jié)束語以上我們研究了將屬性文法作為直接操作用戶界面規(guī)約的可行性。同時我們說明了屬性文法和事件模型結(jié)合解決異步控制和通信的問題。一種規(guī)約技術(shù)的可用性在于三個方面:使用方便,描述能力,及實現(xiàn)的可能性
45、和有效性。我們已經(jīng)說明了本文引入的規(guī)約技術(shù)容易用來指定一個用戶界面,它將輸入事件的識別和處理劃分為語法和語義。該規(guī)約技術(shù)的描述能力由于引入了事件機制而得以擴充,可以定義在存在的各種用戶界面中的不同風格。以上我們未能詳細討論的是如何導出一個有效的屬性計算。事實上,對于采用LL(1)文法的左線性屬性文法,存在大量有效的屬性計算器可以用于實現(xiàn)的目的。在本文作者所主持的國家自然科學基金項目“基于屬性文法的用戶界面開發(fā)環(huán)境的研究”(1997-1999)中,我們已經(jīng)實現(xiàn)了一個交互式圖形工具箱18支持界面圖形表示構(gòu)件的表示,并實現(xiàn)了一個支持該描述的屬性文法解釋器和相應的運行機制原型19。參考文獻1 Schn
46、eiderman, B. Direct Manipulation: A Sep Beyond Programming Languages. IEEE Computer, pp. 57-69, Aug. 1983.2 Hartson, R. H. User-Interface Management Control and communication. IEEE software, pp.62-70, Jan. 1989.3Jacob, R. J. K. A State Trasition Diagram Language for Visual Programming. IEEE Computer
47、, pp.51-59, Aug. 1985.4Wasserman A. I., Extending state Transition Disgrams for the specification of human-computer interaction, IEEE Trans. on Soft. Eng. pp. 699-713, 1985.5Olsen Jr. D. R. SYNGRAPH: A Graphical User Interface Generator. Computer Graphics, 17, 3, pp. 43-50, Jul. 1983.6 Olsen Jr. D.
48、R. MIKE: The Menu Interaction Kontrol Environment. ACM Trans. on Graphics. 5, 4, pp. 318-344, Oct. 1986.7 Jacob, R. J. K. A Specification Language for Direct-Manapulation User Interfaces. ACM Tran. Graphics, 5, 4, pp. 283-317, Oct, 1986.8 Singh, G. et al. Automating the Lexical and Syntactic Design
49、of Graphical User Interfaces: The UofA* UIMS. ACM Trans. on Graphics, 10, 3, pp.213-254 Jul. 1991.9 Green, M. The University of Alberta User Interface Management System. In proceedings of SIGGRAPH85, pp. 205-213, Jul, 1985.10 Hill, R. D. Supporting Concurrency, Communication and Synchronization in H
50、uman-Computer Interface - the Sassafras UIMS, ACM Trans. on Graphics, 5, 3, 1986.11 Knuth, D. E. Semantics of context-free languages. Math. System Theory, pp.127-145, 2, 1968.12 Lewis, P. M. Attribute Translations, J. of Computer Science, pp. 279-307, 19, 1974.13 Bochmann G. V. Semantic evaluation f
51、rom left to right, CASM, pp. 55-62, 19, 1976.14 Green, M. A Survey of three dialog models. ACM Trans. Graphics, 5, 3, pp. 244-275, Jul. 1986.15 Wooldridge, M. Agent-based software engineering, IEEE Proc.-Soft.Eng. pp. 26-37, 1, 1997.16 Taylor, R. N. A component- and message-based architectural style
52、 for GUI software, IEEE Trans. On Soft. Eng. pp.390-406, 6, 1996.17 Mayers, B. A. The Amulet Environment: New Models for Effective User Interface Software Development, IEEE Transactions on Software Engineering. 1997. 23(6). pp. 347-365. June.18 華慶一等,一個面向?qū)ο蟮慕换ナ綀D形工具箱OOIGT,計算機學報,1998.219 王恩璽,華慶一等,一個用戶界
53、面工具環(huán)境的研究與設計,西北大學學報,1997.6。附錄:具有刪除功能的多折線的屬性文法規(guī)約描述Grammar Polyline:Parameter: Position,Dialogue,ADT;Attri-var:point-list,Point-count,Position;Token:BUTTON,MOVE,BACKSPACE,FINISH,CANCEL;RuleguardBUTTONposition is in the Position(1)syntax<polyline> := BUTTON <selection>semantic<selection&g
54、t; ¯ point-list := BUTTONposition;<selection> ¯ point-count := 1;output(Dialogue, POLYLINE, <selection> point-list, <selection> point-count);guardMOVEposition is in the Position(2)syntax<selection> := MOVE <selector>semantic<selector> ¯ point-list := <selection> ¯ point-list;<selector> ¯ point-count := <selection> ¯ point-list;app(ADT, DRAWALINE, <selection> ¯ point-list, MOVEposition);
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 關(guān)于足球講話演講稿
- 小學安全教育主題班會課件
- 合伙門窗店合同范例
- 《籌資業(yè)務核》課件
- 充電樁鋪設合同模板
- 售后整體返租合同范例
- 客服雇傭合同范例
- 度審計業(yè)務合同范例
- 醫(yī)用口罩銷售合同范例
- 中國物聯(lián)網(wǎng)安全行業(yè)市場現(xiàn)狀、前景分析研究報告(智研咨詢發(fā)布)
- 湘潭、成都工廠VDA63-2023審核員培訓考核附有答案
- 濟南2024年山東濟南市文化和旅游局所屬事業(yè)單位招聘人選筆試歷年典型考題及考點附答案解析
- 助產(chǎn)專業(yè)職業(yè)生涯規(guī)劃
- 整理收納師課件
- (完整word版)英語四級單詞大全
- 光伏電站兩票三制管理制度
- 用EXCEL做質(zhì)量分析柱狀圖模板
- 電纜截面的計算選型及口訣PPT課件
- 石膏固定PPT課件
- 【報告】管道脫脂檢測報告
評論
0/150
提交評論