{
  "name": "fortran",
  "rules": {
    "translation_unit": {
      "type": "SEQ",
      "members": [
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "_top_level_item"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "program"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "_top_level_item": {
      "type": "PREC",
      "value": 2,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "include_statement"
              },
              {
                "type": "SYMBOL",
                "name": "_end_of_statement"
              }
            ]
          },
          {
            "type": "SYMBOL",
            "name": "program"
          },
          {
            "type": "SYMBOL",
            "name": "module"
          },
          {
            "type": "SYMBOL",
            "name": "submodule"
          },
          {
            "type": "SYMBOL",
            "name": "interface"
          },
          {
            "type": "SYMBOL",
            "name": "subroutine"
          },
          {
            "type": "SYMBOL",
            "name": "function"
          }
        ]
      }
    },
    "program": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "program_statement"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "_specification_part"
          }
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "_statement"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "internal_procedures"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "end_program_statement"
        }
      ]
    },
    "program_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[pP][rR][oO][gG][rR][aA][mM]"
          },
          "named": false,
          "value": "program"
        },
        {
          "type": "SYMBOL",
          "name": "_name"
        }
      ]
    },
    "end_program_statement": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "ALIAS",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "PATTERN",
                      "value": "[eE][nN][dD]"
                    },
                    {
                      "type": "CHOICE",
                      "members": [
                        {
                          "type": "PATTERN",
                          "value": "[pP][rR][oO][gG][rR][aA][mM]"
                        },
                        {
                          "type": "BLANK"
                        }
                      ]
                    }
                  ]
                },
                {
                  "type": "PATTERN",
                  "value": "[eE][nN][dD][pP][rR][oO][gG][rR][aA][mM]"
                }
              ]
            },
            "named": false,
            "value": "endprogram"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_name"
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "SYMBOL",
            "name": "_end_of_statement"
          }
        ]
      }
    },
    "module": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "module_statement"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "_specification_part"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "internal_procedures"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "end_module_statement"
        }
      ]
    },
    "module_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[mM][oO][dD][uU][lL][eE]"
          },
          "named": false,
          "value": "module"
        },
        {
          "type": "SYMBOL",
          "name": "_name"
        }
      ]
    },
    "end_module_statement": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "ALIAS",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "PATTERN",
                      "value": "[eE][nN][dD]"
                    },
                    {
                      "type": "CHOICE",
                      "members": [
                        {
                          "type": "PATTERN",
                          "value": "[mM][oO][dD][uU][lL][eE]"
                        },
                        {
                          "type": "BLANK"
                        }
                      ]
                    }
                  ]
                },
                {
                  "type": "PATTERN",
                  "value": "[eE][nN][dD][mM][oO][dD][uU][lL][eE]"
                }
              ]
            },
            "named": false,
            "value": "endmodule"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_name"
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "SYMBOL",
            "name": "_end_of_statement"
          }
        ]
      }
    },
    "submodule": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "submodule_statement"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "_specification_part"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "internal_procedures"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "end_submodule_statement"
        }
      ]
    },
    "submodule_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[sS][uU][bB][mM][oO][dD][uU][lL][eE]"
          },
          "named": false,
          "value": "submodule"
        },
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "FIELD",
          "name": "ancestor",
          "content": {
            "type": "SYMBOL",
            "name": "module_name"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": ":"
                },
                {
                  "type": "FIELD",
                  "name": "parent",
                  "content": {
                    "type": "SYMBOL",
                    "name": "module_name"
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        },
        {
          "type": "SYMBOL",
          "name": "_name"
        }
      ]
    },
    "end_submodule_statement": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "ALIAS",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "PATTERN",
                      "value": "[eE][nN][dD]"
                    },
                    {
                      "type": "CHOICE",
                      "members": [
                        {
                          "type": "PATTERN",
                          "value": "[sS][uU][bB][mM][oO][dD][uU][lL][eE]"
                        },
                        {
                          "type": "BLANK"
                        }
                      ]
                    }
                  ]
                },
                {
                  "type": "PATTERN",
                  "value": "[eE][nN][dD][sS][uU][bB][mM][oO][dD][uU][lL][eE]"
                }
              ]
            },
            "named": false,
            "value": "endsubmodule"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_name"
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "SYMBOL",
            "name": "_end_of_statement"
          }
        ]
      }
    },
    "module_name": {
      "type": "SYMBOL",
      "name": "_name"
    },
    "interface": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "interface_statement"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "import_statement"
              },
              {
                "type": "SYMBOL",
                "name": "procedure_statement"
              },
              {
                "type": "SYMBOL",
                "name": "function"
              },
              {
                "type": "SYMBOL",
                "name": "subroutine"
              }
            ]
          }
        },
        {
          "type": "SYMBOL",
          "name": "end_interface_statement"
        }
      ]
    },
    "interface_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "abstract_specifier"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[iI][nN][tT][eE][rR][fF][aA][cC][eE]"
          },
          "named": false,
          "value": "interface"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_name"
                },
                {
                  "type": "SYMBOL",
                  "name": "_generic_procedure"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "end_interface_statement": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "ALIAS",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "PATTERN",
                      "value": "[eE][nN][dD]"
                    },
                    {
                      "type": "PATTERN",
                      "value": "[iI][nN][tT][eE][rR][fF][aA][cC][eE]"
                    }
                  ]
                },
                {
                  "type": "PATTERN",
                  "value": "[eE][nN][dD][iI][nN][tT][eE][rR][fF][aA][cC][eE]"
                }
              ]
            },
            "named": false,
            "value": "endinterface"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "_name"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "_generic_procedure"
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "SYMBOL",
            "name": "_end_of_statement"
          }
        ]
      }
    },
    "assignment": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[aA][sS][sS][iI][gG][nN][mM][eE][nN][tT]"
          },
          "named": false,
          "value": "assignment"
        },
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "STRING",
          "value": "="
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "operator": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[oO][pP][eE][rR][aA][tT][oO][rR]"
          },
          "named": false,
          "value": "operator"
        },
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "PATTERN",
          "value": "[^()]+"
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "defined_io_procedure": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "ALIAS",
              "content": {
                "type": "PATTERN",
                "value": "[rR][eE][aA][dD]"
              },
              "named": false,
              "value": "read"
            },
            {
              "type": "ALIAS",
              "content": {
                "type": "PATTERN",
                "value": "[wW][rR][iI][tT][eE]"
              },
              "named": false,
              "value": "write"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "ALIAS",
              "content": {
                "type": "PATTERN",
                "value": "[fF][oO][rR][mM][aA][tT][tT][eE][dD]"
              },
              "named": false,
              "value": "formatted"
            },
            {
              "type": "ALIAS",
              "content": {
                "type": "PATTERN",
                "value": "[uU][nN][fF][oO][rR][mM][aA][tT][tT][eE][dD]"
              },
              "named": false,
              "value": "unformatted"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "_generic_procedure": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "assignment"
        },
        {
          "type": "SYMBOL",
          "name": "operator"
        },
        {
          "type": "SYMBOL",
          "name": "defined_io_procedure"
        }
      ]
    },
    "subroutine": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "subroutine_statement"
        },
        {
          "type": "SYMBOL",
          "name": "_end_of_statement"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "_specification_part"
          }
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "_statement"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "internal_procedures"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "end_subroutine_statement"
        }
      ]
    },
    "subroutine_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_callable_interface_qualifers"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[sS][uU][bB][rR][oO][uU][tT][iI][nN][eE]"
          },
          "named": false,
          "value": "subroutine"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "_name"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "FIELD",
              "name": "parameters",
              "content": {
                "type": "SYMBOL",
                "name": "_parameters"
              }
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "language_binding"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "end_subroutine_statement": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "ALIAS",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "PATTERN",
                      "value": "[eE][nN][dD]"
                    },
                    {
                      "type": "CHOICE",
                      "members": [
                        {
                          "type": "PATTERN",
                          "value": "[sS][uU][bB][rR][oO][uU][tT][iI][nN][eE]"
                        },
                        {
                          "type": "BLANK"
                        }
                      ]
                    }
                  ]
                },
                {
                  "type": "PATTERN",
                  "value": "[eE][nN][dD][sS][uU][bB][rR][oO][uU][tT][iI][nN][eE]"
                }
              ]
            },
            "named": false,
            "value": "endsubroutine"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_name"
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "SYMBOL",
            "name": "_end_of_statement"
          }
        ]
      }
    },
    "module_procedure": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "module_procedure_statement"
        },
        {
          "type": "SYMBOL",
          "name": "_end_of_statement"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "_specification_part"
          }
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "_statement"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "internal_procedures"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "end_module_procedure_statement"
        }
      ]
    },
    "module_procedure_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_callable_interface_qualifers"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "ALIAS",
              "content": {
                "type": "PATTERN",
                "value": "[mM][oO][dD][uU][lL][eE]"
              },
              "named": false,
              "value": "module"
            },
            {
              "type": "ALIAS",
              "content": {
                "type": "PATTERN",
                "value": "[pP][rR][oO][cC][eE][dD][uU][rR][eE]"
              },
              "named": false,
              "value": "procedure"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "_name"
          }
        }
      ]
    },
    "end_module_procedure_statement": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "ALIAS",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "PATTERN",
                      "value": "[eE][nN][dD]"
                    },
                    {
                      "type": "CHOICE",
                      "members": [
                        {
                          "type": "PATTERN",
                          "value": "[pP][rR][oO][cC][eE][dD][uU][rR][eE]"
                        },
                        {
                          "type": "BLANK"
                        }
                      ]
                    }
                  ]
                },
                {
                  "type": "PATTERN",
                  "value": "[eE][nN][dD][pP][rR][oO][cC][eE][dD][uU][rR][eE]"
                }
              ]
            },
            "named": false,
            "value": "endprocedure"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_name"
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "SYMBOL",
            "name": "_end_of_statement"
          }
        ]
      }
    },
    "function": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "function_statement"
        },
        {
          "type": "SYMBOL",
          "name": "_end_of_statement"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "_specification_part"
          }
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "_statement"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "internal_procedures"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "end_function_statement"
        }
      ]
    },
    "function_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_callable_interface_qualifers"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[fF][uU][nN][cC][tT][iI][oO][nN]"
          },
          "named": false,
          "value": "function"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "_name"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "FIELD",
              "name": "parameters",
              "content": {
                "type": "SYMBOL",
                "name": "_parameters"
              }
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "REPEAT",
              "content": {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "language_binding"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "function_result"
                  }
                ]
              }
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "language_binding": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[bB][iI][nN][dD]"
          },
          "named": false,
          "value": "bind"
        },
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "SYMBOL",
          "name": "identifier"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": ","
                },
                {
                  "type": "SYMBOL",
                  "name": "keyword_argument"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "_callable_interface_qualifers": {
      "type": "REPEAT1",
      "content": {
        "type": "PREC_RIGHT",
        "value": 1,
        "content": {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "procedure_attributes"
            },
            {
              "type": "SYMBOL",
              "name": "procedure_qualifier"
            },
            {
              "type": "SYMBOL",
              "name": "_intrinsic_type"
            },
            {
              "type": "SYMBOL",
              "name": "derived_type"
            }
          ]
        }
      }
    },
    "procedure_attributes": {
      "type": "PREC",
      "value": 1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "ALIAS",
            "content": {
              "type": "PATTERN",
              "value": "[aA][tT][tT][rR][iI][bB][uU][tT][eE][sS]"
            },
            "named": false,
            "value": "attributes"
          },
          {
            "type": "STRING",
            "value": "("
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "ALIAS",
                    "content": {
                      "type": "PATTERN",
                      "value": "[gG][lL][oO][bB][aA][lL]"
                    },
                    "named": false,
                    "value": "global"
                  },
                  {
                    "type": "ALIAS",
                    "content": {
                      "type": "PATTERN",
                      "value": "[dD][eE][vV][iI][cC][eE]"
                    },
                    "named": false,
                    "value": "device"
                  },
                  {
                    "type": "ALIAS",
                    "content": {
                      "type": "PATTERN",
                      "value": "[hH][oO][sS][tT]"
                    },
                    "named": false,
                    "value": "host"
                  },
                  {
                    "type": "ALIAS",
                    "content": {
                      "type": "PATTERN",
                      "value": "[gG][rR][iI][dD]_[gG][lL][oO][bB][aA][lL]"
                    },
                    "named": false,
                    "value": "grid_global"
                  }
                ]
              },
              {
                "type": "REPEAT",
                "content": {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "STRING",
                      "value": ","
                    },
                    {
                      "type": "CHOICE",
                      "members": [
                        {
                          "type": "ALIAS",
                          "content": {
                            "type": "PATTERN",
                            "value": "[gG][lL][oO][bB][aA][lL]"
                          },
                          "named": false,
                          "value": "global"
                        },
                        {
                          "type": "ALIAS",
                          "content": {
                            "type": "PATTERN",
                            "value": "[dD][eE][vV][iI][cC][eE]"
                          },
                          "named": false,
                          "value": "device"
                        },
                        {
                          "type": "ALIAS",
                          "content": {
                            "type": "PATTERN",
                            "value": "[hH][oO][sS][tT]"
                          },
                          "named": false,
                          "value": "host"
                        },
                        {
                          "type": "ALIAS",
                          "content": {
                            "type": "PATTERN",
                            "value": "[gG][rR][iI][dD]_[gG][lL][oO][bB][aA][lL]"
                          },
                          "named": false,
                          "value": "grid_global"
                        }
                      ]
                    }
                  ]
                }
              }
            ]
          },
          {
            "type": "STRING",
            "value": ")"
          }
        ]
      }
    },
    "end_function_statement": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "ALIAS",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "PATTERN",
                      "value": "[eE][nN][dD]"
                    },
                    {
                      "type": "CHOICE",
                      "members": [
                        {
                          "type": "PATTERN",
                          "value": "[fF][uU][nN][cC][tT][iI][oO][nN]"
                        },
                        {
                          "type": "BLANK"
                        }
                      ]
                    }
                  ]
                },
                {
                  "type": "PATTERN",
                  "value": "[eE][nN][dD][fF][uU][nN][cC][tT][iI][oO][nN]"
                }
              ]
            },
            "named": false,
            "value": "endfunction"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_name"
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "SYMBOL",
            "name": "_end_of_statement"
          }
        ]
      }
    },
    "function_result": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[rR][eE][sS][uU][lL][tT]"
          },
          "named": false,
          "value": "result"
        },
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "SYMBOL",
          "name": "identifier"
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "_name": {
      "type": "ALIAS",
      "content": {
        "type": "SYMBOL",
        "name": "identifier"
      },
      "named": true,
      "value": "name"
    },
    "_parameters": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "("
            },
            {
              "type": "STRING",
              "value": ")"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "parameters"
        }
      ]
    },
    "parameters": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "identifier"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "SYMBOL",
                    "name": "identifier"
                  }
                ]
              }
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "internal_procedures": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "contains_statement"
        },
        {
          "type": "SYMBOL",
          "name": "_end_of_statement"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "function"
              },
              {
                "type": "SYMBOL",
                "name": "module_procedure"
              },
              {
                "type": "SYMBOL",
                "name": "subroutine"
              }
            ]
          }
        }
      ]
    },
    "contains_statement": {
      "type": "ALIAS",
      "content": {
        "type": "PATTERN",
        "value": "[cC][oO][nN][tT][aA][iI][nN][sS]"
      },
      "named": false,
      "value": "contains"
    },
    "_specification_part": {
      "type": "PREC",
      "value": 1,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "PREC",
            "value": 1,
            "content": {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "include_statement"
                },
                {
                  "type": "SYMBOL",
                  "name": "_end_of_statement"
                }
              ]
            }
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "use_statement"
              },
              {
                "type": "SYMBOL",
                "name": "_end_of_statement"
              }
            ]
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "implicit_statement"
              },
              {
                "type": "SYMBOL",
                "name": "_end_of_statement"
              }
            ]
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "save_statement"
              },
              {
                "type": "SYMBOL",
                "name": "_end_of_statement"
              }
            ]
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "import_statement"
              },
              {
                "type": "SYMBOL",
                "name": "_end_of_statement"
              }
            ]
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "public_statement"
              },
              {
                "type": "SYMBOL",
                "name": "_end_of_statement"
              }
            ]
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "private_statement"
              },
              {
                "type": "SYMBOL",
                "name": "_end_of_statement"
              }
            ]
          },
          {
            "type": "SYMBOL",
            "name": "enum"
          },
          {
            "type": "SYMBOL",
            "name": "interface"
          },
          {
            "type": "SYMBOL",
            "name": "derived_type_definition"
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "namelist_statement"
              },
              {
                "type": "SYMBOL",
                "name": "_end_of_statement"
              }
            ]
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "common_statement"
              },
              {
                "type": "SYMBOL",
                "name": "_end_of_statement"
              }
            ]
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "variable_declaration"
              },
              {
                "type": "SYMBOL",
                "name": "_end_of_statement"
              }
            ]
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "variable_modification"
              },
              {
                "type": "SYMBOL",
                "name": "_end_of_statement"
              }
            ]
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "parameter_statement"
              },
              {
                "type": "SYMBOL",
                "name": "_end_of_statement"
              }
            ]
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "equivalence_statement"
              },
              {
                "type": "SYMBOL",
                "name": "_end_of_statement"
              }
            ]
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "data_statement"
              },
              {
                "type": "SYMBOL",
                "name": "_end_of_statement"
              }
            ]
          },
          {
            "type": "PREC",
            "value": 1,
            "content": {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "statement_label"
                },
                {
                  "type": "SYMBOL",
                  "name": "format_statement"
                },
                {
                  "type": "SYMBOL",
                  "name": "_end_of_statement"
                }
              ]
            }
          }
        ]
      }
    },
    "use_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[uU][sS][eE]"
          },
          "named": false,
          "value": "use"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "STRING",
                      "value": ","
                    },
                    {
                      "type": "CHOICE",
                      "members": [
                        {
                          "type": "ALIAS",
                          "content": {
                            "type": "PATTERN",
                            "value": "[iI][nN][tT][rR][iI][nN][sS][iI][cC]"
                          },
                          "named": false,
                          "value": "intrinsic"
                        },
                        {
                          "type": "ALIAS",
                          "content": {
                            "type": "PATTERN",
                            "value": "[nN][oO][nN]_[iI][nN][tT][rR][iI][nN][sS][iI][cC]"
                          },
                          "named": false,
                          "value": "non_intrinsic"
                        }
                      ]
                    },
                    {
                      "type": "STRING",
                      "value": "::"
                    }
                  ]
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "STRING",
                  "value": "::"
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          ]
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          },
          "named": true,
          "value": "module_name"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "STRING",
                      "value": ","
                    },
                    {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "SYMBOL",
                          "name": "use_alias"
                        },
                        {
                          "type": "REPEAT",
                          "content": {
                            "type": "SEQ",
                            "members": [
                              {
                                "type": "STRING",
                                "value": ","
                              },
                              {
                                "type": "SYMBOL",
                                "name": "use_alias"
                              }
                            ]
                          }
                        }
                      ]
                    }
                  ]
                },
                {
                  "type": "SYMBOL",
                  "name": "included_items"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "included_items": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": ","
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[oO][nN][lL][yY]"
          },
          "named": false,
          "value": "only"
        },
        {
          "type": "STRING",
          "value": ":"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "use_alias"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "identifier"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "_generic_procedure"
                    }
                  ]
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "SYMBOL",
                            "name": "use_alias"
                          },
                          {
                            "type": "SYMBOL",
                            "name": "identifier"
                          },
                          {
                            "type": "SYMBOL",
                            "name": "_generic_procedure"
                          }
                        ]
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "use_alias": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          },
          "named": true,
          "value": "local_name"
        },
        {
          "type": "STRING",
          "value": "=>"
        },
        {
          "type": "SYMBOL",
          "name": "identifier"
        }
      ]
    },
    "implicit_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[iI][mM][pP][lL][iI][cC][iI][tT]"
          },
          "named": false,
          "value": "implicit"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "intrinsic_type"
                    },
                    {
                      "type": "CHOICE",
                      "members": [
                        {
                          "type": "SYMBOL",
                          "name": "size"
                        },
                        {
                          "type": "BLANK"
                        }
                      ]
                    },
                    {
                      "type": "STRING",
                      "value": "("
                    },
                    {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "SYMBOL",
                          "name": "implicit_range"
                        },
                        {
                          "type": "REPEAT",
                          "content": {
                            "type": "SEQ",
                            "members": [
                              {
                                "type": "STRING",
                                "value": ","
                              },
                              {
                                "type": "SYMBOL",
                                "name": "implicit_range"
                              }
                            ]
                          }
                        }
                      ]
                    },
                    {
                      "type": "STRING",
                      "value": ")"
                    }
                  ]
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "SYMBOL",
                            "name": "intrinsic_type"
                          },
                          {
                            "type": "CHOICE",
                            "members": [
                              {
                                "type": "SYMBOL",
                                "name": "size"
                              },
                              {
                                "type": "BLANK"
                              }
                            ]
                          },
                          {
                            "type": "STRING",
                            "value": "("
                          },
                          {
                            "type": "SEQ",
                            "members": [
                              {
                                "type": "SYMBOL",
                                "name": "implicit_range"
                              },
                              {
                                "type": "REPEAT",
                                "content": {
                                  "type": "SEQ",
                                  "members": [
                                    {
                                      "type": "STRING",
                                      "value": ","
                                    },
                                    {
                                      "type": "SYMBOL",
                                      "name": "implicit_range"
                                    }
                                  ]
                                }
                              }
                            ]
                          },
                          {
                            "type": "STRING",
                            "value": ")"
                          }
                        ]
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "ALIAS",
                  "content": {
                    "type": "PATTERN",
                    "value": "[nN][oO][nN][eE]"
                  },
                  "named": true,
                  "value": "none"
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "STRING",
                          "value": "("
                        },
                        {
                          "type": "SEQ",
                          "members": [
                            {
                              "type": "CHOICE",
                              "members": [
                                {
                                  "type": "ALIAS",
                                  "content": {
                                    "type": "PATTERN",
                                    "value": "[tT][yY][pP][eE]"
                                  },
                                  "named": false,
                                  "value": "type"
                                },
                                {
                                  "type": "ALIAS",
                                  "content": {
                                    "type": "PATTERN",
                                    "value": "[eE][xX][tT][eE][rR][nN][aA][lL]"
                                  },
                                  "named": false,
                                  "value": "external"
                                }
                              ]
                            },
                            {
                              "type": "REPEAT",
                              "content": {
                                "type": "SEQ",
                                "members": [
                                  {
                                    "type": "STRING",
                                    "value": ","
                                  },
                                  {
                                    "type": "CHOICE",
                                    "members": [
                                      {
                                        "type": "ALIAS",
                                        "content": {
                                          "type": "PATTERN",
                                          "value": "[tT][yY][pP][eE]"
                                        },
                                        "named": false,
                                        "value": "type"
                                      },
                                      {
                                        "type": "ALIAS",
                                        "content": {
                                          "type": "PATTERN",
                                          "value": "[eE][xX][tT][eE][rR][nN][aA][lL]"
                                        },
                                        "named": false,
                                        "value": "external"
                                      }
                                    ]
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        {
                          "type": "STRING",
                          "value": ")"
                        }
                      ]
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                }
              ]
            }
          ]
        }
      ]
    },
    "save_statement": {
      "type": "PREC",
      "value": 1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "ALIAS",
            "content": {
              "type": "PATTERN",
              "value": "[sS][aA][vV][eE]"
            },
            "named": false,
            "value": "save"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "STRING",
                        "value": "::"
                      },
                      {
                        "type": "BLANK"
                      }
                    ]
                  },
                  {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "SYMBOL",
                            "name": "identifier"
                          },
                          {
                            "type": "SEQ",
                            "members": [
                              {
                                "type": "STRING",
                                "value": "/"
                              },
                              {
                                "type": "SYMBOL",
                                "name": "identifier"
                              },
                              {
                                "type": "STRING",
                                "value": "/"
                              }
                            ]
                          }
                        ]
                      },
                      {
                        "type": "REPEAT",
                        "content": {
                          "type": "SEQ",
                          "members": [
                            {
                              "type": "STRING",
                              "value": ","
                            },
                            {
                              "type": "CHOICE",
                              "members": [
                                {
                                  "type": "SYMBOL",
                                  "name": "identifier"
                                },
                                {
                                  "type": "SEQ",
                                  "members": [
                                    {
                                      "type": "STRING",
                                      "value": "/"
                                    },
                                    {
                                      "type": "SYMBOL",
                                      "name": "identifier"
                                    },
                                    {
                                      "type": "STRING",
                                      "value": "/"
                                    }
                                  ]
                                }
                              ]
                            }
                          ]
                        }
                      }
                    ]
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "private_statement": {
      "type": "PREC",
      "value": 1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "ALIAS",
            "content": {
              "type": "PATTERN",
              "value": "[pP][rR][iI][vV][aA][tT][eE]"
            },
            "named": false,
            "value": "private"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": "::"
                  },
                  {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "SYMBOL",
                            "name": "identifier"
                          },
                          {
                            "type": "SYMBOL",
                            "name": "_generic_procedure"
                          }
                        ]
                      },
                      {
                        "type": "REPEAT",
                        "content": {
                          "type": "SEQ",
                          "members": [
                            {
                              "type": "STRING",
                              "value": ","
                            },
                            {
                              "type": "CHOICE",
                              "members": [
                                {
                                  "type": "SYMBOL",
                                  "name": "identifier"
                                },
                                {
                                  "type": "SYMBOL",
                                  "name": "_generic_procedure"
                                }
                              ]
                            }
                          ]
                        }
                      }
                    ]
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "public_statement": {
      "type": "PREC",
      "value": 1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "ALIAS",
            "content": {
              "type": "PATTERN",
              "value": "[pP][uU][bB][lL][iI][cC]"
            },
            "named": false,
            "value": "public"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": "::"
                  },
                  {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "SYMBOL",
                            "name": "identifier"
                          },
                          {
                            "type": "SYMBOL",
                            "name": "_generic_procedure"
                          }
                        ]
                      },
                      {
                        "type": "REPEAT",
                        "content": {
                          "type": "SEQ",
                          "members": [
                            {
                              "type": "STRING",
                              "value": ","
                            },
                            {
                              "type": "CHOICE",
                              "members": [
                                {
                                  "type": "SYMBOL",
                                  "name": "identifier"
                                },
                                {
                                  "type": "SYMBOL",
                                  "name": "_generic_procedure"
                                }
                              ]
                            }
                          ]
                        }
                      }
                    ]
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "namelist_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[nN][aA][mM][eE][lL][iI][sS][tT]"
          },
          "named": false,
          "value": "namelist"
        },
        {
          "type": "REPEAT1",
          "content": {
            "type": "SYMBOL",
            "name": "variable_group"
          }
        }
      ]
    },
    "common_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[cC][oO][mM][mM][oO][nN]"
          },
          "named": false,
          "value": "common"
        },
        {
          "type": "REPEAT1",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "variable_group"
              },
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "identifier"
                  },
                  {
                    "type": "REPEAT",
                    "content": {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "STRING",
                          "value": ","
                        },
                        {
                          "type": "SYMBOL",
                          "name": "identifier"
                        }
                      ]
                    }
                  }
                ]
              }
            ]
          }
        }
      ]
    },
    "variable_group": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "/"
        },
        {
          "type": "SYMBOL",
          "name": "_name"
        },
        {
          "type": "STRING",
          "value": "/"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "identifier"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "SYMBOL",
                    "name": "identifier"
                  }
                ]
              }
            }
          ]
        }
      ]
    },
    "implicit_range": {
      "type": "SEQ",
      "members": [
        {
          "type": "PATTERN",
          "value": "[a-zA-Z]"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "-"
                },
                {
                  "type": "PATTERN",
                  "value": "[a-zA-Z]"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "import_statement": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "ALIAS",
            "content": {
              "type": "PATTERN",
              "value": "[iI][mM][pP][oO][rR][tT]"
            },
            "named": false,
            "value": "import"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_import_names"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "_import_names": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "STRING",
                  "value": "::"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "identifier"
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "SYMBOL",
                        "name": "identifier"
                      }
                    ]
                  }
                }
              ]
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": ","
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "PATTERN",
                        "value": "[oO][nN][lL][yY]"
                      },
                      "named": false,
                      "value": "only"
                    },
                    {
                      "type": "STRING",
                      "value": ":"
                    },
                    {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "SYMBOL",
                          "name": "identifier"
                        },
                        {
                          "type": "REPEAT",
                          "content": {
                            "type": "SEQ",
                            "members": [
                              {
                                "type": "STRING",
                                "value": ","
                              },
                              {
                                "type": "SYMBOL",
                                "name": "identifier"
                              }
                            ]
                          }
                        }
                      ]
                    }
                  ]
                },
                {
                  "type": "ALIAS",
                  "content": {
                    "type": "PATTERN",
                    "value": "[nN][oO][nN][eE]"
                  },
                  "named": false,
                  "value": "none"
                },
                {
                  "type": "ALIAS",
                  "content": {
                    "type": "PATTERN",
                    "value": "[aA][lL][lL]"
                  },
                  "named": false,
                  "value": "all"
                }
              ]
            }
          ]
        }
      ]
    },
    "derived_type_definition": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "derived_type_statement"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "public_statement"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "private_statement"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "ALIAS",
                  "content": {
                    "type": "ALIAS",
                    "content": {
                      "type": "PATTERN",
                      "value": "[sS][eE][qQ][uU][eE][nN][cC][eE]"
                    },
                    "named": false,
                    "value": "sequence"
                  },
                  "named": true,
                  "value": "sequence_statement"
                },
                {
                  "type": "SYMBOL",
                  "name": "_end_of_statement"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "include_statement"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "variable_declaration"
                  }
                ]
              },
              {
                "type": "SYMBOL",
                "name": "_end_of_statement"
              }
            ]
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "derived_type_procedures"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "end_type_statement"
        }
      ]
    },
    "abstract_specifier": {
      "type": "ALIAS",
      "content": {
        "type": "PATTERN",
        "value": "[aA][bB][sS][tT][rR][aA][cC][tT]"
      },
      "named": false,
      "value": "abstract"
    },
    "access_specifier": {
      "type": "CHOICE",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[pP][uU][bB][lL][iI][cC]"
          },
          "named": false,
          "value": "public"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[pP][rR][iI][vV][aA][tT][eE]"
          },
          "named": false,
          "value": "private"
        }
      ]
    },
    "base_type_specifier": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[eE][xX][tT][eE][nN][dD][sS]"
          },
          "named": false,
          "value": "extends"
        },
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "SYMBOL",
          "name": "identifier"
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "_derived_type_qualifier": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "abstract_specifier"
        },
        {
          "type": "FIELD",
          "name": "access",
          "content": {
            "type": "SYMBOL",
            "name": "access_specifier"
          }
        },
        {
          "type": "FIELD",
          "name": "base",
          "content": {
            "type": "SYMBOL",
            "name": "base_type_specifier"
          }
        },
        {
          "type": "SYMBOL",
          "name": "language_binding"
        }
      ]
    },
    "derived_type_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "statement_label"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[tT][yY][pP][eE]"
          },
          "named": false,
          "value": "type"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "::"
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                },
                {
                  "type": "SYMBOL",
                  "name": "_type_name"
                }
              ]
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": ","
                },
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "_derived_type_qualifier"
                    },
                    {
                      "type": "REPEAT",
                      "content": {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "STRING",
                            "value": ","
                          },
                          {
                            "type": "SYMBOL",
                            "name": "_derived_type_qualifier"
                          }
                        ]
                      }
                    }
                  ]
                },
                {
                  "type": "STRING",
                  "value": "::"
                },
                {
                  "type": "SYMBOL",
                  "name": "_type_name"
                }
              ]
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "_end_of_statement"
        }
      ]
    },
    "end_type_statement": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "ALIAS",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "PATTERN",
                      "value": "[eE][nN][dD]"
                    },
                    {
                      "type": "CHOICE",
                      "members": [
                        {
                          "type": "PATTERN",
                          "value": "[tT][yY][pP][eE]"
                        },
                        {
                          "type": "BLANK"
                        }
                      ]
                    }
                  ]
                },
                {
                  "type": "PATTERN",
                  "value": "[eE][nN][dD][tT][yY][pP][eE]"
                }
              ]
            },
            "named": false,
            "value": "endtype"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_name"
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "SYMBOL",
            "name": "_end_of_statement"
          }
        ]
      }
    },
    "_type_name": {
      "type": "ALIAS",
      "content": {
        "type": "SYMBOL",
        "name": "identifier"
      },
      "named": true,
      "value": "type_name"
    },
    "derived_type_procedures": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "contains_statement"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "public_statement"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "private_statement"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "procedure_statement"
          }
        }
      ]
    },
    "procedure_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_procedure_kind"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "("
                },
                {
                  "type": "ALIAS",
                  "content": {
                    "type": "SYMBOL",
                    "name": "identifier"
                  },
                  "named": true,
                  "value": "procedure_interface"
                },
                {
                  "type": "STRING",
                  "value": ")"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": ","
                },
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "procedure_attribute"
                    },
                    {
                      "type": "REPEAT",
                      "content": {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "STRING",
                            "value": ","
                          },
                          {
                            "type": "SYMBOL",
                            "name": "procedure_attribute"
                          }
                        ]
                      }
                    }
                  ]
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "::"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "method_name"
                },
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "binding_name"
                    },
                    {
                      "type": "STRING",
                      "value": "=>"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "method_name"
                    }
                  ]
                }
              ]
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "SYMBOL",
                        "name": "method_name"
                      },
                      {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "SYMBOL",
                            "name": "binding_name"
                          },
                          {
                            "type": "STRING",
                            "value": "=>"
                          },
                          {
                            "type": "SYMBOL",
                            "name": "method_name"
                          }
                        ]
                      }
                    ]
                  }
                ]
              }
            }
          ]
        }
      ]
    },
    "binding_name": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "identifier"
        },
        {
          "type": "SYMBOL",
          "name": "_generic_procedure"
        }
      ]
    },
    "method_name": {
      "type": "ALIAS",
      "content": {
        "type": "SYMBOL",
        "name": "identifier"
      },
      "named": false,
      "value": "method_name"
    },
    "_procedure_kind": {
      "type": "CHOICE",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[gG][eE][nN][eE][rR][iI][cC]"
          },
          "named": false,
          "value": "generic"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[iI][nN][iI][tT][iI][aA][lL]"
          },
          "named": false,
          "value": "initial"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[pP][rR][oO][cC][eE][dD][uU][rR][eE]"
          },
          "named": false,
          "value": "procedure"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "ALIAS",
              "content": {
                "type": "PATTERN",
                "value": "[mM][oO][dD][uU][lL][eE]"
              },
              "named": false,
              "value": "module"
            },
            {
              "type": "ALIAS",
              "content": {
                "type": "PATTERN",
                "value": "[pP][rR][oO][cC][eE][dD][uU][rR][eE]"
              },
              "named": false,
              "value": "procedure"
            }
          ]
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[pP][rR][oO][pP][eE][rR][tT][yY]"
          },
          "named": false,
          "value": "property"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[fF][iI][nN][aA][lL]"
          },
          "named": false,
          "value": "final"
        }
      ]
    },
    "procedure_attribute": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "ALIAS",
            "content": {
              "type": "PATTERN",
              "value": "[dD][eE][fF][eE][rR][rR][eE][dD]"
            },
            "named": false,
            "value": "deferred"
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "ALIAS",
                "content": {
                  "type": "PATTERN",
                  "value": "[pP][aA][sS][sS]"
                },
                "named": false,
                "value": "pass"
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": "("
                      },
                      {
                        "type": "SYMBOL",
                        "name": "identifier"
                      },
                      {
                        "type": "STRING",
                        "value": ")"
                      }
                    ]
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              }
            ]
          },
          {
            "type": "ALIAS",
            "content": {
              "type": "PATTERN",
              "value": "[nN][oO][pP][aA][sS][sS]"
            },
            "named": false,
            "value": "nopass"
          },
          {
            "type": "ALIAS",
            "content": {
              "type": "PATTERN",
              "value": "[nN][oO][nN]_[oO][vV][eE][rR][rR][iI][dD][aA][bB][lL][eE]"
            },
            "named": false,
            "value": "non_overridable"
          },
          {
            "type": "ALIAS",
            "content": {
              "type": "PATTERN",
              "value": "[pP][uU][bB][lL][iI][cC]"
            },
            "named": false,
            "value": "public"
          },
          {
            "type": "ALIAS",
            "content": {
              "type": "PATTERN",
              "value": "[pP][rR][iI][vV][aA][tT][eE]"
            },
            "named": false,
            "value": "private"
          },
          {
            "type": "ALIAS",
            "content": {
              "type": "PATTERN",
              "value": "[fF][aA][mM][iI][lL][yY]"
            },
            "named": false,
            "value": "family"
          },
          {
            "type": "ALIAS",
            "content": {
              "type": "PATTERN",
              "value": "[pP][oO][iI][nN][tT][eE][rR]"
            },
            "named": false,
            "value": "pointer"
          }
        ]
      }
    },
    "variable_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_intrinsic_type"
            },
            {
              "type": "SYMBOL",
              "name": "derived_type"
            },
            {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "procedure_declaration"
              },
              "named": true,
              "value": "procedure"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": ","
                },
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "type_qualifier"
                    },
                    {
                      "type": "REPEAT",
                      "content": {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "STRING",
                            "value": ","
                          },
                          {
                            "type": "SYMBOL",
                            "name": "type_qualifier"
                          }
                        ]
                      }
                    }
                  ]
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "::"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "_declaration_targets"
        }
      ]
    },
    "procedure_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[pP][rR][oO][cC][eE][dD][uU][rR][eE]"
          },
          "named": false,
          "value": "procedure"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "("
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "SYMBOL",
                        "name": "identifier"
                      },
                      "named": true,
                      "value": "procedure_interface"
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                },
                {
                  "type": "STRING",
                  "value": ")"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": ","
                },
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "procedure_attribute"
                    },
                    {
                      "type": "REPEAT",
                      "content": {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "STRING",
                            "value": ","
                          },
                          {
                            "type": "SYMBOL",
                            "name": "procedure_attribute"
                          }
                        ]
                      }
                    }
                  ]
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "variable_modification": {
      "type": "SEQ",
      "members": [
        {
          "type": "REPEAT1",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "type_qualifier"
              },
              {
                "type": "SYMBOL",
                "name": "variable_attributes"
              }
            ]
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "::"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "_declaration_targets"
        }
      ]
    },
    "variable_attributes": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[aA][tT][tT][rR][iI][bB][uU][tT][eE][sS]"
          },
          "named": false,
          "value": "attributes"
        },
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "ALIAS",
              "content": {
                "type": "PATTERN",
                "value": "[dD][eE][vV][iI][cC][eE]"
              },
              "named": false,
              "value": "device"
            },
            {
              "type": "ALIAS",
              "content": {
                "type": "PATTERN",
                "value": "[mM][aA][nN][aA][gG][eE][dD]"
              },
              "named": false,
              "value": "managed"
            },
            {
              "type": "ALIAS",
              "content": {
                "type": "PATTERN",
                "value": "[cC][oO][nN][sS][tT][aA][nN][tT]"
              },
              "named": false,
              "value": "constant"
            },
            {
              "type": "ALIAS",
              "content": {
                "type": "PATTERN",
                "value": "[sS][hH][aA][rR][eE][dD]"
              },
              "named": false,
              "value": "shared"
            },
            {
              "type": "ALIAS",
              "content": {
                "type": "PATTERN",
                "value": "[pP][iI][nN][nN][eE][dD]"
              },
              "named": false,
              "value": "pinned"
            },
            {
              "type": "ALIAS",
              "content": {
                "type": "PATTERN",
                "value": "[tT][eE][xX][tT][uU][rR][eE]"
              },
              "named": false,
              "value": "texture"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "_declaration_targets": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "identifier"
            },
            {
              "type": "PREC_RIGHT",
              "value": 1,
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "identifier"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "character_length"
                  }
                ]
              }
            },
            {
              "type": "SYMBOL",
              "name": "call_expression"
            },
            {
              "type": "SYMBOL",
              "name": "assignment_statement"
            },
            {
              "type": "SYMBOL",
              "name": "pointer_association_statement"
            }
          ]
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": ","
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "identifier"
                  },
                  {
                    "type": "PREC_RIGHT",
                    "value": 1,
                    "content": {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "SYMBOL",
                          "name": "identifier"
                        },
                        {
                          "type": "SYMBOL",
                          "name": "character_length"
                        }
                      ]
                    }
                  },
                  {
                    "type": "SYMBOL",
                    "name": "call_expression"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "assignment_statement"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "pointer_association_statement"
                  }
                ]
              }
            ]
          }
        }
      ]
    },
    "_intrinsic_type": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "intrinsic_type"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "size"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "intrinsic_type": {
      "type": "CHOICE",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[bB][yY][tT][eE]"
          },
          "named": false,
          "value": "byte"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[iI][nN][tT][eE][gG][eE][rR]"
          },
          "named": false,
          "value": "integer"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[rR][eE][aA][lL]"
          },
          "named": false,
          "value": "real"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "PATTERN",
                    "value": "[dD][oO][uU][bB][lL][eE]"
                  },
                  {
                    "type": "PATTERN",
                    "value": "[pP][rR][eE][cC][iI][sS][iI][oO][nN]"
                  }
                ]
              },
              {
                "type": "PATTERN",
                "value": "[dD][oO][uU][bB][lL][eE][pP][rR][eE][cC][iI][sS][iI][oO][nN]"
              }
            ]
          },
          "named": false,
          "value": "doubleprecision"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[cC][oO][mM][pP][lL][eE][xX]"
          },
          "named": false,
          "value": "complex"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "PATTERN",
                    "value": "[dD][oO][uU][bB][lL][eE]"
                  },
                  {
                    "type": "PATTERN",
                    "value": "[cC][oO][mM][pP][lL][eE][xX]"
                  }
                ]
              },
              {
                "type": "PATTERN",
                "value": "[dD][oO][uU][bB][lL][eE][cC][oO][mM][pP][lL][eE][xX]"
              }
            ]
          },
          "named": false,
          "value": "doublecomplex"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[lL][oO][gG][iI][cC][aA][lL]"
          },
          "named": false,
          "value": "logical"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[cC][hH][aA][rR][aA][cC][tT][eE][rR]"
          },
          "named": false,
          "value": "character"
        }
      ]
    },
    "derived_type": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "ALIAS",
              "content": {
                "type": "PATTERN",
                "value": "[tT][yY][pP][eE]"
              },
              "named": false,
              "value": "type"
            },
            {
              "type": "ALIAS",
              "content": {
                "type": "PATTERN",
                "value": "[cC][lL][aA][sS][sS]"
              },
              "named": false,
              "value": "class"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "PREC_DYNAMIC",
              "value": 1,
              "content": {
                "type": "SYMBOL",
                "name": "_intrinsic_type"
              }
            },
            {
              "type": "SYMBOL",
              "name": "_type_name"
            },
            {
              "type": "SYMBOL",
              "name": "unlimited_polymorphic"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "unlimited_polymorphic": {
      "type": "STRING",
      "value": "*"
    },
    "size": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "ALIAS",
                  "content": {
                    "type": "STRING",
                    "value": "*"
                  },
                  "named": true,
                  "value": "assumed_size"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "SYMBOL",
              "name": "argument_list"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "*"
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "PATTERN",
                  "value": "\\d+"
                },
                {
                  "type": "SYMBOL",
                  "name": "parenthesized_expression"
                }
              ]
            }
          ]
        }
      ]
    },
    "character_length": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "*"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "PATTERN",
              "value": "\\d+"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "("
                },
                {
                  "type": "STRING",
                  "value": "*"
                },
                {
                  "type": "STRING",
                  "value": ")"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "type_qualifier": {
      "type": "CHOICE",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[aA][bB][sS][tT][rR][aA][cC][tT]"
          },
          "named": false,
          "value": "abstract"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[aA][lL][lL][oO][cC][aA][tT][aA][bB][lL][eE]"
          },
          "named": false,
          "value": "allocatable"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[aA][uU][tT][oO][mM][aA][tT][iI][cC]"
          },
          "named": false,
          "value": "automatic"
        },
        {
          "type": "PREC_RIGHT",
          "value": 0,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "ALIAS",
                "content": {
                  "type": "PATTERN",
                  "value": "[dD][iI][mM][eE][nN][sS][iI][oO][nN]"
                },
                "named": false,
                "value": "dimension"
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "argument_list"
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[cC][oO][nN][sS][tT][aA][nN][tT]"
          },
          "named": false,
          "value": "constant"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[cC][oO][nN][tT][iI][gG][uU][oO][uU][sS]"
          },
          "named": false,
          "value": "contiguous"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[dD][eE][vV][iI][cC][eE]"
          },
          "named": false,
          "value": "device"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[eE][xX][tT][eE][rR][nN][aA][lL]"
          },
          "named": false,
          "value": "external"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "ALIAS",
              "content": {
                "type": "PATTERN",
                "value": "[iI][nN][tT][eE][nN][tT]"
              },
              "named": false,
              "value": "intent"
            },
            {
              "type": "STRING",
              "value": "("
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "ALIAS",
                  "content": {
                    "type": "PATTERN",
                    "value": "[iI][nN]"
                  },
                  "named": false,
                  "value": "in"
                },
                {
                  "type": "ALIAS",
                  "content": {
                    "type": "PATTERN",
                    "value": "[oO][uU][tT]"
                  },
                  "named": false,
                  "value": "out"
                },
                {
                  "type": "ALIAS",
                  "content": {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "PATTERN",
                            "value": "[iI][nN]"
                          },
                          {
                            "type": "PATTERN",
                            "value": "[oO][uU][tT]"
                          }
                        ]
                      },
                      {
                        "type": "PATTERN",
                        "value": "[iI][nN][oO][uU][tT]"
                      }
                    ]
                  },
                  "named": false,
                  "value": "inout"
                }
              ]
            },
            {
              "type": "STRING",
              "value": ")"
            }
          ]
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[iI][nN][tT][rR][iI][nN][sS][iI][cC]"
          },
          "named": false,
          "value": "intrinsic"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[mM][aA][nN][aA][gG][eE][dD]"
          },
          "named": false,
          "value": "managed"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[oO][pP][tT][iI][oO][nN][aA][lL]"
          },
          "named": false,
          "value": "optional"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[pP][aA][rR][aA][mM][eE][tT][eE][rR]"
          },
          "named": false,
          "value": "parameter"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[pP][iI][nN][nN][eE][dD]"
          },
          "named": false,
          "value": "pinned"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[pP][oO][iI][nN][tT][eE][rR]"
          },
          "named": false,
          "value": "pointer"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[pP][rR][iI][vV][aA][tT][eE]"
          },
          "named": false,
          "value": "private"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[pP][rR][oO][tT][eE][cC][tT][eE][dD]"
          },
          "named": false,
          "value": "protected"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[pP][uU][bB][lL][iI][cC]"
          },
          "named": false,
          "value": "public"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[sS][aA][vV][eE]"
          },
          "named": false,
          "value": "save"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[sS][eE][qQ][uU][eE][nN][cC][eE]"
          },
          "named": false,
          "value": "sequence"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[sS][hH][aA][rR][eE][dD]"
          },
          "named": false,
          "value": "shared"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[sS][tT][aA][tT][iI][cC]"
          },
          "named": false,
          "value": "static"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[tT][aA][rR][gG][eE][tT]"
          },
          "named": false,
          "value": "target"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[tT][eE][xX][tT][uU][rR][eE]"
          },
          "named": false,
          "value": "texture"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[vV][aA][lL][uU][eE]"
          },
          "named": false,
          "value": "value"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[vV][oO][lL][aA][tT][iI][lL][eE]"
          },
          "named": false,
          "value": "volatile"
        }
      ]
    },
    "procedure_qualifier": {
      "type": "CHOICE",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[eE][lL][eE][mM][eE][nN][tT][aA][lL]"
          },
          "named": false,
          "value": "elemental"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[iI][mM][pP][uU][rR][eE]"
          },
          "named": false,
          "value": "impure"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[mM][oO][dD][uU][lL][eE]"
          },
          "named": false,
          "value": "module"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[pP][uU][rR][eE]"
          },
          "named": false,
          "value": "pure"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[rR][eE][cC][uU][rR][sS][iI][vV][eE]"
          },
          "named": false,
          "value": "recursive"
        }
      ]
    },
    "parameter_statement": {
      "type": "PREC",
      "value": 1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "ALIAS",
            "content": {
              "type": "PATTERN",
              "value": "[pP][aA][rR][aA][mM][eE][tT][eE][rR]"
            },
            "named": false,
            "value": "parameter"
          },
          {
            "type": "STRING",
            "value": "("
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "parameter_assignment"
              },
              {
                "type": "REPEAT",
                "content": {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "STRING",
                      "value": ","
                    },
                    {
                      "type": "SYMBOL",
                      "name": "parameter_assignment"
                    }
                  ]
                }
              }
            ]
          },
          {
            "type": "STRING",
            "value": ")"
          }
        ]
      }
    },
    "parameter_assignment": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "identifier"
        },
        {
          "type": "STRING",
          "value": "="
        },
        {
          "type": "SYMBOL",
          "name": "_expression"
        }
      ]
    },
    "equivalence_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[eE][qQ][uU][iI][vV][aA][lL][eE][nN][cC][eE]"
          },
          "named": false,
          "value": "equivalence"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "equivalence_set"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "SYMBOL",
                    "name": "equivalence_set"
                  }
                ]
              }
            }
          ]
        }
      ]
    },
    "equivalence_set": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "identifier"
            },
            {
              "type": "SYMBOL",
              "name": "call_expression"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ","
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "identifier"
                },
                {
                  "type": "SYMBOL",
                  "name": "call_expression"
                }
              ]
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "SYMBOL",
                        "name": "identifier"
                      },
                      {
                        "type": "SYMBOL",
                        "name": "call_expression"
                      }
                    ]
                  }
                ]
              }
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "statement_label"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "_statements"
        },
        {
          "type": "SYMBOL",
          "name": "_end_of_statement"
        }
      ]
    },
    "_statements": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "assignment_statement"
        },
        {
          "type": "SYMBOL",
          "name": "pointer_association_statement"
        },
        {
          "type": "SYMBOL",
          "name": "call_expression"
        },
        {
          "type": "SYMBOL",
          "name": "subroutine_call"
        },
        {
          "type": "SYMBOL",
          "name": "keyword_statement"
        },
        {
          "type": "SYMBOL",
          "name": "include_statement"
        },
        {
          "type": "SYMBOL",
          "name": "if_statement"
        },
        {
          "type": "SYMBOL",
          "name": "arithmetic_if_statement"
        },
        {
          "type": "SYMBOL",
          "name": "where_statement"
        },
        {
          "type": "SYMBOL",
          "name": "forall_statement"
        },
        {
          "type": "SYMBOL",
          "name": "select_case_statement"
        },
        {
          "type": "SYMBOL",
          "name": "select_type_statement"
        },
        {
          "type": "SYMBOL",
          "name": "select_rank_statement"
        },
        {
          "type": "SYMBOL",
          "name": "do_loop_statement"
        },
        {
          "type": "SYMBOL",
          "name": "do_label_statement"
        },
        {
          "type": "SYMBOL",
          "name": "format_statement"
        },
        {
          "type": "SYMBOL",
          "name": "open_statement"
        },
        {
          "type": "SYMBOL",
          "name": "close_statement"
        },
        {
          "type": "SYMBOL",
          "name": "print_statement"
        },
        {
          "type": "SYMBOL",
          "name": "write_statement"
        },
        {
          "type": "SYMBOL",
          "name": "read_statement"
        },
        {
          "type": "SYMBOL",
          "name": "inquire_statement"
        },
        {
          "type": "SYMBOL",
          "name": "stop_statement"
        },
        {
          "type": "SYMBOL",
          "name": "block_construct"
        },
        {
          "type": "SYMBOL",
          "name": "associate_statement"
        },
        {
          "type": "SYMBOL",
          "name": "file_position_statement"
        }
      ]
    },
    "statement_label": {
      "type": "PREC",
      "value": 1,
      "content": {
        "type": "ALIAS",
        "content": {
          "type": "SYMBOL",
          "name": "_integer_literal"
        },
        "named": false,
        "value": "statement_label"
      }
    },
    "statement_label_reference": {
      "type": "ALIAS",
      "content": {
        "type": "SYMBOL",
        "name": "statement_label"
      },
      "named": false,
      "value": "statement_label_reference"
    },
    "stop_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "ALIAS",
              "content": {
                "type": "PATTERN",
                "value": "[eE][rR][rR][oO][rR]"
              },
              "named": false,
              "value": "error"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[sS][tT][oO][pP]"
          },
          "named": false,
          "value": "stop"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_expression"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": ","
                },
                {
                  "type": "PREC",
                  "value": 1,
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "ALIAS",
                        "content": {
                          "type": "PATTERN",
                          "value": "[qQ][uU][iI][eE][tT]"
                        },
                        "named": false,
                        "value": "quiet"
                      },
                      {
                        "type": "STRING",
                        "value": "="
                      },
                      {
                        "type": "SYMBOL",
                        "name": "_expression"
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "assignment_statement": {
      "type": "PREC_RIGHT",
      "value": -10,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "left",
            "content": {
              "type": "SYMBOL",
              "name": "_expression"
            }
          },
          {
            "type": "STRING",
            "value": "="
          },
          {
            "type": "FIELD",
            "name": "right",
            "content": {
              "type": "SYMBOL",
              "name": "_expression"
            }
          }
        ]
      }
    },
    "pointer_association_statement": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "_expression"
          },
          {
            "type": "STRING",
            "value": "=>"
          },
          {
            "type": "SYMBOL",
            "name": "_expression"
          }
        ]
      }
    },
    "subroutine_call": {
      "type": "PREC",
      "value": 1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "ALIAS",
            "content": {
              "type": "PATTERN",
              "value": "[cC][aA][lL][lL]"
            },
            "named": false,
            "value": "call"
          },
          {
            "type": "FIELD",
            "name": "subroutine",
            "content": {
              "type": "SYMBOL",
              "name": "_expression"
            }
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "cuda_kernel_argument_list"
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "argument_list"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "cuda_kernel_argument_list": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "<<<"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_expression"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "SYMBOL",
                    "name": "_expression"
                  }
                ]
              }
            }
          ]
        },
        {
          "type": "STRING",
          "value": ">>>"
        }
      ]
    },
    "keyword_statement": {
      "type": "CHOICE",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[cC][oO][nN][tT][iI][nN][uU][eE]"
          },
          "named": false,
          "value": "continue"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "ALIAS",
              "content": {
                "type": "PATTERN",
                "value": "[cC][yY][cC][lL][eE]"
              },
              "named": false,
              "value": "cycle"
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "identifier"
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "ALIAS",
              "content": {
                "type": "PATTERN",
                "value": "[eE][xX][iI][tT]"
              },
              "named": false,
              "value": "exit"
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "identifier"
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "ALIAS",
              "content": {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "PATTERN",
                        "value": "[gG][oO]"
                      },
                      {
                        "type": "PATTERN",
                        "value": "[tT][oO]"
                      }
                    ]
                  },
                  {
                    "type": "PATTERN",
                    "value": "[gG][oO][tT][oO]"
                  }
                ]
              },
              "named": false,
              "value": "goto"
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "statement_label_reference"
                },
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "("
                    },
                    {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "SYMBOL",
                          "name": "statement_label_reference"
                        },
                        {
                          "type": "REPEAT",
                          "content": {
                            "type": "SEQ",
                            "members": [
                              {
                                "type": "STRING",
                                "value": ","
                              },
                              {
                                "type": "SYMBOL",
                                "name": "statement_label_reference"
                              }
                            ]
                          }
                        }
                      ]
                    },
                    {
                      "type": "STRING",
                      "value": ")"
                    },
                    {
                      "type": "CHOICE",
                      "members": [
                        {
                          "type": "STRING",
                          "value": ","
                        },
                        {
                          "type": "BLANK"
                        }
                      ]
                    },
                    {
                      "type": "SYMBOL",
                      "name": "_expression"
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[rR][eE][tT][uU][rR][nN]"
          },
          "named": false,
          "value": "return"
        }
      ]
    },
    "include_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[iI][nN][cC][lL][uU][dD][eE]"
          },
          "named": false,
          "value": "include"
        },
        {
          "type": "FIELD",
          "name": "path",
          "content": {
            "type": "ALIAS",
            "content": {
              "type": "SYMBOL",
              "name": "string_literal"
            },
            "named": true,
            "value": "filename"
          }
        }
      ]
    },
    "data_statement": {
      "type": "PREC",
      "value": 1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "ALIAS",
            "content": {
              "type": "PATTERN",
              "value": "[dD][aA][tT][aA]"
            },
            "named": false,
            "value": "data"
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "data_set"
              },
              {
                "type": "REPEAT",
                "content": {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "STRING",
                      "value": ","
                    },
                    {
                      "type": "SYMBOL",
                      "name": "data_set"
                    }
                  ]
                }
              }
            ]
          }
        ]
      }
    },
    "data_set": {
      "type": "PREC",
      "value": 1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SEQ",
            "members": [
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "identifier"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "implied_do_loop_expression"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "call_expression"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "derived_type_member_expression"
                  }
                ]
              },
              {
                "type": "REPEAT",
                "content": {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "STRING",
                      "value": ","
                    },
                    {
                      "type": "CHOICE",
                      "members": [
                        {
                          "type": "SYMBOL",
                          "name": "identifier"
                        },
                        {
                          "type": "SYMBOL",
                          "name": "implied_do_loop_expression"
                        },
                        {
                          "type": "SYMBOL",
                          "name": "call_expression"
                        },
                        {
                          "type": "SYMBOL",
                          "name": "derived_type_member_expression"
                        }
                      ]
                    }
                  ]
                }
              }
            ]
          },
          {
            "type": "SYMBOL",
            "name": "data_value"
          }
        ]
      }
    },
    "data_value": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "/"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "PREC",
                      "value": 1,
                      "content": {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "FIELD",
                            "name": "repeat",
                            "content": {
                              "type": "SYMBOL",
                              "name": "number_literal"
                            }
                          },
                          {
                            "type": "STRING",
                            "value": "*"
                          }
                        ]
                      }
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "number_literal"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "complex_literal"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "string_literal"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "boolean_literal"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "unary_expression"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "null_literal"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "identifier"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "call_expression"
                    }
                  ]
                }
              ]
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "PREC",
                            "value": 1,
                            "content": {
                              "type": "SEQ",
                              "members": [
                                {
                                  "type": "FIELD",
                                  "name": "repeat",
                                  "content": {
                                    "type": "SYMBOL",
                                    "name": "number_literal"
                                  }
                                },
                                {
                                  "type": "STRING",
                                  "value": "*"
                                }
                              ]
                            }
                          },
                          {
                            "type": "BLANK"
                          }
                        ]
                      },
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "SYMBOL",
                            "name": "number_literal"
                          },
                          {
                            "type": "SYMBOL",
                            "name": "complex_literal"
                          },
                          {
                            "type": "SYMBOL",
                            "name": "string_literal"
                          },
                          {
                            "type": "SYMBOL",
                            "name": "boolean_literal"
                          },
                          {
                            "type": "SYMBOL",
                            "name": "unary_expression"
                          },
                          {
                            "type": "SYMBOL",
                            "name": "null_literal"
                          },
                          {
                            "type": "SYMBOL",
                            "name": "identifier"
                          },
                          {
                            "type": "SYMBOL",
                            "name": "call_expression"
                          }
                        ]
                      }
                    ]
                  }
                ]
              }
            }
          ]
        },
        {
          "type": "STRING",
          "value": "/"
        }
      ]
    },
    "do_loop_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "block_label_start_expression"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[dD][oO]"
          },
          "named": false,
          "value": "do"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": ","
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "while_statement"
                },
                {
                  "type": "SYMBOL",
                  "name": "loop_control_expression"
                },
                {
                  "type": "SYMBOL",
                  "name": "concurrent_statement"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "_end_of_statement"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "_statement"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "statement_label"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "end_do_loop_statement"
        }
      ]
    },
    "do_label_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[dD][oO]"
          },
          "named": false,
          "value": "do"
        },
        {
          "type": "SYMBOL",
          "name": "statement_label_reference"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": ","
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "loop_control_expression"
        }
      ]
    },
    "end_do_loop_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "PATTERN",
                    "value": "[eE][nN][dD]"
                  },
                  {
                    "type": "PATTERN",
                    "value": "[dD][oO]"
                  }
                ]
              },
              {
                "type": "PATTERN",
                "value": "[eE][nN][dD][dD][oO]"
              }
            ]
          },
          "named": false,
          "value": "enddo"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_block_label"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "while_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[wW][hH][iI][lL][eE]"
          },
          "named": false,
          "value": "while"
        },
        {
          "type": "SYMBOL",
          "name": "parenthesized_expression"
        }
      ]
    },
    "concurrent_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "concurrent_header"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "concurrent_locality"
          }
        }
      ]
    },
    "concurrent_header": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[cC][oO][nN][cC][uU][rR][rR][eE][nN][tT]"
          },
          "named": false,
          "value": "concurrent"
        },
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "FIELD",
                  "name": "type",
                  "content": {
                    "type": "SYMBOL",
                    "name": "_intrinsic_type"
                  }
                },
                {
                  "type": "STRING",
                  "value": "::"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "concurrent_control"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "SYMBOL",
                    "name": "concurrent_control"
                  }
                ]
              }
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": ","
                },
                {
                  "type": "ALIAS",
                  "content": {
                    "type": "SYMBOL",
                    "name": "_expression"
                  },
                  "named": true,
                  "value": "concurrent_mask"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "concurrent_control": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "identifier"
        },
        {
          "type": "STRING",
          "value": "="
        },
        {
          "type": "FIELD",
          "name": "initial",
          "content": {
            "type": "SYMBOL",
            "name": "_expression"
          }
        },
        {
          "type": "STRING",
          "value": ":"
        },
        {
          "type": "FIELD",
          "name": "final",
          "content": {
            "type": "SYMBOL",
            "name": "_expression"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": ":"
                },
                {
                  "type": "FIELD",
                  "name": "step",
                  "content": {
                    "type": "SYMBOL",
                    "name": "_expression"
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "concurrent_locality": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "ALIAS",
                  "content": {
                    "type": "PATTERN",
                    "value": "[lL][oO][cC][aA][lL]"
                  },
                  "named": false,
                  "value": "local"
                },
                {
                  "type": "ALIAS",
                  "content": {
                    "type": "PATTERN",
                    "value": "[lL][oO][cC][aA][lL]_[iI][nN][iI][tT]"
                  },
                  "named": false,
                  "value": "local_init"
                },
                {
                  "type": "ALIAS",
                  "content": {
                    "type": "PATTERN",
                    "value": "[sS][hH][aA][rR][eE][dD]"
                  },
                  "named": false,
                  "value": "shared"
                }
              ]
            },
            {
              "type": "STRING",
              "value": "("
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "identifier"
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "SYMBOL",
                        "name": "identifier"
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "STRING",
              "value": ")"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "ALIAS",
              "content": {
                "type": "PATTERN",
                "value": "[dD][eE][fF][aA][uU][lL][tT]"
              },
              "named": false,
              "value": "default"
            },
            {
              "type": "STRING",
              "value": "("
            },
            {
              "type": "ALIAS",
              "content": {
                "type": "PATTERN",
                "value": "[nN][oO][nN][eE]"
              },
              "named": false,
              "value": "none"
            },
            {
              "type": "STRING",
              "value": ")"
            }
          ]
        }
      ]
    },
    "if_statement": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_inline_if_statement"
        },
        {
          "type": "SYMBOL",
          "name": "_block_if_statement"
        }
      ]
    },
    "_inline_if_statement": {
      "type": "PREC_RIGHT",
      "value": 2,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "ALIAS",
            "content": {
              "type": "PATTERN",
              "value": "[iI][fF]"
            },
            "named": false,
            "value": "if"
          },
          {
            "type": "SYMBOL",
            "name": "parenthesized_expression"
          },
          {
            "type": "SYMBOL",
            "name": "_statements"
          }
        ]
      }
    },
    "arithmetic_if_statement": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "ALIAS",
            "content": {
              "type": "PATTERN",
              "value": "[iI][fF]"
            },
            "named": false,
            "value": "if"
          },
          {
            "type": "SYMBOL",
            "name": "parenthesized_expression"
          },
          {
            "type": "SYMBOL",
            "name": "statement_label_reference"
          },
          {
            "type": "STRING",
            "value": ","
          },
          {
            "type": "SYMBOL",
            "name": "statement_label_reference"
          },
          {
            "type": "STRING",
            "value": ","
          },
          {
            "type": "SYMBOL",
            "name": "statement_label_reference"
          }
        ]
      }
    },
    "_block_if_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "block_label_start_expression"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[iI][fF]"
          },
          "named": false,
          "value": "if"
        },
        {
          "type": "SYMBOL",
          "name": "parenthesized_expression"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[tT][hH][eE][nN]"
          },
          "named": false,
          "value": "then"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_block_label"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "_end_of_statement"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "_statement"
          }
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "elseif_clause"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "else_clause"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "statement_label"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "end_if_statement"
        }
      ]
    },
    "end_if_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "PATTERN",
                    "value": "[eE][nN][dD]"
                  },
                  {
                    "type": "PATTERN",
                    "value": "[iI][fF]"
                  }
                ]
              },
              {
                "type": "PATTERN",
                "value": "[eE][nN][dD][iI][fF]"
              }
            ]
          },
          "named": false,
          "value": "endif"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_block_label"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "elseif_clause": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "PATTERN",
                    "value": "[eE][lL][sS][eE]"
                  },
                  {
                    "type": "PATTERN",
                    "value": "[iI][fF]"
                  }
                ]
              },
              {
                "type": "PATTERN",
                "value": "[eE][lL][sS][eE][iI][fF]"
              }
            ]
          },
          "named": false,
          "value": "elseif"
        },
        {
          "type": "SYMBOL",
          "name": "parenthesized_expression"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[tT][hH][eE][nN]"
          },
          "named": false,
          "value": "then"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_block_label"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "_end_of_statement"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "_statement"
          }
        }
      ]
    },
    "else_clause": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[eE][lL][sS][eE]"
          },
          "named": false,
          "value": "else"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_block_label"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "_end_of_statement"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "_statement"
          }
        }
      ]
    },
    "where_statement": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_inline_where_statement"
        },
        {
          "type": "SYMBOL",
          "name": "_block_where_statement"
        }
      ]
    },
    "_inline_where_statement": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "ALIAS",
            "content": {
              "type": "PATTERN",
              "value": "[wW][hH][eE][rR][eE]"
            },
            "named": false,
            "value": "where"
          },
          {
            "type": "SYMBOL",
            "name": "parenthesized_expression"
          },
          {
            "type": "SYMBOL",
            "name": "_statements"
          }
        ]
      }
    },
    "_block_where_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "block_label_start_expression"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[wW][hH][eE][rR][eE]"
          },
          "named": false,
          "value": "where"
        },
        {
          "type": "SYMBOL",
          "name": "parenthesized_expression"
        },
        {
          "type": "SYMBOL",
          "name": "_end_of_statement"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "_statement"
          }
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "elsewhere_clause"
          }
        },
        {
          "type": "SYMBOL",
          "name": "end_where_statement"
        }
      ]
    },
    "end_where_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "PATTERN",
                    "value": "[eE][nN][dD]"
                  },
                  {
                    "type": "PATTERN",
                    "value": "[wW][hH][eE][rR][eE]"
                  }
                ]
              },
              {
                "type": "PATTERN",
                "value": "[eE][nN][dD][wW][hH][eE][rR][eE]"
              }
            ]
          },
          "named": false,
          "value": "endwhere"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_block_label"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "elsewhere_clause": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "PATTERN",
                    "value": "[eE][lL][sS][eE]"
                  },
                  {
                    "type": "PATTERN",
                    "value": "[wW][hH][eE][rR][eE]"
                  }
                ]
              },
              {
                "type": "PATTERN",
                "value": "[eE][lL][sS][eE][wW][hH][eE][rR][eE]"
              }
            ]
          },
          "named": false,
          "value": "elsewhere"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "parenthesized_expression"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_block_label"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "_end_of_statement"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "_statement"
          }
        }
      ]
    },
    "forall_statement": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_inline_forall_statement"
        },
        {
          "type": "SYMBOL",
          "name": "_block_forall_statement"
        }
      ]
    },
    "triplet_spec": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "identifier"
        },
        {
          "type": "STRING",
          "value": "="
        },
        {
          "type": "SYMBOL",
          "name": "_expression"
        },
        {
          "type": "STRING",
          "value": ":"
        },
        {
          "type": "SYMBOL",
          "name": "_expression"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": ":"
                },
                {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "_forall_control_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[fF][oO][rR][aA][lL][lL]"
          },
          "named": false,
          "value": "forall"
        },
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "triplet_spec"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "SYMBOL",
                    "name": "triplet_spec"
                  }
                ]
              }
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": ","
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "logical_expression"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "relational_expression"
                    }
                  ]
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "_inline_forall_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_forall_control_expression"
        },
        {
          "type": "SYMBOL",
          "name": "_statements"
        }
      ]
    },
    "_block_forall_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "block_label_start_expression"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "_forall_control_expression"
        },
        {
          "type": "SYMBOL",
          "name": "_end_of_statement"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "_statement"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "statement_label"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "end_forall_statement"
        }
      ]
    },
    "end_forall_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "PATTERN",
                    "value": "[eE][nN][dD]"
                  },
                  {
                    "type": "PATTERN",
                    "value": "[fF][oO][rR][aA][lL][lL]"
                  }
                ]
              },
              {
                "type": "PATTERN",
                "value": "[eE][nN][dD][fF][oO][rR][aA][lL][lL]"
              }
            ]
          },
          "named": false,
          "value": "endforall"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_block_label"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "select_case_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "block_label_start_expression"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "PATTERN",
                    "value": "[sS][eE][lL][eE][cC][tT]"
                  },
                  {
                    "type": "PATTERN",
                    "value": "[cC][aA][sS][eE]"
                  }
                ]
              },
              {
                "type": "PATTERN",
                "value": "[sS][eE][lL][eE][cC][tT][cC][aA][sS][eE]"
              }
            ]
          },
          "named": false,
          "value": "selectcase"
        },
        {
          "type": "SYMBOL",
          "name": "selector"
        },
        {
          "type": "SYMBOL",
          "name": "_end_of_statement"
        },
        {
          "type": "REPEAT1",
          "content": {
            "type": "SYMBOL",
            "name": "case_statement"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "statement_label"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "end_select_statement"
        }
      ]
    },
    "select_type_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "block_label_start_expression"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "PATTERN",
                    "value": "[sS][eE][lL][eE][cC][tT]"
                  },
                  {
                    "type": "PATTERN",
                    "value": "[tT][yY][pP][eE]"
                  }
                ]
              },
              {
                "type": "PATTERN",
                "value": "[sS][eE][lL][eE][cC][tT][tT][yY][pP][eE]"
              }
            ]
          },
          "named": false,
          "value": "selecttype"
        },
        {
          "type": "SYMBOL",
          "name": "selector"
        },
        {
          "type": "SYMBOL",
          "name": "_end_of_statement"
        },
        {
          "type": "REPEAT1",
          "content": {
            "type": "SYMBOL",
            "name": "type_statement"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "statement_label"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "end_select_statement"
        }
      ]
    },
    "select_rank_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "block_label_start_expression"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "PATTERN",
                    "value": "[sS][eE][lL][eE][cC][tT]"
                  },
                  {
                    "type": "PATTERN",
                    "value": "[rR][aA][nN][kK]"
                  }
                ]
              },
              {
                "type": "PATTERN",
                "value": "[sS][eE][lL][eE][cC][tT][rR][aA][nN][kK]"
              }
            ]
          },
          "named": false,
          "value": "selectrank"
        },
        {
          "type": "SYMBOL",
          "name": "selector"
        },
        {
          "type": "SYMBOL",
          "name": "_end_of_statement"
        },
        {
          "type": "REPEAT1",
          "content": {
            "type": "SYMBOL",
            "name": "rank_statement"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "statement_label"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "end_select_statement"
        }
      ]
    },
    "end_select_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "PATTERN",
                    "value": "[eE][nN][dD]"
                  },
                  {
                    "type": "PATTERN",
                    "value": "[sS][eE][lL][eE][cC][tT]"
                  }
                ]
              },
              {
                "type": "PATTERN",
                "value": "[eE][nN][dD][sS][eE][lL][eE][cC][tT]"
              }
            ]
          },
          "named": false,
          "value": "endselect"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_block_label"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "selector": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_expression"
            },
            {
              "type": "SYMBOL",
              "name": "pointer_association_statement"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "case_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[cC][aA][sS][eE]"
          },
          "named": false,
          "value": "case"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "("
                },
                {
                  "type": "SYMBOL",
                  "name": "case_value_range_list"
                },
                {
                  "type": "STRING",
                  "value": ")"
                }
              ]
            },
            {
              "type": "ALIAS",
              "content": {
                "type": "ALIAS",
                "content": {
                  "type": "PATTERN",
                  "value": "[dD][eE][fF][aA][uU][lL][tT]"
                },
                "named": false,
                "value": "default"
              },
              "named": true,
              "value": "default"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_block_label"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "_end_of_statement"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "_statement"
          }
        }
      ]
    },
    "type_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "SEQ",
                            "members": [
                              {
                                "type": "PATTERN",
                                "value": "[tT][yY][pP][eE]"
                              },
                              {
                                "type": "PATTERN",
                                "value": "[iI][sS]"
                              }
                            ]
                          },
                          {
                            "type": "PATTERN",
                            "value": "[tT][yY][pP][eE][iI][sS]"
                          }
                        ]
                      },
                      "named": false,
                      "value": "typeis"
                    },
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "SEQ",
                            "members": [
                              {
                                "type": "PATTERN",
                                "value": "[cC][lL][aA][sS][sS]"
                              },
                              {
                                "type": "PATTERN",
                                "value": "[iI][sS]"
                              }
                            ]
                          },
                          {
                            "type": "PATTERN",
                            "value": "[cC][lL][aA][sS][sS][iI][sS]"
                          }
                        ]
                      },
                      "named": false,
                      "value": "classis"
                    }
                  ]
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "STRING",
                          "value": "("
                        },
                        {
                          "type": "FIELD",
                          "name": "type",
                          "content": {
                            "type": "CHOICE",
                            "members": [
                              {
                                "type": "SYMBOL",
                                "name": "_intrinsic_type"
                              },
                              {
                                "type": "SYMBOL",
                                "name": "identifier"
                              }
                            ]
                          }
                        },
                        {
                          "type": "STRING",
                          "value": ")"
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "_class_default"
              },
              "named": true,
              "value": "default"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_block_label"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "_end_of_statement"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "_statement"
          }
        }
      ]
    },
    "_class_default": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "PATTERN",
              "value": "[cC][lL][aA][sS][sS]"
            },
            {
              "type": "PATTERN",
              "value": "[dD][eE][fF][aA][uU][lL][tT]"
            }
          ]
        },
        {
          "type": "PATTERN",
          "value": "[cC][lL][aA][sS][sS][dD][eE][fF][aA][uU][lL][tT]"
        }
      ]
    },
    "case_value_range_list": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_expression"
            },
            {
              "type": "SYMBOL",
              "name": "extent_specifier"
            }
          ]
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": ","
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "_expression"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "extent_specifier"
                  }
                ]
              }
            ]
          }
        }
      ]
    },
    "rank_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[rR][aA][nN][kK]"
          },
          "named": false,
          "value": "rank"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "("
                },
                {
                  "type": "SYMBOL",
                  "name": "case_value_range_list"
                },
                {
                  "type": "STRING",
                  "value": ")"
                }
              ]
            },
            {
              "type": "ALIAS",
              "content": {
                "type": "ALIAS",
                "content": {
                  "type": "PATTERN",
                  "value": "[dD][eE][fF][aA][uU][lL][tT]"
                },
                "named": false,
                "value": "default"
              },
              "named": true,
              "value": "default"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_block_label"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "_end_of_statement"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "_statement"
          }
        }
      ]
    },
    "block_construct": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "block_label_start_expression"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[bB][lL][oO][cC][kK]"
          },
          "named": false,
          "value": "block"
        },
        {
          "type": "SYMBOL",
          "name": "_end_of_statement"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "_specification_part"
          }
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "_statement"
          }
        },
        {
          "type": "SYMBOL",
          "name": "end_block_construct_statement"
        }
      ]
    },
    "end_block_construct_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "PATTERN",
                    "value": "[eE][nN][dD]"
                  },
                  {
                    "type": "PATTERN",
                    "value": "[bB][lL][oO][cC][kK]"
                  }
                ]
              },
              {
                "type": "PATTERN",
                "value": "[eE][nN][dD][bB][lL][oO][cC][kK]"
              }
            ]
          },
          "named": false,
          "value": "endblock"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_block_label"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "associate_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "block_label_start_expression"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[aA][sS][sS][oO][cC][iI][aA][tT][eE]"
          },
          "named": false,
          "value": "associate"
        },
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "association"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "SYMBOL",
                    "name": "association"
                  }
                ]
              }
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        },
        {
          "type": "SYMBOL",
          "name": "_end_of_statement"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "_statement"
          }
        },
        {
          "type": "SYMBOL",
          "name": "end_associate_statement"
        }
      ]
    },
    "association": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "STRING",
          "value": "=>"
        },
        {
          "type": "FIELD",
          "name": "selector",
          "content": {
            "type": "SYMBOL",
            "name": "_expression"
          }
        }
      ]
    },
    "end_associate_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "PATTERN",
                    "value": "[eE][nN][dD]"
                  },
                  {
                    "type": "PATTERN",
                    "value": "[aA][sS][sS][oO][cC][iI][aA][tT][eE]"
                  }
                ]
              },
              {
                "type": "PATTERN",
                "value": "[eE][nN][dD][aA][sS][sS][oO][cC][iI][aA][tT][eE]"
              }
            ]
          },
          "named": false,
          "value": "endassociate"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_block_label"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "format_statement": {
      "type": "PREC",
      "value": 1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "ALIAS",
            "content": {
              "type": "PATTERN",
              "value": "[fF][oO][rR][mM][aA][tT]"
            },
            "named": false,
            "value": "format"
          },
          {
            "type": "STRING",
            "value": "("
          },
          {
            "type": "ALIAS",
            "content": {
              "type": "SYMBOL",
              "name": "_transfer_items"
            },
            "named": true,
            "value": "transfer_items"
          },
          {
            "type": "STRING",
            "value": ")"
          }
        ]
      }
    },
    "_transfer_item": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "string_literal"
        },
        {
          "type": "SYMBOL",
          "name": "edit_descriptor"
        },
        {
          "type": "SYMBOL",
          "name": "hollerith_constant"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "("
            },
            {
              "type": "SYMBOL",
              "name": "_transfer_items"
            },
            {
              "type": "STRING",
              "value": ")"
            }
          ]
        }
      ]
    },
    "_transfer_items": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_transfer_item"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              },
              {
                "type": "SYMBOL",
                "name": "_transfer_item"
              }
            ]
          }
        }
      ]
    },
    "edit_descriptor": {
      "type": "PATTERN",
      "value": "[a-gi-zA-GI-Z0-9/:.*$]+"
    },
    "hollerith_constant": {
      "type": "PREC_RIGHT",
      "value": 10,
      "content": {
        "type": "PATTERN",
        "value": "[0-9]+H[^/,)]+"
      }
    },
    "_io_arguments": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "unit_identifier"
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "unit_identifier"
                },
                {
                  "type": "STRING",
                  "value": ","
                },
                {
                  "type": "SYMBOL",
                  "name": "format_identifier"
                }
              ]
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "unit_identifier"
                },
                {
                  "type": "STRING",
                  "value": ","
                },
                {
                  "type": "SYMBOL",
                  "name": "format_identifier"
                },
                {
                  "type": "STRING",
                  "value": ","
                },
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "keyword_argument"
                    },
                    {
                      "type": "REPEAT",
                      "content": {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "STRING",
                            "value": ","
                          },
                          {
                            "type": "SYMBOL",
                            "name": "keyword_argument"
                          }
                        ]
                      }
                    }
                  ]
                }
              ]
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "unit_identifier"
                },
                {
                  "type": "STRING",
                  "value": ","
                },
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "keyword_argument"
                    },
                    {
                      "type": "REPEAT",
                      "content": {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "STRING",
                            "value": ","
                          },
                          {
                            "type": "SYMBOL",
                            "name": "keyword_argument"
                          }
                        ]
                      }
                    }
                  ]
                }
              ]
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "keyword_argument"
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "SYMBOL",
                        "name": "keyword_argument"
                      }
                    ]
                  }
                }
              ]
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "read_statement": {
      "type": "PREC",
      "value": 1,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SYMBOL",
            "name": "_simple_read_statement"
          },
          {
            "type": "SYMBOL",
            "name": "_parameterized_read_statement"
          }
        ]
      }
    },
    "_simple_read_statement": {
      "type": "PREC",
      "value": 1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "ALIAS",
            "content": {
              "type": "PATTERN",
              "value": "[rR][eE][aA][dD]"
            },
            "named": false,
            "value": "read"
          },
          {
            "type": "SYMBOL",
            "name": "format_identifier"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "SYMBOL",
                    "name": "input_item_list"
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "_parameterized_read_statement": {
      "type": "PREC",
      "value": 1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "ALIAS",
            "content": {
              "type": "PATTERN",
              "value": "[rR][eE][aA][dD]"
            },
            "named": false,
            "value": "read"
          },
          {
            "type": "SYMBOL",
            "name": "_io_arguments"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "input_item_list"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "print_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[pP][rR][iI][nN][tT]"
          },
          "named": false,
          "value": "print"
        },
        {
          "type": "SYMBOL",
          "name": "format_identifier"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": ","
                },
                {
                  "type": "SYMBOL",
                  "name": "output_item_list"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "open_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[oO][pP][eE][nN]"
          },
          "named": false,
          "value": "open"
        },
        {
          "type": "SYMBOL",
          "name": "_io_arguments"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "output_item_list"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "close_statement": {
      "type": "PREC",
      "value": 1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "ALIAS",
            "content": {
              "type": "PATTERN",
              "value": "[cC][lL][oO][sS][eE]"
            },
            "named": false,
            "value": "close"
          },
          {
            "type": "STRING",
            "value": "("
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "unit_identifier"
              },
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "unit_identifier"
                  },
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "SYMBOL",
                        "name": "keyword_argument"
                      },
                      {
                        "type": "REPEAT",
                        "content": {
                          "type": "SEQ",
                          "members": [
                            {
                              "type": "STRING",
                              "value": ","
                            },
                            {
                              "type": "SYMBOL",
                              "name": "keyword_argument"
                            }
                          ]
                        }
                      }
                    ]
                  }
                ]
              },
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "keyword_argument"
                  },
                  {
                    "type": "REPEAT",
                    "content": {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "STRING",
                          "value": ","
                        },
                        {
                          "type": "SYMBOL",
                          "name": "keyword_argument"
                        }
                      ]
                    }
                  }
                ]
              }
            ]
          },
          {
            "type": "STRING",
            "value": ")"
          }
        ]
      }
    },
    "write_statement": {
      "type": "PREC",
      "value": 1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "ALIAS",
            "content": {
              "type": "PATTERN",
              "value": "[wW][rR][iI][tT][eE]"
            },
            "named": false,
            "value": "write"
          },
          {
            "type": "SYMBOL",
            "name": "_io_arguments"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "STRING",
                "value": ","
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "output_item_list"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "inquire_statement": {
      "type": "PREC",
      "value": 1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "ALIAS",
            "content": {
              "type": "PATTERN",
              "value": "[iI][nN][qQ][uU][iI][rR][eE]"
            },
            "named": false,
            "value": "inquire"
          },
          {
            "type": "SYMBOL",
            "name": "_io_arguments"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "output_item_list"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "enum": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "enum_statement"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "enumerator_statement"
          }
        },
        {
          "type": "SYMBOL",
          "name": "end_enum_statement"
        },
        {
          "type": "SYMBOL",
          "name": "_end_of_statement"
        }
      ]
    },
    "enum_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[eE][nN][uU][mM]"
          },
          "named": false,
          "value": "enum"
        },
        {
          "type": "STRING",
          "value": ","
        },
        {
          "type": "SYMBOL",
          "name": "language_binding"
        }
      ]
    },
    "enumerator_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[eE][nN][uU][mM][eE][rR][aA][tT][oO][rR]"
          },
          "named": false,
          "value": "enumerator"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "::"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "identifier"
                },
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "identifier"
                    },
                    {
                      "type": "STRING",
                      "value": "="
                    },
                    {
                      "type": "CHOICE",
                      "members": [
                        {
                          "type": "SYMBOL",
                          "name": "number_literal"
                        },
                        {
                          "type": "SYMBOL",
                          "name": "unary_expression"
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "SYMBOL",
                        "name": "identifier"
                      },
                      {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "SYMBOL",
                            "name": "identifier"
                          },
                          {
                            "type": "STRING",
                            "value": "="
                          },
                          {
                            "type": "CHOICE",
                            "members": [
                              {
                                "type": "SYMBOL",
                                "name": "number_literal"
                              },
                              {
                                "type": "SYMBOL",
                                "name": "unary_expression"
                              }
                            ]
                          }
                        ]
                      }
                    ]
                  }
                ]
              }
            }
          ]
        }
      ]
    },
    "end_enum_statement": {
      "type": "ALIAS",
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SEQ",
            "members": [
              {
                "type": "PATTERN",
                "value": "[eE][nN][dD]"
              },
              {
                "type": "PATTERN",
                "value": "[eE][nN][uU][mM]"
              }
            ]
          },
          {
            "type": "PATTERN",
            "value": "[eE][nN][dD][eE][nN][uU][mM]"
          }
        ]
      },
      "named": false,
      "value": "endenum"
    },
    "unit_identifier": {
      "type": "PREC",
      "value": 1,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SYMBOL",
            "name": "number_literal"
          },
          {
            "type": "SYMBOL",
            "name": "_io_expressions"
          }
        ]
      }
    },
    "format_identifier": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "statement_label_reference"
        },
        {
          "type": "SYMBOL",
          "name": "_io_expressions"
        }
      ]
    },
    "_file_position_spec": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "unit_identifier"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "("
            },
            {
              "type": "SYMBOL",
              "name": "unit_identifier"
            },
            {
              "type": "STRING",
              "value": ","
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "keyword_argument"
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "SYMBOL",
                        "name": "keyword_argument"
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "STRING",
              "value": ")"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "("
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "keyword_argument"
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "SYMBOL",
                        "name": "keyword_argument"
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "STRING",
              "value": ")"
            }
          ]
        }
      ]
    },
    "file_position_statement": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "ALIAS",
              "content": {
                "type": "PATTERN",
                "value": "[bB][aA][cC][kK][sS][pP][aA][cC][eE]"
              },
              "named": false,
              "value": "backspace"
            },
            {
              "type": "SYMBOL",
              "name": "_file_position_spec"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "ALIAS",
              "content": {
                "type": "PATTERN",
                "value": "[eE][nN][dD][fF][iI][lL][eE]"
              },
              "named": false,
              "value": "endfile"
            },
            {
              "type": "SYMBOL",
              "name": "_file_position_spec"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "ALIAS",
              "content": {
                "type": "PATTERN",
                "value": "[rR][eE][wW][iI][nN][dD]"
              },
              "named": false,
              "value": "rewind"
            },
            {
              "type": "SYMBOL",
              "name": "_file_position_spec"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "ALIAS",
              "content": {
                "type": "PATTERN",
                "value": "[pP][aA][uU][sS][eE]"
              },
              "named": false,
              "value": "pause"
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "string_literal"
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          ]
        }
      ]
    },
    "_io_expressions": {
      "type": "PREC",
      "value": 1,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "STRING",
            "value": "*"
          },
          {
            "type": "SYMBOL",
            "name": "string_literal"
          },
          {
            "type": "SYMBOL",
            "name": "identifier"
          },
          {
            "type": "SYMBOL",
            "name": "derived_type_member_expression"
          },
          {
            "type": "SYMBOL",
            "name": "concatenation_expression"
          },
          {
            "type": "SYMBOL",
            "name": "math_expression"
          },
          {
            "type": "SYMBOL",
            "name": "parenthesized_expression"
          },
          {
            "type": "SYMBOL",
            "name": "call_expression"
          }
        ]
      }
    },
    "input_item_list": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "_expression"
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": ","
                },
                {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              ]
            }
          }
        ]
      }
    },
    "output_item_list": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "_expression"
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": ","
                },
                {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              ]
            }
          }
        ]
      }
    },
    "_expression": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "number_literal"
        },
        {
          "type": "SYMBOL",
          "name": "complex_literal"
        },
        {
          "type": "SYMBOL",
          "name": "string_literal"
        },
        {
          "type": "SYMBOL",
          "name": "boolean_literal"
        },
        {
          "type": "SYMBOL",
          "name": "array_literal"
        },
        {
          "type": "SYMBOL",
          "name": "null_literal"
        },
        {
          "type": "SYMBOL",
          "name": "identifier"
        },
        {
          "type": "SYMBOL",
          "name": "derived_type_member_expression"
        },
        {
          "type": "SYMBOL",
          "name": "logical_expression"
        },
        {
          "type": "SYMBOL",
          "name": "relational_expression"
        },
        {
          "type": "SYMBOL",
          "name": "concatenation_expression"
        },
        {
          "type": "SYMBOL",
          "name": "math_expression"
        },
        {
          "type": "SYMBOL",
          "name": "unary_expression"
        },
        {
          "type": "SYMBOL",
          "name": "parenthesized_expression"
        },
        {
          "type": "SYMBOL",
          "name": "call_expression"
        },
        {
          "type": "SYMBOL",
          "name": "implied_do_loop_expression"
        }
      ]
    },
    "parenthesized_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "SYMBOL",
          "name": "_expression"
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "derived_type_member_expression": {
      "type": "PREC_RIGHT",
      "value": 100,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "_expression"
          },
          {
            "type": "STRING",
            "value": "%"
          },
          {
            "type": "ALIAS",
            "content": {
              "type": "SYMBOL",
              "name": "identifier"
            },
            "named": true,
            "value": "type_member"
          }
        ]
      }
    },
    "logical_expression": {
      "type": "CHOICE",
      "members": [
        {
          "type": "PREC_LEFT",
          "value": 10,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "ALIAS",
                  "content": {
                    "type": "PATTERN",
                    "value": "\\.[oO][rR]\\."
                  },
                  "named": false,
                  "value": "\\.or\\."
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 20,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "ALIAS",
                  "content": {
                    "type": "PATTERN",
                    "value": "\\.[aA][nN][dD]\\."
                  },
                  "named": false,
                  "value": "\\.and\\."
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 5,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "ALIAS",
                  "content": {
                    "type": "PATTERN",
                    "value": "\\.[eE][qQ][vV]\\."
                  },
                  "named": false,
                  "value": "\\.eqv\\."
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 5,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "ALIAS",
                  "content": {
                    "type": "PATTERN",
                    "value": "\\.[nN][eE][qQ][vV]\\."
                  },
                  "named": false,
                  "value": "\\.neqv\\."
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 30,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "ALIAS",
                "content": {
                  "type": "PATTERN",
                  "value": "\\.[nN][oO][tT]\\."
                },
                "named": false,
                "value": "\\.not\\."
              },
              {
                "type": "SYMBOL",
                "name": "_expression"
              }
            ]
          }
        }
      ]
    },
    "relational_expression": {
      "type": "CHOICE",
      "members": [
        {
          "type": "PREC_LEFT",
          "value": 40,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "<"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 40,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "ALIAS",
                  "content": {
                    "type": "PATTERN",
                    "value": "\\.[lL][tT]\\."
                  },
                  "named": false,
                  "value": "\\.lt\\."
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 40,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": ">"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 40,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "ALIAS",
                  "content": {
                    "type": "PATTERN",
                    "value": "\\.[gG][tT]\\."
                  },
                  "named": false,
                  "value": "\\.gt\\."
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 40,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "<="
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 40,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "ALIAS",
                  "content": {
                    "type": "PATTERN",
                    "value": "\\.[lL][eE]\\."
                  },
                  "named": false,
                  "value": "\\.le\\."
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 40,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": ">="
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 40,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "ALIAS",
                  "content": {
                    "type": "PATTERN",
                    "value": "\\.[gG][eE]\\."
                  },
                  "named": false,
                  "value": "\\.ge\\."
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 40,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "=="
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 40,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "ALIAS",
                  "content": {
                    "type": "PATTERN",
                    "value": "\\.[eE][qQ]\\."
                  },
                  "named": false,
                  "value": "\\.eq\\."
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 40,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "/="
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 40,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "ALIAS",
                  "content": {
                    "type": "PATTERN",
                    "value": "\\.[nN][eE]\\."
                  },
                  "named": false,
                  "value": "\\.ne\\."
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              }
            ]
          }
        }
      ]
    },
    "concatenation_expression": {
      "type": "PREC_RIGHT",
      "value": 50,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "left",
            "content": {
              "type": "SYMBOL",
              "name": "_expression"
            }
          },
          {
            "type": "FIELD",
            "name": "operator",
            "content": {
              "type": "STRING",
              "value": "//"
            }
          },
          {
            "type": "FIELD",
            "name": "right",
            "content": {
              "type": "SYMBOL",
              "name": "_expression"
            }
          }
        ]
      }
    },
    "math_expression": {
      "type": "CHOICE",
      "members": [
        {
          "type": "PREC_LEFT",
          "value": 50,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "+"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 50,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "-"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 60,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "*"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 60,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "/"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 70,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "**"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 2,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "SYMBOL",
                  "name": "user_defined_operator"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              }
            ]
          }
        }
      ]
    },
    "unary_expression": {
      "type": "PREC_LEFT",
      "value": 90,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "operator",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "STRING",
                  "value": "-"
                },
                {
                  "type": "STRING",
                  "value": "+"
                },
                {
                  "type": "SYMBOL",
                  "name": "user_defined_operator"
                }
              ]
            }
          },
          {
            "type": "FIELD",
            "name": "argument",
            "content": {
              "type": "SYMBOL",
              "name": "_expression"
            }
          }
        ]
      }
    },
    "user_defined_operator": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "."
          },
          {
            "type": "PATTERN",
            "value": "[a-zA-Z]+"
          },
          {
            "type": "STRING",
            "value": "."
          }
        ]
      }
    },
    "call_expression": {
      "type": "PREC",
      "value": 80,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "_expression"
          },
          {
            "type": "REPEAT1",
            "content": {
              "type": "SYMBOL",
              "name": "argument_list"
            }
          }
        ]
      }
    },
    "implied_do_loop_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_expression"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "SYMBOL",
                    "name": "_expression"
                  }
                ]
              }
            }
          ]
        },
        {
          "type": "STRING",
          "value": ","
        },
        {
          "type": "SYMBOL",
          "name": "loop_control_expression"
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "argument_list": {
      "type": "PREC_DYNAMIC",
      "value": 1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "("
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "SYMBOL",
                        "name": "keyword_argument"
                      },
                      {
                        "type": "SYMBOL",
                        "name": "extent_specifier"
                      },
                      {
                        "type": "SYMBOL",
                        "name": "assumed_size"
                      },
                      {
                        "type": "SYMBOL",
                        "name": "assumed_rank"
                      },
                      {
                        "type": "SYMBOL",
                        "name": "_expression"
                      }
                    ]
                  },
                  {
                    "type": "REPEAT",
                    "content": {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "STRING",
                          "value": ","
                        },
                        {
                          "type": "CHOICE",
                          "members": [
                            {
                              "type": "SYMBOL",
                              "name": "keyword_argument"
                            },
                            {
                              "type": "SYMBOL",
                              "name": "extent_specifier"
                            },
                            {
                              "type": "SYMBOL",
                              "name": "assumed_size"
                            },
                            {
                              "type": "SYMBOL",
                              "name": "assumed_rank"
                            },
                            {
                              "type": "SYMBOL",
                              "name": "_expression"
                            }
                          ]
                        }
                      ]
                    }
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "STRING",
            "value": ")"
          }
        ]
      }
    },
    "keyword_argument": {
      "type": "PREC",
      "value": 1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "name",
            "content": {
              "type": "SYMBOL",
              "name": "identifier"
            }
          },
          {
            "type": "STRING",
            "value": "="
          },
          {
            "type": "FIELD",
            "name": "value",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_expression"
                },
                {
                  "type": "SYMBOL",
                  "name": "assumed_size"
                },
                {
                  "type": "SYMBOL",
                  "name": "assumed_shape"
                }
              ]
            }
          }
        ]
      }
    },
    "extent_specifier": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_expression"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ":"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_expression"
                },
                {
                  "type": "SYMBOL",
                  "name": "assumed_size"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": ":"
                },
                {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "assumed_size": {
      "type": "STRING",
      "value": "*"
    },
    "assumed_shape": {
      "type": "STRING",
      "value": ":"
    },
    "assumed_rank": {
      "type": "STRING",
      "value": ".."
    },
    "block_label_start_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          },
          "named": false,
          "value": "label"
        },
        {
          "type": "STRING",
          "value": ":"
        }
      ]
    },
    "_block_label": {
      "type": "ALIAS",
      "content": {
        "type": "SYMBOL",
        "name": "identifier"
      },
      "named": true,
      "value": "block_label"
    },
    "loop_control_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "identifier"
        },
        {
          "type": "STRING",
          "value": "="
        },
        {
          "type": "SYMBOL",
          "name": "_expression"
        },
        {
          "type": "STRING",
          "value": ","
        },
        {
          "type": "SYMBOL",
          "name": "_expression"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": ","
                },
                {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "array_literal": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_array_constructor_legacy"
        },
        {
          "type": "SYMBOL",
          "name": "_array_constructor_f2003"
        }
      ]
    },
    "_array_constructor_legacy": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "(/"
        },
        {
          "type": "SYMBOL",
          "name": "_ac_value_list"
        },
        {
          "type": "STRING",
          "value": "/)"
        }
      ]
    },
    "_array_constructor_f2003": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "["
        },
        {
          "type": "SYMBOL",
          "name": "_ac_value_list"
        },
        {
          "type": "STRING",
          "value": "]"
        }
      ]
    },
    "_type_spec": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_intrinsic_type"
            },
            {
              "type": "SYMBOL",
              "name": "derived_type"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "::"
        }
      ]
    },
    "_ac_value_list": {
      "type": "CHOICE",
      "members": [
        {
          "type": "FIELD",
          "name": "type",
          "content": {
            "type": "SYMBOL",
            "name": "_type_spec"
          }
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "FIELD",
                  "name": "type",
                  "content": {
                    "type": "SYMBOL",
                    "name": "_type_spec"
                  }
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_expression"
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "SYMBOL",
                        "name": "_expression"
                      }
                    ]
                  }
                }
              ]
            }
          ]
        }
      ]
    },
    "complex_literal": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "number_literal"
            },
            {
              "type": "SYMBOL",
              "name": "identifier"
            },
            {
              "type": "SYMBOL",
              "name": "unary_expression"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ","
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "number_literal"
            },
            {
              "type": "SYMBOL",
              "name": "identifier"
            },
            {
              "type": "SYMBOL",
              "name": "unary_expression"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "number_literal": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_integer_literal"
        },
        {
          "type": "SYMBOL",
          "name": "_float_literal"
        },
        {
          "type": "SYMBOL",
          "name": "_boz_literal"
        }
      ]
    },
    "boolean_literal": {
      "type": "TOKEN",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "ALIAS",
                "content": {
                  "type": "PATTERN",
                  "value": "\\.[tT][rR][uU][eE]\\."
                },
                "named": false,
                "value": "\\.true\\."
              },
              {
                "type": "ALIAS",
                "content": {
                  "type": "PATTERN",
                  "value": "\\.[fF][aA][lL][sS][eE]\\."
                },
                "named": false,
                "value": "\\.false\\."
              }
            ]
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": "_"
                  },
                  {
                    "type": "PATTERN",
                    "value": "\\w+"
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "null_literal": {
      "type": "PREC",
      "value": 1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "ALIAS",
            "content": {
              "type": "PATTERN",
              "value": "[nN][uU][lL][lL]"
            },
            "named": false,
            "value": "null"
          },
          {
            "type": "STRING",
            "value": "("
          },
          {
            "type": "STRING",
            "value": ")"
          }
        ]
      }
    },
    "preproc_file_line": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "#"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "\\d+"
          },
          "named": true,
          "value": "preproc_line_number"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "\"[^\"\\n]*\""
          },
          "named": true,
          "value": "preproc_filename"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "PATTERN",
              "value": "\\d+"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "_newline"
        }
      ]
    },
    "identifier": {
      "type": "CHOICE",
      "members": [
        {
          "type": "PATTERN",
          "value": "[a-zA-Z_]\\w*"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[bB][lL][oO][cC][kK]"
          },
          "named": false,
          "value": "block"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[bB][yY][tT][eE]"
          },
          "named": false,
          "value": "byte"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[cC][yY][cC][lL][eE]"
          },
          "named": false,
          "value": "cycle"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[dD][aA][tT][aA]"
          },
          "named": false,
          "value": "data"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[dD][oO][uU][bB][lL][eE]"
          },
          "named": false,
          "value": "double"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[eE][lL][sS][eE][iI][fF]"
          },
          "named": false,
          "value": "elseif"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[eE][nN][dD]"
          },
          "named": false,
          "value": "end"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[eE][nN][dD][iI][fF]"
          },
          "named": false,
          "value": "endif"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[eE][rR][rR][oO][rR]"
          },
          "named": false,
          "value": "error"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[eE][xX][iI][tT]"
          },
          "named": false,
          "value": "exit"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[fF][oO][rR][mM][aA][tT]"
          },
          "named": false,
          "value": "format"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[iI][fF]"
          },
          "named": false,
          "value": "if"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[iI][nN][qQ][uU][iI][rR][eE]"
          },
          "named": false,
          "value": "inquire"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[nN][uU][lL][lL]"
          },
          "named": false,
          "value": "null"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[rR][eE][aA][dD]"
          },
          "named": false,
          "value": "read"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[rR][eE][aA][lL]"
          },
          "named": false,
          "value": "real"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[sS][eE][lL][eE][cC][tT]"
          },
          "named": false,
          "value": "select"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[sS][tT][oO][pP]"
          },
          "named": false,
          "value": "stop"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[tT][aA][rR][gG][eE][tT]"
          },
          "named": false,
          "value": "target"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[vV][aA][lL][uU][eE]"
          },
          "named": false,
          "value": "value"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[wW][rR][iI][tT][eE]"
          },
          "named": false,
          "value": "write"
        }
      ]
    },
    "comment": {
      "type": "TOKEN",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "!"
          },
          {
            "type": "PATTERN",
            "value": ".*"
          }
        ]
      }
    },
    "_line_continuation": {
      "type": "STRING",
      "value": "&"
    },
    "_semicolon": {
      "type": "STRING",
      "value": ";"
    },
    "_newline": {
      "type": "STRING",
      "value": "\n"
    }
  },
  "extras": [
    {
      "type": "PATTERN",
      "value": "[ \\t\\r\\n]"
    },
    {
      "type": "SYMBOL",
      "name": "comment"
    },
    {
      "type": "SYMBOL",
      "name": "_line_continuation"
    },
    {
      "type": "SYMBOL",
      "name": "preproc_file_line"
    }
  ],
  "conflicts": [
    [
      "_expression",
      "complex_literal"
    ],
    [
      "_inline_if_statement",
      "_block_if_statement",
      "identifier"
    ],
    [
      "argument_list",
      "parenthesized_expression"
    ],
    [
      "case_statement"
    ],
    [
      "data_set",
      "_expression"
    ],
    [
      "data_value",
      "_expression"
    ],
    [
      "else_clause"
    ],
    [
      "elseif_clause",
      "identifier"
    ],
    [
      "elseif_clause"
    ],
    [
      "elsewhere_clause"
    ],
    [
      "format_statement",
      "identifier"
    ],
    [
      "interface_statement"
    ],
    [
      "intrinsic_type",
      "identifier"
    ],
    [
      "inquire_statement",
      "identifier"
    ],
    [
      "module_statement",
      "procedure_qualifier"
    ],
    [
      "null_literal",
      "identifier"
    ],
    [
      "procedure_declaration"
    ],
    [
      "rank_statement"
    ],
    [
      "stop_statement",
      "identifier"
    ],
    [
      "type_qualifier",
      "identifier"
    ],
    [
      "type_statement"
    ],
    [
      "translation_unit"
    ]
  ],
  "precedences": [],
  "externals": [
    {
      "type": "SYMBOL",
      "name": "_line_continuation"
    },
    {
      "type": "SYMBOL",
      "name": "_integer_literal"
    },
    {
      "type": "SYMBOL",
      "name": "_float_literal"
    },
    {
      "type": "SYMBOL",
      "name": "_boz_literal"
    },
    {
      "type": "SYMBOL",
      "name": "string_literal"
    },
    {
      "type": "SYMBOL",
      "name": "_end_of_statement"
    }
  ],
  "inline": [
    "_top_level_item",
    "_statement"
  ],
  "supertypes": [],
  "PREC": {
    "ASSIGNMENT": -10,
    "DEFAULT": 0,
    "DEFINED_OPERATOR": 2,
    "LOGICAL_EQUIV": 5,
    "LOGICAL_OR": 10,
    "LOGICAL_AND": 20,
    "LOGICAL_NOT": 30,
    "RELATIONAL": 40,
    "ADDITIVE": 50,
    "MULTIPLICATIVE": 60,
    "EXPONENT": 70,
    "CALL": 80,
    "UNARY": 90,
    "TYPE_MEMBER": 100
  }
}

