TA的每日心情 | 慵懒 2016-4-21 12:07 |
---|
签到天数: 3 天 连续签到: 1 天 [LV.2]偶尔看看I 累计签到:3 天 连续签到:1 天
|
马上加入,结交更多好友,共享更多资料,让你轻松玩转电力研学社区!
您需要 登录 才可以下载或查看,没有账号?立即加入
×
属于编译的,内层的东西了 呵呵+ c# G9 N9 V: o `
- Q% d6 ~/ J6 T- e1 J) N文法G[E]
: l5 O' F9 y& ~* J% Y- @E –> E + T | T
) u. o, o L& p8 Y( uT –> T + F | F: |9 ?; ]# m2 ^5 }% ~; f( F
F –> i | (E)
+ O8 U9 Y7 c' J/ l+ C7 U: w7 Q5 A y, u% f" g
消除左递归, j! f3 o" z9 |, ~- A% ?; g: T
E –> TE’* G3 @! m! p; \, t
E’-> +TE’2 V) g0 v3 V0 p: m! ~8 b+ D' Q, _
E’-> ε5 [) h) a% M) X2 y' ^5 ?
T –> FT’
$ E" [8 u8 X) d8 \- G0 D) |T’–> *FT’7 n' O# P. X2 c' G) g- J
T’-> ε$ H, R. V9 c1 E( L; E; H: x5 ~
F -> i|(E)0 L/ |2 j9 z ]7 M% g+ I' d
$ O2 D/ w$ R( \7 G, d) s! R2 T编码实现2 Z5 [5 s, t5 m+ }" A& y
#include<iostream>% B" X/ u, U" \. }. A* {4 Y
using namespace std;
. ]: B' G `/ U: w$ X) S( v/ \ K
3 z" f# Y; Z' Fvoid E();$ ?! N: [* d+ d& L1 Y& }8 K4 p* b
void E1();4 [4 O: | D: p0 n+ j( s
void T();" K! j, F% V/ p
void T1();7 _# ^' T5 d# ?
void F();! o6 G# u) b3 H8 D5 k) x
3 @! v2 ?8 I* Z; Z2 @9 D7 Ochar ReadToken();) O' V1 p' A6 O9 {; U# j( k
bool Match(char a);( p/ F! W' e) @7 B7 x, m
void IsSuccess();
; R+ d! k' ~9 ^5 i ]2 u
, c" |# E6 L+ I% k5 e/ N5 C- jchar token;* V7 Q% W. I3 m! N2 ?* u
int cur = 0; // 当前字符索引
5 S0 h: y1 z, G! F: a) A( Nchar *str = "i+i*i+(i*i)#"; // 语句' m( n# K' u5 K, u( b l2 A7 I
. \5 n# M; l* f) l! [void main()
- L- g, r5 M" n. n{
" }3 ]1 }# ?. i% E$ K ReadToken();" |; f# x9 V- f: t8 g
if(!Match('#'))
% i/ {: }; v" ^! e E();; b+ h. S( d8 F
} \; V5 d7 |9 }4 r8 r7 R
void E()
: k4 k* i6 f- G, c{
* l* G+ I- ~: T* r, ^ T();
; ]" B# z6 o3 l) p5 q6 ^5 l8 A E1();
1 ~! J: M/ e( _) }}$ ^* r. I2 x( X( ~/ x' g
void T()
4 v& U, C8 G: P' ^& k" j{
8 R- P! w7 H9 j% l# ? F();; \- ]# W7 J$ R, l9 m+ W
T1();
& z( h$ s' H5 \5 M}
. z0 `! {' H' M0 K0 Y1 @; f& wvoid E1()3 z* ^* m: s3 I3 n
{
+ }7 h! F3 K% L0 z; i3 \ if(Match('+'))
; s6 ~$ \. o; E/ c {
% l c, T5 r9 ?" f5 X5 O6 s- } ReadToken();0 S g' [* y; u/ @! P
IsSuccess();7 D8 e4 ^( h+ ]. U9 Z8 i! @7 j* [
T();
' ~" ? u; s4 F8 N8 P E1();7 A% p2 [ o! x% n9 ~3 Q1 \/ H
}, M$ ]- ^8 D, ^; b; I
}/ V- \2 n1 F% A# {* M: U; o
void T1()# |: D& Q! o( A* W' C$ k
{
0 o7 t) z6 R3 V% s, M8 }' n, m if(Match('*'))( Z) j4 P- }- ^7 X- b b
{' k" } @. J5 C
ReadToken();6 v/ ~: C3 e% G5 t, W( Q: |1 y
IsSuccess();
, W6 t+ l& b0 }8 v: S F();6 X: i" V z8 J ~# Z
T1(); \* J. I/ `9 u3 m
}% r! g" D/ `4 N' J; N
}2 W8 V6 T+ s. A6 h
void F()
6 F& G' Z7 H( h9 }( I1 a9 {4 D{
4 q6 m4 g% L' v1 K' g if(Match('('))
/ K+ [5 p* e2 |+ u- j; j7 T: ] {, n; B: m: x2 N7 O3 j
ReadToken();
0 S! A* e5 ~+ U0 q6 e IsSuccess();
$ G! n8 i1 b3 _5 K7 y) V E();
% S6 g5 \( i6 Y if(Match(')'))$ t: f- T& a+ ?# C/ e- Z
{9 l/ b* f1 i/ @8 a( Z5 Z
ReadToken();. i4 V3 E& L6 Y# J
IsSuccess();/ a7 E5 j& w2 }8 g
}
; Z, Q4 | `2 n else 6 |" [) @' S$ K( ~$ T* G
{& w }- B5 F1 j4 \. T) i) _
cout << "error" << endl;" n4 d7 s! Z) c f( G+ l: C
}) L0 ^6 f4 f2 k9 P
}: m6 X! W+ _ b. u
else if(Match('i'))& H; \6 K1 U, N' D& N+ J
{
8 g2 |+ K$ M- t @6 q ReadToken();2 p- `) E6 B) `, m& D
IsSuccess();
. x+ M# W+ y9 H+ B- \! p }1 P5 z- s! s5 H7 L2 _+ o
else if(Match('#')). \2 G( A6 a1 j9 m1 S
{
" S- Y9 b- U B( k# y; j1 ] cout << "success" << endl;
% ~+ U* x. q3 r" l }8 b1 y8 n) E5 v7 y
else0 ]* i* g( u |+ I$ Z9 ^
{
4 j8 Y7 l9 m, H* u, H, a cout << "error" << endl;
b: `' L8 h) s4 i0 ~" K: H* P- t# z& ? }
7 I) ]6 p9 x" x8 P5 i8 D. Q}' Z9 t, H! a4 T$ b, a+ N
char ReadToken(): t' m4 ]/ m/ g% t
{7 I p$ F/ E v) _$ _8 x
return token = str[cur++];8 `# n% O7 h$ P5 A. `3 a5 _
}
. ~' U% L* W+ n1 g. V1 T3 U$ |bool Match(char ch)( u4 U# {. M+ @- k
{
: f; h, h; p0 I3 q/ d if(token == ch)
. n* [( W4 @$ a; ~$ ?+ i+ t7 I% u return true;
* k' t" h: ^; B c: p( C return false;
6 q' X4 C8 O' f2 X+ M}8 y- S# z" @# ^8 ?$ h
void IsSuccess(), f @" s- N7 @$ U, }
{
/ y6 ~2 v ?3 {9 q2 Z2 f" H if(Match('#'))* Q) D% t; e" m8 M& w# T( n
{
# ~# L: H) O" S6 X; \! `$ F x cout << "success!" << endl;1 T9 N6 k2 t' z- E
exit(0);1 `) e: I. ], R$ T! R7 \
}0 B0 w6 q Z: J6 b0 q
} |
|