Chương trình dịch (Compiler) Đề tài : Biên dịch ngôn ngữ Pascal
C Giảng viên: Bùi Ngọc Thăng Thành viên nhóm: Nguyễn Thị An Bùi Thanh Hiếu Nguyễn Thị Thanh Hương Trần Bá Nghiệp Trịnh Quang Phúc Vũ Anh Tuấn Lớp: K50CD
Biên dịch ngôn ngữ Pascal C I. II. III. IV.
Mô tả ngôn ngữ Pascal Xây dựng biểu thức chính quy Xây dựng automat Đề xuất cấu trúc dữ liệu
I. Mô tả ngôn ngữ Pascal 1. Các loại từ tố (token) 1. 2. 3. 4. 5. 6.
Tên biến Từ khóa Kiểu số Ký hiệu và toán tử Xâu ký tự Ghi chú
I. Mô tả ngôn ngữ Pascal 2. Mô tả tự nhiên 1. Tên biến: Bắt đầu bằng chữ cái hoặc dấu gạch dưới, theo sau là chữ cái, chữ số hoặc dấu gạch dưới VD: x, a12, _else, x_a2 … 2. Từ khoá: bao gồm một tập từ khoá riêng VD: if, else, begin, array, case, const 3. Kiểu số: - Số nguyên: 2, 1034, -239 … - Số thực: 2.0, 0.00020, .02, 1.1e5, 0.e-10
I. Mô tả ngôn ngữ Pascal 2. Mô tả tự nhiên 4. Ký hiệu và toán tử: +, -, *, /, {, }, <, <<, [, ], >=, <=, <> 5. Xâu ký tự : “x”, “He said, \“Are you?\”” 6. Ghi chú: {nội dung chú thích} hoặc (*nội dung chú thích*)
I. Mô tả ngôn ngữ Pascal 3. Bảng các từ tố và ký hiệu: a. Bảng các từ khoá And
And_Token
Else
Else_Token
Array
Array_Token
End
End_Token
Asm
Asm_Token
File
File_Token
Begin
Begin_Token
For
For_Token
Case
Case_Token
Function
Function_Token
Goto
Goto_Token
Const
Const_Token
If
If_Token
Constructor
Constructor_Token
Implementation
Implementation_Token
Destructor
Destructor_Token
In
In_Token
Div
Div_Token
Inline
Inline_Token
Do
Do_Token
Interface
Interface_Token
Downto
Downto_Token
Label
Label_Token
Mod
Mod_Token
I. Mô tả ngôn ngữ Pascal 3. Bảng các từ tố và ký hiệu: a. Bảng các từ khoá Nil
Nil_Token
String
String_Token
Not
Not_Token
Then
Then_Token
Object
Object_Token
To
To_Token
Of
Of_Token
Or
Or_Token
Type
Type_Token
Packed
Packed_Token
Unit
Unit_Token
Procedure
Procedure_Token
Until
Until_Token
Program
Program_Token
Uses
Uses_Token
Record
Record_Token
Var
Var_Token
Repeat
Repeat_Token
While
While_Token
Set
Set_Token
Shl
Shl_Token
With
With_Token
Shr
Shr_Token
Xor
Xor_Token
I. Mô tả ngôn ngữ Pascal 3. Bảng các từ tố và ký hiệu: a. Bảng các từ khoá +
Plus_Token
-
Minus_Token
*
Times_Token
/
Over_Token
(
Open_Token
)
Close_Token
{, (*
Open_Comment_Token
}, *)
Close_Comment_Token
=
Equal_Token
|
Modulo_Token
<>
Not_Equal_Token
>
Greater_Token
<
Less_than_Token
I. Mô tả ngôn ngữ Pascal 3. Bảng các từ tố và ký hiệu: a. Bảng các từ khoá <=
Less_or_Equal_Token
>=
Greater_or_Equal_Token
,
List_Token
‘
Apostrophe_Token
.
Priod_Token
:
Separator_var_Token
;
Separator_Token
:=
Becomes_Token
And
And_Token
Or
Or_Token
Not
Not_Token
Xor
Xor_Token
Mod
Mod_Token
Div
Div_Token
I. Mô tả ngôn ngữ Pascal 1. Tên biến:
id = Letter(letter | digit)* letter = A | B | ... | Z | a | b | ... | z digit = 0 | 1 | 2 | ... | 9
2. Từ khoá
key = boolean | break | continue | else | for | float | if | int | return | void | while …
3. Kiểu số
Hằng nguyên: intLit = digit+ Hằng thực: floLit = digit* fraction exponent? | digit+ . |digit+ .? exponent fraction = . digit+ exponent = PwLetter (+ | -)? digit+
II. Mô tả biểu thức chính quy 4. Ký hiệu và toán tử relop → < | <= | > | >= | <> | = arithOp + | - | * | / assOp = 5. Dấu cách delim → blank | tab | newline
ws → delim+ 6. Ghi chú cmm-->{ | } | (* | *)
III. Mô tả bằng automat(NFA/DFA) 1. Tên biến:id = Letter(letter | digit)*
2. Từ khoá key = boolean | break | continue | else | for | float | if | int | return | void | while …
III. Mô tả bằng automat(NFA/DFA) 3. Kiểu số:num → digit+(.digit+)?(E(+|-)?digit+)?
III. Mô tả bằng automat(NFA/DFA) 4. Ký hiệu và toán tử
relop → < | <= | > | >= |< | =
III. Mô tả bằng automat(NFA/DFA) 4. Ký hiệu và toán tử arithOp + | - | * | /
III. Mô tả bằng automat(NFA/DFA) 5. Dấu cách delim → blank | tab | newline ws → delim+
6. Ghi chú: *)
cmm-->{ | } | (* |
IV. Đề xuất cấu trúc dữ liệu