Các định nghĩa trong ngôn ngữ lập trình Box

Một phần của tài liệu Phân tích mã nguồn c++ phục vụ đánh giá ảnh hưởng của sự thay đổi (Trang 40 - 41)

Box

1 memberDefinition ::= type MemberIdentifier

2 tupleDefinition

3 ::= TupleIdentifier ‘(’

4 ( memberDefinition ( ‘,’ memberDefinition )* )?

5 ‘)’ ‘;’

Quy tắc tupleDefinition biểu diễn một định nghĩa cho một kiểu bản ghi mới, còn quy tắc memberDefinition biểu diễn một định nghĩa về một thành phần trong kiểu bản ghi mới đó. Một bản ghi có thể có một hoặc nhiều thành phần con, hoặc không có thành phần con nào. Các thành phần con có thể là bất cứ kiểu nào, kể cả chính kiểu bản ghi mà nó được chứa trong.

1 variableDefinition

2 ::= type VariableIdentifier ( ‘=’ expression )? ‘;’

Quy tắc variableDefinition biểu diễn một định nghĩa cho một biến mới. Biến mới có thể được khởi tạo bằng cách đưa vào một biểu thức khởi tạo, giá trị của biểu thức này sẽ được gán cho biến mới.

1 parameterDefinition ::= type ParameterIdentifier

2 functionDefinition

3 ::= type FunctionIdentifier ‘(’

4 ( parameterDefinition ( ‘,’ parameterDefinition )* )?

5 ‘)’ blockStatement

Quy tắc functionDefinition biểu diễn một định nghĩa cho một hàm mới, còn quy tắc parameterDefinition biểu diễn một định nghĩa về một tham số của hàm mới đó. Một hàm có thể có một hoặc nhiều tham số, hoặc không có tham số nào. Kiểu trả về của hàm đó ngoài những kiểu thông thường còn có kiểu void để chỉ ra hàm không có kết quả trả về. Thân hàm và các câu lệnh trong thân hàm sẽ được làm rõ ở các phần sau.

1 globalDefinition

2 ::= tupleDefinition

3 | variableDefinition

4 | functionDefinition

Quy tắc globalDefinition là quy tắc biểu diễn các định nghĩa toàn cục. Chỉ có ba định nghĩa có thể được khai báo toàn cục, đó là định nghĩa bản ghi, định nghĩa hàm và định nghĩa biến.

1 labelDefinition ::= LabelIdentifier loopStatement

Quy tắc labelDefinition biểu diễn một định nghĩa cho một nhãn mới. Một nhãn là một đại diện cho vòng lặp được định nghĩa ngay sau nó. Đây là một định nghĩa đặc biệt do chúng chỉ có thể sử dụng trong thân của một hàm và đứng ngay trước một vòng lặp.

Một phần của tài liệu Phân tích mã nguồn c++ phục vụ đánh giá ảnh hưởng của sự thay đổi (Trang 40 - 41)