( ( int i ; ) ( int j ; ) ( int gcd ( \( ( ( int a ) ( , ( int b ) ) ) \) ) ( { ( if \( ( b ( == 0 ) ) \) ( { ( return a ; ) } ) ( else ( return ( gcd ( \( ( b ( , ( a ( - ( ( \( ( a ( / b ) ) \) ) ( * b ) ) ) ) ) ) \) ) ) ; ) ) ) } ) ) ( void main ( \( \) ) ( { ( ( ( i ( = ( getInt ( \( \) ) ) ) ) ; ) ( ( ( j ( = ( getInt ( \( \) ) ) ) ) ; ) ( ( putIntLn ( \( ( gcd ( \( ( i ( , j ) ) \) ) ) \) ) ) ; ) ) ) } ) ) )
<program>
├── <var-decl>
│ ├── <type>
│ │ └── int
│ ├── <init-declarator-list>
│ │ ├── <init-declarator>
│ │ │ ├── <declarator>
│ │ │ │ ├── <identifier>
│ │ │ │ │ └── i
│ │ │ │ └── <declarator-t>
│ │ │ │ └── EPSILON
│ │ │ └── <init-declarator-t>
│ │ │ └── EPSILON
│ │ └── <init-declarator-list-t>
│ │ └── EPSILON
│ └── ;
...
<program>
├── <var-decl>
│ ├── int
│ ├── i
│ └── ;
├── <var-decl>
│ ├── int
│ ├── j
│ └── ;
├── <func-decl>
│ ├── int
│ ├── gcd
│ ├── <para-list>
│ │ ├── (
│ │ ├── <proper-para-list>
│ │ │ ├── <para-decl>
│ │ │ │ ├── int
│ │ │ │ └── a
│ │ │ └── <proper-para-list-t>
│ │ │ ├── ,
│ │ │ └── <para-decl>
│ │ │ ├── int
│ │ │ └── b
│ │ └── )
...