亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? sentencecompile.h

?? 一個Pascal子集語言的編譯器
?? H
?? 第 1 頁 / 共 4 頁
字號:
//SentenceCompile.h




//inputfile:  words.txt,wordstable1.txt
//outputfile: sentences.txt,wordstable2.txt


#ifndef SENTENCECOMPILE_H_
#define SENTENCECOMPILE_H_

#include <stdio.h>
#include <iostream>
#include <stdlib.h>
using namespace std;

/*****************************************************************************************
    語法分析器
    
    實(shí)現(xiàn)功能:
        1。按照正則表達(dá)式,判斷語句是否有語法錯誤。 
        2。如果有錯誤則需要輸入錯誤類型及行號,沒錯誤則輸出一個正確信號。
        3。讀取由詞法分析器所生成的字符表,并回填相應(yīng)的類型信息。
        4。要求將過程及函數(shù)所用到的變量數(shù)量、類型記錄下來。 
        5。將程序中的語句分離開,并記錄到目標(biāo)文件以便類型檢查使用。 
        6。可以實(shí)現(xiàn)的語句類型有以下幾種:
         
                                               //statement 
                a ;                            //過程
                a (b) ;                        //帶有參數(shù)的過程 
                a := b ;                       //賦值 
                if a=b then a:=b else a:=b ;   //條件
                while a=b do a:= b ;           //循環(huán)
                read (a,b) ;                   //輸入 
                write (a,b) ;                  //輸出 
                
    
       回填的信息如下 :
         序號(Index)   類型(Kind)  基本類型(Type)  名稱(Name)  參數(shù)個數(shù)(Have)  所屬函數(shù)(Belong) 
          
           類型: 
                 程序名         900
                 過程名         800
                 函數(shù)名         700
                 變量           100
                 程序參數(shù)       990
                 過程參數(shù)       810
                 函數(shù)參數(shù)       710 
                 
                 
           基本類型:
                 整數(shù)           101
                 浮點(diǎn)數(shù)         102      
                 布爾型         103
                 整數(shù)數(shù)組       201
                 浮點(diǎn)數(shù)數(shù)組     202      
                 布爾型數(shù)組     203
                 
                 等待輸入類型信息       100 
                 等待輸入數(shù)組類型信息   200 
                 等待輸入函數(shù)類型信息   700
                 
        舉例如下:
            program example(input,output);
            var x,y:integer;
            var abc:real;
            procedure gcd(a,b:integer);
         
            讀入信息:
                900 example
                910 input
                910 output
                100 x
                100 y
                800 gcd
                810 a
                810 b
     
            輸出信息:
            
               Index   Kind    Type     Name      Have  Belong
                1       900     900     example     2   0
                2       990     101     input       0   101(第一個的第一位) 
                3       990     101     output      0   102
                4       100     101     x           0   1
                5       100     101     y           0   2
                6       700     800     gcd         2   0
                7       710     101     a           0   601                
                8       710     101     b           0   602
                     
                               
    正則表達(dá)式:
    
    
     programs   ->  program id ( id_list ) ;                        (1)
                    (declaration) *
                    [ functions ] *
                    [ procedures ] *
                    body .
                    
     declaration->  var id_list : type ;                            (2)
                                                                   
     type       ->  def                                             (3)
                    | 
                    array [ number .. number ] of def               (4)
                    | 
                    record declaration end                          (5)
                    
     functions  ->  function id ( [ id_list : type ] ) : type ;     (6)
                    [ declaration ] *
                    body ;
     
     procedures ->  procedure id ( [ id_list : type ] ) ;           (7)
                    [ declaration ] *
                    body ;
     
                               
     body       ->  begin                                           (8)
                    [ statement ; ] *
                    end
                    |
                    statement
                    
     statement  ->  ids                                             (9)
                    |
                    ids ( simple_list )                             (10)
                    |
                    ids assignop simple                             (11)
                    |
                    while expression do body                        (12)
                    |
                    if expression then body else body               (13)
                    |
                    read ( ids_list )                               (14)
                    |
                    write ( simple_list )                           (15)
                    
     id_list    ->  id , id_list | id                               (16)
     
     ids_list   ->  ids , ids_list | ids                            (17)
                    
     expression ->  simple relop simple                             (18)
     
     simple_list  -> simple | simple , simple_list                  (19)
                    
     simple     ->  factor                                          (20)
                    | 
                    factor op simple                                (21)
                    
     factor     ->  ids                                             (22)
                    |
                    ids ( simple_list )                             (23)
                    |
                    number                                          (24)
                    |
                    not factor                                      (25)
                    |
                    true                                            (26)
                    |
                    false                                           (27)
                    |
                    ( simple )                                      (28)
                    
                         
      其中的非終結(jié)符:
         1 programs
         2 declaration
         3 type
         4 functions
         5 procedures
         6 body
         7 statement 
         8 id_list
         9 ids_list
         10 expression
         11 simple_list
         12 simple
         13 factor
      終結(jié)符: 
         101 program,102 begin,103 end,104 def,105 function,106 procedure 
         107 if,108 then,109 else,110 while,111 do 
         112 read,113 write,114 array,115 record,116 of
         117 or,118 and,119 not,120 true,121 false 
         122 number,123 id,124 ids 
         125 op,126 relop,127 :,128 ;,129 (,130 ),131 [,132 ],133 .,134 ,  
         135 var
         136 assignop


      寫出狀態(tài)機(jī)如下:————————函數(shù):Check(int state,int next)
      
       <凡是下面列出的特殊移進(jìn)及歸約,均在程序塊后面加一句 Check(State[StateIndex],next) >
       
       
   1  programs   -> 1000 program 1001 id 1002( 1003 id_list 1004 ) 1005 ; 1006  
                    (declaration) *
                    [ functions ] *
                    [ procedures ] *
                    body 1007 . 9999(結(jié)束) 
                    
      1003 ->  123   -> StateIndex++, State[StateIndex]= 8000 
      1006 ->  135   -> StateIndex++, State[StateIndex]= 2000                         
      1006 ->  105   -> StateIndex++, State[StateIndex]= 4000
      1006 ->  106   -> StateIndex++, State[StateIndex]= 5000 
      1006 ->  102   -> StateIndex++, State[StateIndex]= 6000 
      1007 ->  133   -> State = 9999
      9999 ->        -> 輸出成功信息
      9999 ->  任意  -> 輸出錯誤信息 
      
      1001->1002: VariantIndex++;
                  Parament=0;
                  VariantType[]=900;
      1005->1006: Parament=0;HaveCount=0;
      1006->6000: Parament=0;HaveCount=0;
      
   2  declaration-> 2000 var 2001 id_list 2002 : 2003 type 2004 ; 2005                         
     
      2001 ->  123   -> StateIndex++, State[StateIndex]= 8000 
      2003 ->  104   -> StateIndex++, State[StateIndex]= 3000
               114
               115 
      2005 ->  任意  -> StateIndex--, Check(State[StateIndex],2) 
      
      2003->3000: TypeNeed=100;
      
      
   3  type       -> 3000 def 3001                                          
                    | 
                    3000 array 3002 [ 3003 number 3004 . 3005 . 3006 number 3007 ] 3008 of 3009 def 3010           
                    | 
                    3000 record 3011 declaration 3012 end 3013    
                                        
      3001 ->  任意  -> StateIndex--, Check(State[StateIndex],3) 
      3010 ->  任意  -> StateIndex--, Check(State[StateIndex],3) 
      3011 ->  135   -> StateIndex++, State[StateIndex]= 2000
      3013 ->  任意  -> StateIndex--, Check(State[StateIndex],3) 
      
      3000->3001: 將Type=100+temp信息回填到VariantType==TypeNeed的VariantType中 
      3009->3010: 將Type=200+temp信息回填到VariantType==TypeNeed的VariantType中 
    * 3000->3011: 將Type=300信息回填到VariantType==TypeNeed的VariantType中
      
   4  functions  -> 4000 function 4001 id 4002 ( 4004 [ id_list 4005 : 4006 type 4007 ] ) 4009 : 4010 type 4011 ; 4012    
                    [ declaration ] *
                    body 4013 ; 4014
      4004 ->  123   -> StateIndex++, State[StateIndex]= 8000
      4006 ->  104   -> StateIndex++, State[StateIndex]= 3000
               114
               115
      4012 ->  135   -> StateIndex++, State[StateIndex]= 2000                         
      4012 ->  102   -> StateIndex++, State[StateIndex]= 6000
      4014 ->  任意  -> StateIndex--, Check(State[StateIndex],4)
      
      4001->4002: VariantIndex++;SubCount++;
                  Temp=VariantIndex;
                  VariantBelong[]=0;
                  Parament=VariantIndex;
                  VariantType=700;等待輸入類型 
      4004->8000: HaveCount=0; 
      
      4009->4010: VariantHave=HaveCount;參數(shù)個數(shù) 
                   
                           
      4006->3000: TypeNeed=100;                                          
      4010->3000: TypeNeed=700; 
      4013->4014: Parament=0;
      
   5  procedures -> 5000 procedure 5001 id 5002 ( 5003 [ id_list 5004 : 5005 type 5006 ] ) 5007 ; 5008         
                    [ declaration ] *
                    body 5009 ; 5010
                    
      5003 ->  123   -> StateIndex++, State[StateIndex]= 8000 
      5005 ->  104 114 115  -> StateIndex++, State[StateIndex]= 3000
      5008 ->  135   -> StateIndex++, State[StateIndex]= 2000                         
      5008 ->  102   -> StateIndex++, State[StateIndex]= 6000
      5010 ->  任意  -> StateIndex--, Check(State[StateIndex],5)
      
      5001->5002: VariantIndex++;SubCount++;
                  Temp=VariantIndex;
                  VariantBelong[]=0;
                  Parament=VariantIndex;
                  VariantType=800;
      5003->8000: HaveCount=0;
      5005->3000: TypeNeed=100;
      5007->5008: VariantHave=HaveCount;            
                  
   6  body       -> 6000 begin 6001                                     
                    [ [ statement 6002 ; 6003 ] statement 6002 ] 
                    end 6004
                    |
                    6000 statement 6005
                    
      6001 -> 124    -> StateIndex++, State[StateIndex]= 7000 
              107
              110
              112
              113              
      6000 -> 124    -> StateIndex++, State[StateIndex]= 7000 
              107
              110
              112
              113              
      6004 ->  任意  -> StateIndex--, Check(State[StateIndex],6)
      6005 ->  任意  -> StateIndex--, Check(State[StateIndex],6)
      
   7  statement  -> 7000 ids 7001                                          
                    |
                    7000 ids 7001 ( 7002 simple_list 7003 ) 7004                           
                    |
                    7000 ids 7001 assignop 7005 simple 7006                          
                    |
                    7000 while 7007 expression 7008 do 7009 body 7010                      

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
天堂影院一区二区| 欧美性一二三区| 精品久久久久久久久久久久久久久| 亚洲曰韩产成在线| 欧美影视一区二区三区| 亚洲一区二区四区蜜桃| 欧美日本一道本| 日本欧美一区二区| 精品国产乱码久久久久久浪潮| 激情综合色播五月| 国产欧美一区二区精品婷婷| 成人禁用看黄a在线| 最新中文字幕一区二区三区| 欧美亚洲国产一区二区三区| 丝袜脚交一区二区| 久久久国产精品不卡| 成人免费毛片嘿嘿连载视频| 亚洲精品免费电影| 欧美一级片在线看| 成人性色生活片| 亚洲一区二区三区爽爽爽爽爽| 欧美日韩国产另类不卡| 国产真实乱偷精品视频免| 国产精品你懂的在线欣赏| 欧美在线制服丝袜| 免费观看在线色综合| 欧美极品另类videosde| 在线亚洲免费视频| 欧美午夜精品久久久| 裸体一区二区三区| 国产精品每日更新在线播放网址| 在线观看日韩电影| 国产精品资源网站| 亚洲自拍与偷拍| 久久综合五月天婷婷伊人| av不卡在线观看| 美国十次综合导航| 成人免费小视频| 精品国产精品网麻豆系列| 91欧美一区二区| 国产自产2019最新不卡| 一区二区在线观看免费| 欧美精品一区二区不卡| 日本道色综合久久| 国产不卡视频一区二区三区| 午夜久久电影网| 国产精品视频一二| 精品精品国产高清一毛片一天堂| 成人毛片老司机大片| 麻豆一区二区三区| 亚洲精品日产精品乱码不卡| 久久综合网色—综合色88| 欧美三级视频在线播放| 国产精品一品二品| 男人操女人的视频在线观看欧美| 国产精品大尺度| 久久综合九色综合久久久精品综合| 欧美综合在线视频| 99在线精品观看| 国产成人精品亚洲日本在线桃色 | 蜜臀av性久久久久蜜臀aⅴ| 久久色.com| 日韩三级视频在线观看| 欧美图区在线视频| 99久久er热在这里只有精品66| 激情综合网最新| 久久99久久99小草精品免视看| 亚洲午夜三级在线| 亚洲黄色免费电影| 亚洲天堂久久久久久久| 国产日产欧产精品推荐色| 精品国产一区二区三区av性色| 欧美一区二区三区视频在线观看| 91黄色在线观看| 日本精品免费观看高清观看| 99天天综合性| 99视频在线精品| av影院午夜一区| av一二三不卡影片| 91香蕉国产在线观看软件| 国产黑丝在线一区二区三区| 激情丁香综合五月| 国产一区激情在线| 国产成人啪午夜精品网站男同| 韩国女主播成人在线| 久久精品99国产精品日本| 久久国产精品99精品国产| 麻豆国产一区二区| 狠狠狠色丁香婷婷综合激情| 国产一区激情在线| 成人动漫一区二区| 91丨porny丨户外露出| 一本大道久久a久久精二百| 一本到高清视频免费精品| 在线看一区二区| 欧美福利视频一区| 欧美xxx久久| 国产亚洲欧洲997久久综合| 国产精品污www在线观看| 国产精品国产三级国产aⅴ无密码| 国产精品久久久久婷婷二区次| 中文字幕一区二区三区视频 | 日韩午夜激情免费电影| 欧美大片一区二区| 国产欧美一区二区三区在线看蜜臀| 国产亚洲欧美色| 最近中文字幕一区二区三区| 亚洲一级片在线观看| 麻豆视频观看网址久久| 福利一区福利二区| 91黄色免费看| 日韩免费看的电影| 中文久久乱码一区二区| 亚洲一区在线免费观看| 日本少妇一区二区| 成人丝袜18视频在线观看| 色播五月激情综合网| 日韩一区二区免费在线观看| 国产欧美一区二区精品久导航| 亚洲欧美偷拍三级| 老司机午夜精品| 成人高清av在线| 日韩一区二区电影在线| 国产精品美女视频| 三级精品在线观看| 成人精品国产一区二区4080| 51精品久久久久久久蜜臀| 国产三级久久久| 天天亚洲美女在线视频| 国产91在线看| 91精品视频网| 亚洲三级电影网站| 国产在线不卡视频| 欧美在线视频日韩| 中文字幕精品综合| 美女视频网站久久| 欧美亚洲禁片免费| 国产精品嫩草99a| 精品制服美女丁香| 欧美日韩一区三区四区| 中文字幕在线观看一区| 免费成人小视频| 欧洲精品一区二区三区在线观看| 久久精品免视看| 久草中文综合在线| 欧美日韩国产综合一区二区 | 中文久久乱码一区二区| 日本aⅴ精品一区二区三区| 91在线播放网址| 国产日韩欧美制服另类| 久久狠狠亚洲综合| 555夜色666亚洲国产免| 亚洲伦理在线精品| av电影在线观看完整版一区二区| 久久一二三国产| 免费在线看成人av| 在线综合亚洲欧美在线视频| 一区二区三区中文字幕精品精品| 国产成人亚洲综合色影视| 2021久久国产精品不只是精品| 日韩电影在线看| 在线成人高清不卡| 亚洲成人黄色小说| 欧美视频自拍偷拍| 亚洲综合精品自拍| 91传媒视频在线播放| 亚洲精选视频在线| 色一区在线观看| 一区二区三区鲁丝不卡| 色综合久久天天综合网| 亚洲日本电影在线| 91丨porny丨蝌蚪视频| 亚洲天堂a在线| 91麻豆国产香蕉久久精品| 综合久久一区二区三区| 91亚洲精华国产精华精华液| 最近中文字幕一区二区三区| 色婷婷激情综合| 夜夜揉揉日日人人青青一国产精品| 色婷婷久久久久swag精品| 一区二区三区在线播| 欧美日韩久久不卡| 三级欧美在线一区| 欧美va亚洲va国产综合| 国产一区二区三区在线观看精品| 精品国产乱码久久久久久1区2区 | 亚洲一卡二卡三卡四卡五卡| 在线观看日产精品| 日本欧美在线观看| 久久日一线二线三线suv| 国产91在线看| 一区二区三区四区精品在线视频| 精品视频一区二区三区免费| 日日摸夜夜添夜夜添国产精品| 欧美电影免费观看高清完整版在线| 国产真实乱偷精品视频免| 国产精品第四页| 欧美日韩亚洲综合| 极品尤物av久久免费看| 国产精品国产自产拍在线|