• <em id="6vhwh"><rt id="6vhwh"></rt></em>

    <style id="6vhwh"></style>

    <style id="6vhwh"></style>
    1. <style id="6vhwh"></style>
        <sub id="6vhwh"><p id="6vhwh"></p></sub>
        <p id="6vhwh"></p>
          1. 国产亚洲欧洲av综合一区二区三区 ,色爱综合另类图片av,亚洲av免费成人在线,久久热在线视频精品视频,成在人线av无码免费,国产精品一区二区久久毛片,亚洲精品成人片在线观看精品字幕 ,久久亚洲精品成人av秋霞

            詞法分析

            更新時間:2023-03-10 09:41:31 閱讀: 評論:0

            泰山南天門-瑜珈練習

            詞法分析
            2023年3月10日發(作者:協議合同范本)

            課程名稱編譯技術實驗名稱實驗一、詞法分析

            班級姓名學號儀器組號___實驗日期2017-10-23

            實驗報告要求:

            1.實驗目的2.實驗內容3.實驗要求與步驟4.流程圖5.運行結果6.實驗體會

            一、實驗目的

            1、學會針對DFA轉換圖實現相應的高級語言源程序.

            2、深刻領會狀態轉換圖的含義,逐步理解有限自動機。

            3、掌握手工生成詞法分析器的方法,了解詞法分析器的內部工作原理。

            二、實驗內容

            TINY計算機語言的編譯程序的詞法分析部分實現。

            從左到右掃描每行該語言源程序的符號,拼成單詞,換成統一的內部表示(token)

            送給語法分析程序。

            為了簡化程序的編寫,有具體的要求如下:

            (1)數僅僅是整數。

            (2)空白符僅僅是空格、回車符、制表符。

            (3)代碼是自由格式。

            (4)注釋應放在花括號之內,并且不允許嵌套

            三、實驗要求

            要求實現編譯器的以下功能:

            a)按規則拼單詞,并轉換成二元式形式

            b)刪除注釋行

            c)刪除空白符(空格、回車符、制表符)

            d)顯示源程序,在每行的前面加上行號,并且打印出每行包含的記號的二元形式

            e)發現并定位錯誤。

            詞法分析進行具體的要求:

            (1)記號的二元式形式中種類采用枚舉方法定義;其中保留字和特殊字符是每個都

            一個種類,標示符自己是一類,數字是一類;單詞的屬性就是表示的字符串值。

            (2)詞法分析的具體功能實現是一個函數GetToken(),每次調用都對剩余的字符串

            分析得到一個單詞或記號識別其種類,收集該記號的符號串屬性,當識別一個

            單詞完畢,采用返回值的形式返回符號的種類,同時采用程序變量的形式提供

            當前識別出記號的屬性值。

            (3)標識符和保留字的詞法構成相同,為了更好的實現,把語言的保留字建立一個

            表格存儲,這樣可以把保留字的識別放在標示符之后,用識別出的標示符對比

            四、源代碼

            #include"stdafx.h"

            #include"pro119.h"

            #include"pro119Dlg.h"

            #ifdef_DEBUG

            #definenewDEBUG_NEW

            #undefTHIS_FILE

            staticcharTHIS_FILE[]=__FILE__;

            #endif

            /////////////////////////////////////////////////////////////////////

            ////////

            //CAboutDlgdialogudforAppAbout

            classCAboutDlg:publicCDialog

            {

            public:

            CAboutDlg();

            //DialogData

            //{{AFX_DATA(CAboutDlg)

            enum{IDD=IDD_ABOUTBOX};

            //}}AFX_DATA

            //ClassWizardgeneratedvirtualfunctionoverrides

            //{{AFX_VIRTUAL(CAboutDlg)

            protected:

            virtualvoidDoDataExchange(CDataExchange*pDX);//DDX/DDV

            support

            //}}AFX_VIRTUAL

            //Implementation

            protected:

            //{{AFX_MSG(CAboutDlg)

            //}}AFX_MSG

            DECLARE_MESSAGE_MAP()

            };

            CAboutDlg::CAboutDlg():CDialog(CAboutDlg::IDD)

            {}

            voidCAboutDlg::DoDataExchange(CDataExchange*pDX)

            {

            CDialog::DoDataExchange(pDX);}

            BEGIN_MESSAGE_MAP(CAboutDlg,CDialog)

            //{{AFX_MSG_MAP(CAboutDlg)

            //Nomessagehandlers

            //}}AFX_MSG_MAP

            END_MESSAGE_MAP()

            /////////////////////////////////////////////////////////////////////

            //CPro119Dlgdialog

            CPro119Dlg::CPro119Dlg(CWnd*pParent/*=NULL*/)

            :CDialog(CPro119Dlg::IDD,pParent)

            {

            //{{AFX_DATA_INIT(CPro119Dlg)

            m_a=_T("");

            m_b=_T("");

            //}}AFX_DATA_INIT

            //NotethatLoadIcondoesnotrequireasubquentDestroyIconin

            Win32

            m_hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME);

            }

            voidCPro119Dlg::DoDataExchange(CDataExchange*pDX)

            {

            CDialog::DoDataExchange(pDX);

            //{{AFX_DATA_MAP(CPro119Dlg)

            DDX_Text(pDX,IDC_EDIT1,m_a);

            DDX_Text(pDX,IDC_EDIT2,m_b);

            //}}AFX_DATA_MAP

            }

            BEGIN_MESSAGE_MAP(CPro119Dlg,CDialog)

            //{{AFX_MSG_MAP(CPro119Dlg)

            ON_WM_SYSCOMMAND()

            ON_WM_PAINT()

            ON_WM_QUERYDRAGICON()

            ON_BN_CLICKED(IDC_BUTTON1,OnButton1)

            ON_BN_DOUBLECLICKED(IDC_BUTTON1,OnDoubleclickedButton1)

            ON_EN_CHANGE(IDC_EDIT1,OnChangeEdit1)

            ON_EN_CHANGE(IDC_EDIT2,OnChangeEdit2)

            //}}AFX_MSG_MAP

            END_MESSAGE_MAP()

            /////////////////////////////////////////////////////////////////////

            ////////

            //CPro119Dlgmessagehandlers

            BOOLCPro119Dlg::OnInitDialog(){

            CDialog::OnInitDialog();

            //Add"About..."menuitemtosystemmenu.

            //IDM_ABOUTBOXmustbeinthesystemcommandrange.

            ASSERT((IDM_ABOUTBOX&0xFFF0)==IDM_ABOUTBOX);

            ASSERT(IDM_ABOUTBOX<0xF000);

            CMenu*pSysMenu=GetSystemMenu(FALSE);

            if(pSysMenu!=NULL){

            CStringstrAboutMenu;

            ring(IDS_ABOUTBOX);

            if(!y())

            {

            pSysMenu->AppendMenu(MF_SEPARATOR);

            pSysMenu->AppendMenu(MF_STRING,IDM_ABOUTBOX,

            strAboutMenu);

            }

            }

            SetIcon(m_hIcon,TRUE);//Setbigicon

            SetIcon(m_hIcon,FALSE);//Setsmallicon

            returnTRUE;//returnTRUEunlessyoutthefocustoacontrol

            }

            voidCPro119Dlg::OnSysCommand(UINTnID,LPARAMlParam)

            {

            if((nID&0xFFF0)==IDM_ABOUTBOX)

            {

            CAboutDlgdlgAbout;

            l();

            }

            el

            {

            CDialog::OnSysCommand(nID,lParam);

            }

            }

            //Ifyouaddaminimizebuttontoyourdialog,youwillneedthecode

            below

            //applicationsusingthedocument/view

            model,

            //thisisautomaticallydoneforyoubytheframework.

            voidCPro119Dlg::OnPaint(){

            if(IsIconic()){

            CPaintDCdc(this);//devicecontextforpainting

            SendMessage(WM_ICONERASEBKGND,(WPARAM)eHdc(),0);

            //Centericoninclientrectangle

            intcxIcon=GetSystemMetrics(SM_CXICON);

            intcyIcon=GetSystemMetrics(SM_CYICON);

            CRectrect;

            GetClientRect(&rect);

            intx=(()-cxIcon+1)/2;

            inty=(()-cyIcon+1)/2;

            on(x,y,m_hIcon);

            }

            el{

            CDialog::OnPaint();

            }

            }

            HCURSORCPro119Dlg::OnQueryDragIcon(){

            return(HCURSOR)m_hIcon;

            }

            voidCPro119Dlg::OnButton1(){

            //TODO:Addyourcontrolnotificationhandlercodehere

            UpdateData(true);

            m_b="";

            char

            keyword[8][10]={"if","then","esle","end","repeat","read","while"};

            charspecial_sign[9]={'+','-','*','/','=','<','{','}',';'};

            chara[100],ch,token[8];

            inti,j,key,sp,temp1,temp2,len;

            sprintf(a,"%s",m_a);

            len=strlen(a);

            for(i=0;i

            {

            ch=a[i];

            if(ch==''||ch=='n'||ch=='t'||ch=='r')continue;

            for(j=0;j<8;j++)

            token[j]='0';

            j=0;temp1=0;temp2=0;

            if((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z'))

            {

            do{

            token[j++]=ch;

            ch=a[++i];

            }while((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z'));

            for(key=0;key<8;key++)

            if(strcmp(token,keyword[key])==0)

            {m_b+=token;

            m_b+="-->關鍵字";

            m_b+="rn";

            temp1=1;

            temp2=1;

            break;

            }

            if(temp1==0)

            {m_b+=token;

            m_b+="-->標識符";

            m_b+="rn";

            temp2=1;

            }

            i--;

            }

            elif(ch>='0'&&ch<='9')

            {

            do{

            token[j++]=ch;

            ch=a[++i];

            }while(ch>='0'&&ch<='9');

            m_b+=token;

            m_b+="-->數字";

            m_b+="rn";

            temp2=1;

            i--;

            }

            el

            {

            for(sp=0;sp<9;sp++)

            if(ch==special_sign[sp])

            {

            m_b+=ch;

            m_b+="-->特殊符號";

            m_b+="rn";

            temp2=1;

            break;

            }

            }

            if(temp2==0){m_b+="error!";m_b+="rn";}

            }

            UpdateData(fal);

            }

            voidCPro119Dlg::OnDoubleclickedButton1()

            {

            //TODO:Addyourcontrolnotificationhandlercodehere

            }

            voidCPro119Dlg::OnChangeEdit1()

            {

            }

            voidCPro119Dlg::OnChangeEdit2(){

            }

            五實驗結果

            六.實驗體會

            通過編譯原理的這次程序實驗,在自已動手體驗的情況下,更加透徹地理解

            了詞法分析的過程,以及該算法。對于以后由模型向程序代碼的轉化能力上,有

            了很大的鍛煉。以后我會更加專心的研究計算機知識,不斷將現實中遇到的實際

            問題,向程序方面轉變,做到靈活運用所學知識

            教師評價優良中及格不及格教師簽名日期

            本文發布于:2023-03-10 09:41:30,感謝您對本站的認可!

            本文鏈接:http://m.newhan.cn/zhishi/a/1678412491134650.html

            版權聲明:本站內容均來自互聯網,僅供演示用,請勿用于商業和其他非法用途。如果侵犯了您的權益請與我們聯系,我們將在24小時內刪除。

            本文word下載地址:詞法分析.doc

            本文 PDF 下載地址:詞法分析.pdf

            下一篇:返回列表
            標簽:詞法分析
            相關文章
            留言與評論(共有 0 條評論)
               
            驗證碼:
            Copyright ?2019-2022 Comsenz Inc.Powered by ? 實用文體寫作網旗下知識大全大全欄目是一個全百科類寶庫! 優秀范文|法律文書|專利查詢|
            主站蜘蛛池模板: 国产亚洲精品国产福APP| 美女裸体黄网站18禁止免费下载| 亚洲精品日韩精品久久| 日本熟妇XXXX潮喷视频| 毛片在线看免费| 337P日本欧洲亚洲大胆在线| 国产在线一区二区在线视频| 国产成人1024精品免费| 亚洲精品日本久久一区二区三区| 蜜桃成熟色综合久久av| 亚洲精品自拍视频在线看| 麻豆亚洲精品一区二区| 欧美熟妇乱子伦XX视频| 中文字幕精品亚洲无线码二区| 国产乱子伦精品免费视频| 国产果冻豆传媒麻婆精东| 视频一区二区三区自拍偷拍| 亚洲欧美日韩综合久久久| 日韩AV无码精品一二三区| 国产SM重味一区二区三区| 欧美老熟妇欲乱高清视频| 国产精品青草久久久久福利99| 精品人妻日韩中文字幕| 一个色综合亚洲热色综合| 欧洲美熟女乱av在免费| 久久久久久伊人高潮影院| 日本欧美大码a在线观看| 人妻av无码专区久久| 日本少妇被黑人猛cao| 巨熟乳波霸若妻在线播放| 中文字幕人妻有码久视频| 国产精品无码av不卡| 亚洲理论在线A中文字幕| 欧美人与动zozo| 无码aⅴ精品一区二区三区| 电视剧在线观看| 国产精品一品二区三区日韩| 成人3D动漫一区二区三区| 性色欲情网站iwww| 精品亚洲欧美高清不卡高清| 综合99综合久久久久久久|