91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 22KB
    文件類型: .cpp
    金幣: 2
    下載: 1 次
    發布日期: 2021-07-20
  • 語言: C/C++
  • 標簽: 編譯原理??

資源簡介

廣工編譯原理實驗 對PL/0作以下修改擴充: (1)修改單詞:不等號# 改為 != ,只有!符號為非法單詞。 (2)增加單詞(只實現詞法分析部分): 保留字 ELSE,RETURN,FOR,STEP,UNTIL 運算符 *=,/= (3)增加IF條件語句的ELSE子句(實現語法語義目標代碼), 要求:寫出相關文法,語法圖,語義規則。 將我的Unit1.cpp文件覆蓋掉你們的Unit1.cpp文件就可以

資源截圖

代碼片段和文件信息

/***?PL0?COMPILER?WITH?CODE?GENERATION?***/
//---------------------------------------------------------------------------
#include?
#pragma?hdrstop
#include?“Unit1.h“
//---------------------------------------------------------------------------
#pragma?package(smart_init)
#pragma?resource?“*.dfm“
TForm1?*Form1;
//---------------------------------------------------------------------------
const??AL????=??10;??/*?LENGTH?OF?IDENTIFIERS?*/
const??NORW??=??19;??/*?#?OF?RESERVED?WORDS?*/
const??TXMAX?=?100;??/*?LENGTH?OF?IDENTIFIER?TABLE?*/
const??NMAX??=??14;??/*?MAX?NUMBER?OF?DEGITS?IN?NUMBERS?*/
const??AMAX??=2047;??/*?MAXIMUM?ADDRESS?*/
const??LEVMAX=???3;??/*?MAX?DEPTH?OF?BLOCK?NESTING?*/
const??CXMAX?=?200;??/*?SIZE?OF?CODE?ARRAY?*/

typedef?enum??{?NUL?IDENT?NUMBER?PLUS?MINUS?TIMES
????????????SLASH?ODDSYM?EQL?NEQ?LSS?LEQ?GTR?GEQ
????????????LPAREN?RPAREN?COMMA?SEMICOLON?PERIOD
????????????BECOMES?BEGINSYM?ENDSYM?IFSYM?THENSYM
????????????WHILESYM?WRITESYM?READSYM?DOSYM?CALLSYM
????????????CONSTSYM?VARSYM?PROCSYM?PROGSYMELSESYMRETURNSYMFORSYMSTEPSYMUNTILSYMMULSYMDIVSYM
????????}?SYMBOL;
char?*SYMOUT[]?=?{“NUL“?“IDENT“?“NUMBER“?“PLUS“?“MINUS“?“TIMES“
????“SLASH“?“ODDSYM“?“EQL“?“NEQ“?“LSS“?“LEQ“?“GTR“?“GEQ“
????“LPAREN“?“RPAREN“?“COMMA“?“SEMICOLON“?“PERIOD“
????“BECOMES“?“BEGINSYM“?“ENDSYM“?“IFSYM“?“THENSYM“
????“WHILESYM“?“WRITESYM“?“READSYM“?“DOSYM“?“CALLSYM“
????“CONSTSYM“?“VARSYM“?“PROCSYM“?“PROGSYM““ELSESYM““RETURNSYM““FORSYM““STEPSYM““UNTILSYM““MULSYM““DIVSYM“?};
typedef??int?*SYMSET;?//?SET?OF?SYMBOL;
typedef??char?ALFA[11];
typedef??enum?{?CONSTANT?VARIABLE?PROCEDUR?}?objectS?;
typedef??enum?{?LIT?OPR?LOD?STO?CAL?INI?JMP?JPC?}?FCT;
typedef?struct?{
?FCT?F;?????/*FUNCTION?CODE*/
?int?L;? /*0..LEVMAX??LEVEL*/
?int?A;?????/*0..AMAX????DISPLACEMENT?ADDR*/
}?INSTRUCTION;
??/*?LIT?O?A?--?LOAD?CONSTANT?A?????????????*/
??/*?OPR?0?A?--?EXECUTE?OPR?A???????????????*/
??/*?LOD?L?A?--?LOAD?VARIABLE?LA???????????*/
??/*?STO?L?A?--?STORE?VARIABLE?LA??????????*/
??/*?CAL?L?A?--?CALL?PROCEDURE?A?AT?LEVEL?L?*/
??/*?INI?0?A?--?INCREMET?T-REGISTER?BY?A????*/
??/*?JMP?0?A?--?JUMP?TO?A???????????????????*/
??/*?JPC?0?A?--?JUMP?CONDITIONAL?TO?A???????*/
char???CH;??/*LAST?CHAR?READ*/
SYMBOL?SYM;?/*LAST?SYMBOL?READ*/
ALFA???ID;??/*LAST?IDENTIFIER?READ*/
int????NUM;?/*LAST?NUMBER?READ*/
int????CC;??/*CHARACTER?COUNT*/
int????LL;??/*LINE?LENGTH*/
int????CX;??/*CODE?ALLOCATION?INDEX*/
char???LINE[81];
INSTRUCTION??CODE[CXMAX];
ALFA????KWORD[NORW+1];
SYMBOL??WSYM[NORW+1];
SYMBOL??SSYM[‘^‘+1];
ALFA????MNEMONIC[9];
SYMSET??DECLBEGSYS?STATBEGSYS?FACBEGSYS;

struct?{
??ALFA?NAME;
??objectS?KIND;
??union?{
????int?VAL;???/*CONSTANT*/
????struct?{?int?LEVELADRSIZE;?}?vp;??/*VARIABLEPROCEDUR:*/
??};
}?TABLE[TXMAX];

FILE?*FIN*FOUT;
int?ERR;

void?expression(SYMSET?FSYS?int?LEV

評論

共有 條評論