Các biểu thức cơ bản

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 35 - 37)

3.5 Biểu thức trong ngôn ngữ lập trình Box

3.5.1 Các biểu thức cơ bản

1 expressionList ::= expression ( ‘,’ expression )*

2 arrayCreationExpression ::= type ‘:’ ‘[’ expressionList ‘]’

Quy tắc arrayCreationExpressionbiểu diễn một phép tạo mới một mảng bao gồm kiểu của thành phần bên trong mảng và kích thước của mảng mới sẽ được tạo. Kích thước mảng mới được cho bằng một danh sách các biểu thức, chúng được tính toán trước khi mảng mới được tạo.

1 tupleCreationExpression ::= tupleType ‘(’ expressionList ‘)’

Quy tắc arrayCreationExpression biểu diễn một phép tạo mới một bản ghi bao gồm kiểu bản ghi và các giá trị của các thành phần trong bản ghi mới sẽ được tạo. Các giá trị của các thành phần mới này được cho bằng một danh sách các biểu thức, chúng được tính toán trước khi bản ghi mới được khởi tạo.

1 literalExpression

2 ::= TypedNumberLiteral | ‘true’ | ‘false’ | ‘null’

Quy tắc literalExpression thể hiện một biểu thức hằng số trực tiếp. Giá trị của biểu thức là một hằng số được viết trực tiếp trong mã nguồn.

1 castExpression ::= simpleType ‘(’ expression ‘)’

Quy tắc castExpression thể hiện một biểu thức chuyển đổi kiểu. Giá trị của biểu thức là giá trị sau khi chuyển đổi kiểu của biểu thức bên trong nó.

1 parenthesesExpression ::= ‘(’ expression ‘)’

Quy tắc parenthesesExpression biểu diễn một biểu thức kết hợp. Giá trị của biểu thức là giá trị của biểu thức bên trong nó.

1 variableExpression ::= VariableIdentifier

2 parameterExpression ::= ParameterIdentifier

Quy tắc variableExpression biểu diễn một biểu thức trả về giá trị của một biến. Tương tự, quy tắc parameterExpression là một biểu thức trả về giá trị của một tham số trong một hàm.

1 functionCallExpression

2 ::= FunctionIdentifier ‘(’ expressionList? ‘)’

Quy tắc functionCallExpression biểu diễn một lời gọi hàm và mang giá trị là giá trị trả về của hàm đó sau khi thực thi. Một lời gọi hàm bao gồm định danh của hàm đó cùng với một danh sách các tham số truyền vào hàm đó. Danh sách các tham số là một danh sách các biểu thức, chúng sẽ được thực thi và tính toán trước khi truyền vào hàm.

1 accessibleExpression 2 ::= variableExpression 3 | parameterExpression 4 | functionCallExpression 5 accessSuffix 6 ::= MemberIdentifier | ‘[’ expressionList ‘]’ 7 accessExpression 8 ::= accessibleExpression accessSuffix+

Quy tắc accessibleExpression thể hiện các biểu thức có thể mang giá trị hoặc trả về một tham chiếu, như một biến hoặc một lời gọi hàm. Có hai loại tham chiếu: tham chiếu đến mảng và tham chiếu đến bản ghi. Với mỗi loại tham chiếu, có thể truy cập vào các thành phần bên trong dữ liệu được tham chiếu đến bằng các hậu tố khác nhau. Các biểu thức truy cập này được thể hiện thông qua quy tắc accessExpression.

1 assignableExpression

2 ::= accessExpression

3 | variableExpression

1 beforeUnaryExpression 2 ::= accessExpression 3 | variableExpression 4 | parameterExpression 5 | functionCallExpression 6 | literalExpression 7 | castExpression 8 | parenthesesExpression

Quy tắc beforeUnaryExpression và các quy tắc tương tự là các quy tắc trung gian để biểu diễn độ ưu tiên tính toán của các biểu thức. Những quy tắc này sẽ được lược bỏ trong quá trình mô tả ngôn ngữ.

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 35 - 37)