, , ., , , , , .

 

: ,

.: "", 2002

 

 

18

 

 

19

 

 

19

20

21

 

 

1.

22

 

 

1.1.           

-

1.2.           

1.3.

1.4.

1.5.           

1.6.

22

23

25

25

26

26

28

29

30

30

31

33

34

34

35

35

35

37

37

38

39

39

40

40

41

43

 

 

2.

2.1.

2.2.

2.3.

2.4.

£-

2.5.

expr, term test

2.6.

2.7.

2.8.

l- r-

2.9.

lexer.

parser.

emitter.

symbol. init.

error.

44

44

45

47

48

49

50

51

51

52

52

55

55

56

58

58

61

63

63

64

65

65

67

67

69

70

71

71

72

72

73

74

76

76

77

77

79

79

80

80

80

81

82

82

84

84

85

86

87

87

87

87

88

92

95

96

 

 

3.

3.1.

, ,

3.2.           

3.3.

3.4.

3.5.

Lex

3.6.

3.7.

3.8.

3.9.

 

97

97

98

99

100

101

102

102

104

105

105

106

107

109

110

110

111

112

116

119

119

123

125

125

127

128

132

132

136

137

139

140

142

143

144

144

145

150

153

153

155

165

165

 

 

 

4.

4.1.

4.2. -

4.3.

-

,

--

4.4.           

FIRST FOLLOW

LL(1)-

4.5.           

-

-

4.6.

4.7. LR-

LR-

LR-

SLR-

LR-

LARL-

LALR-

4.8.

"" else

LR-

4.9.

Yacc

Yacc

Yacc Lex

Yacc

 

167

167

168

172

173

174

175

177

179

179

180

181

181

183

185

186

188

188

189

190

192

195

197

197

199

201

202

204

205

207

207

209

211

213

214

214

 

216

220

221

225

226

234

240

244

250

 

251

253

255

257

259

260

263

265

266

268

277

 

 

 

5.

5.1.

5.2.

5.3. S-

5.4. L-

L-

5.5.

5.6.

5.7.

5.8.

5.9.

5.10.

 

279

280

280

281

282

283

285

286

286

287

 

288

289

292

292

295

295

296

299

299

303

305

305

306

308

312

312

312

313

314

315

317

318

319

319

323

324

325

327

328

330

334

 

 

 

6.

6.1.

6.2.

6.3.

6.4.

6.5.

6.6.

,

6.7.

 

336

337

338

339

340

340

341

341

342

343

343

344

344

347

349

350

350

352

352

354

355

355

356

358

360

361

365

369

374

 

 

 

7.

7.1.

7.2.

7.3.

7.4.

7.5.

-

7.6.

-

7.7.

7.8.

7.9. Fortran

COMMON

Fortran

 

376

376

376

377

379

380

382

382

382

384

385

386

387

389

394

395

396

396

398

400

403

406

407

408

409

410

411

412

413

414

415

415

416

420

422

424

424

425

425

426

426

428

429

430

433

435

436

442

 

 

8.

8.1.

:

8.2.

8.3.

8.4.

8.5. case

case

8.6.

8.7.

 

443

443

444

445

446

447

449

451

452

452

453

455

456

456

458

459

461

463

465

465

466

466

467

468

470

471

473

474

476

476

479

479

481

481

481

482

483

485

 

 

 

9.

9.1.

9.2.

9.3.

9.4.

,

9.5.

9.6.

getreg

9.7.

9.8.

,

9.9.

9.10.

9.11.

9.12.        

 

487

487

487

488

489

489

490

491

491

492

493

494

495

497

499

500

500

502

502

503

503

504

505

505

505

506

507

508

508

509

511

512

512

513

513

516

516

517

518

520

522

524

524

525

526

527

527

527

527

528

529

530

531

532

535

535

536

537

538

538

538

539

541

542

547

548

548

551

 

 

 

10.

10.1.

,

10.2.

,

10.3.

10.4.

10.5.

in out

10.6.

10.7. ,

,

,

10.8.

10.9.

T1-T2-

10.10

,

10.11

" "

10.18

10.18

10.12.

10.13.

 

553

554

554

555

556

559

559

559

561

562

562

563

563

565

567

568

568

570

571

571

572

574

575

575

577

579

580

581

583

584

585

585

586

588

588

591

594

596

596

596

598

601

602

604

605

 

605

 

610

610

611

611

614

615

616

617

618

621

622

622

625

626

626

627

628

629

629

630

631

633

633

635

639

639

640

641

643

644

648

649

650

650

651

652

653

653

654

656

657

658

661

662

667

667

667

668

669

675

 

 

 

11.

11. 1.

11.2.

11.3.

11.4.

 

679

679

679

680

680

680

681

684

686

 

 

 

12.

12.1. EQN

12.2. Pascal

12.3.

12.4. Fortran H

Fortran H

12.5. Bliss/11

12.6. Modula-2

 

688

688

689

690

691

693

693

694

694

696

 

 

 

.

1.

.2.

.. Pascal

.4.

.5.

.6.

.7.

 

698

698

698

699

701

701

703

703

 

 

.

.1. C++

.2. #

 

 

704

 

704

721

 

742

764