基於編譯原理理論在C程序題自動評分係統中的應用研究
應用技術
作者:劉誌輝 楊明勇 王新陽
[摘 要]C語言作為國際上應用最廣泛的高級程序設計語言之一,是我國高等院校計算機相關專業的必修基礎課。在采用上級考試環境對C語言學習的綜合能力進行考核時,大多會涉及到選擇題、填空題以及程序題等,而程序題主要是采用結果評分法。這種方式一步錯就會導致整個程序無法運行,當然也不會得到最終的結果,使學生丟失分數,這並不科學和公平。
[關鍵詞]編譯原理理論;C程序題;自動評分係統
中圖分類號:TP391.7;TN702 文獻標識碼:A 文章編號:1009-914X(2014)35-0250-01
一、 引言
在對C語言進行考試評價中,其程序設計題的考核評分實現的難度較大,一些學校考試係統並沒有設該類試題,即使設置了相關題目,但對該類試題的評分方法卻並不完善,評分結果不盡人意。為提高C語言程序設計題評分的科學性和公平性,在比較結果評分方法的基礎上,運用編譯原理理論設計了自動化動態評分係統,進一步確保了係統評分結果的準確性和公正性,從而避免人工評閱因主觀因素出現的偏差。
二、 編譯原理的理論基礎
(一)詞法分析和語法分析
根據編譯原理的理論知識,詞法分析在編譯原理的第一階段需要將源程序進行一定的分解,並識別為一個個的單詞,以便生成TOKEN文件。在語法分析過程中,其輸入的數據主要以詞法分析階段生成的TOKEN文件為主,確定整個程序是否構成語法上正確的“程序”。該階段作為程序編譯原理的核心部分,基於這一理論本文提出了實現C程序題的自動評分係統。在程序語法分析階段,應盡可能發現更多的語法錯誤,並準確的定位各個錯誤,積極采取相關措施對其進行處理。在語法分析過程中,對錯誤的處理原則包括:首先發現錯誤並校正錯誤,校正的目的是確保語法分析能順利進行。其次使錯誤局部化,使語法分析程序跳過的語法成分最小。第三準確報錯,避免信息的重複與株連。
(二) 正規表達式
正規表達式(Regular Expression)是用來匹配或者描述一係列符合某個句法規則的一個或者多個字符型文字或者元字符組成。在諸多文本編輯器或者其他工具中,正規表達式的主要功能是檢索或者替換那些符合某個模式的文本內容,許多程序設計語言都支持利用正規表達式對字符串進行操作。在處理動態文本過程中,正規表達式具有較強的靈活性,能實現對程序的靜態評閱。
比如在檢查程序中for語句時,一般的形式為:for(express1;express2;express3),用正規表達式表示為:for\(([∧;]*)?;([∧;]*)?;([∧;]*)?;\)
輸入和輸出語句所對應的正規表達式分別為:
scanf\(“%d(,%d)?”,&\w+,(?(1)(,&\w+))\)