[flang-dev] Regarding main program structure
    Rajesh K Singh via flang-dev 
    flang-dev at lists.llvm.org
       
    Thu Oct 24 23:33:05 PDT 2019
    
    
  
Hello,
According to specification R1401, a Fortran main program *must* have an
“end statement” whereas other parts are optional.
// R1401 main-program ->
//         [program-stmt] [specification-part] [execution-part]
//         [internal-subprogram-part] end-program-stmt
Thus, the below case.f90 is a legitimate fortran program:
[user at localhost ~/F18]$ cat -n case.f90
     1  end  !only end-program-stmt is specified.
[user at localhost ~/F18]$
The implementation of MainProgram structure (“lib/parser/parse-tree.h”)
shows that only “ProgramStmt” and “InternalSubprogramPart” are optional.
struct MainProgram {
  TUPLE_CLASS_BOILERPLATE(MainProgram);
  std::tuple<std::optional<Statement<ProgramStmt>>, SpecificationPart,
      ExecutionPart, std::optional<InternalSubprogramPart>,
      Statement<EndProgramStmt>>
      t;
};
Why “SpecificationPart” and “ExecutionPart” are not implemented as optional
(std::optional), while these are optional similar to “ProgramStmt” and
“InternalSubprogramPart”?
Thanks in anticipation.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/flang-dev/attachments/20191025/d0b7e866/attachment.html>
    
    
More information about the flang-dev
mailing list