用一門面向?qū)ο笳Z言建立一個針對LL(1)文法分析構(gòu)造演示器,輸入定義好的文法,進(jìn)行分析后在內(nèi)存中建立其存儲結(jié)構(gòu),判斷其能用LL(1)文法分析后,建立其分析過程。 為此我們將本任務(wù)分解為以下內(nèi)容: (1)文法的建立; (2)上下文無關(guān)文法的判定; (3)消除文法中一切左遞歸的算法; (4)文法二義性的判定; (5)LL(1)文法的判定; (6)消除直接左遞歸; (7)消除間接左遞歸; (8)直接左公因子的改造; (9)間接左公因子的改造; (10)遞歸子程序的構(gòu)造; (11)根據(jù)布爾矩陣求Follow集; (12)能導(dǎo)出ε的非終結(jié)符; (13)根據(jù)定義構(gòu)造First集; (14)根據(jù)關(guān)系圖構(gòu)造First集; (15)根據(jù)定義構(gòu)造Follow集; (16)根據(jù)關(guān)系圖構(gòu)造Follow集; (17)Select集的構(gòu)造; (18)預(yù)測分析表的構(gòu)造; (19)總控程序的構(gòu)造; (20)語法樹的演示; (21)根據(jù)總控程序輸出語法樹; (22)根據(jù)布爾矩陣求First集。 我所要完成的任務(wù)是 語法樹的演示。
上傳時間: 2016-07-30
上傳用戶:kelimu
LL(1)語法分析器,在任何時候,總控程序都是按照棧頂符號X和當(dāng)前輸入符號a行事的。對于任何(X,a),總控程序每次都執(zhí)行下述三種可能的動作之一: 若X=a=’#’,則宣布分析成功,停止分析過程; 若X=a≠’#’,則把X從棧頂逐出,讓a指向下一輸入符號; 若X是一個非終結(jié)符,則查看分析表M。若M中存放著一條關(guān)于X的產(chǎn)生式,那么,首先把X逐出棧頂,然后,把產(chǎn)生式的右部符號按反序一一推進(jìn)棧,同時做這個產(chǎn)生式相應(yīng)的語義動作(目前不管)。若M[X,a]中存放著一條出錯標(biāo)志,則調(diào)用出錯診查程序Error。
上傳時間: 2013-12-09
上傳用戶:13160677563
PLC_FX:是PLCL_FX編程手冊,手冊是PDF格式的,本手冊是編寫FX系列微型可編程控制器用的順控程序指令說明書
上傳時間: 2013-12-26
上傳用戶:從此走出陰霾
VB實現(xiàn)的OPC Server服務(wù)器,是工控程序不可缺少的好東東
上傳時間: 2014-01-23
上傳用戶:xcy122677
自上而下的語法分析器,實驗內(nèi)容之一,利用分析表、分析棧和總控程序?qū)υ闯绦蜻M(jìn)行自上而下的語法分析測試;
上傳時間: 2014-01-05
上傳用戶:13188549192
STM32F103開發(fā)板 DHT11溫濕度DS18B20 氣體MQ-2光敏聲控雨滴傳感器實驗程序**--------------------------------------------------------------------------------------------------------** Created by: FiYu** Created date: 2015-12-12** Version: 1.0** Descriptions: DHT11溫濕度傳感器實驗 **--------------------------------------------------------------------------------------------------------** Modified by: FiYu** Modified date: ** Version: ** Descriptions: ** Rechecked by: **********************************************************************************************************/#include "stm32f10x.h"#include "delay.h"#include "dht11.h"#include "usart.h"DHT11_Data_TypeDef DHT11_Data;/************************************************************************************** * 描 述 : GPIO/USART1初始化配置 * 入 參 : 無 * 返回值 : 無 **************************************************************************************/void GPIO_Configuration(void){ GPIO_InitTypeDef GPIO_InitStructure; /* Enable the GPIO_LED Clock */ RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO , ENABLE); GPIO_DeInit(GPIOB); //將外設(shè)GPIOA寄存器重設(shè)為缺省值 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽輸出 GPIO_Init(GPIOB, &GPIO_InitStructure); GPIO_DeInit(GPIOA); //將外設(shè)GPIOA寄存器重設(shè)為缺省值 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //推挽輸出 GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //浮空輸入 GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_SetBits(GPIOB , GPIO_Pin_9); //初始狀態(tài),熄滅指示燈LED1}/************************************************************************************** * 描 述 : 串口顯示實時溫濕度 * 入 參 : 無 * 返回值 : 無 **************************************************************************************/void DHT11_SCAN(void){ if( Read_DHT11(&DHT11_Data)==SUCCESS) { printf("\r\n讀取DHT11成功!\r\n\r\n濕度為%d.%d %RH ,溫度為 %d.%d℃ \r\n",\ DHT11_Data.humi_int,DHT11_Data.humi_deci,DHT11_Data.temp_int,DHT11_Data.temp_deci); //printf("\r\n 濕度:%d,溫度:%d \r\n" ,DHT11_Data.humi_int,DHT11_Data.temp_int); } else { printf("Read DHT11 ERROR!\r\n"); }}/************************************************************************************** * 描 述 : MAIN函數(shù) * 入 參 : 無 * 返回值 : 無 **************************************************************************************/int main(void){ SystemInit(); //設(shè)置系統(tǒng)時鐘72MHZ GPIO_Configuration(); USART1_Init(); //初始化配置TIM DHT11_GPIO_Config(); // 初始化溫濕度傳感器PB1引腳初始時為推挽輸出 GPIO_ResetBits(GPIOB , GPIO_Pin_9); delay_ms(500); while(1) { GPIO_SetBits(GPIOB , GPIO_Pin_9); DHT11_SCAN(); //實時顯示溫濕度 delay_ms(1500); } }
上傳時間: 2022-05-03
上傳用戶:得之我幸78
微型計算機(jī)課程設(shè)計論文—通用微機(jī)發(fā)聲程序的匯編設(shè)計 本文講述了在微型計算機(jī)中利用可編程時間間隔定時器的通用發(fā)聲程序設(shè)計,重點講述了程序的發(fā)聲原理,節(jié)拍的產(chǎn)生,按節(jié)拍改變的動畫程序原理,并以設(shè)計一個簡單的樂曲評分程序為引子,分析程序設(shè)計的細(xì)節(jié)。關(guān)鍵字:微機(jī) 8253 通用發(fā)聲程序 動畫技術(shù) 直接寫屏 1. 可編程時間間隔定時器8253在通用個人計算機(jī)中,有一個可編程時間間隔定時器8253,它能夠根據(jù)程序提供的計數(shù)值和工作方式,產(chǎn)生各種形狀和各種頻率的計數(shù)/定時脈沖,提供給系統(tǒng)各個部件使用。本設(shè)計是利用計算機(jī)控制發(fā)聲的原理,編寫演奏樂曲的程序。 在8253/54定時器內(nèi)部有3個獨立工作的計數(shù)器:計數(shù)器0,計數(shù)器1和計數(shù)器2,每個計數(shù)器都分配有一個斷口地址,分別為40H,41H和42H.8253/54內(nèi)部還有一個公用的控制寄存器,端地址為43H.端口地址輸入到8253/54的CS,AL,A0端,分別對3個計數(shù)器和控制器尋址. 對8353/54編程時,先要設(shè)定控制字,以選擇計數(shù)器,確定工作方式和計數(shù)值的格式.每計數(shù)器由三個引腳與外部聯(lián)系,見教材第320頁圖9-1.CLK為時鐘輸入端,GATE為門控信號輸入端,OUT為計數(shù)/定時信號輸入端.每個計數(shù)器中包含一個16位計數(shù)寄存器,這個計數(shù)器時以倒計數(shù)的方式計數(shù)的,也就是說,從計數(shù)初值逐次減1,直到減為0為止. 8253/54的三個計數(shù)器是分別編程的,在對任一個計數(shù)器編程時,必須首先講控制字節(jié)寫入控制寄存器.控制字的作用是告訴8253/54選擇哪個計數(shù)器工作,要求輸出什么樣的脈沖波形.另外,對8253/54的初始化工作還包括,向選定的計數(shù)器輸入一個計數(shù)初值,因為這個計數(shù)值可以是8為的,也可以是16為的,而8253/5的數(shù)據(jù)總線是8位的,所以要用兩條輸出指令來寫入初值.下面給出8253/54初始化程序段的一個例子,將計數(shù)器2設(shè)定為方式3,(關(guān)于計數(shù)器的工作方式參閱教材第325—330頁)計數(shù)初值為65536. MOV AL,10110110B ;選擇計數(shù)器2,按方式3工作,計數(shù)值是二進(jìn)制格式 OUT 43H,AL ; j將控制字送入控制寄存器 MOV AL,0 ;計數(shù)初值為0 OUT 42H,AL ;將計數(shù)初值的低字節(jié)送入計數(shù)器2 OUT 42H,AL ;將計數(shù)初值的高字節(jié)送入計數(shù)器2 在IBM PC中8253/54的三個時鐘端CLK0,CLK1和CLK2的輸入頻率都是1.1931817MHZ. PC機(jī)上的大多數(shù)I/O都是由主板上的8255(或8255A)可編程序外圍接口芯片(PPI)管理的.關(guān)于8255A的結(jié)構(gòu)和工作原理及應(yīng)用舉例參閱教材第340—373頁.教材第364頁的”PC/XT機(jī)中的揚聲器接口電路”一節(jié)介紹了揚聲器的驅(qū)動原理,并給出了通用發(fā)聲程序.本設(shè)計正是基于這個原理,通過編程,控制加到揚聲器上的信號的頻率,奏出樂曲的.2.發(fā)聲程序的設(shè)計下面是能產(chǎn)生頻率為f的通用發(fā)聲程序:MOV AL, 10110110B ;8253控制字:通道2,先寫低字節(jié),后寫高字節(jié) ;方式3,二進(jìn)制計數(shù)OUT 43H, AL ;寫入控制字MOV DX, 0012H ;被除數(shù)高位MOV AX, 35DEH ;被除數(shù)低位 DIV ID ;求計數(shù)初值n,結(jié)果在AX中OUT 42H, AL ;送出低8位MOV AL, AHOUT 42H,AL ;送出高8位IN AL, 61H ;讀入8255A端口B的內(nèi)容MOV AH, AL ;保護(hù)B口的原狀態(tài)OR AL, 03H ;使B口后兩位置1,其余位保留OUT 61H,AL ;接通揚聲器,使它發(fā)聲
標(biāo)簽: 微型計算機(jī) 發(fā)聲程序 論文 微機(jī)
上傳時間: 2013-10-17
上傳用戶:sunjet
PLC 以 其 可靠性高、抗干擾能力強(qiáng)、配套齊全、功能完善、適應(yīng)性強(qiáng)等特點,廣泛應(yīng)用于各種控制領(lǐng)域。PLC作為通用工業(yè)控制計算機(jī),是面向工礦企業(yè)的工控設(shè)備,使用梯形圖符號進(jìn)行編程,與繼電器電路相當(dāng)接近,被廣大工程技術(shù)人員接受。但是在實際應(yīng)用中,如何編程能夠提高PLC程序運行速度是一個值得我們思考研究的問題。1 PLC工作原理PLC 與 計 算機(jī)的工作原理基本相同,即在系統(tǒng)程序的管理下,通過運行應(yīng)用程序完成用戶任務(wù)。但兩者的工作方式有所不同。計算機(jī)一般采用等待命令的工作方式,而PLC在確定了工作任務(wù)并裝人了專用程序后成為一種專用機(jī),它采用循環(huán)掃描工作方式,系統(tǒng)工作任務(wù)管理及應(yīng)用程序執(zhí)行都是用循環(huán)掃描方式完成的。PLC 有 兩 種基本的工作狀態(tài),即運行(RUN)與停止(STOP)狀態(tài)。在這兩種狀態(tài)下,PLC的掃描過程及所要完成的任務(wù)是不盡相同的,如圖1所示。 PLC在RUN工作狀態(tài)時,執(zhí)行一次掃描操作所的時間稱為掃描周期,其典型值通常為1一100nis,不同PLC廠家的產(chǎn)品則略有不同。掃描周期由內(nèi)部處理時間、輸A/ 輸出處理執(zhí)行時間、指令執(zhí)行時間等三部分組成。通常在一個掃描過程中,執(zhí)行指令的時間占了絕大部分,而執(zhí)行指令的時間與用戶程序的長短有關(guān)。用戶 程 序 是根據(jù)控制要求由用戶編制,由許多條PLC指令所組成。不同的指令所對應(yīng)的程序步不同,以三菱FX2N系列的PLC為例,PLC對每一個程序步操作處理時間為:基本指令占0.741s/步,功能指令占幾百微米/步。完成一個控制任務(wù)可以有多種編制程序的方法,因此,選擇合理、巧妙的編程方法既可以大大提高程序運行速度,又可以保證可靠性。 提高PLC程序運行速度的幾種編程方法2.1 用數(shù)據(jù)傳送給位元件組合的方法來控制輸出在 PL C應(yīng) 用編程中,最后都會有一段輸出控制程序,一般都是用邏輯取及輸出指令來編寫,如圖2所示。在圖2所示的程序中,邏輯取的程序步為1,輸出的程序步為2,執(zhí)行上述程序共需3個程序步。通常情況下,PLC要控制的輸出都不會是少量的,比如,有8個輸出,在條件滿足時要同時輸出。此時,執(zhí)行圖2所示的程序共需17個程序步。若我們通過位元件的組合并采用數(shù)據(jù)傳送的方法來完成圖2所示的程序,就會大大減少程序步驟。在三 菱 PLC中,只處理ON/OFF狀態(tài)的元件(如X,Y,M和S),稱為位元件。但將位元件組合起來也可以處理數(shù)據(jù)。位元件組合由Kn加首元件號來表示。位元件每4bit為一組組合成單元。如KYO中的n是組數(shù),當(dāng)n=1時,K,Yo 對應(yīng)的是Y3一Yo。當(dāng)n二2時,KZYo對應(yīng)的是Y7一Yo。通過位元件組合,就可以用處理數(shù)據(jù)的方式來處理位元件,圖2程序所示的功能可用圖3所示的傳送數(shù)據(jù)的方式來完成。
上傳時間: 2013-11-11
上傳用戶:幾何公差
ComPort Library是一套用來編寫串口通訊程序的控件。它包含5個控件:TComPort, TComDataPacket, TComComboBox, TComRadioGroup and TComLed。利用這些工具(當(dāng)然還有DELPHI開發(fā)環(huán)境),你能更快更簡單地開發(fā)串口通訊程序。包含Delphi上下文相關(guān)的幫助文件和源代碼(4000行)。功能無限制。源代碼:包含。適用語言:CB3 CB4 CB5 D3 D4 D5
標(biāo)簽: TComDataPacket TComRadioGroup TComComboBox TComPort
上傳時間: 2015-01-05
上傳用戶:363186
在WinCe平臺上開發(fā)的數(shù)據(jù)庫管理程序,里面有一個可排序列表控件的實現(xiàn)和Excel的CVS文件的讀寫類
標(biāo)簽: WinCe Excel CVS 數(shù)據(jù)庫管理
上傳時間: 2013-12-25
上傳用戶:xymbian
蟲蟲下載站版權(quán)所有 京ICP備2021023401號-1