これがベトナム大学院の実態だ!

Trường Đại Học Bách Khoa Thành Phố Hồ Chí Minhの大学院修士課程に社会人入学

Bài kiểm tra AST (11/4)

本日2018/04/11Nguyên lý ngôn ngữ lập trìnhにおいて小テストが実施された。この小テストはこれで5回目。ほぼ2回に1回の割合で実施されている。

Đã bắt đầu vào lúc Wednesday, 11 April 2018, 6:25 PM
Tình trạng Đã hoàn thành
Hoàn thành vào lúc Wednesday, 11 April 2018, 6:44 PM
Thời gian thực hiện 18 phút 25 giây
Điểm 2,50 của 10,00 (25%)

Câu hỏi 1

Không chính xác
Điểm -0,33 của 1,00
Cờ câu hỏi

Nội dung câu hỏi

Cho văn phạm có các luật sinh sau: 

program → vardecls 

vardecls → vardecl vardecls | vardecl 

vardecl → type ids 

type → INTTYPE | FLOATTYPE 

ids → ID COMMA ids | ID 

Và AST tương ứng với văn phạm trên được định nghĩa như sau: 

trait AST 
case class Program(decls:List[VarDecl]) extends AST 
case class VarDecl(typ:Type,id:List[String]) extends AST 
trait Type extends AST 
object IntType extends Type 
object FloatType extends Type 

Phương thức visitVardecls cần phải trả về đối tượng gì?

Chọn một:
 Không chính xác

Thông tin phản hồi

Câu hỏi 2

Chính xác
Điểm 1,00 của 1,00
Cờ câu hỏi

Nội dung câu hỏi

Cho luật sinh của phát biểu for trên ngôn ngữ Pascal được viết ở dạng EBNF như sau: 

forstmt → FOR ID ASSIGN exp (TO | DOWNTO) exp DO stmt 

trong đó, forstmt là ký hiệu không kết thúc đại diện cho phát biểu for; các token FORTO, DOWNTODO đại diện cho các từ khoá for, to, downto, do; ID đại diện cho một biến; ASSIGN cho := ; exp là ký hiệu không kết thúc đại diện cho biểu thức;stmt là ký hiệu không kết thúc đại diện cho phát biểu. Khi sử dụng TO thì vòng lặp for sẽ tăng giá trị biến đếm ID lên 1 sau mỗi lần lặp cho đến khi giá trị của ID lớn hơn giá trị của exp; còn khi sử dụng DOWNTO thì giá trị của biến đếm ID sẽ giảm đi 1 sau mỗi lần lặp cho đến khi ID nhỏ hơn giá trị của exp.

Trên AST, nút FORSTMT được dùng để diễn tả cho phát biểu for nói trên, hỏi nút FORSTMT sẽ có bao nhiêu nút con?

Chọn một:
 Chính xác

Thông tin phản hồi

Câu hỏi 3

Không chính xác
Điểm -0,33 của 1,00
Cờ câu hỏi

Nội dung câu hỏi

Cho văn phạm có các luật sinh sau: 

vardecls → vardecl vardecls | vardecl 

vardecl → type ids 

type → INTTYPE | FLOATTYPE 

ids → ID COMMA ids | ID 

Một visitor sinh bởi ANTLR cho văn phạm sẽ có phương thức visit nào trong các phương thức dưới đây?

Chọn một:
 Không chính xác

Thông tin phản hồi

Câu hỏi 4

Không chính xác
Điểm -0,25 của 1,00
Cờ câu hỏi

Nội dung câu hỏi

 

Cho luật sinh của phát biểu for như sau: 

forstmt → LB exp SEMI exp SEMI exp RB  stmt 

trong đó, 
forstmt là ký hiệu không kết thúc biểu diễn phát biểu for; các ký hiệu kết thúc LBRB và SEMI tương ứng với '(', ')' và ';'; exp là ký hiệu không kết thúc biểu diễn biểu thức; stmt là ký hiệu không kết thúc biểu diễn một phát biểu bất kỳ.


Cho các khai báo cấu trúc dữ liệu của AST hiện có như sau:

trait Stmt // cấu trúc lưu trữ cho phát biểu

trait Exp // cấu trúc lưu trữ cho biểu thức

Chọn khai báo thích hợp cho cấu trúc dữ liệu của nút ForStmt trên AST biểu diễn cho phát biểu for trên?


 

Chọn một:
 Không chính xác

Thông tin phản hồi

Câu hỏi 5

Chính xác
Điểm 1,00 của 1,00
Cờ câu hỏi

Nội dung câu hỏi

Cho luật sinh của phát biểu if như sau: 

ifstmt → IF exp THEN stmt ELSE stmt 

trong đó ifstmt là ký hiệu không kết thúc đại diện cho phát biểu if; các token IFTHENELSE ứng với các từ khoá if, then, else; exp là ký hiệu không kết thúc đại diện cho một biểu thức; stmt là ký hiệu không kết thúc đại diện cho một phát biểu. 

Giả sử ctx là biến đang cất giữ nút ứng với ifstmt, để truy xuất nút con stmt sau THEN thì cần phải viết như thế nào?

Chọn một:
 Chính xác

Thông tin phản hồi

Câu hỏi 6

Chính xác
Điểm 1,00 của 1,00
Cờ câu hỏi

Nội dung câu hỏi

Cho luật sinh của phát biểu if như sau: 

ifstmt → IF exp THEN stmt ELSE stmt 

trong đó ifstmt là ký hiệu không kết thúc đại diện cho phát biểu if; các token IFTHENELSE ứng với các từ khoá if, then, else; exp là ký hiệu không kết thúc đại diện cho một biểu thức; stmt là ký hiệu không kết thúc đại diện cho một phát biểu. 

Giả sử ctx là biến đang cất giữ nút ứng với ifstmt và đang viết cho một visitor để tạo AST, để tạo AST cho nút con stmt sau ELSE thì cần phải viết như thế nào?

Chọn một:
 Chính xác

Thông tin phản hồi

Câu hỏi 7

Không chính xác
Điểm -0,25 của 1,00
Cờ câu hỏi

Nội dung câu hỏi

Cho văn phạm có các luật sinh sau:  

program → vardecls 

vardecls → vardecl vardecls | vardecl  

vardecl → type ids  

type → INTTYPE | FLOATTYPE  

ids → ID COMMA ids | ID  

Và AST tương ứng với văn phạm trên được định nghĩa như sau: 

trait AST 
case class Program(decls:List[VarDecl]) extends AST 
case class VarDecl(typ:Type,id:List[String]) extends AST 
trait Type extends AST 
object IntType extends Type 
object FloatType extends Type 

Đối tượng IntType được tạo ra trong phương thức nào?

Chọn một:
 Không chính xác

Thông tin phản hồi

Câu hỏi 8

Chính xác
Điểm 1,00 của 1,00
Cờ câu hỏi

Nội dung câu hỏi

Cho luật sinh của phát biểu if như sau: 

ifstmt → IF exp THEN stmt ELSE stmt 

trong đó ifstmt là ký hiệu không kết thúc đại diện cho một phát biểu if; các token IFTHENELSE ứng với các từ khoá if, then, else; exp là ký hiệu không kết thúc đại diện cho một biểu thức;  stmt là ký hiệu không kết thúc đại diện cho một phát biểu bất kỳ.

Trên AST, nút IFSTMT được dùng diễn tả cho phát biểu if trên, hỏi nút IFSTMT sẽ có bao nhiêu nút con?

Chọn một:
 Chính xác

Thông tin phản hồi

Câu hỏi 9

Không chính xác
Điểm -0,33 của 1,00
Cờ câu hỏi

Nội dung câu hỏi

Cho luật sinh của phát biểu if như sau: 

ifstmt → IF exp THEN stmt ELSE stmt 

trong đó ifstmt là ký hiệu không kết thúc đại diện cho phát biểu if; các token IFTHENELSE ứng với các từ khoá if, then, else; exp là ký hiệu không kết thúc đại diện cho một biểu thức; stmt là ký hiệu không kết thúc đại diện cho một phát biểu. 

Nút trên cây phân tích cú pháp (parse tree) sinh bởi ANTLR ứng với ifstmt sẽ là đối tượng của lớp nào?

Chọn một:
 Không chính xác

Thông tin phản hồi

Câu hỏi 10

Không chính xác
Điểm 0,00 của 1,00
Cờ câu hỏi

Nội dung câu hỏi

 

Cho cấu trúc dữ liệu của AST được khai báo như sau:

trait Exp

case class Add(e1:Exp,e2:Exp) extends Exp // cho phép cộng 2 ngôi

case class Minus(e1:Exp,e2:Exp) extends Exp // cho phép trừ 2 ngôi

case class Mul(e1:Exp,e2:Exp) extends Exp // cho phép nhân

case class Lit(i:Int) extends Exp

Hãy viết AST thích hợp của biểu thức (10 - 20) * 5 + 7 (độ ưu tiên và kết hợp như thông lệ)? 

Qui ươc viết:

- Viết đúng cả chữ thường và hoa, đúng thứ tự toán hạng (trái hoặc phải), trình tự tính toán

- Không viết khoảng trắng 

= Không viết dư thừa

 

*1:10-20)*5)+7" />Không chính xác

Thông tin phản hồi