Sunteți pe pagina 1din 23

Tugas Latihan

Ganang Fuad Husaini


10112694
Tekom 4

Tugas Parses

<program> ::= program <identifier> ; <block>

<identifier> ::= <letter> <letter> | <letter> <digit>

<letter>::= (A..Z) | (a..z) | (A..Z) (a..z)

<digit>::= (0..9) | (1..9) (0..9)

<block> ::= <label_declaration_part> | <constant_definition_part> |


<type_definition_part> | <variable_declaration_part> |
<procedure_and_function_declaration_part> | <statement_part>

<label_declaration_part> ::= <empty> | label <label> ,<label>;

<label> ::= <digit>

<constant_definition_part> ::= <empty> | const <constant_definition> ;


<constant_definition>;

<constant_definition> ::= <identifier> = <constant>

<constant> ::= <number> | <sign> < number> | <constant_identifier> |


<sign> <constant_identifier> |<string>

<number> ::= <integer> | < real>

<integer> ::= <digit>

<real> ::= <integer> . <integer> | < integer> . <integer> E <scale_factor>|<


integer> E <scale_factor>

<scale_factor> ::= < integer> | <sign> < integer>

<sign> ::= + | -

<constant_identifier> ::= <identifier>

<string> ::= <letter>

<type_definition_part> ::= <empty> | type <type_definition>


;<type_definition>;

<type_definition> ::= <identifier> = <type>

<type> ::= <simple_type> | <structured_type> | <pointer _type>

<simple_type> ::= <scalar_type> | <subrange_type> | <type_identifier>

<scalar_type> ::= (<identifier> ,<identifier>)

<subrange_type> ::= <constant> .. <constant>

<type_ identifier> ::= <identifier>

<structured_type> ::= <array_type> | <record_type> | <set_type> |


<file_type>

<array_type> ::= array [<index_type> , <index_type>] of <component_type>

<index_type> ::= <simple_type>

<component_type> ::= <type>

<record_type> ::= record <field_list> end

<field_list> ::= <fixed_part> | <fixed_part> ; <variant_part> | <variant_part>

<fixed_part> ::= <record_section> ; <record_section>

<record_section> ::= <field_identifier> , <field_identifier> : <type> | <empty>

<variant_type> ::= case <tag_field> <type_identifier> of <variant> ; <variant>

<tag_field> ::= <field_identifier> : <identifier>

<variant> ::= <case_label_ list> : ( <field list> ) | <empty>)

<case_label_ list> ::= <case_label>

<case_label> ::= <constant>

<set_type> ::=set of <base_type>

<base_type> ::= <simple_type>

<file_type> ::= file of <type>

<pointer_ type> ::= <type_ identifier>

<variable_declaration_part> ::= <empty> | var <variable_declaration> ;

<variable_declaration> ::= <identifier> : <type>

<procedure_and_function_declaration_part> ::= {<procedure_or_


function_declaration > ;}

<procedure_or_function declaration > ::= <procedure_declaration > |


<function_declaration >

<procedure_declaration> ::= <procedure_heading> <block>

<procedure_heading> ::= procedure <identifier> |procedure <identifier>


( <formal parameter section> )

<formal_parameter_section> ::= <parameter_group> | var <parameter_group>


| function <parameter_group> | procedure <identifier> , <identifier>

<parameter_ group> ::= <identifier> , <identifier> : <type_identifier>

<function_declaration> ::= <function_heading> <block>

<function_heading> ::= function <identifier> : <result_type> ; |function


<identifier> ( <formal_parameter_section>) : <result_type> ;

<result_type> ::= <type_identifier>

<statement_part> ::= <statement>

<statement> ::= <unlabelled_statement> | <label> : <unlabelled_statement>

<unlabelled_statement> ::= <simple_statement> | <structured_statement>

<simple_statement> ::= <assignment_statement> | <procedure_statement> |


<go_to_statement> | <empty_statement>

<assignment_statement> ::= <variable> := <expression> |


<function_identifier> := <expression>

<variable> ::= <entire_variable> | <component_variable> |


<referenced_variable>

<entir_ variable> ::= <variable_identifier>

<variable_ identifier> ::= <identifier>

<component_ variable> ::= <indexed_variable> | <field_designator> |


<file_buffer>

<indexed_variable> ::= <array_variable> [<expression> , <expression>]

<array_variable> ::= <variable>

<field_designator> ::= <record_variable> . <field_identifier>

<record_variable> ::= <variable>

<field_identifier> ::= <identifier>

<file_buffer> ::= <file_variable>

<file_variable> ::= <variable>

<referenced_variable> ::= <pointer_variable>

<pointer_variable> ::= <variable>

<expression> ::= <simple_expression> | <simple_expression>


<relational_operator> <simple_expression>

<relational_operator> ::= = | <> | < | <= | >= | > | in

<simple_expression> ::= <term> | <sign> <term>| <simple_expression>


<adding_operator> <term>

<adding_operator> ::= + | - | or

<term> ::= <factor> | <term> <multiplying_operator> <factor>

<multiplying_operator> ::= * | / | div | mod | and

<factor> ::= <variable> | <unsigned_constant> | ( <expression> ) |


<function_designator> | <set> | not <factor>

<unsigned_constant> ::= <unsigned_number> | <string> | <


constant_identifier> < nil>

<function_designator> ::= <functio_ identifier> | <function_identifier


( <actual_parameter>, <actual_parameter>)

<function_identifier> ::= <identifier>

<set> ::= [ <element_list> ]

<element_list> ::= <element> , <element> | <empty>

<element> ::= <expression> | <expression> .. <expression>

<procedure_statement> ::= <procedure_identifier> | <procedure_identifier>


(<actual_parameter> , <actual_parameter> )

<procedure_identifier> ::= <identifier>

<actual_parameter> ::= <expression> | <variable> | <procedure_identifier> |


<function_identifier>

<go_to_statement> ::= goto <label>

<empty_statement> ::= <empty>

<empty> ::=

<structured_statement> ::= <compound_statement> |


<conditional_statement> | <repetitive_statement> | <with_statement>

<compound_statement> ::= begin <statement> ; <statement> end;

<conditional_statement> ::= <if statement> | <case statement>

<if_statement> ::= if <expression> then <statement> | if <expression> then


<statement> else <statement>

<case_statement> ::= case <expression> of <case list element> ; <case list


element> end

<case_list_element> ::= <case_labe_ list> : <statement> | <empty>

<case_label_list> ::= <case_label> , <case_label>

<repetitive_statement> ::= <while_statement> | <repeat_statemant> |


<for_statement>

<while_statement> ::= while <expression> do <statement>

<repeat_statement> ::= repeat <statement> ; <statement> until <expression>

<for_statement> ::= for <control variable> := <for list> do <statement>

<control_variable> ::= <identifier>

<for_list> ::= <initial_value> to <final_ value> | <initial_value> downto <final


_value>

<initial_value> ::= <expression>

<final_value> ::= <expression>

<with_statement> ::= with <record_variabl_ list> do <statement>

<record_variabl_ list> ::= <record_variable> , <record_variable>

S-ar putea să vă placă și