Dark Mode

Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

YuhsiHu/Compiler-Construction-Principle-and-Practice

Repository files navigation

Compiler-Construction-Principle-and-Practice

Exercises about Compiler Construction in NPU and a simplified C compiler.

Usage

Jiang Dan Ge Gong Cheng Wen Jian Jia Dao Ru Dao eclipseZhong ,Zhong Jian Bu Zou De Wen Dang He Ce Shi Fang An Zai Mei Ge Wen Jian Jia Xia De wordWen Dang Zhong .

Exercise 1 Ci Fa Fen Xi Cheng Xu (Lexical Analysis)

Ju Ti Yao Qiu Ji Fen Xi Jian Lexical Analysis

Exercise 2 Yu Fa Fen Xi Cheng Xu (Gramma Analysis)

Ju Ti Yao Qiu Ji Fen Xi Jian Gramma Analysis

Qi Mo Fu Xi Ti Gang (Outline)

Gen Ju Ke Tang PPTShun Xu He Kao Dian Zheng Li . Dian Ji Qian Wang

CYu Yan Zi Ji Bian Yi Qi (Simplified C compiler)

Xiao Xing CYu Yan Bian Yi Qi ,Wen Fa Shi CYu Yan De Zi Ji ,Neng Jiang CYu Yan Bian Yi Wei Hui Bian Yu Yan ,Bing Qie Jiang Ci Fa Fen Xi Jie Guo , Yu Fa Fen Xi Bu Zou , Zhong Jian Dai Ma He Hui Bian Yu Yan Fen Bie Shu Chu Dao txtWen Dang Zhong .

LL(1)Wen Fa :

1. Wen Fa Kai Shi :

  • S->void main(){A}

2. Sheng Ming :

  • X->YZ;
  • Y->int|char|bool
  • Z->UZ'
  • Z'->,Z|$
  • U->idU'
  • U'->=L|$

3. Fu Zhi :

  • R->id=L;

4. Suan Zhu Yun Suan :

  • L->TL'
  • L'->+L|-L|$
  • T->FT'
  • T'->*T|/T|$
  • F->(L)
  • F->id|num
  • O->++|--|$
  • Q->idO|$

5. Bu Er Yun Suan :

  • E->HE'
  • E'->&&E|$
  • H->GH'
  • H'->||H
  • H'->$
  • G->FDF
  • D-><|>|==|!=
  • G->(E)
  • G->!E

6. Kong Zhi Yu Ju :

  • B->if (E){A}else{A}
  • B->while(E){A}
  • B->for(YZ;G;Q){A}

7. Gong Neng Han Shu :

  • B->printf(P);
  • B->scanf(id);
  • P->id|ch|num

8. Fu He Yu Ju :

  • A->CA
  • C->X|B|R
  • A->$

Gou Zao LL(1)Shu Xing Fan Yi Wen Fa

Gou Zao LL1Shu Xing Fan Yi Wen Fa Ji Zai Yuan You LL1Wen Fa Ji Chu Shang Jia Shang Dong Zuo Fu Hao ,Bing Gei Fei Zhong Jie Fu He Zhong Jie Fu Jia Shang Yi Ding Shu Xing ,Gei Dong Zuo Fu Hao Jia Shang Yu Yi Zi Cheng Xu .

1.Fu Zhi

Chan Sheng Shi Yu Yi Zi Cheng Xu
R->@ASS_R id =L@ EQ; @ASS_R{R.VAL=idBing Ya Ru Yu Yi Zhan }
Tong Shang @EQ{RES=R.VAL, OP='=', ARG1=L.VAL, new FourElement(OP,ARG1,/, RES)}
U->@ASS_U idU' @ASS_U{U.VAL=idBing Ya Ru Yu Yi Zhan }
U' -> =L|$@EQ_U' @EQ_U'{RES=U.VAL, OP='=', ARG1=L.VAL, new FourElement(OP,ARG1,/, RES)}

2.Suan Zhu Yun Suan

Chan Sheng Shi Yu Yi Zi Cheng Xu
L->TL' @ADD_SUB {If(OP!=null) RES= NEWTEMP( ); L.VAL=RES,Bing Ya Ru Yu Yi Zhan ;New FourElement(OP, T.VAL, L'.VAL, RES),}
L'->+L @ADD {OP=+, ARG2=L.VAL}
T->FT' @DIV_MUL { if (OP !=null) RES= NEWTEMP( ); T.VAL=RES; new FourElement(OP,F.VAL,ARG2, RES) else ARG1=F.VAL; }
T'->/T @DIV {OP=/, ARG2=T.VAL}
T'->*T @MUL {OP=x, ARG2=T.VAL}
O-> @SINGLE_OP ++|--|$ @SINGLE_OP{OP=++|--}

3.Bu Er Yun Suan

Chan Sheng Shi Yu Yi Zi Cheng Xu
G->FDF @COMPARE{OP=D.VAL; ARG1=F(1).VAL; ARG2=F(2).VAL, RES=NEWTEMP( ); new FourElement(OP,F.VAL,ARG2,RES); G.VAL=RESBing Ya Ru Yu Yi Zhan }
D-><|>|==|!= @COMPARE_OP<|>|==|!={D.VAL=<|>|==|!=Bing Ya Ru Yu Yi Zhan }

4.Kong Zhi Yu Ju

Chan Sheng Shi Yu Yi Zi Cheng Xu
B->if (G)@IF_FJ{A}@IF_BACKPATCH_FJ @IF_RJ else{A}@IF_BACKPATCH_RJ @IF_FJ{OP="FJ";ARG1=G.VAL;RES=if_fj, New FourElement(OP,ARG1,/, RES ),Jiang Qi Cha Ru Dao Si Yuan Shi Lie Biao Zhong Di iGe } @IF_BACKPATCH_FJ{Hui Tian Qian Mian Jia Chu Kou Tiao Zhuan Si Yuan Shi De Tiao Zhuan Xu Hao , BACKPATCH (i,if_fj)}
B->while(G)@WHILE_FJ{A}@WHILE_RJ@WHILE_BACKPATCH_FJ {Can Zhao if-else}
B->for(YZ;G@FOR_FJ;Q){A@SINGLE}@FOR_RJ@FOR_BACKPATCH_FJ {Can Zhao if-else} @SINGLE {ARG1=id;RES=NEWTEMP( );New FourElement(OP,ARG1,/,RES)}

Shuo Ming :
(1)R.VALBiao Shi Fu Hao RDe Zhi ,VALShi RDe Yi Ge Shu Xing ,Qi Ta De Lei Si . (2)NEWTEMP()Han Shu :Mei Diao Yong Yi Ci Sheng Cheng Yi Ge Lin Shi Bian Liang ,Yi Ci Wei T1,T2 ,... ,Tn.
(3)BACKPATCH(int i,int res):Hui Tian Han Shu ,Yong resHui Tian Di iGe Si Yuan Shi De Tiao Zhuan Di Zhi .
(4)New fourElement(String OP,String ARG1,String ARG2,String RES):Sheng Cheng Yi Ge Si Yuan Shi (OP,ARG1,ARG2,RES).

Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

Please make sure to update tests as appropriate.

License

GPL-3.0

About

Exercise about Compiler Construction in NPU

Topics

Resources

Readme

License

GPL-3.0 license

Stars

Watchers

Forks

Releases

No releases published

Packages

Contributors