mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-01-14 12:12:07 +00:00
[flang] Support CONVERT= and DISPOSE= on INQUIRE
Original-commit: flang-compiler/f18@fbedd32376 Reviewed-on: https://github.com/flang-compiler/f18/pull/352 Tree-same-pre-rewrite: false
This commit is contained in:
parent
822810f017
commit
e0f76d2306
@ -45,10 +45,10 @@ Extensions, deletions, and legacy features supported by default
|
||||
* `+` and `-` before all primary expressions, e.g. `x*-y`
|
||||
* `.NOT. .NOT.` accepted
|
||||
* `NAME=` as synonym for `FILE=`
|
||||
* `DISPOSE=`
|
||||
* Data edit descriptors without width or other details
|
||||
* `D` lines in fixed form as comments or debug code
|
||||
* `CONVERT=` on the OPEN statement
|
||||
* `CONVERT=` on the OPEN and INQUIRE statements
|
||||
* `DISPOSE=` on the OPEN and INQUIRE statements
|
||||
* Leading semicolons are ignored before any statement that
|
||||
could have a label
|
||||
* The character `&` in column 1 in fixed form source is a variant form
|
||||
|
@ -570,6 +570,8 @@ R1205 connect-spec ->
|
||||
POSITION = scalar-default-char-expr | RECL = scalar-int-expr |
|
||||
ROUND = scalar-default-char-expr | SIGN = scalar-default-char-expr |
|
||||
STATUS = scalar-default-char-expr
|
||||
@ | CONVERT = scalar-default-char-expr
|
||||
| DISPOSE = scalar-default-char-expr
|
||||
R1206 file-name-expr -> scalar-default-char-expr
|
||||
R1207 iomsg-variable -> scalar-default-char-variable
|
||||
R1208 close-stmt -> CLOSE ( close-spec-list )
|
||||
@ -648,6 +650,8 @@ R1231 inquire-spec ->
|
||||
STREAM = scalar-default-char-variable |
|
||||
STATUS = scalar-default-char-variable |
|
||||
WRITE = scalar-default-char-variable
|
||||
@ | CONVERT = scalar-default-char-expr
|
||||
| DISPOSE = scalar-default-char-expr
|
||||
|
||||
R1301 format-stmt -> FORMAT format-specification
|
||||
R1302 format-specification ->
|
||||
|
@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2018, NVIDIA CORPORATION. All rights reserved.
|
||||
// Copyright (c) 2018-2019, NVIDIA CORPORATION. All rights reserved.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
|
@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2018, NVIDIA CORPORATION. All rights reserved.
|
||||
// Copyright (c) 2018-2019, NVIDIA CORPORATION. All rights reserved.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
|
@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2018, NVIDIA CORPORATION. All rights reserved.
|
||||
// Copyright (c) 2018-2019, NVIDIA CORPORATION. All rights reserved.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
|
@ -2434,6 +2434,8 @@ constexpr auto fileNameExpr{scalarDefaultCharExpr};
|
||||
// POSITION = scalar-default-char-expr | RECL = scalar-int-expr |
|
||||
// ROUND = scalar-default-char-expr | SIGN = scalar-default-char-expr |
|
||||
// STATUS = scalar-default-char-expr
|
||||
// @ | CONVERT = scalar-default-char-variable
|
||||
// @ | DISPOSE = scalar-default-char-variable
|
||||
constexpr auto statusExpr{construct<StatusExpr>(scalarDefaultCharExpr)};
|
||||
constexpr auto errLabel{construct<ErrLabel>(label)};
|
||||
|
||||
@ -2734,6 +2736,8 @@ TYPE_CONTEXT_PARSER("FLUSH statement"_en_US,
|
||||
// STREAM = scalar-default-char-variable |
|
||||
// STATUS = scalar-default-char-variable |
|
||||
// WRITE = scalar-default-char-variable
|
||||
// @ | CONVERT = scalar-default-char-variable
|
||||
// | DISPOSE = scalar-default-char-variable
|
||||
TYPE_PARSER(first(construct<InquireSpec>(maybe("UNIT ="_tok) >> fileUnitNumber),
|
||||
construct<InquireSpec>("FILE =" >> fileNameExpr),
|
||||
construct<InquireSpec>(
|
||||
@ -2849,7 +2853,15 @@ TYPE_PARSER(first(construct<InquireSpec>(maybe("UNIT ="_tok) >> fileUnitNumber),
|
||||
scalarDefaultCharVariable)),
|
||||
construct<InquireSpec>("WRITE =" >>
|
||||
construct<InquireSpec::CharVar>(pure(InquireSpec::CharVar::Kind::Write),
|
||||
scalarDefaultCharVariable))))
|
||||
scalarDefaultCharVariable)),
|
||||
extension<LanguageFeature::Convert>(construct<InquireSpec>(
|
||||
"CONVERT =" >> construct<InquireSpec::CharVar>(
|
||||
pure(InquireSpec::CharVar::Kind::Convert),
|
||||
scalarDefaultCharVariable))),
|
||||
extension<LanguageFeature::Dispose>(construct<InquireSpec>(
|
||||
"DISPOSE =" >> construct<InquireSpec::CharVar>(
|
||||
pure(InquireSpec::CharVar::Kind::Dispose),
|
||||
scalarDefaultCharVariable)))))
|
||||
|
||||
// R1230 inquire-stmt ->
|
||||
// INQUIRE ( inquire-spec-list ) |
|
||||
|
@ -2508,6 +2508,8 @@ using FileNameExpr = ScalarDefaultCharExpr;
|
||||
// POSITION = scalar-default-char-expr | RECL = scalar-int-expr |
|
||||
// ROUND = scalar-default-char-expr | SIGN = scalar-default-char-expr |
|
||||
// STATUS = scalar-default-char-expr
|
||||
// @ | CONVERT = scalar-default-char-variable
|
||||
// | DISPOSE = scalar-default-char-variable
|
||||
WRAPPER_CLASS(StatusExpr, ScalarDefaultCharExpr);
|
||||
WRAPPER_CLASS(ErrLabel, Label);
|
||||
|
||||
@ -2721,12 +2723,15 @@ WRAPPER_CLASS(FlushStmt, std::list<PositionOrFlushSpec>);
|
||||
// STATUS = scalar-default-char-variable |
|
||||
// UNFORMATTED = scalar-default-char-variable |
|
||||
// WRITE = scalar-default-char-variable
|
||||
// @ | CONVERT = scalar-default-char-variable
|
||||
// | DISPOSE = scalar-default-char-variable
|
||||
struct InquireSpec {
|
||||
UNION_CLASS_BOILERPLATE(InquireSpec);
|
||||
struct CharVar {
|
||||
ENUM_CLASS(Kind, Access, Action, Asynchronous, Blank, Decimal, Delim,
|
||||
Direct, Encoding, Form, Formatted, Iomsg, Name, Pad, Position, Read,
|
||||
Readwrite, Round, Sequential, Sign, Stream, Status, Unformatted, Write)
|
||||
Readwrite, Round, Sequential, Sign, Stream, Status, Unformatted, Write,
|
||||
/* extensions: */ Convert, Dispose)
|
||||
TUPLE_CLASS_BOILERPLATE(CharVar);
|
||||
std::tuple<Kind, ScalarDefaultCharVariable> t;
|
||||
};
|
||||
|
@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2018, NVIDIA CORPORATION. All rights reserved.
|
||||
// Copyright (c) 2018-2019, NVIDIA CORPORATION. All rights reserved.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
|
@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2018, NVIDIA CORPORATION. All rights reserved.
|
||||
// Copyright (c) 2018-2019, NVIDIA CORPORATION. All rights reserved.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
|
@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2018, NVIDIA CORPORATION. All rights reserved.
|
||||
// Copyright (c) 2018-2019, NVIDIA CORPORATION. All rights reserved.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
|
Loading…
x
Reference in New Issue
Block a user