跳轉至內容

註釋 King 參考手冊/語句

來自華夏公益教科書

此頁面正在建設中。

簡單語句和複合語句

[編輯 | 編輯原始碼]
sequence_of_statements ::= statement {statement}

statement ::= simple_statement | compound_statement

simple_statement ::=
            null_statement
          | assignment_statement
          | exit_statement
          | procedure_call_statement
          | wait_statement
          | return_statement
          | end_statement

compound_statement ::=
            if_statement
          | case_statement
          | loop_statement
          | declare_statement
          | task_declare_statement
          | select_statement

null_statement ::= null;

statement_identifier ::= direct_name

-

-

賦值語句

[編輯 | 編輯原始碼]
State.Seed <- Seed + 1;
assignment_statement ::=  variable_name <- expression;

-

-

If 語句

[編輯 | 編輯原始碼]
if Success then
   Stick (ID) <- True;
   Stick (Wrap.Next (ID) ) <- True;
   Owner (ID) <- True;
end if;
if_statement ::= simple_if_statement | extended_if_statement
simple_if_statement ::=
           if condition then
              sequence_of_statements
          [else
              sequence_of_statements]
           end if;

extended_if_statement ::=
           if condition then
              sequence_of_statements
           else_if condition then
              sequence_of_statements
          {else_if condition then
              sequence_of_statements}
           else
              sequence_of_statements
           end if;

condition ::= boolean_expression

-

-

Case 語句

[編輯 | 編輯原始碼]

-

case_statement ::= normal_case_statement | exception_handling_case_statement
normal_case_statement ::=
          case selecting_expression is
              normal_case_statement_alternative
             {normal_case_statement_alternative}
          end case;

normal_case_statement_alternative ::=
              when discrete_choice_list =>
                 sequence_of_statements
exception_handling_case_statement ::=
          case exception_identifier is
              exception_handling_case_statement_alternative
             {exception_handling_case_statement_alternative}
          end case;

exception_handling_case_statement_alternative ::=
              when exception_occurrence_list =>
                 sequence_of_statements

- 正常的 case 語句可以出現在任何語句序列中。異常處理 case 語句只能出現在異常處理程式中。

exception_識別符號必須是封閉異常處理程式的 when 之後的識別符號。

-

迴圈語句

[編輯 | 編輯原始碼]
Get_Line : loop
   exit Get_Line when King.IO.Text.End_Of_Line;

   Value <- Value & King.IO.Text.Next'As_Universal;
Get_Line : end loop;
loop_statement ::=
          loop_statement_identifier : [iteration_scheme] loop
             sequence_of_statements
          loop_identifier : end loop;

iteration_scheme ::=
            for loop_parameter_specification
          | for loop_parameter_specification_no_reverse task
          | for iterator_specification [task]

loop_parameter_specification ::=
          defining_identifier in [reverse] discrete_subtype_definition [iterator_filter]

loop_parameter_specification_no_reverse ::=
          defining_identifier in discrete_subtype_definition [iterator_filter]

discrete_subtype_definition ::= discrete_subtype_indication | range_specification

iterator_specification ::=
           defining_identifier of iterable_name [iterator_filter]

iterator_filter ::= when condition

-

-

宣告語句

[編輯 | 編輯原始碼]

-

declare_statement ::=
          declare_statement_identifier: declare
             declarative_part
          declare_identifier : begin
             sequence_of_statements
          declare_identifier : when identifier =>
             sequence_of_statements
          declare_identifier : end declare;

-

-

任務宣告語句

[編輯 | 編輯原始碼]

-

task_declare_statement ::=
          task_declare_statement_identifier : task declare
             declarative_part
          task_declare_identifier : begin
             sequence_of_statements
          task_declare_identifier : and
             sequence_of_statements
         {task_declare_identifier : and
             sequence_of_statements}
          task_declare_identifier : end task declare;

-

-

退出語句

[編輯 | 編輯原始碼]
exit Get_Line when King.IO.Text.End_Of_Line;
exit_statement ::= exit loop_name [when condition];

-

-

等待語句

[編輯 | 編輯原始碼]
wait of 1.0;
wait_statement ::= wait wait_mode wait_expression;

wait_mode ::= for | of

wait of 語句用於相對時間,並將任務阻塞給定秒數。可以理解為,“等待這麼多秒”。wait for 語句接受一個 Duration 值,並將任務阻塞到該時間到達,除非該時間已過去。可以理解為,“等待該時間到達”。持續時間是自紀元以來的秒數,紀元沒有定義,但可以使用標準庫構建有意義的值。

-

選擇語句

[編輯 | 編輯原始碼]

-

select_statement ::=
          select_statement_identifier : select
             blocking_call
             [sequence_of_statements]
         {select_identifier : or
             blocking_call
             [sequence_of_statements]}
          select_identifier : or
             wait_statement
             [sequence_of_statements]
          select_identifier : end select;

blocking_call ::= assignment_statement | procedure_call_statement

阻塞呼叫是指對任何被動任務的子程式的呼叫。

-

過程呼叫語句

[編輯 | 編輯原始碼]
Message_Queue.Put (Item => ID'Image & " waiting for podium");
King.IO.Text.Put_Line (Line => Message);
procedure_call_statement ::= procedure_prefix [actual_parameter_part];

actual_parameter_part ::= (parameter_association {, parameter_association})

parameter_association ::= formal_parameter_selector_name => explicit_actual_parameter

explicit_actual_parameter ::= expression | variable_name

-

-

返回語句

[編輯 | 編輯原始碼]
return State.Seed;
return_statement ::= return [expression] [when condition];

-

-

結束語句

[編輯 | 編輯原始碼]
end Task_Name;
end_statement ::= end task_name;

-

-

華夏公益教科書