diff --git a/Fortran-JS/src-api/Query.test.ts b/Fortran-JS/src-api/Query.test.ts index 8e6d4528..c36179e2 100644 --- a/Fortran-JS/src-api/Query.test.ts +++ b/Fortran-JS/src-api/Query.test.ts @@ -591,8 +591,6 @@ describe("Query", () => { lst.push(stmt.code); } - console.log(lst); - expect(lst.length).toBe(4); expect(lst[0]).toEqual('PROGRAM HELLO'); expect(lst[1]).toEqual('PRINT *, "Hello, World!"'); diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/FortranContext.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/FortranContext.java index 35681f85..202b726d 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/FortranContext.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/FortranContext.java @@ -63,6 +63,9 @@ public class FortranContext extends ADataClass { public final static DataKey> LAST_PARSED_FILE = KeyFactory .optional("lastParsedFile"); + public final static DataKey> LAST_PARSED_FILE_EXT = KeyFactory.optional("lastParsedFileExt"); + + public final static DataKey FIXED_FORM = KeyFactory.bool("fixedObject").setDefault(() -> false); /** * A DataStore with options from {@link FortranAstOptions}. @@ -85,5 +88,7 @@ public String toString() { return "FortranContext " + hashCode(); } - + public DataStore getFortranOptions() { + return get(FORTRAN_OPTIONS); + } } diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/FortranKeyword.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/FortranKeyword.java index c75ffe1b..060fff35 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/FortranKeyword.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/FortranKeyword.java @@ -6,12 +6,14 @@ public enum FortranKeyword { CONCURRENT, SUBROUTINE, FUNCTION, - WRITE, USE, + INTRINSIC, + NON_INTRINSIC, + ONLY, GOTO, EXTERNAL, - RETURN, STOP, + MODULE, // Execution statements PRINT, @@ -22,6 +24,22 @@ public enum FortranKeyword { ERROR, QUIET, CALL, + CONTINUE, + CONTAINS, + ALLOCATE, + DEALLOCATE, + RETURN, + OPEN, + ERR, + WRITE, + UNIT, + FMT, + NML, + REWIND, + NAMELIST, + READ, + WAIT, + CLOSE, // Conditional statements IF, @@ -39,11 +57,35 @@ public enum FortranKeyword { DOUBLE, PRECISION, DIMENSION, + COMPLEX, // Declarations PARAMETER, DATA, COMMON, + INTENT, + STAT, + LEN, + KIND, + BIND, + C, + NAME, + CDEFINED, + RESULT, + OPERATOR, + ASSIGNMENT, + FORMATTED, + UNFORMATTED, + IMPORT, + NONE, + ALL, + IMPLICIT, + TYPE, + CODIMENSION, + EXTENDS, + ABSTRACT, + INTERFACE, + PROCEDURE, OMP; diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/FortranKeywords.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/FortranKeywords.java index 81eb999c..da0dd78b 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/FortranKeywords.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/FortranKeywords.java @@ -20,4 +20,7 @@ public String get(FortranKeyword keyword) { return keyword.getKeyword(lowercase); } + public boolean isLowercase() { + return lowercase; + } } diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/FortranNodeFactory.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/FortranNodeFactory.java index cc797482..89cc206d 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/FortranNodeFactory.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/FortranNodeFactory.java @@ -3,18 +3,14 @@ import org.suikasoft.jOptions.Interfaces.DataStore; import org.suikasoft.jOptions.storedefinition.StoreDefinitions; import pt.up.fe.specs.fortran.ast.nodes.FortranNode; -import pt.up.fe.specs.fortran.ast.nodes.decl.ExprInitialization; import pt.up.fe.specs.fortran.ast.nodes.decl.LabelDecl; -import pt.up.fe.specs.fortran.ast.nodes.decl.ListInitialization; -import pt.up.fe.specs.fortran.ast.nodes.expr.Argument; -import pt.up.fe.specs.fortran.ast.nodes.expr.BinaryOperator; -import pt.up.fe.specs.fortran.ast.nodes.expr.Call; -import pt.up.fe.specs.fortran.ast.nodes.expr.DataRef; -import pt.up.fe.specs.fortran.ast.nodes.expr.Expr; -import pt.up.fe.specs.fortran.ast.nodes.expr.IntLiteral; -import pt.up.fe.specs.fortran.ast.nodes.expr.Literal; -import pt.up.fe.specs.fortran.ast.nodes.expr.StringLiteral; +import pt.up.fe.specs.fortran.ast.nodes.decl.NamedParameter; +import pt.up.fe.specs.fortran.ast.nodes.decl.init.ExprInitialization; +import pt.up.fe.specs.fortran.ast.nodes.decl.init.ListInitialization; +import pt.up.fe.specs.fortran.ast.nodes.expr.*; import pt.up.fe.specs.fortran.ast.nodes.expr.enums.BinaryOperatorKind; +import pt.up.fe.specs.fortran.ast.nodes.io.Format; +import pt.up.fe.specs.fortran.ast.nodes.io.StarFormat; import pt.up.fe.specs.fortran.ast.nodes.loops.LoopControl; import pt.up.fe.specs.fortran.ast.nodes.loops.RangeLoopControl; import pt.up.fe.specs.fortran.ast.nodes.omp.OmpBlockConstruct; @@ -26,13 +22,20 @@ import pt.up.fe.specs.fortran.ast.nodes.omp.enums.OmpClauseKind; import pt.up.fe.specs.fortran.ast.nodes.omp.enums.OmpDirectiveKind; import pt.up.fe.specs.fortran.ast.nodes.program.*; +import pt.up.fe.specs.fortran.ast.nodes.program.construct.*; +import pt.up.fe.specs.fortran.ast.nodes.program.unit.EndProgramStmt; +import pt.up.fe.specs.fortran.ast.nodes.program.unit.MainProgram; +import pt.up.fe.specs.fortran.ast.nodes.program.unit.ProgramStmt; +import pt.up.fe.specs.fortran.ast.nodes.program.unit.ProgramUnit; import pt.up.fe.specs.fortran.ast.nodes.stmt.*; +import pt.up.fe.specs.fortran.ast.nodes.stmt.implicit.IDEStmtImplicitAdapter; +import pt.up.fe.specs.fortran.ast.nodes.stmt.implicit.ISStmtImplicitAdapter; import pt.up.fe.specs.fortran.ast.nodes.stmt.loop.DoConstruct; import pt.up.fe.specs.fortran.ast.nodes.stmt.loop.DoStmt; import pt.up.fe.specs.fortran.ast.nodes.stmt.loop.EndDoStmt; -import pt.up.fe.specs.fortran.ast.nodes.utils.Format; +import pt.up.fe.specs.fortran.ast.nodes.stmt.usestmt.UseOnlyStmt; +import pt.up.fe.specs.fortran.ast.nodes.stmt.usestmt.UseRenameStmt; import pt.up.fe.specs.fortran.ast.nodes.utils.LabelRef; -import pt.up.fe.specs.fortran.ast.nodes.utils.Star; import pt.up.fe.specs.util.SpecsCheck; import pt.up.fe.specs.util.SpecsCollections; @@ -136,23 +139,33 @@ private void initComments(Stmt stmt) { stmt.set(Stmt.LEADING_COMMENTS, List.of()); } - public MainProgram mainProgram(String programName, List execution) { + public MainProgram mainProgram(String programName, List execution) { DataStore data = newDataStore(MainProgram.class); - data.set(MainProgram.NAME, Optional.ofNullable(programName)); var programStmt = newNode(ProgramStmt.class, Collections.emptyList()); + programStmt.set(ProgramStmt.PROGRAM_NAME, programName); initComments(programStmt); + + var specificationBlock = newNode(Specification.class, Collections.emptyList()); var executionBlock = execution(execution); + var endProgramStmt = newNode(EndProgramStmt.class, Collections.emptyList()); initComments(endProgramStmt); - return new MainProgram(data, List.of(programStmt, executionBlock, endProgramStmt)); + return new MainProgram(data, List.of(programStmt, specificationBlock, executionBlock, endProgramStmt)); } - public Execution execution(List statements) { - DataStore data = newDataStore(Execution.class); + public Execution execution(List constructs) { + SpecsCheck.checkArgument( + constructs.isEmpty() || !(constructs.get(constructs.size() - 1) instanceof ExecConstruct), + () -> "The last construct of Execution must be of type ExecConstruct" + ); + + return newNode(Execution.class, constructs); + } - return new Execution(data, statements); + public ExecBlock execBlock(List constructs) { + return newNode(ExecBlock.class, constructs); } // STMT @@ -206,26 +219,16 @@ public StringLiteral stringLiteral(String literal) { public StringLiteral stringLiteral(String literal, String kindParam) { DataStore data = newDataStore(StringLiteral.class); - data.set(Literal.SOURCE_LITERAL, literal); + data.set(StringLiteral.CONTENTS, literal); return new StringLiteral(data, Collections.emptyList()); } // UTIL - public Format format(FortranNode formatType) { - // Check if node is of allowed type - if (!(formatType instanceof Star)) { - throw new RuntimeException("Unsupported type for Format child: " + formatType.getClass()); - } - + public StarFormat starFormat() { DataStore data = newDataStore(Format.class); - return new Format(data, List.of(formatType)); - } - - public Star star() { - DataStore data = newDataStore(Star.class); - return new Star(data, Collections.emptyList()); + return new StarFormat(data, List.of()); } public LabelRef labelRef(LabelDecl labelDecl) { @@ -286,12 +289,22 @@ public DataRef dataRef(String name) { return newNode; } - public UseStmt useStmt(String moduleName) { - DataStore data = newDataStore(UseStmt.class); + public UseRenameStmt useRenameStmt(String moduleName) { + DataStore data = newDataStore(UseRenameStmt.class); - UseStmt newNode = new UseStmt(data, Collections.emptyList()); + UseRenameStmt newNode = new UseRenameStmt(data, Collections.emptyList()); - newNode.set(UseStmt.NAME, moduleName); + newNode.set(UseRenameStmt.NAME, moduleName); + + return newNode; + } + + public UseOnlyStmt useOnlyStmt(String moduleName) { + DataStore data = newDataStore(UseOnlyStmt.class); + + UseOnlyStmt newNode = new UseOnlyStmt(data, Collections.emptyList()); + + newNode.set(UseOnlyStmt.NAME, moduleName); return newNode; } @@ -299,7 +312,7 @@ public UseStmt useStmt(String moduleName) { public OmpReductionClause ompReductionClause(BinaryOperatorKind operator, List refs) { DataStore data = newDataStore(OmpReductionClause.class); - OmpReductionClause newNode= new OmpReductionClause(data, refs); + OmpReductionClause newNode = new OmpReductionClause(data, refs); newNode.set(OmpReductionClause.KIND, OmpClauseKind.REDUCTION); @@ -312,8 +325,7 @@ public IntLiteral intLiteral(int value) { DataStore data = newDataStore(IntLiteral.class); IntLiteral newNode = new IntLiteral(data, Collections.emptyList()); - - newNode.set(IntLiteral.SOURCE_LITERAL, Integer.toString(value)); + newNode.set(IntLiteral.SOURCE, Integer.toString(value)); return newNode; } @@ -364,4 +376,68 @@ public OmpOrderedClause ompOrderedClause(int value) { return newNode; } + + public NamedParameter namedParameter(String name) { + var data = newDataStore(NamedParameter.class); + + var node = new NamedParameter(data, Collections.emptyList()); + node.set(NamedParameter.NAME, name); + + return node; + } + + public DeclStmtAdapter declStmtAdapter(DeclStmt declStmt) { + return newNode(DeclStmtAdapter.class, List.of(declStmt)); + } + + public IDEStmtDeclAdapter ideStmtDeclAdapter(IDEStmt ideStmt) { + return newNode(IDEStmtDeclAdapter.class, List.of(ideStmt)); + } + + public SpecStmtAdapter specStmtAdapter(SpecStmt specStmt) { + return newNode(SpecStmtAdapter.class, List.of(specStmt)); + } + + public DirectiveSpecAdapter directiveSpecAdapter(CompilerDirective compilerDirective) { + return newNode(DirectiveSpecAdapter.class, List.of(compilerDirective)); + } + + public ISStmtSpecAdapter isStmtSpecAdapter(ISStmt isStmt) { + return newNode(ISStmtSpecAdapter.class, List.of(isStmt)); + } + + private T withInfoOf(T dest, Stmt source) { + dest.set(Stmt.LEADING_COMMENTS, source.getLeadingComments()); + dest.set(Stmt.TRAILING_COMMENT, source.getTrailingComment()); + source.getLabel().ifPresent(label -> dest.addChild(0, label)); + + return dest; + } + + public IDEStmtImplicitAdapter ideStmtImplicitAdapter(IDEStmt ideStmt) { + return withInfoOf(newNode(IDEStmtImplicitAdapter.class, List.of(ideStmt)), ideStmt); + } + + public ISStmtImplicitAdapter isStmtImplicitAdapter(ISStmt isStmt) { + return withInfoOf(newNode(ISStmtImplicitAdapter.class, List.of(isStmt)), isStmt); + } + + public ActionStmtAdapter actionStmtAdapter(ActionStmt actionStmt) { + return newNode(ActionStmtAdapter.class, List.of(actionStmt)); + } + + public IDEStmtExecAdapter ideStmtExecAdapter(IDEStmt ideStmt) { + return newNode(IDEStmtExecAdapter.class, List.of(ideStmt)); + } + + public DirectiveExecAdapter directiveExecAdapter(CompilerDirective directive) { + return newNode(DirectiveExecAdapter.class, List.of(directive)); + } + + public NamedProcDesignator namedProcDesignator(String name) { + var data = newDataStore(NamedProcDesignator.class); + data.set(NamedProcDesignator.NAME, name); + + return new NamedProcDesignator(data, List.of()); + } } diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/FortranNode.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/FortranNode.java index eea02505..3cb862a2 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/FortranNode.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/FortranNode.java @@ -110,6 +110,9 @@ public FortranNode copy(boolean keepId) { return newNode; } + public FortranContext getContext() { + return get(CONTEXT); + } public String getCode() { PrintOnce.info("getCode() not implemented for nodes of type " + getClass()); @@ -129,6 +132,20 @@ protected String keyword(FortranKeyword keyword) { return get(CONTEXT).get(FortranContext.FORTRAN_KEYWORDS).get(keyword); } + protected String encase(String code) { + var lowercase = get(CONTEXT).get(FortranContext.FORTRAN_KEYWORDS).isLowercase(); + return lowercase ? code.toLowerCase() : code.toUpperCase(); + } + + // TODO(Process-ing): Remove the need to use this + protected boolean fixedForm() { + return getContext().get(FortranContext.FIXED_FORM); + } + + protected String getCommentStarter() { + return fixedForm() ? "C" : "!"; + } + public FortranNodeFactory getFactory() { return get(FortranNode.CONTEXT).get(FortranContext.FACTORY); } @@ -144,6 +161,7 @@ public FortranNode insert(Position position, FortranNode newNode) { return newNode; } + @Deprecated public FortranNode insert(Position position, String code) { // By default, transforms code into a literal statement. // This might need to evolve in the future, depending on where the code is inserted @@ -153,9 +171,14 @@ public FortranNode insert(Position position, String code) { } public String indent(String code) { + var fixedForm = getContext().get(FortranContext.FIXED_FORM); + if (fixedForm) { // We will not indent code in fixed form, to prevent using too many columns + return code; + } + return StringLines.getLines(code).stream() - .map(line -> tab() + line) - .collect(Collectors.joining(ln())); + .map(line -> tab() + line) + .collect(Collectors.joining(ln())); } diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/alloc/Allocation.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/alloc/Allocation.java index 16c9996c..95a83043 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/alloc/Allocation.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/alloc/Allocation.java @@ -3,7 +3,7 @@ import org.suikasoft.jOptions.Interfaces.DataStore; import pt.up.fe.specs.fortran.ast.nodes.FortranNode; import pt.up.fe.specs.fortran.ast.nodes.expr.DataRef; -import pt.up.fe.specs.fortran.ast.nodes.type.shapes.AllocateShapeSpecification; +import pt.up.fe.specs.fortran.ast.nodes.specification.shape.ExplicitShape; import java.util.Collection; import java.util.List; @@ -18,8 +18,8 @@ public DataRef getRef() { return getChild(DataRef.class); } - public List getShapes() { - return getChildrenOf(AllocateShapeSpecification.class); + public List getShapes() { + return getChildrenOf(ExplicitShape.class); } public List getOptions() { @@ -28,18 +28,13 @@ public List getOptions() { @Override public String getCode() { - StringBuilder code = new StringBuilder(); + var refCode = getRef().getCode(); - code.append(getRef().getCode()).append("("); - - code.append(getShapes() + var shapesCode = getShapes() .stream() - .map(AllocateShapeSpecification::getCode) - .collect(Collectors.joining(", ")) - ); - - code.append(")"); + .map(ExplicitShape::getCode) + .collect(Collectors.joining(", ")); - return code.toString(); + return refCode + "(" + shapesCode + ")"; } } diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/alloc/ExprAllocOption.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/alloc/ExprAllocOption.java new file mode 100644 index 00000000..3acb1e99 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/alloc/ExprAllocOption.java @@ -0,0 +1,31 @@ +package pt.up.fe.specs.fortran.ast.nodes.alloc; + +import org.suikasoft.jOptions.Datakey.DataKey; +import org.suikasoft.jOptions.Datakey.KeyFactory; +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.alloc.enums.ExprAllocOptionKind; +import pt.up.fe.specs.fortran.ast.nodes.expr.Expr; + +import java.util.Collection; + +public class ExprAllocOption extends AllocOption { + public static final DataKey KIND = KeyFactory.enumeration("kind", ExprAllocOptionKind.class); + + public ExprAllocOption(DataStore data, Collection children) { + super(data, children); + } + + public ExprAllocOptionKind getKind() { + return get(KIND); + } + + public Expr getExpr() { + return getChild(Expr.class, 0); + } + + @Override + public String getCode() { + return encase(getKind().name()) + "=" + getExpr().getCode(); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/alloc/StatVariable.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/alloc/StatVariable.java deleted file mode 100644 index bbeb3e1c..00000000 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/alloc/StatVariable.java +++ /dev/null @@ -1,22 +0,0 @@ -package pt.up.fe.specs.fortran.ast.nodes.alloc; - -import org.suikasoft.jOptions.Interfaces.DataStore; -import pt.up.fe.specs.fortran.ast.nodes.FortranNode; -import pt.up.fe.specs.fortran.ast.nodes.expr.DataRef; - -import java.util.Collection; - -public class StatVariable extends AllocOption { - public StatVariable(DataStore data, Collection children) { - super(data, children); - } - - public DataRef getRef() { - return getChild(DataRef.class); - } - - @Override - public String getCode() { - return "STAT=" + getRef().getCode(); - } -} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/alloc/VarAllocOption.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/alloc/VarAllocOption.java new file mode 100644 index 00000000..0ba63307 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/alloc/VarAllocOption.java @@ -0,0 +1,32 @@ +package pt.up.fe.specs.fortran.ast.nodes.alloc; + +import org.suikasoft.jOptions.Datakey.DataKey; +import org.suikasoft.jOptions.Datakey.KeyFactory; +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.FortranKeyword; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.alloc.enums.VarAllocOptionKind; +import pt.up.fe.specs.fortran.ast.nodes.decl.Variable; + +import java.util.Collection; + +public class VarAllocOption extends AllocOption { + public static final DataKey KIND = KeyFactory.enumeration("kind", VarAllocOptionKind.class); + + public VarAllocOption(DataStore data, Collection children) { + super(data, children); + } + + public VarAllocOptionKind getKind() { + return get(KIND); + } + + public Variable getVariable() { + return getChild(Variable.class); + } + + @Override + public String getCode() { + return encase(getKind().name()) + "=" + getVariable().getCode(); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/alloc/enums/ExprAllocOptionKind.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/alloc/enums/ExprAllocOptionKind.java new file mode 100644 index 00000000..27aa8390 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/alloc/enums/ExprAllocOptionKind.java @@ -0,0 +1,7 @@ +package pt.up.fe.specs.fortran.ast.nodes.alloc.enums; + +public enum ExprAllocOptionKind { + MOLD, + SOURCE, + STREAM; +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/alloc/enums/VarAllocOptionKind.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/alloc/enums/VarAllocOptionKind.java new file mode 100644 index 00000000..e5ebc5c1 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/alloc/enums/VarAllocOptionKind.java @@ -0,0 +1,7 @@ +package pt.up.fe.specs.fortran.ast.nodes.alloc.enums; + +public enum VarAllocOptionKind { + ERRMSG, + STAT, + PINNED; +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/DesignatorVariable.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/DesignatorVariable.java new file mode 100644 index 00000000..fbee9642 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/DesignatorVariable.java @@ -0,0 +1,22 @@ +package pt.up.fe.specs.fortran.ast.nodes.decl; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.expr.Designator; + +import java.util.Collection; + +public class DesignatorVariable extends Variable { + public DesignatorVariable(DataStore data, Collection children) { + super(data, children); + } + + public Designator getDesignator() { + return getChild(Designator.class, 0); + } + + @Override + public String getCode() { + return getDesignator().getCode(); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/EntityDecl.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/EntityDecl.java index 1494cb8c..8a4901b4 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/EntityDecl.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/EntityDecl.java @@ -4,8 +4,9 @@ import org.suikasoft.jOptions.Datakey.KeyFactory; import org.suikasoft.jOptions.Interfaces.DataStore; import pt.up.fe.specs.fortran.ast.nodes.FortranNode; -import pt.up.fe.specs.fortran.ast.nodes.specification.ArraySpecification; -import pt.up.fe.specs.fortran.ast.nodes.type.FortranType; +import pt.up.fe.specs.fortran.ast.nodes.decl.init.Initialization; +import pt.up.fe.specs.fortran.ast.nodes.specification.shape.ArraySpec; +import pt.up.fe.specs.fortran.ast.nodes.type.decltype.DeclType; import java.util.Collection; import java.util.Optional; @@ -27,16 +28,16 @@ public EntityDecl(DataStore data, Collection children) { } - public FortranType getType() { - return getChild(FortranType.class, 0); + public DeclType getType() { + return getChild(DeclType.class, 0); } public Optional getInitialization() { return getChildOf(Initialization.class); } - public Optional getArraySpec() { - return getChildOf(ArraySpecification.class); + public Optional getArraySpec() { + return getChildOf(ArraySpec.class); } diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/FunctionRefVariable.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/FunctionRefVariable.java new file mode 100644 index 00000000..d99fa29f --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/FunctionRefVariable.java @@ -0,0 +1,13 @@ +package pt.up.fe.specs.fortran.ast.nodes.decl; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; + +// TODO(Process-ing): Develop and use this node +public class FunctionRefVariable extends Variable { + public FunctionRefVariable(DataStore data, Collection children) { + super(data, children); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/KindSelector.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/KindSelector.java index 3ff3d8ca..65da48b8 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/KindSelector.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/KindSelector.java @@ -8,14 +8,14 @@ import java.util.Collection; public class KindSelector extends FortranNode { - public static final DataKey VALUE = KeyFactory.integer("value"); + public static final DataKey VALUE = KeyFactory.string("value"); public static final DataKey LEGACY = KeyFactory.bool("legacy"); public KindSelector(DataStore data, Collection children) { super(data, children); } - public Integer getValue() { + public String getValue() { return get(VALUE); } diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/LabelDecl.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/LabelDecl.java index 79b902e3..9996f1a5 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/LabelDecl.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/LabelDecl.java @@ -26,6 +26,10 @@ public LabelDecl(DataStore data, Collection children) { super(data, children); } + public Integer getValue() { + return get(LABEL); + } + @Override public String getCode() { return get(LABEL).toString(); diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/NamedParameter.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/NamedParameter.java new file mode 100644 index 00000000..05ab3746 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/NamedParameter.java @@ -0,0 +1,25 @@ +package pt.up.fe.specs.fortran.ast.nodes.decl; + +import org.suikasoft.jOptions.Datakey.DataKey; +import org.suikasoft.jOptions.Datakey.KeyFactory; +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; + +public class NamedParameter extends Parameter { + public static final DataKey NAME = KeyFactory.string("name"); + + public NamedParameter(DataStore data, Collection children) { + super(data, children); + } + + public String getName() { + return get(NAME); + } + + @Override + public String getCode() { + return getName(); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/Parameter.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/Parameter.java new file mode 100644 index 00000000..92211e02 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/Parameter.java @@ -0,0 +1,14 @@ +package pt.up.fe.specs.fortran.ast.nodes.decl; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; + +/// Maps to the DummyArg node in the Flang representation +public abstract class Parameter extends FortranNode { + public Parameter(DataStore data, Collection children) { + super(data, children); + } +} + diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/utils/Star.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/StarParameter.java similarity index 54% rename from FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/utils/Star.java rename to FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/StarParameter.java index 7e080120..8c34d449 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/utils/Star.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/StarParameter.java @@ -1,16 +1,12 @@ -package pt.up.fe.specs.fortran.ast.nodes.utils; +package pt.up.fe.specs.fortran.ast.nodes.decl; import org.suikasoft.jOptions.Interfaces.DataStore; import pt.up.fe.specs.fortran.ast.nodes.FortranNode; import java.util.Collection; -/** - * Represents * in R1215 format - */ -public class Star extends FortranNode { - - public Star(DataStore data, Collection children) { +public class StarParameter extends Parameter { + public StarParameter(DataStore data, Collection children) { super(data, children); } diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/DummyArgumentDecl.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/Variable.java similarity index 60% rename from FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/DummyArgumentDecl.java rename to FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/Variable.java index 6138ebf3..b7dd0f71 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/DummyArgumentDecl.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/Variable.java @@ -5,8 +5,8 @@ import java.util.Collection; -public class DummyArgumentDecl extends EntityDecl { - public DummyArgumentDecl(DataStore data, Collection children) { +public abstract class Variable extends FortranNode { + public Variable(DataStore data, Collection children) { super(data, children); } } diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/component/ComponentDecl.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/component/ComponentDecl.java new file mode 100644 index 00000000..a634074c --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/component/ComponentDecl.java @@ -0,0 +1,54 @@ +package pt.up.fe.specs.fortran.ast.nodes.decl.component; + +import org.suikasoft.jOptions.Datakey.DataKey; +import org.suikasoft.jOptions.Datakey.KeyFactory; +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.decl.init.Initialization; +import pt.up.fe.specs.fortran.ast.nodes.specification.coshape.CoarraySpec; +import pt.up.fe.specs.fortran.ast.nodes.specification.shape.ComponentArraySpec; +import pt.up.fe.specs.fortran.ast.nodes.type.lenselector.CharLenSelector; +import pt.up.fe.specs.fortran.ast.nodes.type.lenselector.LenSelector; + +import java.util.Collection; +import java.util.Optional; + +public class ComponentDecl extends FortranNode { + public static final DataKey COMPONENT_NAME = KeyFactory.string("component_name"); + + public ComponentDecl(DataStore data, Collection children) { + super(data, children); + } + + public String getComponentName() { + return get(COMPONENT_NAME); + } + + public Optional getArraySpec() { + return getChildOf(ComponentArraySpec.class); + } + + public Optional getCoarraySpec() { + return getChildOf(CoarraySpec.class); + } + + public Optional getLenSelector() { + return getChildOf(CharLenSelector.class); + } + + public Optional getInitialization() { + return getChildOf(Initialization.class); + } + + @Override + public String getCode() { + var name = getComponentName(); + + var arraySpecCode = getArraySpec().map(ComponentArraySpec::getCode).orElse(""); + var coarraySpecCode = getCoarraySpec().map(CoarraySpec::getCode).orElse(""); + var lenSelectorCode = getLenSelector().map(LenSelector::getCode).orElse(""); + var initializationCode = getInitialization().map(Initialization::getCode).orElse(""); + + return name + arraySpecCode + coarraySpecCode + lenSelectorCode + initializationCode; + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/component/attr/AccessComponentAttr.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/component/attr/AccessComponentAttr.java new file mode 100644 index 00000000..45ebc5eb --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/component/attr/AccessComponentAttr.java @@ -0,0 +1,26 @@ +package pt.up.fe.specs.fortran.ast.nodes.decl.component.attr; + +import org.suikasoft.jOptions.Datakey.DataKey; +import org.suikasoft.jOptions.Datakey.KeyFactory; +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.specification.enums.AccessKind; + +import java.util.Collection; + +public class AccessComponentAttr extends ComponentAttr { + public static final DataKey ACCESS_KIND = KeyFactory.enumeration("access_kind", AccessKind.class); + + public AccessComponentAttr(DataStore data, Collection children) { + super(data, children); + } + + public AccessKind getAccessKind() { + return get(ACCESS_KIND); + } + + @Override + public String getCode() { + return encase(getAccessKind().name()); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/component/attr/CodimComponentAttr.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/component/attr/CodimComponentAttr.java new file mode 100644 index 00000000..025a69f6 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/component/attr/CodimComponentAttr.java @@ -0,0 +1,23 @@ +package pt.up.fe.specs.fortran.ast.nodes.decl.component.attr; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.FortranKeyword; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.specification.coshape.CoarraySpec; + +import java.util.Collection; + +public class CodimComponentAttr extends ComponentAttr { + public CodimComponentAttr(DataStore data, Collection children) { + super(data, children); + } + + public CoarraySpec getCoarraySpec() { + return getChild(CoarraySpec.class, 0); + } + + @Override + public String getCode() { + return keyword(FortranKeyword.CODIMENSION) + getCoarraySpec().getCode(); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/component/attr/ComponentAttr.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/component/attr/ComponentAttr.java new file mode 100644 index 00000000..ea76620c --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/component/attr/ComponentAttr.java @@ -0,0 +1,12 @@ +package pt.up.fe.specs.fortran.ast.nodes.decl.component.attr; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; + +public abstract class ComponentAttr extends FortranNode { + public ComponentAttr(DataStore data, Collection children) { + super(data, children); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/component/attr/DimComponentAttr.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/component/attr/DimComponentAttr.java new file mode 100644 index 00000000..719677b4 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/component/attr/DimComponentAttr.java @@ -0,0 +1,23 @@ +package pt.up.fe.specs.fortran.ast.nodes.decl.component.attr; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.FortranKeyword; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.specification.shape.ComponentArraySpec; + +import java.util.Collection; + +public class DimComponentAttr extends ComponentAttr { + public DimComponentAttr(DataStore data, Collection children) { + super(data, children); + } + + protected ComponentArraySpec getArraySpec() { + return getChild(ComponentArraySpec.class, 0); + } + + @Override + public String getCode() { + return keyword(FortranKeyword.DIMENSION) + getArraySpec().getCode(); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/component/attr/OtherComponentAttr.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/component/attr/OtherComponentAttr.java new file mode 100644 index 00000000..168aa63e --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/component/attr/OtherComponentAttr.java @@ -0,0 +1,26 @@ +package pt.up.fe.specs.fortran.ast.nodes.decl.component.attr; + +import org.suikasoft.jOptions.Datakey.DataKey; +import org.suikasoft.jOptions.Datakey.KeyFactory; +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.decl.enums.ComponentAttrKind; + +import java.util.Collection; + +public class OtherComponentAttr extends ComponentAttr { + public static final DataKey KIND = KeyFactory.enumeration("kind", ComponentAttrKind.class); + + public OtherComponentAttr(DataStore data, Collection children) { + super(data, children); + } + + public ComponentAttrKind getKind() { + return get(KIND); + } + + @Override + public String getCode() { + return encase(getKind().name()); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/enums/ComponentAttrKind.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/enums/ComponentAttrKind.java new file mode 100644 index 00000000..ee71811e --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/enums/ComponentAttrKind.java @@ -0,0 +1,16 @@ +package pt.up.fe.specs.fortran.ast.nodes.decl.enums; + +public enum ComponentAttrKind { + ALLOCATABLE, + CONTIGUOUS, + POINTER, + + // CUDA + CONSTANT, + DEVICE, + MANAGED, + PINNED, + SHARED, + TEXTURE, + UNIFIED; +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/enums/ProcAttrKind.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/enums/ProcAttrKind.java new file mode 100644 index 00000000..0d6d2fb4 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/enums/ProcAttrKind.java @@ -0,0 +1,8 @@ +package pt.up.fe.specs.fortran.ast.nodes.decl.enums; + +public enum ProcAttrKind { + OPTIONAL, + POINTER, + PROTECTED, + SAVE; +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/init/DataTargetInitialization.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/init/DataTargetInitialization.java new file mode 100644 index 00000000..d5391a82 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/init/DataTargetInitialization.java @@ -0,0 +1,22 @@ +package pt.up.fe.specs.fortran.ast.nodes.decl.init; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.expr.Designator; + +import java.util.Collection; + +public class DataTargetInitialization extends Initialization { + public DataTargetInitialization(DataStore data, Collection children) { + super(data, children); + } + + public Designator getInitialDataTarget() { + return getChild(Designator.class, 0); + } + + @Override + public String getCode() { + return " => " + getInitialDataTarget().getCode(); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/ExprInitialization.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/init/ExprInitialization.java similarity index 91% rename from FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/ExprInitialization.java rename to FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/init/ExprInitialization.java index 2e36e646..dd3d80ce 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/ExprInitialization.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/init/ExprInitialization.java @@ -1,4 +1,4 @@ -package pt.up.fe.specs.fortran.ast.nodes.decl; +package pt.up.fe.specs.fortran.ast.nodes.decl.init; import org.suikasoft.jOptions.Interfaces.DataStore; import pt.up.fe.specs.fortran.ast.nodes.FortranNode; diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/Initialization.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/init/Initialization.java similarity index 86% rename from FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/Initialization.java rename to FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/init/Initialization.java index b7ec0db2..0747a22f 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/Initialization.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/init/Initialization.java @@ -1,4 +1,4 @@ -package pt.up.fe.specs.fortran.ast.nodes.decl; +package pt.up.fe.specs.fortran.ast.nodes.decl.init; import org.suikasoft.jOptions.Interfaces.DataStore; import pt.up.fe.specs.fortran.ast.nodes.FortranNode; diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/ListInitialization.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/init/ListInitialization.java similarity index 86% rename from FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/ListInitialization.java rename to FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/init/ListInitialization.java index 022ed80d..d109df89 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/ListInitialization.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/init/ListInitialization.java @@ -1,7 +1,8 @@ -package pt.up.fe.specs.fortran.ast.nodes.decl; +package pt.up.fe.specs.fortran.ast.nodes.decl.init; import org.suikasoft.jOptions.Interfaces.DataStore; import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.decl.DataStmtValue; import java.util.Collection; import java.util.List; diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/init/NameProcPointerInit.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/init/NameProcPointerInit.java new file mode 100644 index 00000000..8c6e7a00 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/init/NameProcPointerInit.java @@ -0,0 +1,25 @@ +package pt.up.fe.specs.fortran.ast.nodes.decl.init; + +import org.suikasoft.jOptions.Datakey.DataKey; +import org.suikasoft.jOptions.Datakey.KeyFactory; +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; + +public class NameProcPointerInit extends ProcPointerInit { + public static final DataKey NAME = KeyFactory.string("name"); + + public NameProcPointerInit(DataStore data, Collection children) { + super(data, children); + } + + public String getName() { + return get(NAME); + } + + @Override + public String getCode() { + return " => " + getName(); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/init/NullInitialization.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/init/NullInitialization.java new file mode 100644 index 00000000..72c9b4ea --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/init/NullInitialization.java @@ -0,0 +1,22 @@ +package pt.up.fe.specs.fortran.ast.nodes.decl.init; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.expr.NullInit; + +import java.util.Collection; + +public class NullInitialization extends Initialization { + public NullInitialization(DataStore data, Collection children) { + super(data, children); + } + + public NullInit getNullInit() { + return getChild(NullInit.class, 0); + } + + @Override + public String getCode() { + return " => " + getNullInit().getCode(); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/init/NullProcPointerInit.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/init/NullProcPointerInit.java new file mode 100644 index 00000000..0989bdb7 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/init/NullProcPointerInit.java @@ -0,0 +1,22 @@ +package pt.up.fe.specs.fortran.ast.nodes.decl.init; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.expr.NullInit; + +import java.util.Collection; + +public class NullProcPointerInit extends ProcPointerInit { + public NullProcPointerInit(DataStore data, Collection children) { + super(data, children); + } + + public NullInit getNullInit() { + return getChild(NullInit.class, 0); + } + + @Override + public String getCode() { + return " => " + getNullInit().getCode(); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/init/ProcPointerInit.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/init/ProcPointerInit.java new file mode 100644 index 00000000..6df0a59a --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/init/ProcPointerInit.java @@ -0,0 +1,12 @@ +package pt.up.fe.specs.fortran.ast.nodes.decl.init; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; + +public abstract class ProcPointerInit extends FortranNode { + public ProcPointerInit(DataStore data, Collection children) { + super(data, children); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/proc/ProcDecl.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/proc/ProcDecl.java new file mode 100644 index 00000000..c9603641 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/proc/ProcDecl.java @@ -0,0 +1,34 @@ +package pt.up.fe.specs.fortran.ast.nodes.decl.proc; + +import org.suikasoft.jOptions.Datakey.DataKey; +import org.suikasoft.jOptions.Datakey.KeyFactory; +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.decl.init.ProcPointerInit; + +import java.util.Collection; +import java.util.Optional; + +public class ProcDecl extends FortranNode { + public static final DataKey NAME = KeyFactory.string("name"); + + public ProcDecl(DataStore data, Collection children) { + super(data, children); + } + + public String getName() { + return get(NAME); + } + + public Optional getInit() { + return getChildTry(ProcPointerInit.class, 0); + } + + @Override + public String getCode() { + var name = getName(); + var initCode = getInit().map(ProcPointerInit::getCode).orElse(""); + + return name + initCode; + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/proc/attr/AccessProcAttr.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/proc/attr/AccessProcAttr.java new file mode 100644 index 00000000..5bee05da --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/proc/attr/AccessProcAttr.java @@ -0,0 +1,26 @@ +package pt.up.fe.specs.fortran.ast.nodes.decl.proc.attr; + +import org.suikasoft.jOptions.Datakey.DataKey; +import org.suikasoft.jOptions.Datakey.KeyFactory; +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.specification.enums.AccessKind; + +import java.util.Collection; + +public class AccessProcAttr extends ProcAttr { + public static final DataKey ACCESS_KIND = KeyFactory.enumeration("access_kind", AccessKind.class); + + public AccessProcAttr(DataStore data, Collection children) { + super(data, children); + } + + public AccessKind getAccessKind() { + return get(ACCESS_KIND); + } + + @Override + public String getCode() { + return encase(getAccessKind().name()); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/proc/attr/IntentProcAttr.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/proc/attr/IntentProcAttr.java new file mode 100644 index 00000000..6f1dad1e --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/proc/attr/IntentProcAttr.java @@ -0,0 +1,27 @@ +package pt.up.fe.specs.fortran.ast.nodes.decl.proc.attr; + +import org.suikasoft.jOptions.Datakey.DataKey; +import org.suikasoft.jOptions.Datakey.KeyFactory; +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.FortranKeyword; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.type.attributes.enums.IntentKind; + +import java.util.Collection; + +public class IntentProcAttr extends ProcAttr { + public static final DataKey INTENT_KIND = KeyFactory.enumeration("intentKind", IntentKind.class); + + public IntentProcAttr(DataStore data, Collection children) { + super(data, children); + } + + public IntentKind getIntentKind() { + return get(INTENT_KIND); + } + + @Override + public String getCode() { + return keyword(FortranKeyword.INTENT) + "(" + encase(getIntentKind().getString()) + ")"; + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/proc/attr/LangBindProcAttr.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/proc/attr/LangBindProcAttr.java new file mode 100644 index 00000000..3cd77150 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/proc/attr/LangBindProcAttr.java @@ -0,0 +1,22 @@ +package pt.up.fe.specs.fortran.ast.nodes.decl.proc.attr; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.specification.LanguageBindingSpec; + +import java.util.Collection; + +public class LangBindProcAttr extends ProcAttr { + public LangBindProcAttr(DataStore data, Collection children) { + super(data, children); + } + + public LanguageBindingSpec getLanguageBindingSpec() { + return getChild(LanguageBindingSpec.class, 0); + } + + @Override + public String getCode() { + return getLanguageBindingSpec().getCode(); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/proc/attr/OtherProcAttr.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/proc/attr/OtherProcAttr.java new file mode 100644 index 00000000..654d625b --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/proc/attr/OtherProcAttr.java @@ -0,0 +1,26 @@ +package pt.up.fe.specs.fortran.ast.nodes.decl.proc.attr; + +import org.suikasoft.jOptions.Datakey.DataKey; +import org.suikasoft.jOptions.Datakey.KeyFactory; +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.decl.enums.ProcAttrKind; + +import java.util.Collection; + +public class OtherProcAttr extends ProcAttr { + public static final DataKey KIND = KeyFactory.enumeration("kind", ProcAttrKind.class); + + public OtherProcAttr(DataStore data, Collection children) { + super(data, children); + } + + public ProcAttrKind getKind() { + return get(KIND); + } + + @Override + public String getCode() { + return encase(getKind().name()); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/proc/attr/ProcAttr.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/proc/attr/ProcAttr.java new file mode 100644 index 00000000..b39ed4b1 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/proc/attr/ProcAttr.java @@ -0,0 +1,12 @@ +package pt.up.fe.specs.fortran.ast.nodes.decl.proc.attr; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; + +public abstract class ProcAttr extends FortranNode { + public ProcAttr(DataStore data, Collection children) { + super(data, children); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/proc/interfaces/NamedProcInterface.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/proc/interfaces/NamedProcInterface.java new file mode 100644 index 00000000..e584dceb --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/proc/interfaces/NamedProcInterface.java @@ -0,0 +1,25 @@ +package pt.up.fe.specs.fortran.ast.nodes.decl.proc.interfaces; + +import org.suikasoft.jOptions.Datakey.DataKey; +import org.suikasoft.jOptions.Datakey.KeyFactory; +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; + +public class NamedProcInterface extends ProcInterface { + public static final DataKey NAME = KeyFactory.string("name"); + + public NamedProcInterface(DataStore data, Collection children) { + super(data, children); + } + + public String getName() { + return get(NAME); + } + + @Override + public String getCode() { + return getName(); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/proc/interfaces/ProcInterface.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/proc/interfaces/ProcInterface.java new file mode 100644 index 00000000..5f597d00 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/proc/interfaces/ProcInterface.java @@ -0,0 +1,12 @@ +package pt.up.fe.specs.fortran.ast.nodes.decl.proc.interfaces; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; + +public abstract class ProcInterface extends FortranNode { + public ProcInterface(DataStore data, Collection children) { + super(data, children); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/proc/interfaces/TypeProcInterface.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/proc/interfaces/TypeProcInterface.java new file mode 100644 index 00000000..f33f4eac --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/decl/proc/interfaces/TypeProcInterface.java @@ -0,0 +1,22 @@ +package pt.up.fe.specs.fortran.ast.nodes.decl.proc.interfaces; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.type.decltype.DeclType; + +import java.util.Collection; + +public class TypeProcInterface extends ProcInterface { + public TypeProcInterface(DataStore data, Collection children) { + super(data, children); + } + + public DeclType getDeclType() { + return getChild(DeclType.class, 0); + } + + @Override + public String getCode() { + return getDeclType().getCode(); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/expr/BinaryOperator.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/expr/BinaryOperator.java index 15490f15..3fe7e372 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/expr/BinaryOperator.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/expr/BinaryOperator.java @@ -3,6 +3,7 @@ import org.suikasoft.jOptions.Datakey.DataKey; import org.suikasoft.jOptions.Datakey.KeyFactory; import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.FortranContext; import pt.up.fe.specs.fortran.ast.nodes.FortranNode; import pt.up.fe.specs.fortran.ast.nodes.expr.enums.BinaryOperatorKind; @@ -38,11 +39,8 @@ public BinaryOperatorKind getOp() { @Override public String getCode() { - return getLhs().getCode() + - - " " + get(OP).getOpString() + " " + - + " " + encase(get(OP).getString()) + " " + getRhs().getCode(); } } diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/expr/Call.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/expr/Call.java index 6cd915f1..891ac4bd 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/expr/Call.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/expr/Call.java @@ -8,13 +8,12 @@ import java.util.stream.Collectors; public class Call extends Expr { - public Call(DataStore data, Collection children) { super(data, children); } - public DataRef getCallee() { - return getChild(DataRef.class, 0); + public ProcDesignator getCallee() { + return getChild(ProcDesignator.class, 0); } public List getArgs() { @@ -23,10 +22,11 @@ public List getArgs() { @Override public String getCode() { - return getCallee().getCode() + "(" + - getArgs().stream() - .map(Argument::getCode) - .collect(Collectors.joining(", ")) + - ")"; + var calleeCode = getCallee().getCode(); + var argsCode = getArgs().stream() + .map(Argument::getCode) + .collect(Collectors.joining(", ", "(", ")")); + + return calleeCode + argsCode; } } diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/expr/ComplexLiteral.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/expr/ComplexLiteral.java new file mode 100644 index 00000000..860667c5 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/expr/ComplexLiteral.java @@ -0,0 +1,27 @@ +package pt.up.fe.specs.fortran.ast.nodes.expr; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; + +public class ComplexLiteral extends Literal { + public ComplexLiteral(DataStore data, Collection children) { + super(data, children); + } + + public ComplexPart getRealPart() { + return getChild(ComplexPart.class, 0); + } + + public ComplexPart getImaginaryPart() { + return getChild(ComplexPart.class, 1); + } + + public String getCode() { + var real = getRealPart(); + var imag = getImaginaryPart(); + + return "(" + real.getCode() + ", " + imag.getCode() + ")"; + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/expr/ComplexPart.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/expr/ComplexPart.java new file mode 100644 index 00000000..6e6343ca --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/expr/ComplexPart.java @@ -0,0 +1,19 @@ +package pt.up.fe.specs.fortran.ast.nodes.expr; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; + +public abstract class ComplexPart extends FortranNode { + public ComplexPart(DataStore data, Collection children) { + super(data, children); + } + + public abstract LiteralT getLiteral(); + + @Override + public String getCode() { + return getLiteral().getCode(); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/expr/DataRef.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/expr/DataRef.java index 64393462..19ca2122 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/expr/DataRef.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/expr/DataRef.java @@ -9,6 +9,7 @@ import java.util.Collection; import java.util.Optional; +// TODO(Process-ing): Improve node hierarchy public class DataRef extends Designator { // DATAKEYS BEGIN diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/expr/IntComplexPart.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/expr/IntComplexPart.java new file mode 100644 index 00000000..553386e4 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/expr/IntComplexPart.java @@ -0,0 +1,16 @@ +package pt.up.fe.specs.fortran.ast.nodes.expr; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; + +public class IntComplexPart extends ComplexPart { + public IntComplexPart(DataStore data, Collection children) { + super(data, children); + } + + public IntLiteral getLiteral() { + return getChild(IntLiteral.class, 0); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/expr/IntLiteral.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/expr/IntLiteral.java index 75be3a80..075c5335 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/expr/IntLiteral.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/expr/IntLiteral.java @@ -6,34 +6,23 @@ import pt.up.fe.specs.fortran.ast.nodes.FortranNode; import java.util.Collection; -import java.util.Optional; /** * R708 int-literal-constant */ -public class IntLiteral extends Literal { - - // DATAKEYS BEGIN - - /** - * A prefix indicating the kind of the string (e.g., encoding) - */ - public final static DataKey> KIND_PARAM = KeyFactory.optional("kindParam"); - - - // DATAKEYS END +public class IntLiteral extends KindedLiteral { + public static final DataKey SOURCE = KeyFactory.string("source"); public IntLiteral(DataStore data, Collection children) { super(data, children); } - public int getValue() { - return Integer.valueOf(get(SOURCE_LITERAL)); + public String getSource() { + return get(SOURCE); } @Override public String getCode() { - var suffix = get(KIND_PARAM).map(k -> "_" + k).orElse(""); - return get(SOURCE_LITERAL) + suffix; + return getSource() + getKindSuffix(); } } diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/expr/KindedLiteral.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/expr/KindedLiteral.java new file mode 100644 index 00000000..cfba587d --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/expr/KindedLiteral.java @@ -0,0 +1,29 @@ +package pt.up.fe.specs.fortran.ast.nodes.expr; + +import org.suikasoft.jOptions.Datakey.DataKey; +import org.suikasoft.jOptions.Datakey.KeyFactory; +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; +import java.util.Optional; + +public abstract class KindedLiteral extends Literal { + public static final DataKey> KIND_PARAM = KeyFactory.optional("kindParam"); + + public KindedLiteral(DataStore data, Collection children) { + super(data, children); + } + + public Optional getKindParam() { + return get(KIND_PARAM); + } + + protected String getKindPrefix() { + return getKindParam().map(k -> k + "_").orElseGet(() -> ""); + } + + protected String getKindSuffix() { + return getKindParam().map(k -> "_" + k).orElseGet(() -> ""); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/expr/Literal.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/expr/Literal.java index d44bf94d..54fce46d 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/expr/Literal.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/expr/Literal.java @@ -1,7 +1,5 @@ package pt.up.fe.specs.fortran.ast.nodes.expr; -import org.suikasoft.jOptions.Datakey.DataKey; -import org.suikasoft.jOptions.Datakey.KeyFactory; import org.suikasoft.jOptions.Interfaces.DataStore; import pt.up.fe.specs.fortran.ast.nodes.FortranNode; @@ -11,21 +9,7 @@ * R605 literal-constant */ public abstract class Literal extends Expr { - - // DATAKEYS BEGIN - - /** - * A string representing the literal - */ - public final static DataKey SOURCE_LITERAL = KeyFactory.string("sourceLiteral"); - - // DATAKEYS END - public Literal(DataStore data, Collection children) { super(data, children); } - - public String getLiteral() { - return get(SOURCE_LITERAL); - } } diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/expr/LogicalLiteral.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/expr/LogicalLiteral.java index 222544a3..2e30ff39 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/expr/LogicalLiteral.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/expr/LogicalLiteral.java @@ -6,37 +6,24 @@ import pt.up.fe.specs.fortran.ast.nodes.FortranNode; import java.util.Collection; -import java.util.Optional; /** * R708 int-literal-constant */ -public class LogicalLiteral extends Literal { - - // DATAKEYS BEGIN - - /** - * A prefix indicating the kind of the string (e.g., encoding) - */ - public final static DataKey> KIND_PARAM = KeyFactory.optional("kindParam"); - - - // DATAKEYS END +public class LogicalLiteral extends KindedLiteral { + public static final DataKey VALUE = KeyFactory.bool("value"); public LogicalLiteral(DataStore data, Collection children) { super(data, children); } public boolean getValue() { - return get(SOURCE_LITERAL).equals("1"); + return get(VALUE); } @Override public String getCode() { - if (getLiteral().equals("1")) { - return ".true."; - } else { - return ".false."; - } + var valueCode = encase(getValue() ? ".true." : ".false."); + return valueCode + getKindSuffix(); } } diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/expr/NamedComplexPart.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/expr/NamedComplexPart.java new file mode 100644 index 00000000..746565a4 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/expr/NamedComplexPart.java @@ -0,0 +1,16 @@ +package pt.up.fe.specs.fortran.ast.nodes.expr; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; + +public class NamedComplexPart extends ComplexPart { + public NamedComplexPart(DataStore data, Collection children) { + super(data, children); + } + + public NamedLiteral getLiteral() { + return getChild(NamedLiteral.class, 0); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/expr/NamedLiteral.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/expr/NamedLiteral.java new file mode 100644 index 00000000..4f8f6d44 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/expr/NamedLiteral.java @@ -0,0 +1,24 @@ +package pt.up.fe.specs.fortran.ast.nodes.expr; + +import org.suikasoft.jOptions.Datakey.DataKey; +import org.suikasoft.jOptions.Datakey.KeyFactory; +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; + +public class NamedLiteral extends Literal { + public static final DataKey NAME = KeyFactory.string("name"); + + public NamedLiteral(DataStore data, Collection children) { + super(data, children); + } + + public String getName() { + return get(NAME); + } + + public String getCode() { + return getName(); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/expr/NamedProcDesignator.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/expr/NamedProcDesignator.java new file mode 100644 index 00000000..3aa8c515 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/expr/NamedProcDesignator.java @@ -0,0 +1,25 @@ +package pt.up.fe.specs.fortran.ast.nodes.expr; + +import org.suikasoft.jOptions.Datakey.DataKey; +import org.suikasoft.jOptions.Datakey.KeyFactory; +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; + +public class NamedProcDesignator extends ProcDesignator { + public static final DataKey NAME = KeyFactory.string("name"); + + public NamedProcDesignator(DataStore data, Collection children) { + super(data, children); + } + + public String getName() { + return get(NAME); + } + + @Override + public String getCode() { + return getName(); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/expr/NullInit.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/expr/NullInit.java new file mode 100644 index 00000000..c4378423 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/expr/NullInit.java @@ -0,0 +1,13 @@ +package pt.up.fe.specs.fortran.ast.nodes.expr; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; + +/// Special case for the call "NULL()" +public class NullInit extends Call { + public NullInit(DataStore data, Collection children) { + super(data, children); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/expr/ProcDesignator.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/expr/ProcDesignator.java new file mode 100644 index 00000000..997b0b4a --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/expr/ProcDesignator.java @@ -0,0 +1,12 @@ +package pt.up.fe.specs.fortran.ast.nodes.expr; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; + +public abstract class ProcDesignator extends FortranNode { + public ProcDesignator(DataStore data, Collection children) { + super(data, children); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/expr/RealComplexPart.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/expr/RealComplexPart.java new file mode 100644 index 00000000..207d5ce6 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/expr/RealComplexPart.java @@ -0,0 +1,16 @@ +package pt.up.fe.specs.fortran.ast.nodes.expr; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; + +public class RealComplexPart extends ComplexPart { + public RealComplexPart(DataStore data, Collection children) { + super(data, children); + } + + public RealLiteral getLiteral() { + return getChild(RealLiteral.class, 0); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/expr/RealLiteral.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/expr/RealLiteral.java index 8be35164..5f31ebfd 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/expr/RealLiteral.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/expr/RealLiteral.java @@ -1,17 +1,26 @@ package pt.up.fe.specs.fortran.ast.nodes.expr; +import org.suikasoft.jOptions.Datakey.DataKey; +import org.suikasoft.jOptions.Datakey.KeyFactory; import org.suikasoft.jOptions.Interfaces.DataStore; import pt.up.fe.specs.fortran.ast.nodes.FortranNode; import java.util.Collection; +import java.util.Optional; + +public class RealLiteral extends KindedLiteral { + public static final DataKey SOURCE = KeyFactory.string("source"); -public class RealLiteral extends Literal { public RealLiteral(DataStore data, Collection children) { super(data, children); } + public String getSource() { + return get(SOURCE); + } + @Override public String getCode() { - return getLiteral(); + return getSource() + getKindSuffix(); } } diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/expr/StringLiteral.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/expr/StringLiteral.java index a4dcea66..e3fb6f51 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/expr/StringLiteral.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/expr/StringLiteral.java @@ -13,37 +13,27 @@ /** * R724 char-literal-constant */ -public class StringLiteral extends Literal { - - // DATAKEYS BEGIN - - /** - * A prefix indicating the kind of the string (e.g., encoding) - */ - public final static DataKey> KIND_PARAM = KeyFactory.optional("kindParam"); - - - // DATAKEYS END +public class StringLiteral extends KindedLiteral { + public static final DataKey CONTENTS = KeyFactory.string("contents"); public StringLiteral(DataStore data, Collection children) { super(data, children); } + public String getContents() { + return get(CONTENTS); + } + @Override public String getCode() { - char delimiter = get(CONTEXT).get(FortranContext.FORTRAN_OPTIONS).get(FortranAstOptions.SINGLE_QUOTE_STRINGS) ? - '\'' : '"'; - - var code = new StringBuilder(); - - // Get kind param prefix - var prefix = get(KIND_PARAM).map(p -> p + "_").orElse(""); + char delimiter = get(CONTEXT).get(FortranContext.FORTRAN_OPTIONS).get(FortranAstOptions.SINGLE_QUOTE_STRINGS) + ? '\'' : '"'; // TODO: Check if needed // Escape literal according to delimiter var delimiterS = Character.toString(delimiter); - var escapedString = getLiteral().replace(delimiterS, delimiterS + delimiterS); + var escapedString = getContents().replace(delimiterS, delimiterS + delimiterS); - return prefix + delimiterS + escapedString + delimiterS; + return getKindPrefix() + delimiterS + escapedString + delimiterS; } } diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/expr/Substring.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/expr/Substring.java new file mode 100644 index 00000000..3eca44a7 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/expr/Substring.java @@ -0,0 +1,39 @@ +package pt.up.fe.specs.fortran.ast.nodes.expr; + +import org.suikasoft.jOptions.Datakey.DataKey; +import org.suikasoft.jOptions.Datakey.KeyFactory; +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; +import java.util.Optional; + +public class Substring extends Designator { + public static final DataKey> LOWER_IDX = KeyFactory.optional("lowerIdx"); + public static final DataKey> UPPER_IDX = KeyFactory.optional("upperIdx"); + + public Substring(DataStore data, Collection children) { + super(data, children); + } + + public DataRef getRef() { + return getChild(DataRef.class, 0); + } + + public Optional getLowerBound() { + return get(LOWER_IDX).map(idx -> getChild(Expr.class, idx)); + } + + public Optional getUpperBound() { + return get(UPPER_IDX).map(idx -> getChild(Expr.class, idx)); + } + + @Override + public String getCode() { + var refCode = getRef().getCode(); + var lowerCode = getLowerBound().map(Expr::getCode).orElse(""); + var upperCode = getUpperBound().map(Expr::getCode).orElse(""); + + return refCode + "(" + lowerCode + ":" + upperCode + ")"; + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/expr/UnaryOperator.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/expr/UnaryOperator.java index 17ced899..36c83de7 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/expr/UnaryOperator.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/expr/UnaryOperator.java @@ -25,6 +25,6 @@ public UnaryOperatorKind getOp() { @Override public String getCode() { - return getOp().getString() + getOperand().getCode(); + return encase(getOp().getString()) + getOperand().getCode(); } } diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/expr/enums/BinaryOperatorKind.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/expr/enums/BinaryOperatorKind.java index 80335441..e73e6893 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/expr/enums/BinaryOperatorKind.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/expr/enums/BinaryOperatorKind.java @@ -3,65 +3,31 @@ import pt.up.fe.specs.util.providers.StringProvider; public enum BinaryOperatorKind implements StringProvider { - ADD, - SUBTRACT, - MULTIPLY, - DIVIDE, - POWER, - LT, - LE, - GT, - GE, - EQ, - NE, - AND; + ADD("+"), + SUBTRACT("-"), + MULTIPLY("*"), + DIVIDE("/"), + POWER("**"), + LT("<"), + LE("<="), + GT(">"), + GE(">="), + EQ("=="), + NE("/="), + AND(".AND."), + OR(".OR."), + EQV(".EQV."), + NEQV(".NEQV."), + CONCAT("//"); - public String getOpString() { - switch (this) { - case ADD -> { - return "+"; - } - case SUBTRACT -> { - return "-"; - } - case MULTIPLY -> { - return "*"; - } - case DIVIDE -> { - return "/"; - } - case POWER -> { - return "**"; - } - case EQ -> { - return "=="; - } - case NE -> { - return "/="; - } - case GE -> { - return ">="; - } - case GT -> { - return ">"; - } - case LE -> { - return "<="; - } - case LT -> { - return "<"; - } - case AND -> { - return ".and."; - } - default -> { - return ""; - } - } + private final String opString; + + BinaryOperatorKind(String opString) { + this.opString = opString; } @Override public String getString() { - return getOpString(); + return opString; } } diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/expr/enums/UnaryOperatorKind.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/expr/enums/UnaryOperatorKind.java index 922111bb..88ab885d 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/expr/enums/UnaryOperatorKind.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/expr/enums/UnaryOperatorKind.java @@ -5,14 +5,14 @@ public enum UnaryOperatorKind implements StringProvider { NEGATE("-"), UNARY_PLUS("+"), - NOT(".not. "); + NOT(".NOT. "); + + private final String opString; UnaryOperatorKind(String opString) { this.opString = opString; } - private final String opString; - public String getString() { return opString; } diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/CloseSpec.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/CloseSpec.java new file mode 100644 index 00000000..00b62d25 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/CloseSpec.java @@ -0,0 +1,12 @@ +package pt.up.fe.specs.fortran.ast.nodes.io; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; + +public abstract class CloseSpec extends FortranNode { + public CloseSpec(DataStore data, Collection children) { + super(data, children); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/CloseStmt.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/CloseStmt.java new file mode 100644 index 00000000..5b3554d6 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/CloseStmt.java @@ -0,0 +1,29 @@ +package pt.up.fe.specs.fortran.ast.nodes.io; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.FortranKeyword; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.stmt.ActionStmt; + +import java.util.Collection; +import java.util.List; +import java.util.stream.Collectors; + +public class CloseStmt extends ActionStmt { + public CloseStmt(DataStore data, Collection children) { + super(data, children); + } + + public List getSpecs() { + return getChildren(CloseSpec.class); + } + + @Override + public String getStmtCode() { + var specsCode = getSpecs().stream() + .map(CloseSpec::getCode) + .collect(Collectors.joining(", ", "(", ")")); + + return keyword(FortranKeyword.CLOSE) + specsCode; + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/ConnectSpec.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/ConnectSpec.java new file mode 100644 index 00000000..a0d0075b --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/ConnectSpec.java @@ -0,0 +1,12 @@ +package pt.up.fe.specs.fortran.ast.nodes.io; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; + +public abstract class ConnectSpec extends FortranNode { + public ConnectSpec(DataStore data, Collection children) { + super(data, children); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/ErrCloseSpec.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/ErrCloseSpec.java new file mode 100644 index 00000000..c22222f9 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/ErrCloseSpec.java @@ -0,0 +1,26 @@ +package pt.up.fe.specs.fortran.ast.nodes.io; + +import org.suikasoft.jOptions.Datakey.DataKey; +import org.suikasoft.jOptions.Datakey.KeyFactory; +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.FortranKeyword; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; + +public class ErrCloseSpec extends CloseSpec { + public static final DataKey LABEL = KeyFactory.integer("label"); + + public ErrCloseSpec(DataStore data, Collection children) { + super(data, children); + } + + public int getLabel() { + return get(LABEL); + } + + @Override + public String getCode() { + return keyword(FortranKeyword.ERR) + "=" + getLabel(); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/ErrConnectSpec.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/ErrConnectSpec.java new file mode 100644 index 00000000..7a60478e --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/ErrConnectSpec.java @@ -0,0 +1,26 @@ +package pt.up.fe.specs.fortran.ast.nodes.io; + +import org.suikasoft.jOptions.Datakey.DataKey; +import org.suikasoft.jOptions.Datakey.KeyFactory; +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.FortranKeyword; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; + +public class ErrConnectSpec extends ConnectSpec { + public static final DataKey LABEL = KeyFactory.integer("label"); + + public ErrConnectSpec(DataStore data, Collection children) { + super(data, children); + } + + public int getLabel() { + return get(LABEL); + } + + @Override + public String getCode() { + return keyword(FortranKeyword.ERR) + "=" + getLabel(); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/ErrPosFlushSpec.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/ErrPosFlushSpec.java new file mode 100644 index 00000000..1c93e1d0 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/ErrPosFlushSpec.java @@ -0,0 +1,26 @@ +package pt.up.fe.specs.fortran.ast.nodes.io; + +import org.suikasoft.jOptions.Datakey.DataKey; +import org.suikasoft.jOptions.Datakey.KeyFactory; +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.FortranKeyword; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; + +public class ErrPosFlushSpec extends PosFlushSpec { + public static final DataKey LABEL = KeyFactory.integer("label"); + + public ErrPosFlushSpec(DataStore data, Collection children) { + super(data, children); + } + + public int getLabel() { + return get(LABEL); + } + + @Override + public String getCode() { + return keyword(FortranKeyword.ERR) + "=" + getLabel(); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/ExprCloseSpec.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/ExprCloseSpec.java new file mode 100644 index 00000000..e8d09f8d --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/ExprCloseSpec.java @@ -0,0 +1,40 @@ +package pt.up.fe.specs.fortran.ast.nodes.io; + +import org.suikasoft.jOptions.Datakey.DataKey; +import org.suikasoft.jOptions.Datakey.KeyFactory; +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.expr.Expr; +import pt.up.fe.specs.fortran.ast.nodes.io.enums.ExprCloseSpecKind; +import pt.up.fe.specs.fortran.ast.nodes.io.enums.ExprConnectSpecKind; + +import java.util.Collection; + +public class ExprCloseSpec extends CloseSpec { + public static final DataKey KIND = KeyFactory.enumeration("kind", ExprCloseSpecKind.class); + + public ExprCloseSpec(DataStore data, Collection children) { + super(data, children); + } + + public ExprCloseSpecKind getKind() { + return get(KIND); + } + + public Expr getExpr() { + return getChild(Expr.class, 0); + } + + @Override + public String getCode() { + var kind = getKind(); + var exprCode = getExpr().getCode(); + + // We can omit "UNIT=" from the first specifier + if (kind == ExprCloseSpecKind.UNIT && indexOfSelf() == 0) { + return exprCode; + } + + return encase(kind.name()) + "=" + exprCode; + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/ExprConnectSpec.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/ExprConnectSpec.java new file mode 100644 index 00000000..fa95274f --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/ExprConnectSpec.java @@ -0,0 +1,40 @@ +package pt.up.fe.specs.fortran.ast.nodes.io; + +import org.suikasoft.jOptions.Datakey.DataKey; +import org.suikasoft.jOptions.Datakey.KeyFactory; +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.expr.Expr; +import pt.up.fe.specs.fortran.ast.nodes.io.enums.ExprConnectSpecKind; +import pt.up.fe.specs.fortran.ast.nodes.io.enums.ExprIoControlSpecKind; + +import java.util.Collection; + +public class ExprConnectSpec extends ConnectSpec { + public static final DataKey KIND = KeyFactory.enumeration("kind", ExprConnectSpecKind.class); + + public ExprConnectSpec(DataStore data, Collection children) { + super(data, children); + } + + public ExprConnectSpecKind getKind() { + return get(KIND); + } + + public Expr getExpr() { + return getChild(Expr.class, 0); + } + + @Override + public String getCode() { + var kind = getKind(); + var exprCode = getExpr().getCode(); + + // We can omit "UNIT=" from the first specifier + if (kind == ExprConnectSpecKind.UNIT && indexOfSelf() == 0) { + return exprCode; + } + + return encase(kind.name()) + "=" + exprCode; + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/ExprFormat.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/ExprFormat.java new file mode 100644 index 00000000..bbeac6c7 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/ExprFormat.java @@ -0,0 +1,22 @@ +package pt.up.fe.specs.fortran.ast.nodes.io; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.expr.Expr; + +import java.util.Collection; + +public class ExprFormat extends Format { + public ExprFormat(DataStore data, Collection children) { + super(data, children); + } + + public Expr getExpr() { + return getChild(Expr.class, 0); + } + + @Override + public String getCode() { + return getExpr().getCode(); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/ExprIoControlSpec.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/ExprIoControlSpec.java new file mode 100644 index 00000000..ea236f33 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/ExprIoControlSpec.java @@ -0,0 +1,39 @@ +package pt.up.fe.specs.fortran.ast.nodes.io; + +import org.suikasoft.jOptions.Datakey.DataKey; +import org.suikasoft.jOptions.Datakey.KeyFactory; +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.expr.Expr; +import pt.up.fe.specs.fortran.ast.nodes.io.enums.ExprIoControlSpecKind; + +import java.util.Collection; + +public class ExprIoControlSpec extends IoControlSpec { + public static DataKey KIND = KeyFactory.enumeration("kind", ExprIoControlSpecKind.class); + + public ExprIoControlSpec(DataStore data, Collection children) { + super(data, children); + } + + public ExprIoControlSpecKind getKind() { + return get(KIND); + } + + public Expr getExpr() { + return getChild(Expr.class); + } + + @Override + public String getCode() { + var kind = getKind(); + var exprCode = getExpr().getCode(); + + // We can omit "UNIT=" from the first specifier + if (kind == ExprIoControlSpecKind.UNIT && indexOfSelf() == 0) { + return exprCode; + } + + return encase(kind.name()) + "=" + exprCode; + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/LengthSelector.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/ExprOutputItem.java similarity index 57% rename from FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/LengthSelector.java rename to FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/ExprOutputItem.java index 05f9ae64..dc80f0d7 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/LengthSelector.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/ExprOutputItem.java @@ -1,4 +1,4 @@ -package pt.up.fe.specs.fortran.ast.nodes.type; +package pt.up.fe.specs.fortran.ast.nodes.io; import org.suikasoft.jOptions.Interfaces.DataStore; import pt.up.fe.specs.fortran.ast.nodes.FortranNode; @@ -6,17 +6,17 @@ import java.util.Collection; -public class LengthSelector extends CharSelector { - public LengthSelector(DataStore data, Collection children) { +public class ExprOutputItem extends OutputItem { + public ExprOutputItem(DataStore data, Collection children) { super(data, children); } public Expr getExpr() { - return getChild(Expr.class); + return getChild(Expr.class, 0); } @Override public String getCode() { - return "(LEN = " + getExpr().getCode() + ")"; + return getExpr().getCode(); } } diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/ExprWaitSpec.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/ExprWaitSpec.java new file mode 100644 index 00000000..15f422d0 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/ExprWaitSpec.java @@ -0,0 +1,40 @@ +package pt.up.fe.specs.fortran.ast.nodes.io; + +import org.suikasoft.jOptions.Datakey.DataKey; +import org.suikasoft.jOptions.Datakey.KeyFactory; +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.expr.Expr; +import pt.up.fe.specs.fortran.ast.nodes.io.enums.ExprConnectSpecKind; +import pt.up.fe.specs.fortran.ast.nodes.io.enums.ExprWaitSpecKind; + +import java.util.Collection; + +public class ExprWaitSpec extends WaitSpec { + public static final DataKey KIND = KeyFactory.enumeration("kind", ExprWaitSpecKind.class); + + public ExprWaitSpec(DataStore data, Collection children) { + super(data, children); + } + + public ExprWaitSpecKind getKind() { + return get(KIND); + } + + public Expr getExpr() { + return getChild(Expr.class, 0); + } + + @Override + public String getCode() { + var kind = getKind(); + var exprCode = getExpr().getCode(); + + // We can omit "UNIT=" from the first specifier + if (kind == ExprWaitSpecKind.UNIT && indexOfSelf() == 0) { + return exprCode; + } + + return encase(kind.name()) + "=" + exprCode; + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/Format.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/Format.java new file mode 100644 index 00000000..d0a4187c --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/Format.java @@ -0,0 +1,12 @@ +package pt.up.fe.specs.fortran.ast.nodes.io; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; + +public abstract class Format extends FortranNode { + public Format(DataStore data, Collection children) { + super(data, children); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/FormatIoControlSpec.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/FormatIoControlSpec.java new file mode 100644 index 00000000..5d9e110f --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/FormatIoControlSpec.java @@ -0,0 +1,29 @@ +package pt.up.fe.specs.fortran.ast.nodes.io; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.FortranKeyword; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; + +public class FormatIoControlSpec extends IoControlSpec { + public FormatIoControlSpec(DataStore data, Collection children) { + super(data, children); + } + + public Format getFormat() { + return getChild(Format.class, 0); + } + + @Override + public String getCode() { + var formatCode = getFormat().getCode(); + + // We can omit "FMT=" on a format specifier right after the first unit specifier (if non-labeled too) + if (indexOfSelf() == 1) { + return formatCode; + } + + return keyword(FortranKeyword.FMT) + "=" + formatCode; + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/InputImpliedDoItem.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/InputImpliedDoItem.java new file mode 100644 index 00000000..e2bde6f7 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/InputImpliedDoItem.java @@ -0,0 +1,13 @@ +package pt.up.fe.specs.fortran.ast.nodes.io; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; + +// TODO(Process-ing): Implement and use this node +public class InputImpliedDoItem extends InputItem { + public InputImpliedDoItem(DataStore data, Collection children) { + super(data, children); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/InputItem.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/InputItem.java new file mode 100644 index 00000000..4519f1be --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/InputItem.java @@ -0,0 +1,12 @@ +package pt.up.fe.specs.fortran.ast.nodes.io; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; + +public abstract class InputItem extends FortranNode { + public InputItem(DataStore data, Collection children) { + super(data, children); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/IoControlSpec.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/IoControlSpec.java new file mode 100644 index 00000000..7dc18ff9 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/IoControlSpec.java @@ -0,0 +1,12 @@ +package pt.up.fe.specs.fortran.ast.nodes.io; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; + +public abstract class IoControlSpec extends FortranNode { + public IoControlSpec(DataStore data, Collection children) { + super(data, children); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/LabelFormat.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/LabelFormat.java new file mode 100644 index 00000000..06e47d4d --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/LabelFormat.java @@ -0,0 +1,25 @@ +package pt.up.fe.specs.fortran.ast.nodes.io; + +import org.suikasoft.jOptions.Datakey.DataKey; +import org.suikasoft.jOptions.Datakey.KeyFactory; +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; + +public class LabelFormat extends Format { + public static final DataKey LABEL = KeyFactory.integer("label"); + + public LabelFormat(DataStore data, Collection children) { + super(data, children); + } + + public int getLabel() { + return get(LABEL); + } + + @Override + public String getCode() { + return Integer.toString(getLabel()); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/LabelIoControlSpec.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/LabelIoControlSpec.java new file mode 100644 index 00000000..c24ba899 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/LabelIoControlSpec.java @@ -0,0 +1,34 @@ +package pt.up.fe.specs.fortran.ast.nodes.io; + +import org.suikasoft.jOptions.Datakey.DataKey; +import org.suikasoft.jOptions.Datakey.KeyFactory; +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.io.enums.LabelIoControlSpecKind; + +import java.util.Collection; + +public class LabelIoControlSpec extends IoControlSpec { + public static final DataKey LABEL = KeyFactory.integer("label"); + public static final DataKey KIND = KeyFactory.enumeration("kind", LabelIoControlSpecKind.class); + + public LabelIoControlSpec(DataStore data, Collection children) { + super(data, children); + } + + public LabelIoControlSpecKind getKind() { + return get(KIND); + } + + public Integer getLabel() { + return get(LABEL); + } + + @Override + public String getCode() { + var kindCode = encase(getKind().name()); + var labelCode = getLabel().toString(); + + return kindCode + "=" + labelCode; + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/LabelWaitSpec.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/LabelWaitSpec.java new file mode 100644 index 00000000..49572d33 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/LabelWaitSpec.java @@ -0,0 +1,31 @@ +package pt.up.fe.specs.fortran.ast.nodes.io; + +import org.suikasoft.jOptions.Datakey.DataKey; +import org.suikasoft.jOptions.Datakey.KeyFactory; +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.io.enums.LabelWaitSpecKind; + +import java.util.Collection; + +public class LabelWaitSpec extends WaitSpec { + public static final DataKey KIND = KeyFactory.enumeration("kind", LabelWaitSpecKind.class); + public static final DataKey LABEL = KeyFactory.integer("label"); + + public LabelWaitSpec(DataStore data, Collection children) { + super(data, children); + } + + public LabelWaitSpecKind getKind() { + return get(KIND); + } + + public int getLabel() { + return get(LABEL); + } + + @Override + public String getCode() { + return encase(getKind().name()) + "=" + getLabel(); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/NamelistIoControlSpec.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/NamelistIoControlSpec.java new file mode 100644 index 00000000..bdb8f1cb --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/NamelistIoControlSpec.java @@ -0,0 +1,31 @@ +package pt.up.fe.specs.fortran.ast.nodes.io; + +import org.suikasoft.jOptions.Datakey.DataKey; +import org.suikasoft.jOptions.Datakey.KeyFactory; +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.FortranKeyword; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; + +public class NamelistIoControlSpec extends IoControlSpec { + public static final DataKey NAMELIST_NAME = KeyFactory.string("namelistName"); + + public NamelistIoControlSpec(DataStore data, Collection children) { + super(data, children); + } + + public String getNamelistName() { + return get(NAMELIST_NAME); + } + + @Override + public String getCode() { + // We can omit "NML=" on a namelist specifier right after the first unit specifier (if non-labeled too) + if (indexOfSelf() == 1) { + return getNamelistName(); + } + + return keyword(FortranKeyword.NML) + "=" + getNamelistName(); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/OpenStmt.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/OpenStmt.java new file mode 100644 index 00000000..6b9c7bdd --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/OpenStmt.java @@ -0,0 +1,29 @@ +package pt.up.fe.specs.fortran.ast.nodes.io; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.FortranKeyword; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.stmt.ActionStmt; + +import java.util.Collection; +import java.util.List; +import java.util.stream.Collectors; + +public class OpenStmt extends ActionStmt { + public OpenStmt(DataStore data, Collection children) { + super(data, children); + } + + public List getSpecs() { + return getChildren(ConnectSpec.class); + } + + @Override + public String getStmtCode() { + var specsCode = getSpecs().stream() + .map(ConnectSpec::getCode) + .collect(Collectors.joining(", ", "(", ")")); + + return keyword(FortranKeyword.OPEN) + specsCode; + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/OutputImpliedDoItem.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/OutputImpliedDoItem.java new file mode 100644 index 00000000..3171a100 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/OutputImpliedDoItem.java @@ -0,0 +1,13 @@ +package pt.up.fe.specs.fortran.ast.nodes.io; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; + +// TODO(Process-ing): Implement and use this node +public class OutputImpliedDoItem extends OutputItem { + public OutputImpliedDoItem(DataStore data, Collection children) { + super(data, children); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/OutputItem.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/OutputItem.java new file mode 100644 index 00000000..acd0fea4 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/OutputItem.java @@ -0,0 +1,12 @@ +package pt.up.fe.specs.fortran.ast.nodes.io; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; + +public abstract class OutputItem extends FortranNode { + public OutputItem(DataStore data, Collection children) { + super(data, children); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/CharSelector.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/PosFlushSpec.java similarity index 54% rename from FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/CharSelector.java rename to FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/PosFlushSpec.java index 975df102..d836e9b8 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/CharSelector.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/PosFlushSpec.java @@ -1,12 +1,12 @@ -package pt.up.fe.specs.fortran.ast.nodes.type; +package pt.up.fe.specs.fortran.ast.nodes.io; import org.suikasoft.jOptions.Interfaces.DataStore; import pt.up.fe.specs.fortran.ast.nodes.FortranNode; import java.util.Collection; -public class CharSelector extends FortranNode { - public CharSelector(DataStore data, Collection children) { +public abstract class PosFlushSpec extends FortranNode { + public PosFlushSpec(DataStore data, Collection children) { super(data, children); } } diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/ReadStmt.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/ReadStmt.java new file mode 100644 index 00000000..bc7e61a8 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/ReadStmt.java @@ -0,0 +1,37 @@ +package pt.up.fe.specs.fortran.ast.nodes.io; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.FortranKeyword; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.stmt.ActionStmt; + +import java.util.Collection; +import java.util.List; +import java.util.stream.Collectors; + +public class ReadStmt extends ActionStmt { + public ReadStmt(DataStore data, Collection children) { + super(data, children); + } + + public List getSpecs() { + return getChildrenOf(IoControlSpec.class); + } + + public List getItems() { + return getChildrenOf(InputItem.class); + } + + @Override + public String getStmtCode() { + var specsCode = getSpecs().stream() + .map(IoControlSpec::getCode) + .collect(Collectors.joining(", ", "(", ")")); + + var itemsCode = getItems().stream() + .map(InputItem::getCode) + .collect(Collectors.joining(", ")); + + return keyword(FortranKeyword.READ) + specsCode + " " + itemsCode; + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/RewindStmt.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/RewindStmt.java new file mode 100644 index 00000000..8f0c9def --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/RewindStmt.java @@ -0,0 +1,29 @@ +package pt.up.fe.specs.fortran.ast.nodes.io; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.FortranKeyword; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.stmt.ActionStmt; + +import java.util.Collection; +import java.util.List; +import java.util.stream.Collectors; + +public class RewindStmt extends ActionStmt { + public RewindStmt(DataStore data, Collection children) { + super(data, children); + } + + public List getSpecs() { + return getChildren(PosFlushSpec.class); + } + + @Override + public String getStmtCode() { + var specsCode = getSpecs().stream() + .map(PosFlushSpec::getCode) + .collect(Collectors.joining(", ", "(", ")")); + + return keyword(FortranKeyword.REWIND) + specsCode; + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/shapes/AssumedImpliedShapeSpec.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/StarFormat.java similarity index 53% rename from FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/shapes/AssumedImpliedShapeSpec.java rename to FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/StarFormat.java index 67a7a430..ccb1c162 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/shapes/AssumedImpliedShapeSpec.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/StarFormat.java @@ -1,12 +1,12 @@ -package pt.up.fe.specs.fortran.ast.nodes.type.shapes; +package pt.up.fe.specs.fortran.ast.nodes.io; import org.suikasoft.jOptions.Interfaces.DataStore; import pt.up.fe.specs.fortran.ast.nodes.FortranNode; import java.util.Collection; -public class AssumedImpliedShapeSpec extends ShapeSpecification { - public AssumedImpliedShapeSpec(DataStore data, Collection children) { +public class StarFormat extends Format { + public StarFormat(DataStore data, Collection children) { super(data, children); } diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/StarUnitIoControlSpec.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/StarUnitIoControlSpec.java new file mode 100644 index 00000000..ae232cb5 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/StarUnitIoControlSpec.java @@ -0,0 +1,20 @@ +package pt.up.fe.specs.fortran.ast.nodes.io; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.FortranKeyword; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.io.enums.ExprIoControlSpecKind; + +import java.util.Collection; + +public class StarUnitIoControlSpec extends IoControlSpec { + public StarUnitIoControlSpec(DataStore data, Collection children) { + super(data, children); + } + + @Override + public String getCode() { + // We can omit "UNIT=" from the first specifier + return indexOfSelf() == 0 ? "*" : keyword(FortranKeyword.UNIT) + "=*"; + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/UnitPosFlushSpec.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/UnitPosFlushSpec.java new file mode 100644 index 00000000..28356b13 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/UnitPosFlushSpec.java @@ -0,0 +1,31 @@ +package pt.up.fe.specs.fortran.ast.nodes.io; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.FortranKeyword; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.expr.Expr; +import pt.up.fe.specs.fortran.ast.nodes.io.enums.ExprIoControlSpecKind; + +import java.util.Collection; + +public class UnitPosFlushSpec extends PosFlushSpec { + public UnitPosFlushSpec(DataStore data, Collection children) { + super(data, children); + } + + public Expr getExpr() { + return getChild(Expr.class, 0); + } + + @Override + public String getCode() { + var exprCode = getExpr().getCode(); + + // We can omit "UNIT=" from the first specifier + if (indexOfSelf() == 0) { + return exprCode; + } + + return keyword(FortranKeyword.UNIT) + "=" + exprCode; + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/VarCloseSpec.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/VarCloseSpec.java new file mode 100644 index 00000000..5d437f1d --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/VarCloseSpec.java @@ -0,0 +1,32 @@ +package pt.up.fe.specs.fortran.ast.nodes.io; + +import org.suikasoft.jOptions.Datakey.DataKey; +import org.suikasoft.jOptions.Datakey.KeyFactory; +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.decl.Variable; +import pt.up.fe.specs.fortran.ast.nodes.io.enums.VarCloseSpecKind; +import pt.up.fe.specs.fortran.ast.nodes.io.enums.VarConnectSpecKind; + +import java.util.Collection; + +public class VarCloseSpec extends CloseSpec { + public static final DataKey KIND = KeyFactory.enumeration("kind", VarCloseSpecKind.class); + + public VarCloseSpec(DataStore data, Collection children) { + super(data, children); + } + + public VarCloseSpecKind getKind() { + return get(KIND); + } + + public Variable getVariable() { + return getChild(Variable.class, 0); + } + + @Override + public String getCode() { + return encase(getKind().name()) + "=" + getVariable().getCode(); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/VarConnectSpec.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/VarConnectSpec.java new file mode 100644 index 00000000..6fe91af7 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/VarConnectSpec.java @@ -0,0 +1,34 @@ +package pt.up.fe.specs.fortran.ast.nodes.io; + +import org.suikasoft.jOptions.Datakey.DataKey; +import org.suikasoft.jOptions.Datakey.KeyFactory; +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.decl.Variable; +import pt.up.fe.specs.fortran.ast.nodes.io.enums.VarConnectSpecKind; + +import java.util.Collection; + +public class VarConnectSpec extends ConnectSpec { + public static final DataKey KIND = KeyFactory.enumeration("kind", VarConnectSpecKind.class); + + public VarConnectSpec(DataStore data, Collection children) { + super(data, children); + } + + public VarConnectSpecKind getKind() { + return get(KIND); + } + + public Variable getVariable() { + return getChild(Variable.class, 0); + } + + @Override + public String getCode() { + var kindCode = encase(getKind().name()); + var varCode = getVariable().getCode(); + + return kindCode + "=" + varCode; + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/VarInputItem.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/VarInputItem.java new file mode 100644 index 00000000..89d2812b --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/VarInputItem.java @@ -0,0 +1,22 @@ +package pt.up.fe.specs.fortran.ast.nodes.io; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.decl.Variable; + +import java.util.Collection; + +public class VarInputItem extends InputItem { + public VarInputItem(DataStore data, Collection children) { + super(data, children); + } + + public Variable getVariable() { + return getChild(Variable.class, 0); + } + + @Override + public String getCode() { + return getVariable().getCode(); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/VarIoControlSpec.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/VarIoControlSpec.java new file mode 100644 index 00000000..bcabd19c --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/VarIoControlSpec.java @@ -0,0 +1,40 @@ +package pt.up.fe.specs.fortran.ast.nodes.io; + +import org.suikasoft.jOptions.Datakey.DataKey; +import org.suikasoft.jOptions.Datakey.KeyFactory; +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.decl.Variable; +import pt.up.fe.specs.fortran.ast.nodes.io.enums.ExprIoControlSpecKind; +import pt.up.fe.specs.fortran.ast.nodes.io.enums.VarIoControlSpecKind; + +import java.util.Collection; + +public class VarIoControlSpec extends IoControlSpec { + public static final DataKey KIND = KeyFactory.enumeration("kind", VarIoControlSpecKind.class); + + public VarIoControlSpec(DataStore data, Collection children) { + super(data, children); + } + + public VarIoControlSpecKind getKind() { + return get(KIND); + } + + public Variable getVariable() { + return getChild(Variable.class, 0); + } + + @Override + public String getCode() { + var kind = getKind(); + var variableCode = getVariable().getCode(); + + // We can omit "UNIT=" from the first specifier + if (kind == VarIoControlSpecKind.UNIT && indexOfSelf() == 0) { + return variableCode; + } + + return encase(kind.name()) + "=" + variableCode; + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/VarPosFlushSpec.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/VarPosFlushSpec.java new file mode 100644 index 00000000..045ec6ee --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/VarPosFlushSpec.java @@ -0,0 +1,34 @@ +package pt.up.fe.specs.fortran.ast.nodes.io; + +import org.suikasoft.jOptions.Datakey.DataKey; +import org.suikasoft.jOptions.Datakey.KeyFactory; +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.decl.Variable; +import pt.up.fe.specs.fortran.ast.nodes.io.enums.VarPosFlushSpecKind; + +import java.util.Collection; + +public class VarPosFlushSpec extends PosFlushSpec { + public static final DataKey KIND = KeyFactory.enumeration("kind", VarPosFlushSpecKind.class); + + public VarPosFlushSpec(DataStore data, Collection children) { + super(data, children); + } + + public VarPosFlushSpecKind getKind() { + return get(KIND); + } + + public Variable getVariable() { + return getChild(Variable.class, 0); + } + + @Override + public String getCode() { + var kindCode = encase(getKind().name()); + var varCode = getVariable().getCode(); + + return kindCode + "=" + varCode; + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/VarWaitSpec.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/VarWaitSpec.java new file mode 100644 index 00000000..0b783882 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/VarWaitSpec.java @@ -0,0 +1,31 @@ +package pt.up.fe.specs.fortran.ast.nodes.io; + +import org.suikasoft.jOptions.Datakey.DataKey; +import org.suikasoft.jOptions.Datakey.KeyFactory; +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.decl.Variable; +import pt.up.fe.specs.fortran.ast.nodes.io.enums.VarWaitSpecKind; + +import java.util.Collection; + +public class VarWaitSpec extends WaitSpec { + public static final DataKey KIND = KeyFactory.enumeration("kind", VarWaitSpecKind.class); + + public VarWaitSpec(DataStore data, Collection children) { + super(data, children); + } + + public VarWaitSpecKind getKind() { + return get(KIND); + } + + public Variable getVariable() { + return getChild(Variable.class, 0); + } + + @Override + public String getCode() { + return encase(getKind().name()) + "=" + getVariable().getCode(); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/WaitSpec.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/WaitSpec.java new file mode 100644 index 00000000..d6a3c2e8 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/WaitSpec.java @@ -0,0 +1,12 @@ +package pt.up.fe.specs.fortran.ast.nodes.io; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; + +public abstract class WaitSpec extends FortranNode { + public WaitSpec(DataStore data, Collection children) { + super(data, children); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/WaitStmt.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/WaitStmt.java new file mode 100644 index 00000000..4298789c --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/WaitStmt.java @@ -0,0 +1,29 @@ +package pt.up.fe.specs.fortran.ast.nodes.io; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.FortranKeyword; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.stmt.ActionStmt; + +import java.util.Collection; +import java.util.List; +import java.util.stream.Collectors; + +public class WaitStmt extends ActionStmt { + public WaitStmt(DataStore data, Collection children) { + super(data, children); + } + + public List getSpecs() { + return getChildren(WaitSpec.class); + } + + @Override + public String getStmtCode() { + var specsCode = getSpecs().stream() + .map(WaitSpec::getCode) + .collect(Collectors.joining(", ", "(", ")")); + + return keyword(FortranKeyword.WAIT) + specsCode; + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/WriteStmt.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/WriteStmt.java new file mode 100644 index 00000000..7704be16 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/WriteStmt.java @@ -0,0 +1,38 @@ +package pt.up.fe.specs.fortran.ast.nodes.io; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.FortranKeyword; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.expr.Expr; +import pt.up.fe.specs.fortran.ast.nodes.stmt.ActionStmt; + +import java.util.Collection; +import java.util.List; +import java.util.stream.Collectors; + +public class WriteStmt extends ActionStmt { + public WriteStmt(DataStore data, Collection children) { + super(data, children); + } + + public List getSpecs() { + return getChildrenOf(IoControlSpec.class); + } + + public List getItems() { + return getChildrenOf(OutputItem.class); + } + + @Override + public String getStmtCode() { + var specsCode = getSpecs().stream() + .map(IoControlSpec::getCode) + .collect(Collectors.joining(", ", "(", ")")); + + var itemsCode = getItems().stream() + .map(OutputItem::getCode) + .collect(Collectors.joining(", ")); + + return keyword(FortranKeyword.WRITE) + specsCode + " " + itemsCode; + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/enums/ExprCloseSpecKind.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/enums/ExprCloseSpecKind.java new file mode 100644 index 00000000..66159f02 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/enums/ExprCloseSpecKind.java @@ -0,0 +1,6 @@ +package pt.up.fe.specs.fortran.ast.nodes.io.enums; + +public enum ExprCloseSpecKind { + UNIT, + STATUS; +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/enums/ExprConnectSpecKind.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/enums/ExprConnectSpecKind.java new file mode 100644 index 00000000..c8f6cf03 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/enums/ExprConnectSpecKind.java @@ -0,0 +1,30 @@ +package pt.up.fe.specs.fortran.ast.nodes.io.enums; + +import pt.up.fe.specs.util.providers.StringProvider; + +public enum ExprConnectSpecKind { + UNIT, + ACCESS, + ACTION, + ASYNCHRONOUS, + BLANK, + DECIMAL, + DELIM, + ENCODING, + ERR, + FILE, + FORM, + PAD, + POSITION, + RECL, + ROUND, + SIGN, + STATUS, + CARRIAGECONTROL, + CONVERT, + DISPOSE; + + public static ExprConnectSpecKind convert(String name) { + return valueOf(name.toUpperCase()); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/enums/ExprIoControlSpecKind.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/enums/ExprIoControlSpecKind.java new file mode 100644 index 00000000..db9f7a75 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/enums/ExprIoControlSpecKind.java @@ -0,0 +1,19 @@ +package pt.up.fe.specs.fortran.ast.nodes.io.enums; + +public enum ExprIoControlSpecKind { + ASYNCHRONOUS, + ADVANCE, + BLANK, + DECIMAL, + DELIM, + PAD, + POS, + REC, + ROUND, + SIGN, + UNIT; + + public static ExprIoControlSpecKind convert(String name) { + return valueOf(name.toUpperCase()); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/enums/ExprWaitSpecKind.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/enums/ExprWaitSpecKind.java new file mode 100644 index 00000000..b1b217bd --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/enums/ExprWaitSpecKind.java @@ -0,0 +1,6 @@ +package pt.up.fe.specs.fortran.ast.nodes.io.enums; + +public enum ExprWaitSpecKind { + UNIT, + ID; +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/enums/LabelIoControlSpecKind.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/enums/LabelIoControlSpecKind.java new file mode 100644 index 00000000..ec65f6f1 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/enums/LabelIoControlSpecKind.java @@ -0,0 +1,11 @@ +package pt.up.fe.specs.fortran.ast.nodes.io.enums; + +public enum LabelIoControlSpecKind { + END, + EOR, + ERR; + + public static LabelIoControlSpecKind convert(String name) { + return valueOf(name.toUpperCase()); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/enums/LabelWaitSpecKind.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/enums/LabelWaitSpecKind.java new file mode 100644 index 00000000..463d5d0f --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/enums/LabelWaitSpecKind.java @@ -0,0 +1,7 @@ +package pt.up.fe.specs.fortran.ast.nodes.io.enums; + +public enum LabelWaitSpecKind { + END, + EOR, + ERR; +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/enums/VarCloseSpecKind.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/enums/VarCloseSpecKind.java new file mode 100644 index 00000000..3b2b01e9 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/enums/VarCloseSpecKind.java @@ -0,0 +1,6 @@ +package pt.up.fe.specs.fortran.ast.nodes.io.enums; + +public enum VarCloseSpecKind { + IOSTAT, + IOMSG; +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/enums/VarConnectSpecKind.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/enums/VarConnectSpecKind.java new file mode 100644 index 00000000..74950e5c --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/enums/VarConnectSpecKind.java @@ -0,0 +1,11 @@ +package pt.up.fe.specs.fortran.ast.nodes.io.enums; + +public enum VarConnectSpecKind { + IOMSG, + IOSTAT, + NEWUNIT; + + public static VarConnectSpecKind convert(String name) { + return valueOf(name.toUpperCase()); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/enums/VarIoControlSpecKind.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/enums/VarIoControlSpecKind.java new file mode 100644 index 00000000..8d35d0f3 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/enums/VarIoControlSpecKind.java @@ -0,0 +1,13 @@ +package pt.up.fe.specs.fortran.ast.nodes.io.enums; + +public enum VarIoControlSpecKind { + ID, + IOMSG, + IOSTAT, + SIZE, + UNIT; + + public static VarIoControlSpecKind convert(String name) { + return valueOf(name.toUpperCase()); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/enums/VarPosFlushSpecKind.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/enums/VarPosFlushSpecKind.java new file mode 100644 index 00000000..fc660ddb --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/enums/VarPosFlushSpecKind.java @@ -0,0 +1,6 @@ +package pt.up.fe.specs.fortran.ast.nodes.io.enums; + +public enum VarPosFlushSpecKind { + IOMSG, + IOSTAT; +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/enums/VarWaitSpecKind.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/enums/VarWaitSpecKind.java new file mode 100644 index 00000000..3d11abac --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/io/enums/VarWaitSpecKind.java @@ -0,0 +1,6 @@ +package pt.up.fe.specs.fortran.ast.nodes.io.enums; + +public enum VarWaitSpecKind { + IOMSG, + IOSTAT; +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/omp/OmpBlockConstruct.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/omp/OmpBlockConstruct.java index 054fece5..a566e34c 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/omp/OmpBlockConstruct.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/omp/OmpBlockConstruct.java @@ -4,7 +4,7 @@ import pt.up.fe.specs.fortran.ast.FortranKeyword; import pt.up.fe.specs.fortran.ast.nodes.FortranNode; import pt.up.fe.specs.fortran.ast.nodes.omp.enums.OmpDirectiveKind; -import pt.up.fe.specs.fortran.ast.nodes.program.Execution; +import pt.up.fe.specs.fortran.ast.nodes.program.ExecBlock; import java.util.Collection; import java.util.stream.Collectors; @@ -14,18 +14,18 @@ public OmpBlockConstruct(DataStore data, Collection child super(data, children); } - public Execution getBody() { - return getChild(Execution.class); + public ExecBlock getBody() { + return getChild(ExecBlock.class); } - public Execution setBody(Execution body) { - removeChildren(Execution.class); + public ExecBlock setBody(ExecBlock body) { + removeChildren(ExecBlock.class); - return (Execution) addChild(body); + return (ExecBlock) addChild(body); } @Override - public String getStmtCode() { + public String getCode() { var code = new StringBuilder(); String directive = get(KINDS).stream() .map(OmpDirectiveKind::getString) diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/omp/OmpConstruct.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/omp/OmpConstruct.java index 8ed25563..6cfe4a26 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/omp/OmpConstruct.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/omp/OmpConstruct.java @@ -6,13 +6,13 @@ import pt.up.fe.specs.fortran.ast.nodes.FortranNode; import pt.up.fe.specs.fortran.ast.nodes.omp.clause.OmpClause; import pt.up.fe.specs.fortran.ast.nodes.omp.enums.OmpDirectiveKind; -import pt.up.fe.specs.fortran.ast.nodes.stmt.ExecutableStmt; +import pt.up.fe.specs.fortran.ast.nodes.program.construct.ExecConstruct; import java.util.Collection; import java.util.List; import java.util.stream.Collectors; -abstract public class OmpConstruct extends ExecutableStmt { +abstract public class OmpConstruct extends ExecConstruct { public final static DataKey> KINDS = KeyFactory.enumerationMulti("kinds", OmpDirectiveKind.class); diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/omp/OmpLoopConstruct.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/omp/OmpLoopConstruct.java index 53f5e94c..5fa2ba15 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/omp/OmpLoopConstruct.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/omp/OmpLoopConstruct.java @@ -43,7 +43,7 @@ public boolean hasNowait() { } @Override - public String getStmtCode() { + public String getCode() { var code = new StringBuilder(); String directive = get(KINDS).stream() .map(OmpDirectiveKind::getString) diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/omp/clause/OmpReductionClause.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/omp/clause/OmpReductionClause.java index 699e55e6..d5160773 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/omp/clause/OmpReductionClause.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/omp/clause/OmpReductionClause.java @@ -29,6 +29,6 @@ public String getCode() { .map(DataRef::getCode) .collect(Collectors.joining(", ")); - return get(KIND).getCode() + "(" + get(OPERATOR).getOpString() + ":" + names + ")"; + return get(KIND).getCode() + "(" + encase(get(OPERATOR).getString()) + ":" + names + ")"; } } diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/StmtBlock.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/ExecBlock.java similarity index 52% rename from FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/StmtBlock.java rename to FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/ExecBlock.java index 944b625c..d985c06e 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/StmtBlock.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/ExecBlock.java @@ -2,26 +2,26 @@ import org.suikasoft.jOptions.Interfaces.DataStore; import pt.up.fe.specs.fortran.ast.nodes.FortranNode; -import pt.up.fe.specs.fortran.ast.nodes.stmt.Stmt; +import pt.up.fe.specs.fortran.ast.nodes.program.construct.ExecPartConstruct; import java.util.Collection; import java.util.List; import java.util.stream.Collectors; -public class StmtBlock extends FortranNode { +public class ExecBlock extends FortranNode { - public StmtBlock(DataStore data, Collection children) { + public ExecBlock(DataStore data, Collection children) { super(data, children); } - public List getStatements() { - return getChildren(Stmt.class); + public List getConstructs() { + return getChildren(ExecPartConstruct.class); } @Override public String getCode() { - return getStatements().stream() - .map(Stmt::getCode) + return getConstructs().stream() + .map(FortranNode::getCode) .collect(Collectors.joining(ln())); } } diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/Execution.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/Execution.java index 1820c771..770e5ce7 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/Execution.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/Execution.java @@ -2,11 +2,8 @@ import org.suikasoft.jOptions.Interfaces.DataStore; import pt.up.fe.specs.fortran.ast.nodes.FortranNode; -import pt.up.fe.specs.fortran.ast.nodes.decl.LabelDecl; -import pt.up.fe.specs.fortran.ast.nodes.stmt.ExecutableStmt; import java.util.Collection; -import java.util.List; /** @@ -15,9 +12,11 @@ * executable-construct [execution-part-construct]... *

* Contains statements to execute + *

+ * It is more specialized than ExecBlock, since it requires the last construct + * to be a ExecConstruct (if it exists) to avoid AST ambiguity. */ -public class Execution extends StmtBlock { - +public class Execution extends ExecBlock { public Execution(DataStore data, Collection children) { super(data, children); } diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/FortranFile.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/FortranFile.java index 7495ddb8..d075bd64 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/FortranFile.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/FortranFile.java @@ -3,7 +3,12 @@ import org.suikasoft.jOptions.Datakey.DataKey; import org.suikasoft.jOptions.Datakey.KeyFactory; import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.FortranAstOptions; +import pt.up.fe.specs.fortran.ast.FortranContext; import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.program.unit.ProgramUnit; +import pt.up.fe.specs.util.SpecsIo; +import pt.up.fe.specs.util.utilities.StringLines; import java.util.Collection; import java.util.List; @@ -15,6 +20,7 @@ * The root node of a Fortran application. Contains one or more ProgramUnit children. */ public class FortranFile extends FortranNode { + public static final int COLUMN_LIMIT = 72; /** * The name of this file. @@ -50,16 +56,79 @@ public List getFinalComments() { @Override public String getCode() { + // To output in the correct form, we set it in the context at the start + var fileName = get(FILE_NAME); + var fixedForm = List.of("f", "for").contains(SpecsIo.getExtension(fileName)); + getContext().set(FortranContext.FIXED_FORM, fixedForm); + var finalComments = getFinalComments(); + var commentSuffix = finalComments.stream() - .map(comment -> comment + ln()) + .map(comment -> getCommentStarter() + comment + ln()) .collect(Collectors.joining()); var programUnitsCode = getProgramUnits().stream() - .map(ProgramUnit::getCode) - .collect(Collectors.joining("\n")); + .map(programUnit -> programUnit.getCode() + ln()) + .collect(Collectors.joining(ln())); + + var code = programUnitsCode + commentSuffix; + if (fixedForm) { + code = compactCode(code); + } + + return code; + } + + /** + * Compacts the code by removing as many spaces as possible dividing lines when needed. + * This is useful for making sure the code fits within the 72-character limit of fixed-form Fortran. + * + * @param code The code to compact. + * @return The compacted code. + */ + private String compactCode(String code) { + return StringLines.getLines(code).stream() + .map(this::compactLine) + .collect(Collectors.joining(ln())); + } + + /** + * Compacts a line of code. + * It removes spaces after the first 6 characters, except for spaces inside string literals, and divides lines + * when they reach the 72th column to prevent overflow. + * + * @param line The line of code to compact. + * @return The compacted line of code. + */ + private String compactLine(String line) { + if (line.length() <= 6) { + return line; + } + + var newLine = new StringBuilder(line.substring(0, 6)); + var stringDelimiter = getContext().getFortranOptions().get(FortranAstOptions.SINGLE_QUOTE_STRINGS) + ? '\'' : '"'; + var inString = false; + var lineSize = 6; + + for (var i = 6; i < line.length(); i++) { + var c = line.charAt(i); + if (c == stringDelimiter) { + inString = !inString; + } + if (!inString && c == ' ') { + continue; + } + + if (lineSize == COLUMN_LIMIT) { + newLine.append("\n +"); + lineSize = 6; + } - return programUnitsCode + commentSuffix; + newLine.append(c); + lineSize++; + } + return newLine.toString(); } } diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/Function.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/Function.java deleted file mode 100644 index ce48b156..00000000 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/Function.java +++ /dev/null @@ -1,50 +0,0 @@ -package pt.up.fe.specs.fortran.ast.nodes.program; - -import org.suikasoft.jOptions.Datakey.DataKey; -import org.suikasoft.jOptions.Datakey.KeyFactory; -import org.suikasoft.jOptions.Interfaces.DataStore; -import pt.up.fe.specs.fortran.ast.nodes.FortranNode; -import pt.up.fe.specs.fortran.ast.nodes.expr.DataRef; - -import java.util.Collection; -import java.util.List; -import java.util.stream.Collectors; - -import static pt.up.fe.specs.fortran.ast.FortranKeyword.*; - -public class Function extends ProgramUnit { - - public final static DataKey FUNCTION_NAME = KeyFactory.string("programName"); - - public Function(DataStore data, Collection children) { - super(data, children); - } - - public List getArgs() { - return getChildrenOf(DataRef.class); - } - - @Override - public String getCode() { - - var code = new StringBuilder(); - - var argCode = "(" + - getArgs().stream() - .map(DataRef::getCode) - .collect(Collectors.joining(", ")) + - ")"; - - var functionName = get(FUNCTION_NAME); - - code.append(keyword(FUNCTION)).append(" ").append(functionName).append(argCode).append(ln()); - - code.append(getBodyCode()).append(ln()); - - code.append(keyword(END)); - code.append(" ").append(keyword(FUNCTION)).append(" ").append(functionName); - code.append(ln()); - - return code.toString(); - } -} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/InternalSubprogram.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/InternalSubprogram.java deleted file mode 100644 index 0debd9b2..00000000 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/InternalSubprogram.java +++ /dev/null @@ -1,38 +0,0 @@ -package pt.up.fe.specs.fortran.ast.nodes.program; - -import org.suikasoft.jOptions.Interfaces.DataStore; -import pt.up.fe.specs.fortran.ast.nodes.FortranNode; -import pt.up.fe.specs.fortran.ast.nodes.stmt.ContainsStmt; -import pt.up.fe.specs.fortran.ast.nodes.stmt.Stmt; - -import java.util.Collection; -import java.util.List; -import java.util.Optional; -import java.util.stream.Collectors; - -public class InternalSubprogram extends FortranNode { - public InternalSubprogram(DataStore data, Collection children) { - super(data, children); - } - - public Optional getContains() { - return getChildTry(ContainsStmt.class); - } - - public List getSubprograms() { - return getChildrenOf(Subroutine.class); - } - - @Override - public String getCode() { - StringBuilder code = new StringBuilder(); - - getContains().ifPresent(stmt -> code.append(stmt.getCode()).append(ln())); - - code.append(getSubprograms().stream() - .map(Subroutine::getCode) - .collect(Collectors.joining(ln()))); - - return code.toString(); - } -} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/InternalSubprogramPart.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/InternalSubprogramPart.java new file mode 100644 index 00000000..11250321 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/InternalSubprogramPart.java @@ -0,0 +1,34 @@ +package pt.up.fe.specs.fortran.ast.nodes.program; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.program.subprogram.InternalSubprogram; +import pt.up.fe.specs.fortran.ast.nodes.stmt.ContainsStmt; + +import java.util.Collection; +import java.util.List; +import java.util.stream.Collectors; + +public class InternalSubprogramPart extends FortranNode { + public InternalSubprogramPart(DataStore data, Collection children) { + super(data, children); + } + + public ContainsStmt getContainsStmt() { + return getChild(ContainsStmt.class); + } + + public List getSubprograms() { + return getChildrenOf(InternalSubprogram.class); + } + + @Override + public String getCode() { + var containsStmtCode = getContainsStmt().getCode(); + var subprogramsCode = getSubprograms().stream() + .map(subprogram -> ln() + indent(subprogram.getCode())) + .collect(Collectors.joining(ln())); + + return containsStmtCode + subprogramsCode; + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/MainProgram.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/MainProgram.java deleted file mode 100644 index c3b4a1d5..00000000 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/MainProgram.java +++ /dev/null @@ -1,60 +0,0 @@ -package pt.up.fe.specs.fortran.ast.nodes.program; - -import org.suikasoft.jOptions.Datakey.DataKey; -import org.suikasoft.jOptions.Datakey.KeyFactory; -import org.suikasoft.jOptions.Interfaces.DataStore; -import pt.up.fe.specs.fortran.ast.nodes.FortranNode; - -import java.util.Collection; -import java.util.Optional; - -import static pt.up.fe.specs.fortran.ast.FortranKeyword.END; -import static pt.up.fe.specs.fortran.ast.FortranKeyword.PROGRAM; - -/** - * R1401 main-program - *

- * [program-stmt] [specification-part] [execution-part] [internal-subprogram-part] end-program-stmt - *

- * Missing: [specification-part] [execution-part] [internal-subprogram-part] - */ -public class MainProgram extends ProgramUnit { - - // DATAKEYS BEGIN - - public final static DataKey> NAME = KeyFactory.optional("programName"); - - // DATAKEYS END - - public MainProgram(DataStore data, Collection children) { - super(data, children); - } - - public Optional getName() { - return get(NAME); - } - - public Optional getProgramStmt() { - return getChildOf(ProgramStmt.class); - } - - public EndProgramStmt getEndProgramStmt() { - return getChild(EndProgramStmt.class); - } - - @Override - public String getCode() { - var programStmtOpt = getProgramStmt(); - var endProgramStmt = getEndProgramStmt(); - - var code = new StringBuilder(); - - programStmtOpt.ifPresent(stmt -> code.append(stmt.getCode()).append(ln())); - - code.append(getBodyCode()).append(ln()); - - code.append(endProgramStmt.getCode()).append(ln()); - - return code.toString(); - } -} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/ProgramUnit.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/ProgramUnit.java deleted file mode 100644 index ade1be9e..00000000 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/ProgramUnit.java +++ /dev/null @@ -1,42 +0,0 @@ -package pt.up.fe.specs.fortran.ast.nodes.program; - -import org.suikasoft.jOptions.Interfaces.DataStore; -import pt.up.fe.specs.fortran.ast.nodes.FortranNode; - -import java.util.Collection; -import java.util.stream.Collectors; - -/** - * R502 program-unit - */ -public abstract class ProgramUnit extends FortranNode { - public ProgramUnit(DataStore data, Collection children) { - super(data, children); - } - - public Specification getSpecification() { - return getChild(Specification.class); - } - - public String getBodyCode() { - /* - // Write code of the children, indented - var code = new StringBuilder(); - for(var stmt : getChildren()) { - - code.append(tab()); - - // If statement has a LabelDecl, print it - - } - */ - return getChildren().stream() - .filter(node -> (node instanceof StmtBlock) || (node instanceof InternalSubprogram)) - .map(FortranNode::getCode) - .filter(code -> !code.isEmpty()) - .map(this::indent) - .collect(Collectors.joining(ln())); - - //return code.toString(); - } -} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/Specification.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/Specification.java index 1082605a..5df80d9b 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/Specification.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/Specification.java @@ -2,23 +2,61 @@ import org.suikasoft.jOptions.Interfaces.DataStore; import pt.up.fe.specs.fortran.ast.nodes.FortranNode; -import pt.up.fe.specs.fortran.ast.nodes.stmt.SpecificationStmt; -import pt.up.fe.specs.fortran.ast.nodes.stmt.UseStmt; +import pt.up.fe.specs.fortran.ast.nodes.program.construct.DeclConstruct; +import pt.up.fe.specs.fortran.ast.nodes.stmt.implicit.ImplicitPartStmt; +import pt.up.fe.specs.fortran.ast.nodes.stmt.ImportStmt; +import pt.up.fe.specs.fortran.ast.nodes.stmt.usestmt.UseStmt; import java.util.Collection; import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.Stream; -public class Specification extends StmtBlock { - +public class Specification extends FortranNode { public Specification(DataStore data, Collection children) { super(data, children); } - public List getSpecificationStatements() { - return getChildrenOf(SpecificationStmt.class); + public List getUseStmts() { + return getChildrenOf(UseStmt.class); + } + + public List getImportStmts() { + return getChildrenOf(ImportStmt.class); + } + + public List getImplicitPartStmts() { + return getChildrenOf(ImplicitPartStmt.class); + } + + public List getDeclarationConstructs() { + return getChildrenOf(DeclConstruct.class); } public void addUseStmt(UseStmt stmt) { addChild(0, stmt); } + + @Override + public String getCode() { + var useStmtsCode = getUseStmts().stream() + .map(UseStmt::getCode) + .collect(Collectors.joining(ln())); + + var importStmtsCode = getImportStmts().stream() + .map(ImportStmt::getCode) + .collect(Collectors.joining(ln())); + + var implicitPartCode = getImplicitPartStmts().stream() + .map(ImplicitPartStmt::getCode) + .collect(Collectors.joining(ln())); + + var declConstructsCode = getDeclarationConstructs().stream() + .map(DeclConstruct::getCode) + .collect(Collectors.joining(ln())); + + return Stream.of(useStmtsCode, importStmtsCode, implicitPartCode, declConstructsCode) + .filter(code -> !code.isEmpty()) + .collect(Collectors.joining(ln())); + } } diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/Subroutine.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/Subroutine.java deleted file mode 100644 index 440a3572..00000000 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/Subroutine.java +++ /dev/null @@ -1,42 +0,0 @@ -package pt.up.fe.specs.fortran.ast.nodes.program; - -import org.suikasoft.jOptions.Datakey.DataKey; -import org.suikasoft.jOptions.Datakey.KeyFactory; -import org.suikasoft.jOptions.Interfaces.DataStore; -import pt.up.fe.specs.fortran.ast.nodes.FortranNode; -import pt.up.fe.specs.fortran.ast.nodes.decl.DummyArgumentDecl; - -import java.util.Collection; -import java.util.List; -import java.util.stream.Collectors; - -import static pt.up.fe.specs.fortran.ast.FortranKeyword.*; - -public class Subroutine extends ProgramUnit { - - public final static DataKey NAME = KeyFactory.string("name"); - - public Subroutine(DataStore data, Collection children) { - super(data, children); - } - - public String getName() { - return get(NAME); - } - - public SubroutineStmt getSubroutineStmt() { - return getChild(SubroutineStmt.class); - } - - public EndSubroutineStmt getEndSubroutineStmt() { - return getChild(EndSubroutineStmt.class); - } - - @Override - public String getCode() { - var subroutineStmt = getSubroutineStmt(); - var endSubroutineStmt = getEndSubroutineStmt(); - - return subroutineStmt.getCode() + ln() + getBodyCode() + ln() + endSubroutineStmt.getCode(); - } -} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/construct/ActionStmtAdapter.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/construct/ActionStmtAdapter.java new file mode 100644 index 00000000..1277068d --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/construct/ActionStmtAdapter.java @@ -0,0 +1,22 @@ +package pt.up.fe.specs.fortran.ast.nodes.program.construct; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.stmt.ActionStmt; + +import java.util.Collection; + +public class ActionStmtAdapter extends ExecConstruct { + public ActionStmtAdapter(DataStore data, Collection children) { + super(data, children); + } + + public ActionStmt getStmt() { + return getChild(ActionStmt.class, 0); + } + + @Override + public String getCode() { + return getStmt().getCode(); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/construct/DeclConstruct.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/construct/DeclConstruct.java new file mode 100644 index 00000000..e93f7ce3 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/construct/DeclConstruct.java @@ -0,0 +1,12 @@ +package pt.up.fe.specs.fortran.ast.nodes.program.construct; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; + +public abstract class DeclConstruct extends FortranNode { + public DeclConstruct(DataStore data, Collection children) { + super(data, children); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/construct/DeclStmtAdapter.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/construct/DeclStmtAdapter.java new file mode 100644 index 00000000..fa5227ae --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/construct/DeclStmtAdapter.java @@ -0,0 +1,22 @@ +package pt.up.fe.specs.fortran.ast.nodes.program.construct; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.stmt.DeclStmt; + +import java.util.Collection; + +public class DeclStmtAdapter extends DeclConstruct { + public DeclStmtAdapter(DataStore data, Collection children) { + super(data, children); + } + + public DeclStmt getStmt() { + return getChild(DeclStmt.class, 0); + } + + @Override + public String getCode() { + return getStmt().getCode(); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/construct/DirectiveExecAdapter.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/construct/DirectiveExecAdapter.java new file mode 100644 index 00000000..885d3180 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/construct/DirectiveExecAdapter.java @@ -0,0 +1,22 @@ +package pt.up.fe.specs.fortran.ast.nodes.program.construct; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.stmt.CompilerDirective; + +import java.util.Collection; + +public class DirectiveExecAdapter extends ExecConstruct { + public DirectiveExecAdapter(DataStore data, Collection children) { + super(data, children); + } + + public CompilerDirective getDirective() { + return getChild(CompilerDirective.class, 0); + } + + @Override + public String getCode() { + return getDirective().getCode(); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/construct/DirectiveSpecAdapter.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/construct/DirectiveSpecAdapter.java new file mode 100644 index 00000000..f00e4d91 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/construct/DirectiveSpecAdapter.java @@ -0,0 +1,22 @@ +package pt.up.fe.specs.fortran.ast.nodes.program.construct; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.stmt.CompilerDirective; + +import java.util.Collection; + +public class DirectiveSpecAdapter extends SpecConstruct { + public DirectiveSpecAdapter(DataStore data, Collection children) { + super(data, children); + } + + public CompilerDirective getDirective() { + return getChild(CompilerDirective.class, 0); + } + + @Override + public String getCode() { + return getDirective().getCode(); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/construct/ExecConstruct.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/construct/ExecConstruct.java new file mode 100644 index 00000000..c009db2a --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/construct/ExecConstruct.java @@ -0,0 +1,12 @@ +package pt.up.fe.specs.fortran.ast.nodes.program.construct; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; + +public abstract class ExecConstruct extends ExecPartConstruct { + public ExecConstruct(DataStore data, Collection children) { + super(data, children); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/construct/ExecPartConstruct.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/construct/ExecPartConstruct.java new file mode 100644 index 00000000..2e1a87c4 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/construct/ExecPartConstruct.java @@ -0,0 +1,12 @@ +package pt.up.fe.specs.fortran.ast.nodes.program.construct; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; + +public abstract class ExecPartConstruct extends FortranNode { + public ExecPartConstruct(DataStore data, Collection children) { + super(data, children); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/construct/IDEStmtDeclAdapter.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/construct/IDEStmtDeclAdapter.java new file mode 100644 index 00000000..160abd7b --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/construct/IDEStmtDeclAdapter.java @@ -0,0 +1,22 @@ +package pt.up.fe.specs.fortran.ast.nodes.program.construct; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.stmt.IDEStmt; + +import java.util.Collection; + +public class IDEStmtDeclAdapter extends DeclConstruct { + public IDEStmtDeclAdapter(DataStore data, Collection children) { + super(data, children); + } + + public IDEStmt getStmt() { + return getChild(IDEStmt.class, 0); + } + + @Override + public String getCode() { + return getStmt().getCode(); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/construct/IDEStmtExecAdapter.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/construct/IDEStmtExecAdapter.java new file mode 100644 index 00000000..da67f4eb --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/construct/IDEStmtExecAdapter.java @@ -0,0 +1,22 @@ +package pt.up.fe.specs.fortran.ast.nodes.program.construct; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.stmt.IDEStmt; + +import java.util.Collection; + +public class IDEStmtExecAdapter extends ExecPartConstruct { + public IDEStmtExecAdapter(DataStore data, Collection children) { + super(data, children); + } + + public IDEStmt getStmt() { + return getChild(IDEStmt.class, 0); + } + + @Override + public String getCode() { + return getStmt().getCode(); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/construct/ISStmtSpecAdapter.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/construct/ISStmtSpecAdapter.java new file mode 100644 index 00000000..bcfff93c --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/construct/ISStmtSpecAdapter.java @@ -0,0 +1,22 @@ +package pt.up.fe.specs.fortran.ast.nodes.program.construct; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.stmt.ISStmt; + +import java.util.Collection; + +public class ISStmtSpecAdapter extends SpecConstruct { + public ISStmtSpecAdapter(DataStore data, Collection children) { + super(data, children); + } + + public ISStmt getStmt() { + return getChild(ISStmt.class, 0); + } + + @Override + public String getCode() { + return getStmt().getCode(); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/construct/SpecConstruct.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/construct/SpecConstruct.java new file mode 100644 index 00000000..38ece262 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/construct/SpecConstruct.java @@ -0,0 +1,12 @@ +package pt.up.fe.specs.fortran.ast.nodes.program.construct; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; + +public abstract class SpecConstruct extends DeclConstruct { + public SpecConstruct(DataStore data, Collection children) { + super(data, children); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/construct/SpecStmtAdapter.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/construct/SpecStmtAdapter.java new file mode 100644 index 00000000..c34ad225 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/construct/SpecStmtAdapter.java @@ -0,0 +1,22 @@ +package pt.up.fe.specs.fortran.ast.nodes.program.construct; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.stmt.SpecStmt; + +import java.util.Collection; + +public class SpecStmtAdapter extends SpecConstruct { + public SpecStmtAdapter(DataStore data, Collection children) { + super(data, children); + } + + public SpecStmt getStmt() { + return getChild(SpecStmt.class, 0); + } + + @Override + public String getCode() { + return getStmt().getCode(); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/subprogram/EndFunctionStmt.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/subprogram/EndFunctionStmt.java new file mode 100644 index 00000000..44e30da1 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/subprogram/EndFunctionStmt.java @@ -0,0 +1,35 @@ +package pt.up.fe.specs.fortran.ast.nodes.program.subprogram; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.FortranKeyword; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.specification.interfaces.InterfaceFunction; +import pt.up.fe.specs.fortran.ast.nodes.stmt.Stmt; + +import java.util.Collection; + +public class EndFunctionStmt extends Stmt { + public EndFunctionStmt(DataStore data, Collection children) { + super(data, children); + } + + public String getFunctionName() { + var parent = getParent(); + + if (parent instanceof Function function) { + return function.getName(); + } + + if (parent instanceof InterfaceFunction interfaceFunction) { + return interfaceFunction.getName(); + } + + throw new RuntimeException("EndFunctionStmt must be inside a Function or InterfaceFunction, but found: " + parent.getClass().getSimpleName()); + } + + @Override + public String getStmtCode() { + var functionName = getFunctionName(); + return keyword(FortranKeyword.END) + " " + keyword(FortranKeyword.FUNCTION) + " " + functionName; + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/subprogram/EndSubroutineStmt.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/subprogram/EndSubroutineStmt.java new file mode 100644 index 00000000..7094c971 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/subprogram/EndSubroutineStmt.java @@ -0,0 +1,40 @@ +package pt.up.fe.specs.fortran.ast.nodes.program.subprogram; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.FortranKeyword; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.specification.interfaces.InterfaceSubroutine; +import pt.up.fe.specs.fortran.ast.nodes.stmt.Stmt; + +import java.util.Collection; + +public class EndSubroutineStmt extends Stmt { + public EndSubroutineStmt(DataStore data, Collection children) { + super(data, children); + } + + public String getSubroutineName() { + var parent = getParent(); + + if (parent instanceof Subroutine subroutine) { + return subroutine.getName(); + } + + if (parent instanceof InterfaceSubroutine interfaceSubroutine) { + return interfaceSubroutine.getName(); + } + + throw new RuntimeException("EndSubroutineStmt must be inside a Subroutine or InterfaceSubroutine, but found: " + parent.getClass().getSimpleName()); + } + + @Override + public String getStmtCode() { + // TODO(Process-ing): Remove this special case + if (fixedForm()) { + return keyword(FortranKeyword.END); + } + + var subroutineName = getSubroutineName(); + return keyword(FortranKeyword.END) + " " + keyword(FortranKeyword.SUBROUTINE) + " " + subroutineName; + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/subprogram/Function.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/subprogram/Function.java new file mode 100644 index 00000000..ebf4ad4c --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/subprogram/Function.java @@ -0,0 +1,25 @@ +package pt.up.fe.specs.fortran.ast.nodes.program.subprogram; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; + +public class Function extends InternalSubprogram { + + public Function(DataStore data, Collection children) { + super(data, children); + } + + public String getName() { + return getFunctionStmt().getFunctionName(); + } + + public FunctionStmt getFunctionStmt() { + return (FunctionStmt) getStartStmt(); + } + + public EndFunctionStmt getEndFunctionStmt() { + return (EndFunctionStmt) getEndStmt(); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/subprogram/FunctionStmt.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/subprogram/FunctionStmt.java new file mode 100644 index 00000000..ed7daeac --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/subprogram/FunctionStmt.java @@ -0,0 +1,68 @@ +package pt.up.fe.specs.fortran.ast.nodes.program.subprogram; + +import org.suikasoft.jOptions.Datakey.DataKey; +import org.suikasoft.jOptions.Datakey.KeyFactory; +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.FortranKeyword; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.decl.NamedParameter; +import pt.up.fe.specs.fortran.ast.nodes.specification.LanguageBindingSpec; +import pt.up.fe.specs.fortran.ast.nodes.specification.funcspec.FunctionSpec; +import pt.up.fe.specs.fortran.ast.nodes.stmt.Stmt; + +import java.util.Collection; +import java.util.List; +import java.util.Optional; +import java.util.stream.Collectors; + +public class FunctionStmt extends Stmt { + public static final DataKey FUNCTION_NAME = KeyFactory.string("function_name"); + public static final DataKey> RESULT_NAME = KeyFactory.optional("result_name"); + + public FunctionStmt(DataStore data, Collection children) { + super(data, children); + } + + public List getFunctionSpecs() { + return getChildrenOf(FunctionSpec.class); + } + + public String getFunctionName() { + return get(FUNCTION_NAME); + } + + public List getParameters() { + return getChildrenOf(NamedParameter.class); + } + + public Optional getBinding() { + return getChildOf(LanguageBindingSpec.class); + } + + public Optional getResultName() { + return get(RESULT_NAME); + } + + @Override + public String getStmtCode() { + var prefix = getFunctionSpecs().stream() + .map(spec -> spec.getCode() + " ") + .collect(Collectors.joining()); + + var functionName = getFunctionName(); + + var argCode = getParameters().stream() + .map(NamedParameter::getCode) + .collect(java.util.stream.Collectors.joining(", ", "(", ")")); + + var bindingCode = getBinding() + .map(binding -> " " + binding) + .orElse(""); + var resultNameCode = getResultName() + .map(name -> " " + keyword(FortranKeyword.RESULT) + "(" + name + ")") + .orElse(""); + var suffix = resultNameCode + bindingCode; + + return prefix + keyword(FortranKeyword.FUNCTION) + " " + functionName + argCode + suffix; + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/shapes/ShapeSpecification.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/subprogram/InternalSubprogram.java similarity index 52% rename from FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/shapes/ShapeSpecification.java rename to FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/subprogram/InternalSubprogram.java index 9c84eb82..9daa7840 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/shapes/ShapeSpecification.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/subprogram/InternalSubprogram.java @@ -1,12 +1,12 @@ -package pt.up.fe.specs.fortran.ast.nodes.type.shapes; +package pt.up.fe.specs.fortran.ast.nodes.program.subprogram; import org.suikasoft.jOptions.Interfaces.DataStore; import pt.up.fe.specs.fortran.ast.nodes.FortranNode; import java.util.Collection; -public abstract class ShapeSpecification extends FortranNode { - public ShapeSpecification(DataStore data, Collection children) { +public class InternalSubprogram extends Subprogram { + public InternalSubprogram(DataStore data, Collection children) { super(data, children); } } diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/subprogram/Subprogram.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/subprogram/Subprogram.java new file mode 100644 index 00000000..fdc5b62c --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/subprogram/Subprogram.java @@ -0,0 +1,53 @@ +package pt.up.fe.specs.fortran.ast.nodes.program.subprogram; + +import org.suikasoft.jOptions.Datakey.DataKey; +import org.suikasoft.jOptions.Datakey.KeyFactory; +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.program.Execution; +import pt.up.fe.specs.fortran.ast.nodes.program.InternalSubprogramPart; +import pt.up.fe.specs.fortran.ast.nodes.program.Specification; +import pt.up.fe.specs.fortran.ast.nodes.stmt.Stmt; + +import java.util.Collection; +import java.util.Optional; + +public abstract class Subprogram extends FortranNode { + public Subprogram(DataStore data, Collection children) { + super(data, children); + } + + protected Stmt getStartStmt() { + return getChild(Stmt.class, 0); + } + + public Specification getSpecification() { + return getChild(Specification.class, 1); + } + + public Execution getExecution() { + return getChild(Execution.class, 2); + } + + public Optional getInternalPart() { + return getChildTry(InternalSubprogramPart.class, 3); + } + + protected Stmt getEndStmt() { + return getChild(Stmt.class, getNumChildren() - 1); + } + + public String getCode() { + var startStmtCode = getStartStmt().getCode(); + var specificationCode = getSpecification().getCode() + ln(); + var executionCode = getExecution().getCode(); + var internalPartCode = getInternalPart() + .map(part -> ln() + part.getCode()) + .orElse(""); + var endStmtCode = getEndStmt().getCode(); + + return startStmtCode + ln() + + indent(specificationCode + executionCode) + internalPartCode + ln() + + endStmtCode; + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/subprogram/Subroutine.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/subprogram/Subroutine.java new file mode 100644 index 00000000..5ca2f431 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/subprogram/Subroutine.java @@ -0,0 +1,26 @@ +package pt.up.fe.specs.fortran.ast.nodes.program.subprogram; + +import org.suikasoft.jOptions.Datakey.DataKey; +import org.suikasoft.jOptions.Datakey.KeyFactory; +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; + +public class Subroutine extends InternalSubprogram { + public Subroutine(DataStore data, Collection children) { + super(data, children); + } + + public String getName() { + return getSubroutineStmt().getSubroutineName(); + } + + public SubroutineStmt getSubroutineStmt() { + return (SubroutineStmt) getStartStmt(); + } + + public EndSubroutineStmt getEndSubroutineStmt() { + return (EndSubroutineStmt) getEndStmt(); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/SubroutineStmt.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/subprogram/SubroutineStmt.java similarity index 52% rename from FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/SubroutineStmt.java rename to FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/subprogram/SubroutineStmt.java index 32d994a1..0e0b25e2 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/SubroutineStmt.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/subprogram/SubroutineStmt.java @@ -1,8 +1,10 @@ -package pt.up.fe.specs.fortran.ast.nodes.program; +package pt.up.fe.specs.fortran.ast.nodes.program.subprogram; +import org.suikasoft.jOptions.Datakey.DataKey; +import org.suikasoft.jOptions.Datakey.KeyFactory; import org.suikasoft.jOptions.Interfaces.DataStore; import pt.up.fe.specs.fortran.ast.nodes.FortranNode; -import pt.up.fe.specs.fortran.ast.nodes.decl.DummyArgumentDecl; +import pt.up.fe.specs.fortran.ast.nodes.decl.Parameter; import pt.up.fe.specs.fortran.ast.nodes.stmt.Stmt; import java.util.Collection; @@ -12,20 +14,26 @@ import static pt.up.fe.specs.fortran.ast.FortranKeyword.SUBROUTINE; public class SubroutineStmt extends Stmt { + public static final DataKey SUBROUTINE_NAME = KeyFactory.string("subroutine_name"); + public SubroutineStmt(DataStore data, Collection children) { super(data, children); } - public List getDummyArgs() { - return getChildrenOf(DummyArgumentDecl.class); + public String getSubroutineName() { + return get(SUBROUTINE_NAME); + } + + public List getParameters() { + return getChildrenOf(Parameter.class); } @Override public String getStmtCode() { - var subroutineName = getAncestor(Subroutine.class).getName(); + var subroutineName = getSubroutineName(); - var argCode = getDummyArgs().stream() - .map(DummyArgumentDecl::getCode) + var argCode = getParameters().stream() + .map(Parameter::getCode) .collect(Collectors.joining(", ", "(", ")")); return keyword(SUBROUTINE) + " " + subroutineName + argCode; diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/EndSubroutineStmt.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/unit/EndModuleStmt.java similarity index 56% rename from FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/EndSubroutineStmt.java rename to FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/unit/EndModuleStmt.java index bfddc24f..09d80dce 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/EndSubroutineStmt.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/unit/EndModuleStmt.java @@ -1,4 +1,4 @@ -package pt.up.fe.specs.fortran.ast.nodes.program; +package pt.up.fe.specs.fortran.ast.nodes.program.unit; import org.suikasoft.jOptions.Interfaces.DataStore; import pt.up.fe.specs.fortran.ast.FortranKeyword; @@ -7,14 +7,15 @@ import java.util.Collection; -public class EndSubroutineStmt extends Stmt { - public EndSubroutineStmt(DataStore data, Collection children) { +public class EndModuleStmt extends Stmt { + public EndModuleStmt(DataStore data, Collection children) { super(data, children); } @Override public String getStmtCode() { - var subroutineName = getAncestor(Subroutine.class).getName(); - return keyword(FortranKeyword.END) + " " + keyword(FortranKeyword.SUBROUTINE) + " " + subroutineName; + var moduleName = getAncestor(Module.class).getName(); + + return keyword(FortranKeyword.END) + " " + keyword(FortranKeyword.MODULE) + " " + moduleName; } } diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/EndProgramStmt.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/unit/EndProgramStmt.java similarity index 77% rename from FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/EndProgramStmt.java rename to FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/unit/EndProgramStmt.java index f6f6bd66..924922c9 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/EndProgramStmt.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/unit/EndProgramStmt.java @@ -1,4 +1,4 @@ -package pt.up.fe.specs.fortran.ast.nodes.program; +package pt.up.fe.specs.fortran.ast.nodes.program.unit; import org.suikasoft.jOptions.Interfaces.DataStore; import pt.up.fe.specs.fortran.ast.FortranKeyword; @@ -14,6 +14,11 @@ public EndProgramStmt(DataStore data, Collection children @Override public String getStmtCode() { + // TODO(Process-ing): Remove this special case + if (fixedForm()) { + return keyword(FortranKeyword.END); + } + var nameOpt = getAncestor(MainProgram.class).getName(); var nameSuffix = nameOpt.map(name -> " " + name).orElse(""); diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/unit/MainProgram.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/unit/MainProgram.java new file mode 100644 index 00000000..6b92c4da --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/unit/MainProgram.java @@ -0,0 +1,57 @@ +package pt.up.fe.specs.fortran.ast.nodes.program.unit; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.program.Execution; +import pt.up.fe.specs.fortran.ast.nodes.program.InternalSubprogramPart; +import pt.up.fe.specs.fortran.ast.nodes.program.Specification; + +import java.util.Collection; +import java.util.Optional; + +public class MainProgram extends ProgramUnit { + public MainProgram(DataStore data, Collection children) { + super(data, children); + } + + public Optional getName() { + return getProgramStmt().map(ProgramStmt::getProgramName); + } + + public Optional getProgramStmt() { + return getChildTry(ProgramStmt.class, 0); + } + + public Specification getSpecification() { + return getChild(Specification.class); + } + + public Execution getExecution() { + return getChild(Execution.class); + } + + public Optional getInternalPart() { + return getChildOf(InternalSubprogramPart.class); + } + + public EndProgramStmt getEndProgramStmt() { + return getChild(EndProgramStmt.class); + } + + @Override + public String getCode() { + var programStmtCode = getProgramStmt() + .map(stmt -> stmt.getCode() + ln()) + .orElse(""); + var specificationCode = getSpecification().getCode() + ln(); + var executionCode = getExecution().getCode(); + var internalPartCode = getInternalPart() + .map(part -> ln() + part.getCode()) + .orElse(""); + var endProgramStmtCode = getEndProgramStmt().getCode(); + + return programStmtCode + + indent(specificationCode + executionCode + internalPartCode) + ln() + + endProgramStmtCode; + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/unit/Module.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/unit/Module.java new file mode 100644 index 00000000..452b10a2 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/unit/Module.java @@ -0,0 +1,48 @@ +package pt.up.fe.specs.fortran.ast.nodes.program.unit; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.program.Specification; + +import java.util.Collection; +import java.util.Optional; + +public class Module extends ProgramUnit { + public Module(DataStore data, Collection children) { + super(data, children); + } + + public String getName() { + return getModuleStmt().getModuleName(); + } + + public ModuleStmt getModuleStmt() { + return getChild(ModuleStmt.class, 0); + } + + public Specification getSpecification() { + return getChild(Specification.class, 1); + } + + public Optional getSubprogramPart() { + return getChildTry(ModuleSubprogramPart.class, 2); + } + + public EndModuleStmt getEndModuleStmt() { + return getChild(EndModuleStmt.class, getNumChildren() - 1); + } + + @Override + public String getCode() { + var moduleStmtCode = getModuleStmt().getCode(); + var specificationCode = getSpecification().getCode(); + var subprogramPartCode = getSubprogramPart() + .map(part -> ln() + part.getCode()) + .orElse(""); + var endModuleStmtCode = getEndModuleStmt().getCode(); + + return moduleStmtCode + ln() + + indent(specificationCode) + subprogramPartCode + + ln() + endModuleStmtCode; + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/unit/ModuleStmt.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/unit/ModuleStmt.java new file mode 100644 index 00000000..2193f33a --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/unit/ModuleStmt.java @@ -0,0 +1,27 @@ +package pt.up.fe.specs.fortran.ast.nodes.program.unit; + +import org.suikasoft.jOptions.Datakey.DataKey; +import org.suikasoft.jOptions.Datakey.KeyFactory; +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.FortranKeyword; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.stmt.Stmt; + +import java.util.Collection; + +public class ModuleStmt extends Stmt { + public static final DataKey MODULE_NAME = KeyFactory.string("module_name"); + + public ModuleStmt(DataStore data, Collection children) { + super(data, children); + } + + public String getModuleName() { + return get(MODULE_NAME); + } + + @Override + public String getStmtCode() { + return keyword(FortranKeyword.MODULE) + " " + getModuleName(); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/unit/ModuleSubprogramPart.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/unit/ModuleSubprogramPart.java new file mode 100644 index 00000000..0ac7371a --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/unit/ModuleSubprogramPart.java @@ -0,0 +1,34 @@ +package pt.up.fe.specs.fortran.ast.nodes.program.unit; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.program.subprogram.Subprogram; +import pt.up.fe.specs.fortran.ast.nodes.stmt.ContainsStmt; + +import java.util.Collection; +import java.util.List; +import java.util.stream.Collectors; + +public class ModuleSubprogramPart extends FortranNode { + public ModuleSubprogramPart(DataStore data, Collection children) { + super(data, children); + } + + public ContainsStmt getContainsStmt() { + return getChild(ContainsStmt.class, 0); + } + + public List getSubprograms() { + return getChildrenOf(Subprogram.class); + } + + @Override + public String getCode() { + var containsStmtCode = getContainsStmt().getCode(); + var subprogramsCode = getSubprograms().stream() + .map(subprogram -> ln() + indent(subprogram.getCode())) + .collect(Collectors.joining(ln())); + + return containsStmtCode + subprogramsCode; + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/ProgramStmt.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/unit/ProgramStmt.java similarity index 53% rename from FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/ProgramStmt.java rename to FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/unit/ProgramStmt.java index 723def1c..bd5477c4 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/ProgramStmt.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/unit/ProgramStmt.java @@ -1,5 +1,7 @@ -package pt.up.fe.specs.fortran.ast.nodes.program; +package pt.up.fe.specs.fortran.ast.nodes.program.unit; +import org.suikasoft.jOptions.Datakey.DataKey; +import org.suikasoft.jOptions.Datakey.KeyFactory; import org.suikasoft.jOptions.Interfaces.DataStore; import pt.up.fe.specs.fortran.ast.FortranKeyword; import pt.up.fe.specs.fortran.ast.nodes.FortranNode; @@ -8,15 +10,18 @@ import java.util.Collection; public class ProgramStmt extends Stmt { + public final static DataKey PROGRAM_NAME = KeyFactory.string("program_name"); + public ProgramStmt(DataStore data, Collection children) { super(data, children); } + public String getProgramName() { + return get(PROGRAM_NAME); + } + @Override public String getStmtCode() { - var nameOpt = getAncestor(MainProgram.class).getName(); - var nameSuffix = nameOpt.map(name -> " " + name).orElse(""); - - return keyword(FortranKeyword.PROGRAM) + nameSuffix; + return keyword(FortranKeyword.PROGRAM) + " " + getProgramName(); } } diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/unit/ProgramUnit.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/unit/ProgramUnit.java new file mode 100644 index 00000000..3f9e741a --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/unit/ProgramUnit.java @@ -0,0 +1,15 @@ +package pt.up.fe.specs.fortran.ast.nodes.program.unit; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; + +/** + * R502 program-unit + */ +public abstract class ProgramUnit extends FortranNode { + public ProgramUnit(DataStore data, Collection children) { + super(data, children); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/unit/SubprogramUnit.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/unit/SubprogramUnit.java new file mode 100644 index 00000000..70f038ce --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/program/unit/SubprogramUnit.java @@ -0,0 +1,22 @@ +package pt.up.fe.specs.fortran.ast.nodes.program.unit; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.program.subprogram.Subprogram; + +import java.util.Collection; + +public class SubprogramUnit extends ProgramUnit { + public SubprogramUnit(DataStore data, Collection children) { + super(data, children); + } + + public Subprogram getSubprogram() { + return getChild(Subprogram.class, 0); + } + + @Override + public String getCode() { + return getSubprogram().getCode(); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/ArraySpecification.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/ArraySpecification.java deleted file mode 100644 index 8f59a7bb..00000000 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/ArraySpecification.java +++ /dev/null @@ -1,31 +0,0 @@ -package pt.up.fe.specs.fortran.ast.nodes.specification; - -import org.suikasoft.jOptions.Interfaces.DataStore; -import pt.up.fe.specs.fortran.ast.nodes.FortranNode; -import pt.up.fe.specs.fortran.ast.nodes.type.shapes.ShapeSpecification; - -import java.util.Collection; -import java.util.List; -import java.util.stream.Collectors; - -public class ArraySpecification extends FortranNode { - public ArraySpecification(DataStore data, Collection children) { - super(data, children); - } - - private List getShapes() { - return getChildren(ShapeSpecification.class); - } - - @Override - public String getCode() { - var shapes = getShapes(); - var code = new StringBuilder(); - - code.append("("); - var shapesCode = shapes.stream().map(ShapeSpecification::getCode).collect(Collectors.joining(", ")); - code.append(shapesCode); - code.append(")"); - return code.toString(); - } -} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/DefinedOperator.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/DefinedOperator.java new file mode 100644 index 00000000..4711f5a0 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/DefinedOperator.java @@ -0,0 +1,14 @@ +package pt.up.fe.specs.fortran.ast.nodes.specification; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; + +// NOTE: It may make sense in the future to specialize this node for each usage, since custom operators and some +// intrinsic operators are invalid in some contexts +public abstract class DefinedOperator extends FortranNode { + public DefinedOperator(DataStore data, Collection children) { + super(data, children); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/DerivedTypeDef.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/DerivedTypeDef.java new file mode 100644 index 00000000..a63122b9 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/DerivedTypeDef.java @@ -0,0 +1,73 @@ +package pt.up.fe.specs.fortran.ast.nodes.specification; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.program.construct.SpecConstruct; +import pt.up.fe.specs.fortran.ast.nodes.stmt.typedef.*; + +import java.util.Collection; +import java.util.List; +import java.util.Optional; +import java.util.stream.Collectors; + +public class DerivedTypeDef extends SpecConstruct { + public DerivedTypeDef(DataStore data, Collection children) { + super(data, children); + } + + public String getTypeName() { + return getDerivedTypeStmt().getTypeName(); + } + + public DerivedTypeStmt getDerivedTypeStmt() { + return getChild(DerivedTypeStmt.class, 0); + } + + public List getTypeParamDefStmts() { + return getChildrenOf(TypeParamDefStmt.class); + } + + public List getPrivateOrSequenceStmts() { + return getChildrenOf(PrivateOrSequenceStmt.class); + } + + public List getComponentDefStmts() { + return getChildrenOf(ComponentDefStmt.class); + } + + public Optional getTypeBoundProcedurePart() { + return getChildTry(TypeBoundProcedurePart.class, getNumChildren() - 2); + } + + public EndTypeStmt getEndTypeStmt() { + return getChild(EndTypeStmt.class, getNumChildren() - 1); + } + + @Override + public String getCode() { + var derivedTypeStmtCode = getDerivedTypeStmt().getCode(); + + var typeParamDefStmtsCode = getTypeParamDefStmts().stream() + .map(stmt -> indent(stmt.getCode()) + ln()) + .collect(Collectors.joining()); + + var privateOrSequenceStmtsCode = getPrivateOrSequenceStmts().stream() + .map(stmt -> indent(stmt.getCode()) + ln()) + .collect(Collectors.joining()); + + var componentDefStmtsCode = getComponentDefStmts().stream() + .map(stmt -> indent(stmt.getCode()) + ln()) + .collect(Collectors.joining()); + + var typeBoundProcedurePart = getTypeBoundProcedurePart() + .map(part -> part.getCode() + ln()) + .orElse(""); + + var endDerivedTypeStmtCode = getEndTypeStmt().getCode(); + + return derivedTypeStmtCode + ln() + + typeParamDefStmtsCode + privateOrSequenceStmtsCode + componentDefStmtsCode + + typeBoundProcedurePart + + endDerivedTypeStmtCode; + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/ImplicitSpec.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/ImplicitSpec.java new file mode 100644 index 00000000..a08e3c90 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/ImplicitSpec.java @@ -0,0 +1,34 @@ +package pt.up.fe.specs.fortran.ast.nodes.specification; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.FortranKeyword; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.type.decltype.DeclType; + +import java.util.Collection; +import java.util.List; +import java.util.stream.Collectors; + +public class ImplicitSpec extends FortranNode { + public ImplicitSpec(DataStore data, Collection children) { + super(data, children); + } + + public DeclType getDeclType() { + return getChild(DeclType.class, 0); + } + + public List getLetterSpecs() { + return getChildrenOf(LetterSpec.class); + } + + @Override + public String getCode() { + var declTypeCode = getDeclType().getCode(); + var letterSpecsCode = getLetterSpecs().stream() + .map(LetterSpec::getCode) + .collect(Collectors.joining(", ", " (", ")")); + + return declTypeCode + letterSpecsCode; + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/IntrinsicOperator.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/IntrinsicOperator.java new file mode 100644 index 00000000..358b14e4 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/IntrinsicOperator.java @@ -0,0 +1,26 @@ +package pt.up.fe.specs.fortran.ast.nodes.specification; + +import org.suikasoft.jOptions.Datakey.DataKey; +import org.suikasoft.jOptions.Datakey.KeyFactory; +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.expr.enums.BinaryOperatorKind; + +import java.util.Collection; + +public class IntrinsicOperator extends DefinedOperator { + public static final DataKey OPERATOR_KIND = KeyFactory.enumeration("kind", BinaryOperatorKind.class); + + public IntrinsicOperator(DataStore data, Collection children) { + super(data, children); + } + + public BinaryOperatorKind getOperatorKind() { + return get(OPERATOR_KIND); + } + + @Override + public String getCode() { + return getOperatorKind().getString(); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/LanguageBindingSpec.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/LanguageBindingSpec.java new file mode 100644 index 00000000..17e6c09b --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/LanguageBindingSpec.java @@ -0,0 +1,38 @@ +package pt.up.fe.specs.fortran.ast.nodes.specification; + +import org.suikasoft.jOptions.Datakey.DataKey; +import org.suikasoft.jOptions.Datakey.KeyFactory; +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.FortranKeyword; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.expr.Expr; + +import java.util.Collection; +import java.util.Optional; + +public class LanguageBindingSpec extends FortranNode { + public static final DataKey C_DEFINED = KeyFactory.bool("c_defined"); + + public LanguageBindingSpec(DataStore data, Collection children) { + super(data, children); + } + + public Optional getName() { + return getChildTry(Expr.class, 0); + } + + public boolean isCDefined() { + return get(C_DEFINED); + } + + @Override + public String getCode() { + var nameCode = getName() + .map(name -> ", " + keyword(FortranKeyword.NAME) + "=" + name.getCode()) + .orElse(""); + var cDefinedCode = isCDefined() ? ", " + keyword(FortranKeyword.CDEFINED) : ""; + + return keyword(FortranKeyword.BIND) + "(" + + keyword(FortranKeyword.C) + nameCode + cDefinedCode + ")"; + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/LetterSpec.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/LetterSpec.java new file mode 100644 index 00000000..00058452 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/LetterSpec.java @@ -0,0 +1,36 @@ +package pt.up.fe.specs.fortran.ast.nodes.specification; + +import org.suikasoft.jOptions.Datakey.DataKey; +import org.suikasoft.jOptions.Datakey.KeyFactory; +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; +import java.util.Optional; + +public class LetterSpec extends FortranNode { + public static final DataKey FIRST_LETTER = KeyFactory.object("first_letter", Character.class); + public static final DataKey> LAST_LETTER = KeyFactory.optional("last_letter"); + + public LetterSpec(DataStore data, Collection children) { + super(data, children); + } + + public char getFirstLetter() { + return get(FIRST_LETTER); + } + + public Optional getLastLetter() { + return get(LAST_LETTER); + } + + @Override + public String getCode() { + var firstLetterCode = Character.toString(getFirstLetter()); + var lastLetterCode = getLastLetter() + .map(letter -> "-" + letter) + .orElse(""); + + return firstLetterCode + lastLetterCode; + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/NamedConstantDef.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/NamedConstantDef.java index eac0ffe7..5559b7f8 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/NamedConstantDef.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/NamedConstantDef.java @@ -4,6 +4,7 @@ import pt.up.fe.specs.fortran.ast.nodes.FortranNode; import pt.up.fe.specs.fortran.ast.nodes.expr.DataRef; import pt.up.fe.specs.fortran.ast.nodes.expr.Expr; +import pt.up.fe.specs.fortran.ast.nodes.expr.NamedLiteral; import java.util.Collection; @@ -12,16 +13,16 @@ public NamedConstantDef(DataStore data, Collection childr super(data, children); } - public DataRef getRef() { - return (DataRef) getChild(0); + public NamedLiteral getName() { + return getChild(NamedLiteral.class, 0); } public Expr getExpr() { - return (Expr) getChild(1); + return getChild(Expr.class, 1); } @Override public String getCode() { - return getRef().getCode() + " = " + getExpr().getCode(); + return getName().getCode() + " = " + getExpr().getCode(); } } diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/NamedOperator.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/NamedOperator.java new file mode 100644 index 00000000..66d83b41 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/NamedOperator.java @@ -0,0 +1,25 @@ +package pt.up.fe.specs.fortran.ast.nodes.specification; + +import org.suikasoft.jOptions.Datakey.DataKey; +import org.suikasoft.jOptions.Datakey.KeyFactory; +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; + +public class NamedOperator extends DefinedOperator { + public static final DataKey OPERATOR_NAME = KeyFactory.string("operator_name"); + + public NamedOperator(DataStore data, Collection children) { + super(data, children); + } + + public String getOperatorName() { + return get(OPERATOR_NAME); + } + + @Override + public String getCode() { + return getOperatorName(); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/coshape/CoarraySpec.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/coshape/CoarraySpec.java new file mode 100644 index 00000000..40a41b62 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/coshape/CoarraySpec.java @@ -0,0 +1,12 @@ +package pt.up.fe.specs.fortran.ast.nodes.specification.coshape; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; + +public abstract class CoarraySpec extends FortranNode { + public CoarraySpec(DataStore data, Collection children) { + super(data, children); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/coshape/DeferredCoshapeSpec.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/coshape/DeferredCoshapeSpec.java new file mode 100644 index 00000000..e5df44db --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/coshape/DeferredCoshapeSpec.java @@ -0,0 +1,28 @@ +package pt.up.fe.specs.fortran.ast.nodes.specification.coshape; + +import org.suikasoft.jOptions.Datakey.DataKey; +import org.suikasoft.jOptions.Datakey.KeyFactory; +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; + +public class DeferredCoshapeSpec extends CoarraySpec { + /** + * Defines the number of colons in the specification + */ + public static final DataKey RANK = KeyFactory.integer("rank"); + + public DeferredCoshapeSpec(DataStore data, Collection children) { + super(data, children); + } + + public int getRank() { + return get(RANK); + } + + @Override + public String getCode() { + return "[:" + ", :".repeat(getRank() - 1) + "]"; + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/coshape/ExplicitCoshapeSpec.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/coshape/ExplicitCoshapeSpec.java new file mode 100644 index 00000000..0a2e0bfa --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/coshape/ExplicitCoshapeSpec.java @@ -0,0 +1,38 @@ +package pt.up.fe.specs.fortran.ast.nodes.specification.coshape; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.expr.Expr; +import pt.up.fe.specs.fortran.ast.nodes.specification.shape.ExplicitShape; + +import java.util.Collection; +import java.util.List; +import java.util.Optional; +import java.util.stream.Collectors; + +public class ExplicitCoshapeSpec extends CoarraySpec { + public ExplicitCoshapeSpec(DataStore data, Collection children) { + super(data, children); + } + + public List getExplicitShapes() { + return getChildrenOf(ExplicitShape.class); + } + + public Optional getLastLowerBound() { + return getChildTry(Expr.class, getNumChildren() - 1); + } + + @Override + public String getCode() { + var explicitShapesCode = getExplicitShapes().stream() + .map(shape -> shape.getCode() + ", ") + .collect(Collectors.joining()); + + var lastLowerBoundCode = getLastLowerBound() + .map(lowerBound -> lowerBound.getCode() + ":") + .orElse(""); + + return "[" + explicitShapesCode + lastLowerBoundCode + "*]"; + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/enums/AccessKind.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/enums/AccessKind.java new file mode 100644 index 00000000..8c404169 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/enums/AccessKind.java @@ -0,0 +1,6 @@ +package pt.up.fe.specs.fortran.ast.nodes.specification.enums; + +public enum AccessKind { + PUBLIC, + PRIVATE; +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/enums/EmptyFunctionSpecKind.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/enums/EmptyFunctionSpecKind.java new file mode 100644 index 00000000..86c37ec9 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/enums/EmptyFunctionSpecKind.java @@ -0,0 +1,10 @@ +package pt.up.fe.specs.fortran.ast.nodes.specification.enums; + +public enum EmptyFunctionSpecKind { + ELEMENTAL, + IMPURE, + MODULE, + NON_RECURSIVE, + PURE, + RECURSIVE; +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/enums/GenericSpecKind.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/enums/GenericSpecKind.java new file mode 100644 index 00000000..8c871125 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/enums/GenericSpecKind.java @@ -0,0 +1,11 @@ +package pt.up.fe.specs.fortran.ast.nodes.specification.enums; + +import pt.up.fe.specs.util.SpecsStrings; + +public enum GenericSpecKind { + ASSIGNMENT, + READ_FORMATTED, + READ_UNFORMATTED, + WRITE_FORMATTED, + WRITE_UNFORMATTED; +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/funcspec/DeclTypeFunctionSpec.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/funcspec/DeclTypeFunctionSpec.java new file mode 100644 index 00000000..7c1bbe0f --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/funcspec/DeclTypeFunctionSpec.java @@ -0,0 +1,22 @@ +package pt.up.fe.specs.fortran.ast.nodes.specification.funcspec; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.type.decltype.DeclType; + +import java.util.Collection; + +public class DeclTypeFunctionSpec extends FunctionSpec { + public DeclTypeFunctionSpec(DataStore data, Collection children) { + super(data, children); + } + + public DeclType getDeclType() { + return getChild(DeclType.class, 0); + } + + @Override + public String getCode() { + return getDeclType().getCode(); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/funcspec/EmptyFunctionSpec.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/funcspec/EmptyFunctionSpec.java new file mode 100644 index 00000000..6d1d4e81 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/funcspec/EmptyFunctionSpec.java @@ -0,0 +1,26 @@ +package pt.up.fe.specs.fortran.ast.nodes.specification.funcspec; + +import org.suikasoft.jOptions.Datakey.DataKey; +import org.suikasoft.jOptions.Datakey.KeyFactory; +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.specification.enums.EmptyFunctionSpecKind; + +import java.util.Collection; + +public class EmptyFunctionSpec extends FunctionSpec { + public static final DataKey KIND = KeyFactory.enumeration("kind", EmptyFunctionSpecKind.class); + + public EmptyFunctionSpec(DataStore data, Collection children) { + super(data, children); + } + + public EmptyFunctionSpecKind getKind() { + return get(KIND); + } + + @Override + public String getCode() { + return encase(getKind().name()); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/funcspec/FunctionSpec.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/funcspec/FunctionSpec.java new file mode 100644 index 00000000..c8b65fd7 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/funcspec/FunctionSpec.java @@ -0,0 +1,13 @@ +package pt.up.fe.specs.fortran.ast.nodes.specification.funcspec; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; + +/// Maps to a PrefixSpec in the Flang AST +public abstract class FunctionSpec extends FortranNode { + public FunctionSpec(DataStore data, Collection children) { + super(data, children); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/genericspec/GenericSpec.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/genericspec/GenericSpec.java new file mode 100644 index 00000000..5117017b --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/genericspec/GenericSpec.java @@ -0,0 +1,12 @@ +package pt.up.fe.specs.fortran.ast.nodes.specification.genericspec; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; + +public abstract class GenericSpec extends FortranNode { + public GenericSpec(DataStore data, Collection children) { + super(data, children); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/genericspec/NameGenericSpec.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/genericspec/NameGenericSpec.java new file mode 100644 index 00000000..18520468 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/genericspec/NameGenericSpec.java @@ -0,0 +1,25 @@ +package pt.up.fe.specs.fortran.ast.nodes.specification.genericspec; + +import org.suikasoft.jOptions.Datakey.DataKey; +import org.suikasoft.jOptions.Datakey.KeyFactory; +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; + +public class NameGenericSpec extends GenericSpec { + public static final DataKey NAME = KeyFactory.string("name"); + + public NameGenericSpec(DataStore data, Collection children) { + super(data, children); + } + + public String getName() { + return get(NAME); + } + + @Override + public String getCode() { + return getName(); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/genericspec/OpGenericSpec.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/genericspec/OpGenericSpec.java new file mode 100644 index 00000000..b618c812 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/genericspec/OpGenericSpec.java @@ -0,0 +1,23 @@ +package pt.up.fe.specs.fortran.ast.nodes.specification.genericspec; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.FortranKeyword; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.specification.DefinedOperator; + +import java.util.Collection; + +public class OpGenericSpec extends GenericSpec { + public OpGenericSpec(DataStore data, Collection children) { + super(data, children); + } + + public DefinedOperator getOperator() { + return getChild(DefinedOperator.class, 0); + } + + @Override + public String getCode() { + return keyword(FortranKeyword.OPERATOR) + "(" + getOperator().getCode() + ")"; + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/genericspec/OtherGenericSpec.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/genericspec/OtherGenericSpec.java new file mode 100644 index 00000000..dfb44776 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/genericspec/OtherGenericSpec.java @@ -0,0 +1,33 @@ +package pt.up.fe.specs.fortran.ast.nodes.specification.genericspec; + +import org.suikasoft.jOptions.Datakey.DataKey; +import org.suikasoft.jOptions.Datakey.KeyFactory; +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.FortranKeyword; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.specification.enums.GenericSpecKind; + +import java.util.Collection; + +public class OtherGenericSpec extends GenericSpec { + public static final DataKey KIND = KeyFactory.enumeration("kind", GenericSpecKind.class); + + public OtherGenericSpec(DataStore data, Collection children) { + super(data, children); + } + + public GenericSpecKind getKind() { + return get(KIND); + } + + @Override + public String getCode() { + return switch (getKind()) { + case ASSIGNMENT -> keyword(FortranKeyword.ASSIGNMENT) + "(=)"; + case READ_FORMATTED -> keyword(FortranKeyword.READ) + "(" + keyword(FortranKeyword.FORMATTED) + ")"; + case READ_UNFORMATTED -> keyword(FortranKeyword.READ) + "(" + keyword(FortranKeyword.UNFORMATTED) + ")"; + case WRITE_FORMATTED -> keyword(FortranKeyword.WRITE) + "(" + keyword(FortranKeyword.FORMATTED) + ")"; + case WRITE_UNFORMATTED -> keyword(FortranKeyword.WRITE) + "(" + keyword(FortranKeyword.UNFORMATTED) + ")"; + }; + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/interfaces/InterfaceBlock.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/interfaces/InterfaceBlock.java new file mode 100644 index 00000000..36cc3493 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/interfaces/InterfaceBlock.java @@ -0,0 +1,50 @@ +package pt.up.fe.specs.fortran.ast.nodes.specification.interfaces; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.program.construct.SpecConstruct; +import pt.up.fe.specs.fortran.ast.nodes.specification.genericspec.GenericSpec; +import pt.up.fe.specs.fortran.ast.nodes.stmt.interfaces.EndInterfaceStmt; +import pt.up.fe.specs.fortran.ast.nodes.stmt.interfaces.InterfaceStmt; + +import java.util.Collection; +import java.util.List; +import java.util.Optional; +import java.util.stream.Collectors; + +public class InterfaceBlock extends SpecConstruct { + public InterfaceBlock(DataStore data, Collection children) { + super(data, children); + } + + public Optional getGenericSpec() { + return getInterfaceStmt().getGenericSpec(); + } + + public InterfaceStmt getInterfaceStmt() { + return getChild(InterfaceStmt.class, 0); + } + + public List getInterfaceSpecifications() { + return getChildrenOf(InterfaceSpecification.class); + } + + public EndInterfaceStmt getEndInterfaceStmt() { + return getChild(EndInterfaceStmt.class, getNumChildren() - 1); + } + + @Override + public String getCode() { + var interfaceStmtCode = getInterfaceStmt().getCode(); + + var interfaceSpecificationsCode = getInterfaceSpecifications().stream() + .map(specification -> indent(specification.getCode()) + ln()) + .collect(Collectors.joining(ln())); + + var endInterfaceStmtCode = getEndInterfaceStmt().getCode(); + + return interfaceStmtCode + ln() + + interfaceSpecificationsCode + + endInterfaceStmtCode; + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/interfaces/InterfaceBody.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/interfaces/InterfaceBody.java new file mode 100644 index 00000000..1be975bf --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/interfaces/InterfaceBody.java @@ -0,0 +1,35 @@ +package pt.up.fe.specs.fortran.ast.nodes.specification.interfaces; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.program.Specification; +import pt.up.fe.specs.fortran.ast.nodes.stmt.Stmt; + +import java.util.Collection; + +public abstract class InterfaceBody extends InterfaceSpecification { + public InterfaceBody(DataStore data, Collection children) { + super(data, children); + } + + protected Stmt getStartStmt() { + return getChild(Stmt.class, 0); + } + + public Specification getSpecification() { + return getChild(Specification.class, 1); + } + + protected Stmt getEndStmt() { + return getChild(Stmt.class, 2); + } + + @Override + public String getCode() { + var startStmtCode = getStartStmt().getCode(); + var specificationCode = getSpecification().getCode(); + var endStmtCode = getEndStmt().getCode(); + + return startStmtCode + ln() + indent(specificationCode) + ln() + endStmtCode; + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/interfaces/InterfaceFunction.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/interfaces/InterfaceFunction.java new file mode 100644 index 00000000..3f490d1e --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/interfaces/InterfaceFunction.java @@ -0,0 +1,26 @@ +package pt.up.fe.specs.fortran.ast.nodes.specification.interfaces; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.program.subprogram.EndFunctionStmt; +import pt.up.fe.specs.fortran.ast.nodes.program.subprogram.FunctionStmt; + +import java.util.Collection; + +public class InterfaceFunction extends InterfaceBody { + public InterfaceFunction(DataStore data, Collection children) { + super(data, children); + } + + public String getName() { + return getFunctionStmt().getFunctionName(); + } + + public FunctionStmt getFunctionStmt() { + return (FunctionStmt) getStartStmt(); + } + + public EndFunctionStmt getEndFunctionStmt() { + return (EndFunctionStmt) getEndStmt(); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/interfaces/InterfaceProcedureStmt.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/interfaces/InterfaceProcedureStmt.java new file mode 100644 index 00000000..8b82d89b --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/interfaces/InterfaceProcedureStmt.java @@ -0,0 +1,13 @@ +package pt.up.fe.specs.fortran.ast.nodes.specification.interfaces; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; + +// TODO(Process-ing): Implement this node +public class InterfaceProcedureStmt extends InterfaceSpecification { + public InterfaceProcedureStmt(DataStore data, Collection children) { + super(data, children); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/interfaces/InterfaceSpecification.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/interfaces/InterfaceSpecification.java new file mode 100644 index 00000000..8f5705c1 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/interfaces/InterfaceSpecification.java @@ -0,0 +1,12 @@ +package pt.up.fe.specs.fortran.ast.nodes.specification.interfaces; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; + +public abstract class InterfaceSpecification extends FortranNode { + public InterfaceSpecification(DataStore data, Collection children) { + super(data, children); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/interfaces/InterfaceSubroutine.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/interfaces/InterfaceSubroutine.java new file mode 100644 index 00000000..13305b44 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/interfaces/InterfaceSubroutine.java @@ -0,0 +1,25 @@ +package pt.up.fe.specs.fortran.ast.nodes.specification.interfaces; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.program.subprogram.SubroutineStmt; + +import java.util.Collection; + +public class InterfaceSubroutine extends InterfaceBody { + public InterfaceSubroutine(DataStore data, Collection children) { + super(data, children); + } + + public String getName() { + return getSubroutineStmt().getSubroutineName(); + } + + public SubroutineStmt getSubroutineStmt() { + return (SubroutineStmt) getStartStmt(); + } + + public SubroutineStmt getEndSubroutineStmt() { + return (SubroutineStmt) getEndStmt(); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/shape/ArraySpec.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/shape/ArraySpec.java new file mode 100644 index 00000000..70647f3b --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/shape/ArraySpec.java @@ -0,0 +1,12 @@ +package pt.up.fe.specs.fortran.ast.nodes.specification.shape; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; + +public abstract class ArraySpec extends FortranNode { + public ArraySpec(DataStore data, Collection children) { + super(data, children); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/shape/AssumedImpliedShape.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/shape/AssumedImpliedShape.java new file mode 100644 index 00000000..ea925f70 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/shape/AssumedImpliedShape.java @@ -0,0 +1,26 @@ +package pt.up.fe.specs.fortran.ast.nodes.specification.shape; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.expr.Expr; + +import java.util.Collection; +import java.util.Optional; + +public class AssumedImpliedShape extends FortranNode { + public AssumedImpliedShape(DataStore data, Collection children) { + super(data, children); + } + + public Optional getLowerBound() { + return getChildTry(Expr.class, 0); + } + + @Override + public String getCode() { + var lowerBoundCode = getLowerBound() + .map(bound -> bound.getCode() + ":") + .orElse(""); + return lowerBoundCode + "*"; + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/shape/AssumedRankSpec.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/shape/AssumedRankSpec.java new file mode 100644 index 00000000..55e6d610 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/shape/AssumedRankSpec.java @@ -0,0 +1,17 @@ +package pt.up.fe.specs.fortran.ast.nodes.specification.shape; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; + +public class AssumedRankSpec extends ArraySpec { + public AssumedRankSpec(DataStore data, Collection children) { + super(data, children); + } + + @Override + public String getCode() { + return "(..)"; + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/shape/AssumedShape.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/shape/AssumedShape.java new file mode 100644 index 00000000..297b6d3c --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/shape/AssumedShape.java @@ -0,0 +1,26 @@ +package pt.up.fe.specs.fortran.ast.nodes.specification.shape; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.expr.Expr; + +import java.util.Collection; +import java.util.Optional; + +public class AssumedShape extends FortranNode { + public AssumedShape(DataStore data, Collection children) { + super(data, children); + } + + public Optional getLowerBound() { + return getChildTry(Expr.class, 0); + } + + @Override + public String getCode() { + var lowerBoundCode = getLowerBound() + .map(Expr::getCode) + .orElse(""); + return lowerBoundCode + ":"; + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/shape/AssumedShapeArraySpec.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/shape/AssumedShapeArraySpec.java new file mode 100644 index 00000000..b6fa77e9 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/shape/AssumedShapeArraySpec.java @@ -0,0 +1,25 @@ +package pt.up.fe.specs.fortran.ast.nodes.specification.shape; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; +import java.util.List; +import java.util.stream.Collectors; + +public class AssumedShapeArraySpec extends ArraySpec { + public AssumedShapeArraySpec(DataStore data, Collection children) { + super(data, children); + } + + public List getAssumedShapes() { + return getChildren(AssumedShape.class); + } + + @Override + public String getCode() { + return getAssumedShapes().stream() + .map(AssumedShape::getCode) + .collect(Collectors.joining(", ", "(", ")")); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/shape/AssumedSizeSpec.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/shape/AssumedSizeSpec.java new file mode 100644 index 00000000..2562f912 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/shape/AssumedSizeSpec.java @@ -0,0 +1,33 @@ +package pt.up.fe.specs.fortran.ast.nodes.specification.shape; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; +import java.util.List; +import java.util.stream.Collectors; + +public class AssumedSizeSpec extends ArraySpec { + public AssumedSizeSpec(DataStore data, Collection children) { + super(data, children); + } + + public List getExplicitShapes() { + return getChildrenOf(ExplicitShape.class); + } + + public AssumedImpliedShape getAssumedImpliedShape() { + return getChild(AssumedImpliedShape.class, getNumChildren() - 1); + } + + @Override + public String getCode() { + var explicitShapesCode = getExplicitShapes().stream() + .map(ExplicitShape::getCode) + .collect(Collectors.joining(", ")); + + var assumedImpliedShapeCode = getAssumedImpliedShape().getCode(); + + return "(" + explicitShapesCode + ", " + assumedImpliedShapeCode + ")"; + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/attributes/AllocatableKeyword.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/shape/ComponentArraySpec.java similarity index 51% rename from FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/attributes/AllocatableKeyword.java rename to FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/shape/ComponentArraySpec.java index 91f0786c..675dffd0 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/attributes/AllocatableKeyword.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/shape/ComponentArraySpec.java @@ -1,12 +1,12 @@ -package pt.up.fe.specs.fortran.ast.nodes.type.attributes; +package pt.up.fe.specs.fortran.ast.nodes.specification.shape; import org.suikasoft.jOptions.Interfaces.DataStore; import pt.up.fe.specs.fortran.ast.nodes.FortranNode; import java.util.Collection; -public class AllocatableKeyword extends KeywordAttributeSpecifier{ - public AllocatableKeyword(DataStore data, Collection children) { +public abstract class ComponentArraySpec extends ArraySpec { + public ComponentArraySpec(DataStore data, Collection children) { super(data, children); } } diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/shapes/DeferredShapeSpecList.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/shape/DeferredShapeSpec.java similarity index 52% rename from FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/shapes/DeferredShapeSpecList.java rename to FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/shape/DeferredShapeSpec.java index dd259949..4df6e0dc 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/shapes/DeferredShapeSpecList.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/shape/DeferredShapeSpec.java @@ -1,33 +1,28 @@ -package pt.up.fe.specs.fortran.ast.nodes.type.shapes; +package pt.up.fe.specs.fortran.ast.nodes.specification.shape; import org.suikasoft.jOptions.Datakey.DataKey; import org.suikasoft.jOptions.Datakey.KeyFactory; import org.suikasoft.jOptions.Interfaces.DataStore; import pt.up.fe.specs.fortran.ast.nodes.FortranNode; -import pt.up.fe.specs.fortran.ast.nodes.expr.IntLiteral; import java.util.Collection; -import java.util.Collections; - -public class DeferredShapeSpecList extends ShapeSpecification { - // DATAKEYS BEGIN +public class DeferredShapeSpec extends ComponentArraySpec { /** * DeferredShapeSpecList is just a count of the colons (i.e., the rank). */ public final static DataKey RANK = KeyFactory.integer("rank"); - - // DATAKEYS END - - public DeferredShapeSpecList(DataStore data, Collection children) { + public DeferredShapeSpec(DataStore data, Collection children) { super(data, children); } + public int getRank() { + return get(RANK); + } + @Override public String getCode() { - var rank = get(RANK); - - return String.join(", ", Collections.nCopies(rank, ":")); + return "(:" + ", :".repeat(getRank() - 1) + ")"; } } diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/shape/ExplicitShape.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/shape/ExplicitShape.java new file mode 100644 index 00000000..3d1c6517 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/shape/ExplicitShape.java @@ -0,0 +1,34 @@ +package pt.up.fe.specs.fortran.ast.nodes.specification.shape; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.expr.Expr; + +import java.util.Collection; +import java.util.Optional; + +/* + * Translates to Flang's ExplicitShapeSpec, AllocateShapeSpec and AllocateCoshapeSpec. + */ +public class ExplicitShape extends FortranNode { + public ExplicitShape(DataStore data, Collection children) { + super(data, children); + } + + public Optional getLowerBound() { + return getChildTry(Expr.class, getNumChildren() - 2); + } + + public Expr getUpperBound() { + return getChild(Expr.class, getNumChildren() - 1); + } + + @Override + public String getCode() { + var lowerBoundCode = getLowerBound() + .map(bound -> bound.getCode() + ":") + .orElse(""); + var upperBoundCode = getUpperBound().getCode(); + return lowerBoundCode + upperBoundCode; + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/shape/ExplicitShapeArraySpec.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/shape/ExplicitShapeArraySpec.java new file mode 100644 index 00000000..cb8f1cfc --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/shape/ExplicitShapeArraySpec.java @@ -0,0 +1,25 @@ +package pt.up.fe.specs.fortran.ast.nodes.specification.shape; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; +import java.util.List; +import java.util.stream.Collectors; + +public class ExplicitShapeArraySpec extends ComponentArraySpec { + public ExplicitShapeArraySpec(DataStore data, Collection children) { + super(data, children); + } + + public List getExplicitShapes() { + return getChildren(ExplicitShape.class); + } + + @Override + public String getCode() { + return getExplicitShapes().stream() + .map(ExplicitShape::getCode) + .collect(Collectors.joining(", ", "(", ")")); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/shape/ImpliedShapeSpec.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/shape/ImpliedShapeSpec.java new file mode 100644 index 00000000..99788317 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/shape/ImpliedShapeSpec.java @@ -0,0 +1,25 @@ +package pt.up.fe.specs.fortran.ast.nodes.specification.shape; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; +import java.util.List; +import java.util.stream.Collectors; + +public class ImpliedShapeSpec extends ArraySpec { + public ImpliedShapeSpec(DataStore data, Collection children) { + super(data, children); + } + + public List getShapes() { + return getChildren(AssumedImpliedShape.class); + } + + @Override + public String getCode() { + return getShapes().stream() + .map(AssumedImpliedShape::getCode) + .collect(Collectors.joining(", ", "(", ")")); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/type/AbstractTypeAttr.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/type/AbstractTypeAttr.java new file mode 100644 index 00000000..44524b6e --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/type/AbstractTypeAttr.java @@ -0,0 +1,18 @@ +package pt.up.fe.specs.fortran.ast.nodes.specification.type; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.FortranKeyword; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; + +public class AbstractTypeAttr extends TypeAttr { + public AbstractTypeAttr(DataStore data, Collection children) { + super(data, children); + } + + @Override + public String getCode() { + return keyword(FortranKeyword.ABSTRACT); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/type/AccessTypeAttr.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/type/AccessTypeAttr.java new file mode 100644 index 00000000..ca8a25a0 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/type/AccessTypeAttr.java @@ -0,0 +1,26 @@ +package pt.up.fe.specs.fortran.ast.nodes.specification.type; + +import org.suikasoft.jOptions.Datakey.DataKey; +import org.suikasoft.jOptions.Datakey.KeyFactory; +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.specification.enums.AccessKind; + +import java.util.Collection; + +public class AccessTypeAttr extends TypeAttr { + public static final DataKey ACCESS_KIND = KeyFactory.enumeration("access_kind", AccessKind.class); + + public AccessTypeAttr(DataStore data, Collection children) { + super(data, children); + } + + public AccessKind getAccessKind() { + return get(ACCESS_KIND); + } + + @Override + public String getCode() { + return encase(getAccessKind().name()); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/type/BindTypeAttr.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/type/BindTypeAttr.java new file mode 100644 index 00000000..dd95c080 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/type/BindTypeAttr.java @@ -0,0 +1,18 @@ +package pt.up.fe.specs.fortran.ast.nodes.specification.type; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.FortranKeyword; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; + +public class BindTypeAttr extends TypeAttr { + public BindTypeAttr(DataStore data, Collection children) { + super(data, children); + } + + @Override + public String getCode() { + return keyword(FortranKeyword.BIND) + "(" + keyword(FortranKeyword.C) + ")"; + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/type/ExtendsTypeAttr.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/type/ExtendsTypeAttr.java new file mode 100644 index 00000000..3c6b2ade --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/type/ExtendsTypeAttr.java @@ -0,0 +1,26 @@ +package pt.up.fe.specs.fortran.ast.nodes.specification.type; + +import org.suikasoft.jOptions.Datakey.DataKey; +import org.suikasoft.jOptions.Datakey.KeyFactory; +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.FortranKeyword; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; + +public class ExtendsTypeAttr extends TypeAttr { + public static final DataKey PARENT_TYPE = KeyFactory.string("parent_type"); + + public ExtendsTypeAttr(DataStore data, Collection children) { + super(data, children); + } + + public String getParentType() { + return get(PARENT_TYPE); + } + + @Override + public String getCode() { + return keyword(FortranKeyword.EXTENDS) + "(" + getParentType() + ")"; + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/type/TypeAttr.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/type/TypeAttr.java new file mode 100644 index 00000000..dc87c694 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/specification/type/TypeAttr.java @@ -0,0 +1,12 @@ +package pt.up.fe.specs.fortran.ast.nodes.specification.type; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; + +public abstract class TypeAttr extends FortranNode { + public TypeAttr(DataStore data, Collection children) { + super(data, children); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/AccessStmt.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/AccessStmt.java new file mode 100644 index 00000000..d2b0b269 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/AccessStmt.java @@ -0,0 +1,44 @@ +package pt.up.fe.specs.fortran.ast.nodes.stmt; + +import org.suikasoft.jOptions.Datakey.DataKey; +import org.suikasoft.jOptions.Datakey.KeyFactory; +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.specification.enums.AccessKind; +import pt.up.fe.specs.fortran.ast.nodes.specification.genericspec.GenericSpec; + +import java.util.Collection; +import java.util.List; +import java.util.stream.Collectors; + +public class AccessStmt extends SpecStmt { + public static final DataKey ACCESS_KIND = KeyFactory.enumeration("access_kind", AccessKind.class); + + public AccessStmt(DataStore data, Collection children) { + super(data, children); + } + + public AccessKind getAccessKind() { + return get(ACCESS_KIND); + } + + public List getIds() { + return getChildren(GenericSpec.class); + } + + @Override + public String getStmtCode() { + var accessKindCode = encase(getAccessKind().name()); + + var ids = getIds(); + if (ids.isEmpty()) { + return accessKindCode; + } + + var idsCode = ids.stream() + .map(GenericSpec::getCode) + .collect(Collectors.joining(", ")); + + return accessKindCode + " :: " + idsCode; + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/ActionStmt.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/ActionStmt.java index 7095f0af..078837e0 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/ActionStmt.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/ActionStmt.java @@ -8,8 +8,7 @@ /** * R515 action-stmt */ -public abstract class ActionStmt extends ExecutableStmt { - +public abstract class ActionStmt extends Stmt { public ActionStmt(DataStore data, Collection children) { super(data, children); } diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/AllocateStmt.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/AllocateStmt.java index 7e4015fe..54e91b4c 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/AllocateStmt.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/AllocateStmt.java @@ -1,6 +1,7 @@ package pt.up.fe.specs.fortran.ast.nodes.stmt; import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.FortranKeyword; import pt.up.fe.specs.fortran.ast.nodes.FortranNode; import pt.up.fe.specs.fortran.ast.nodes.alloc.AllocOption; import pt.up.fe.specs.fortran.ast.nodes.alloc.Allocation; @@ -25,24 +26,14 @@ public List getOptions() { @Override public String getStmtCode() { - StringBuilder code = new StringBuilder(); - - code.append("allocate("); - - List components = new ArrayList<>(); - - getAllocations().stream() + var allocationsCode = getAllocations().stream() .map(FortranNode::getCode) - .forEach(components::add); - - getOptions().stream() - .map(FortranNode::getCode) - .forEach(components::add); - - code.append(String.join(", ", components)); + .collect(Collectors.joining(", ")); - code.append(")"); + var optionsCode = getOptions().stream() + .map(option -> ", " + option.getCode()) + .collect(Collectors.joining()); - return code.toString(); + return keyword(FortranKeyword.ALLOCATE) + "(" + allocationsCode + optionsCode + ")"; } } diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/AssignmentStmt.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/AssignmentStmt.java index c98c636a..4a20c85e 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/AssignmentStmt.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/AssignmentStmt.java @@ -2,6 +2,7 @@ import org.suikasoft.jOptions.Interfaces.DataStore; import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.decl.Variable; import pt.up.fe.specs.fortran.ast.nodes.expr.Expr; import pt.up.fe.specs.fortran.ast.nodes.expr.DataRef; @@ -12,8 +13,8 @@ public AssignmentStmt(DataStore data, Collection children super(data, children); } - public DataRef getVariable() { - return getChild(DataRef.class, 0); + public Variable getVariable() { + return getChild(Variable.class, 0); } public Expr getExpression() { diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/CloseStmt.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/CloseStmt.java deleted file mode 100644 index 60318eff..00000000 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/CloseStmt.java +++ /dev/null @@ -1,18 +0,0 @@ -package pt.up.fe.specs.fortran.ast.nodes.stmt; - -import org.suikasoft.jOptions.Interfaces.DataStore; -import pt.up.fe.specs.fortran.ast.nodes.FortranNode; - -import java.util.Collection; - -public class CloseStmt extends ActionStmt { - public CloseStmt(DataStore data, Collection children) { - super(data, children); - } - - //TODO properly support the statement - @Override - public String getStmtCode() { - return get(SOURCE).replaceFirst("^\\d+", ""); - } -} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/CommonBlockObject.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/CommonBlockObject.java index b56ceecd..d73017b4 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/CommonBlockObject.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/CommonBlockObject.java @@ -5,7 +5,7 @@ import org.suikasoft.jOptions.Datakey.KeyFactory; import org.suikasoft.jOptions.Interfaces.DataStore; import pt.up.fe.specs.fortran.ast.nodes.FortranNode; -import pt.up.fe.specs.fortran.ast.nodes.specification.ArraySpecification; +import pt.up.fe.specs.fortran.ast.nodes.specification.shape.ArraySpec; import java.util.Collection; import java.util.Optional; @@ -21,14 +21,14 @@ public String getName() { return get(NAME); } - public Optional getArraySpec() { - return getChildOf(ArraySpecification.class); + public Optional getArraySpec() { + return getChildOf(ArraySpec.class); } @Override public String getCode() { var name = getName(); - var arraySpecCode = getArraySpec().map(ArraySpecification::getCode); + var arraySpecCode = getArraySpec().map(ArraySpec::getCode); return name + arraySpecCode.orElse(""); } diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/CommonStmt.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/CommonStmt.java index 34f355c9..98ce58e0 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/CommonStmt.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/CommonStmt.java @@ -8,7 +8,7 @@ import java.util.List; import java.util.stream.Collectors; -public class CommonStmt extends SpecificationStmt { +public class CommonStmt extends SpecStmt { public CommonStmt(DataStore data, Collection children) { super(data, children); } diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/CompilerDirective.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/CompilerDirective.java index ecbe363a..4ea9d874 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/CompilerDirective.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/CompilerDirective.java @@ -8,8 +8,7 @@ import java.util.List; import java.util.stream.Collectors; -public class CompilerDirective extends ExecutableStmt { - +public class CompilerDirective extends Stmt { public CompilerDirective(DataStore data, Collection children) { super(data, children); } diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/ContainsStmt.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/ContainsStmt.java index 711107d0..3f9f2ece 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/ContainsStmt.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/ContainsStmt.java @@ -1,17 +1,18 @@ package pt.up.fe.specs.fortran.ast.nodes.stmt; import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.FortranKeyword; import pt.up.fe.specs.fortran.ast.nodes.FortranNode; import java.util.Collection; -public class ContainsStmt extends ExecutableStmt { +public class ContainsStmt extends Stmt { public ContainsStmt(DataStore data, Collection children) { super(data, children); } @Override public String getStmtCode() { - return "contains"; + return keyword(FortranKeyword.CONTAINS); } } diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/ContinueStmt.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/ContinueStmt.java index acc7b07b..98cea718 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/ContinueStmt.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/ContinueStmt.java @@ -1,6 +1,7 @@ package pt.up.fe.specs.fortran.ast.nodes.stmt; import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.FortranKeyword; import pt.up.fe.specs.fortran.ast.nodes.FortranNode; import java.util.Collection; @@ -12,6 +13,6 @@ public ContinueStmt(DataStore data, Collection children) @Override public String getStmtCode() { - return "continue"; + return keyword(FortranKeyword.CONTINUE); } } diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/DataStmt.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/DataStmt.java deleted file mode 100644 index ee5d70fb..00000000 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/DataStmt.java +++ /dev/null @@ -1,35 +0,0 @@ -package pt.up.fe.specs.fortran.ast.nodes.stmt; - -import org.suikasoft.jOptions.Interfaces.DataStore; -import pt.up.fe.specs.fortran.ast.FortranKeyword; -import pt.up.fe.specs.fortran.ast.nodes.FortranNode; -import pt.up.fe.specs.fortran.ast.nodes.decl.DataStmtSet; - -import java.util.Collection; -import java.util.List; -import java.util.stream.Collectors; - -public class DataStmt extends DeclarationStmt { - public DataStmt(DataStore data, Collection children) { - super(data, children); - } - - public List getSets() { - return getChildrenOf(DataStmtSet.class); - } - - @Override - public String getStmtCode() { - StringBuilder code = new StringBuilder(); - - code.append(FortranKeyword.DATA.getKeyword(false)).append(" "); - - code.append(getSets() - .stream() - .map(DataStmtSet::getCode) - .collect(Collectors.joining(", ")) - ); - - return code.toString(); - } -} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/DeallocateStmt.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/DeallocateStmt.java index e88dc15f..fec22d33 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/DeallocateStmt.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/DeallocateStmt.java @@ -1,6 +1,7 @@ package pt.up.fe.specs.fortran.ast.nodes.stmt; import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.FortranKeyword; import pt.up.fe.specs.fortran.ast.nodes.FortranNode; import pt.up.fe.specs.fortran.ast.nodes.expr.DataRef; @@ -21,7 +22,7 @@ public List getRefs() { public String getStmtCode() { StringBuilder code = new StringBuilder(); - code.append("deallocate("); + code.append(keyword(FortranKeyword.DEALLOCATE)).append("("); code.append(getRefs() .stream() diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/DeclarationStmt.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/DeclStmt.java similarity index 60% rename from FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/DeclarationStmt.java rename to FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/DeclStmt.java index 49501851..f9febbe0 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/DeclarationStmt.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/DeclStmt.java @@ -5,9 +5,8 @@ import java.util.Collection; -public abstract class DeclarationStmt extends Stmt { - - public DeclarationStmt(DataStore data, Collection children) { +public abstract class DeclStmt extends Stmt { + public DeclStmt(DataStore data, Collection children) { super(data, children); } } diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/ExecutableStmt.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/ExecutableStmt.java deleted file mode 100644 index 8a051a9f..00000000 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/ExecutableStmt.java +++ /dev/null @@ -1,32 +0,0 @@ -package pt.up.fe.specs.fortran.ast.nodes.stmt; - -import org.suikasoft.jOptions.Datakey.DataKey; -import org.suikasoft.jOptions.Datakey.KeyFactory; -import org.suikasoft.jOptions.Interfaces.DataStore; -import pt.up.fe.specs.fortran.ast.nodes.FortranNode; -import pt.up.fe.specs.fortran.ast.nodes.decl.LabelDecl; -import pt.up.fe.specs.util.SpecsCollections; -import pt.up.fe.specs.util.utilities.PrintOnce; - -import java.util.Collection; -import java.util.Optional; - -/** - * R514 executable-construct - */ -public abstract class ExecutableStmt extends Stmt { - - // DATAKEYS BEGIN - - /** - * The original source of this statement. - */ - public final static DataKey SOURCE = KeyFactory.string("source"); - - - // DATAKEYS END - - public ExecutableStmt(DataStore data, Collection children) { - super(data, children); - } -} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/ExternalStmt.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/ExternalStmt.java index 52862299..cb4f2dec 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/ExternalStmt.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/ExternalStmt.java @@ -9,7 +9,7 @@ import java.util.List; import java.util.stream.Collectors; -public class ExternalStmt extends SpecificationStmt { +public class ExternalStmt extends SpecStmt { public ExternalStmt(DataStore data, Collection children) { super(data, children); } diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/FormatStmt.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/FormatStmt.java index 25853b15..6e25c09c 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/FormatStmt.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/FormatStmt.java @@ -1,11 +1,14 @@ package pt.up.fe.specs.fortran.ast.nodes.stmt; +import org.suikasoft.jOptions.Datakey.DataKey; +import org.suikasoft.jOptions.Datakey.KeyFactory; import org.suikasoft.jOptions.Interfaces.DataStore; import pt.up.fe.specs.fortran.ast.nodes.FortranNode; import java.util.Collection; -public class FormatStmt extends ExecutableStmt { +public class FormatStmt extends IDEStmt { + public static final DataKey SOURCE = KeyFactory.string("source"); public FormatStmt(DataStore data, Collection children) { super(data, children); diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/IDEStmt.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/IDEStmt.java new file mode 100644 index 00000000..253d2014 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/IDEStmt.java @@ -0,0 +1,16 @@ +package pt.up.fe.specs.fortran.ast.nodes.stmt; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; + +/* + * Represents a statement that can be interpreted as either ImplicitPartStmt, + * DeclConstruct or ExecPartConstruct. + */ +public abstract class IDEStmt extends Stmt { + public IDEStmt(DataStore data, Collection children) { + super(data, children); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/ISStmt.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/ISStmt.java new file mode 100644 index 00000000..3fd80b7a --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/ISStmt.java @@ -0,0 +1,16 @@ +package pt.up.fe.specs.fortran.ast.nodes.stmt; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; + +/* + * Represents a statement that can be interpreted as either ImplicitPartStmt + * or SpecConstruct. + */ +public abstract class ISStmt extends Stmt { + public ISStmt(DataStore data, Collection children) { + super(data, children); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/ImportStmt.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/ImportStmt.java new file mode 100644 index 00000000..46228fc8 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/ImportStmt.java @@ -0,0 +1,42 @@ +package pt.up.fe.specs.fortran.ast.nodes.stmt; + +import org.suikasoft.jOptions.Datakey.DataKey; +import org.suikasoft.jOptions.Datakey.KeyFactory; +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.FortranKeyword; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.stmt.enums.ImportKind; + +import java.util.Collection; +import java.util.List; + +public class ImportStmt extends Stmt { + public static final DataKey KIND = KeyFactory.enumeration("kind", ImportKind.class); + public static final DataKey> NAMES = KeyFactory.list("names", String.class); + + public ImportStmt(DataStore data, Collection children) { + super(data, children); + } + + public ImportKind getKind() { + return get(KIND); + } + + public List getImportedNames() { + return get(NAMES); + } + + @Override + public String getStmtCode() { + var names = getImportedNames(); + + var suffix = switch (getKind()) { + case DEFAULT -> names.isEmpty() ? "" : " :: " + String.join(", ", names); + case ONLY -> ", " + keyword(FortranKeyword.ONLY) + " : " + String.join(", ", names); + case NONE -> ", " + keyword(FortranKeyword.NONE); + case ALL -> ", " + keyword(FortranKeyword.ALL); + }; + + return keyword(FortranKeyword.IMPORT) + suffix; + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/LiteralExecutionStmt.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/LiteralExecutionStmt.java index cbd9fd39..4f7c8fe1 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/LiteralExecutionStmt.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/LiteralExecutionStmt.java @@ -6,7 +6,8 @@ import java.util.Collection; -public class LiteralExecutionStmt extends ExecutableStmt implements LiteralNode { +// TODO(Process-ing): Why does this exist?!?! +public class LiteralExecutionStmt extends Stmt implements LiteralNode { public LiteralExecutionStmt(DataStore data, Collection children) { super(data, children); diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/NamelistGroup.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/NamelistGroup.java new file mode 100644 index 00000000..12ff4074 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/NamelistGroup.java @@ -0,0 +1,33 @@ +package pt.up.fe.specs.fortran.ast.nodes.stmt; + +import org.suikasoft.jOptions.Datakey.DataKey; +import org.suikasoft.jOptions.Datakey.KeyFactory; +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; +import java.util.List; + +public class NamelistGroup extends FortranNode { + public static final DataKey GROUP_NAME = KeyFactory.string("groupName"); + public static final DataKey> OBJECT_NAMES = KeyFactory.list("objectNames", String.class); + + public NamelistGroup(DataStore data, Collection children) { + super(data, children); + } + + public String getGroupName() { + return get(GROUP_NAME); + } + + public List getObjectNames() { + return get(OBJECT_NAMES); + } + + @Override + public String getCode() { + var objectsCode = String.join(", ", getObjectNames()); + + return "/" + getGroupName() + "/ " + objectsCode; + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/NamelistStmt.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/NamelistStmt.java new file mode 100644 index 00000000..3ef3fc6d --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/NamelistStmt.java @@ -0,0 +1,28 @@ +package pt.up.fe.specs.fortran.ast.nodes.stmt; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.FortranKeyword; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; +import java.util.List; +import java.util.stream.Collectors; + +public class NamelistStmt extends SpecStmt { + public NamelistStmt(DataStore data, Collection children) { + super(data, children); + } + + public List getGroups() { + return getChildren(NamelistGroup.class); + } + + @Override + public String getStmtCode() { + var groupsCode = getGroups().stream() + .map(NamelistGroup::getCode) + .collect(Collectors.joining(", ")); + + return keyword(FortranKeyword.NAMELIST) + " " + groupsCode; + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/OpenStmt.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/OpenStmt.java deleted file mode 100644 index b0e21b79..00000000 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/OpenStmt.java +++ /dev/null @@ -1,18 +0,0 @@ -package pt.up.fe.specs.fortran.ast.nodes.stmt; - -import org.suikasoft.jOptions.Interfaces.DataStore; -import pt.up.fe.specs.fortran.ast.nodes.FortranNode; - -import java.util.Collection; - -public class OpenStmt extends ActionStmt { - public OpenStmt(DataStore data, Collection children) { - super(data, children); - } - - //TODO properly support the statement - @Override - public String getStmtCode() { - return get(SOURCE).replaceFirst("^\\d+", ""); - } -} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/ParameterStmt.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/ParameterStmt.java index fd7188aa..17f53576 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/ParameterStmt.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/ParameterStmt.java @@ -9,7 +9,7 @@ import java.util.List; import java.util.stream.Collectors; -public class ParameterStmt extends Stmt { +public class ParameterStmt extends ISStmt { public ParameterStmt(DataStore data, Collection children) { super(data, children); } diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/PrintStmt.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/PrintStmt.java index d0adaafa..348d811d 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/PrintStmt.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/PrintStmt.java @@ -3,7 +3,7 @@ import org.suikasoft.jOptions.Interfaces.DataStore; import pt.up.fe.specs.fortran.ast.FortranKeyword; import pt.up.fe.specs.fortran.ast.nodes.FortranNode; -import pt.up.fe.specs.fortran.ast.nodes.utils.Format; +import pt.up.fe.specs.fortran.ast.nodes.io.Format; import pt.up.fe.specs.util.SpecsCheck; import java.util.Collection; diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/ProcDeclStmt.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/ProcDeclStmt.java new file mode 100644 index 00000000..5fbc4eb5 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/ProcDeclStmt.java @@ -0,0 +1,44 @@ +package pt.up.fe.specs.fortran.ast.nodes.stmt; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.FortranKeyword; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.decl.proc.ProcDecl; +import pt.up.fe.specs.fortran.ast.nodes.decl.proc.attr.ProcAttr; +import pt.up.fe.specs.fortran.ast.nodes.decl.proc.interfaces.ProcInterface; + +import java.util.Collection; +import java.util.List; +import java.util.Optional; +import java.util.stream.Collectors; + +public class ProcDeclStmt extends SpecStmt { + public ProcDeclStmt(DataStore data, Collection children) { + super(data, children); + } + + public Optional getProcInterface() { + return getChildTry(ProcInterface.class, 0); + } + + public List getProcAttrs() { + return getChildrenOf(ProcAttr.class); + } + + public List getProcDecls() { + return getChildrenOf(ProcDecl.class); + } + + @Override + public String getStmtCode() { + var interfaceCode = getProcInterface().map(ProcInterface::getCode).orElse(""); + var attrsCode = getProcAttrs().stream() + .map(attr -> ", " + attr.getCode()) + .collect(Collectors.joining()); + var declsCode = getProcDecls().stream() + .map(ProcDecl::getCode) + .collect(Collectors.joining(", ")); + + return keyword(FortranKeyword.PROCEDURE) + "(" + interfaceCode + ")" + attrsCode + " :: " + declsCode; + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/ReturnStmt.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/ReturnStmt.java index 59c769f1..5121e2c1 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/ReturnStmt.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/ReturnStmt.java @@ -1,30 +1,30 @@ package pt.up.fe.specs.fortran.ast.nodes.stmt; +import org.suikasoft.jOptions.Datakey.DataKey; +import org.suikasoft.jOptions.Datakey.KeyFactory; import org.suikasoft.jOptions.Interfaces.DataStore; -import pt.up.fe.specs.fortran.ast.FortranKeyword; import pt.up.fe.specs.fortran.ast.nodes.FortranNode; -import pt.up.fe.specs.fortran.ast.nodes.expr.Expr; import java.util.Collection; import java.util.Optional; -public class ReturnStmt extends ActionStmt{ +import static pt.up.fe.specs.fortran.ast.FortranKeyword.RETURN; + +public class ReturnStmt extends ActionStmt { + public static final DataKey> TARGET = KeyFactory.optional("target"); public ReturnStmt(DataStore data, Collection children) { super(data, children); } - public Optional getExpr() { - return getChildTry(Expr.class); + public Optional getTarget() { + return get(TARGET); } @Override public String getStmtCode() { - StringBuilder code = new StringBuilder(); - - code.append(FortranKeyword.RETURN.getKeyword(false)); - - getExpr().ifPresent(expr -> code.append(" ").append(expr.getCode())); + var targetOpt = getTarget(); + var targetSuffix = targetOpt.map(target -> " " + target).orElse(""); - return code.toString(); + return keyword(RETURN) + targetSuffix; } } diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/SpecificationStmt.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/SpecStmt.java similarity index 58% rename from FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/SpecificationStmt.java rename to FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/SpecStmt.java index e3e4c8d2..65a5a089 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/SpecificationStmt.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/SpecStmt.java @@ -5,9 +5,8 @@ import java.util.Collection; -public abstract class SpecificationStmt extends DeclarationStmt { - - public SpecificationStmt(DataStore data, Collection children) { +public abstract class SpecStmt extends Stmt { + public SpecStmt(DataStore data, Collection children) { super(data, children); } } diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/Stmt.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/Stmt.java index 36b6dd90..ad56bf01 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/Stmt.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/Stmt.java @@ -3,6 +3,7 @@ import org.suikasoft.jOptions.Datakey.DataKey; import org.suikasoft.jOptions.Datakey.KeyFactory; import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.FortranContext; import pt.up.fe.specs.fortran.ast.nodes.FortranNode; import pt.up.fe.specs.fortran.ast.nodes.decl.LabelDecl; import pt.up.fe.specs.util.SpecsCheck; @@ -29,10 +30,6 @@ public Optional getLabel() { } public List getLeadingComments() { - SpecsCheck.checkArgument(hasValue(LEADING_COMMENTS), () -> "Leading comment array not initialized in " - + "node of class \"" + getClass() + "\". Make sure you call the method StmtProcessors::stmt() on the " - + "processor for this node kind to initialize comments and labels."); - return get(LEADING_COMMENTS); } @@ -47,16 +44,36 @@ public String getStmtCode() { @Override public final String getCode() { - var labelPrefix = getLabel().map(label -> label.getCode() + " ").orElse(""); + var fixedForm = getContext().get(FortranContext.FIXED_FORM); + var labelPrefix = getLabelPrefix(fixedForm); var leadingComments = getLeadingComments(); - var trailingComment = getTrailingComment(); + SpecsCheck.checkArgument(leadingComments != null, () -> "Leading comment array not initialized in " + + "node of class \"" + getClass() + "\". Make sure you call the method StmtProcessors::stmt() on the " + + "processor for this node kind to initialize comments and labels."); + var commentStarter = getCommentStarter(); var commentPrefix = leadingComments.stream() - .map(comment -> comment + ln()) + .map(comment -> commentStarter + comment + ln()) .collect(Collectors.joining()); - var commentSuffix = trailingComment.map(comment -> " " + comment).orElse(""); + + var commentSuffix = !fixedForm + ? getTrailingComment().map(comment -> " !" + comment).orElse("") + : ""; return commentPrefix + labelPrefix + getStmtCode() + commentSuffix; } + + private String getLabelPrefix(boolean fixedForm) { + var labelOpt = getLabel(); + + if (!fixedForm) { // Free form (AKA modern Fortran) + return labelOpt.map(label -> label.getCode() + " ").orElse(""); + } + + // Otherwise, fixed form (AKA legacy Fortran) -> first 5 columns are for labels, with one final separation + // column, and only then can statements begin + var labelText = labelOpt.map(LabelDecl::getCode).orElse(""); + return " ".repeat(5 - labelText.length()) + labelText + " "; + } } diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/TypeDeclarationStmt.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/TypeDeclarationStmt.java index 9c37931c..d9c073ea 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/TypeDeclarationStmt.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/TypeDeclarationStmt.java @@ -3,8 +3,8 @@ import org.suikasoft.jOptions.Interfaces.DataStore; import pt.up.fe.specs.fortran.ast.nodes.FortranNode; import pt.up.fe.specs.fortran.ast.nodes.decl.EntityDecl; -import pt.up.fe.specs.fortran.ast.nodes.specification.ArraySpecification; -import pt.up.fe.specs.fortran.ast.nodes.type.attributes.AttributeSpecifier; +import pt.up.fe.specs.fortran.ast.nodes.type.attributes.AttrSpec; +import pt.up.fe.specs.fortran.ast.nodes.type.decltype.DeclType; import pt.up.fe.specs.util.SpecsCheck; import java.util.Collection; @@ -14,19 +14,22 @@ /** * Has EntityDecl as children, each one representing an entity declaration. */ -public class TypeDeclarationStmt extends SpecificationStmt { - +// TODO(Process-ing): Correct this node +public class TypeDeclarationStmt extends SpecStmt { public TypeDeclarationStmt(DataStore data, Collection children) { super(data, children); } + public DeclType getDeclType() { + return getChild(DeclType.class, 0); + } public List getDecls() { return getChildrenOf(EntityDecl.class); } - public List getAttributes() { - return getChildrenOf(AttributeSpecifier.class); + public List getAttributes() { + return getChildrenOf(AttrSpec.class); } @Override @@ -39,23 +42,25 @@ public String getStmtCode() { SpecsCheck.checkArgument(!decls.isEmpty(), () -> "TypeDeclarationStmt should have at least one EntityDecl"); - var type = decls.get(0).getType(); - + var type = getDeclType(); code.append(type.getCode()); + if (!attributes.isEmpty()) { var attributesCode = getAttributesCode(attributes); - code.append(", ").append(attributesCode); + code.append(", ").append(attributesCode).append(" :: "); + } else { + code.append(!fixedForm() ? " :: " : " "); } - code.append(" :: "); - var declsCode = decls.stream().map(EntityDecl::getCode) + var declsCode = decls.stream() + .map(EntityDecl::getCode) .collect(Collectors.joining(", ")); code.append(declsCode); return code.toString(); } - private static String getAttributesCode(List attributes) { + private static String getAttributesCode(List attributes) { return attributes.stream().map(FortranNode::getCode) .collect(Collectors.joining(", ")); } diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/WriteStmt.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/WriteStmt.java deleted file mode 100644 index 13b3390a..00000000 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/WriteStmt.java +++ /dev/null @@ -1,64 +0,0 @@ -package pt.up.fe.specs.fortran.ast.nodes.stmt; - -import org.suikasoft.jOptions.Interfaces.DataStore; -import pt.up.fe.specs.fortran.ast.FortranKeyword; -import pt.up.fe.specs.fortran.ast.nodes.FortranNode; -import pt.up.fe.specs.fortran.ast.nodes.expr.Expr; -import pt.up.fe.specs.fortran.ast.nodes.utils.Format; -import pt.up.fe.specs.fortran.ast.nodes.utils.IoControlSpec; -import pt.up.fe.specs.fortran.ast.nodes.utils.IoUnit; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; -import java.util.Optional; -import java.util.stream.Collectors; - -public class WriteStmt extends ActionStmt { - public WriteStmt(DataStore data, Collection children) { - super(data, children); - } - - public Optional getIoUnit() { - return getChildTry(IoUnit.class); - } - - public Optional getFormat() { - return getChildTry(Format.class); - } - - public List getControlSpecs() { - return getChildrenOf(IoControlSpec.class); - } - - public List getOutputItems() { - return getChildrenOf(Expr.class); - } - - @Override - public String getStmtCode() { - StringBuilder code = new StringBuilder(); - code.append(FortranKeyword.WRITE).append("("); - - List parts = new ArrayList<>(); - - getIoUnit().ifPresent(unit -> parts.add(unit.getCode())); - - getFormat().ifPresent(fmt -> parts.add(fmt.getCode())); - - getControlSpecs().forEach(spec -> parts.add(spec.getCode())); - - code.append(String.join(", ", parts)); - - code.append(") "); - - code.append( - getOutputItems() - .stream() - .map(Expr::getCode) - .collect(Collectors.joining(", ")) - ); - - return code.toString(); - } -} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/datastmt/DataStmt.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/datastmt/DataStmt.java index ef2208de..ea9c0327 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/datastmt/DataStmt.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/datastmt/DataStmt.java @@ -3,13 +3,13 @@ import org.suikasoft.jOptions.Interfaces.DataStore; import pt.up.fe.specs.fortran.ast.FortranKeyword; import pt.up.fe.specs.fortran.ast.nodes.FortranNode; -import pt.up.fe.specs.fortran.ast.nodes.stmt.DeclarationStmt; +import pt.up.fe.specs.fortran.ast.nodes.stmt.DeclStmt; import java.util.Collection; import java.util.List; import java.util.stream.Collectors; -public class DataStmt extends DeclarationStmt { +public class DataStmt extends DeclStmt { public DataStmt(DataStore data, Collection children) { super(data, children); } diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/datastmt/DataStmtVariable.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/datastmt/DataStmtVariable.java index 7adb38ec..4ed091bf 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/datastmt/DataStmtVariable.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/datastmt/DataStmtVariable.java @@ -2,6 +2,7 @@ import org.suikasoft.jOptions.Interfaces.DataStore; import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.decl.Variable; import pt.up.fe.specs.fortran.ast.nodes.expr.DataRef; import java.util.Collection; @@ -11,14 +12,12 @@ public DataStmtVariable(DataStore data, Collection childr super(data, children); } - public DataRef getVariable() { - return getChild(DataRef.class); + public Variable getVariable() { + return getChild(Variable.class); } @Override public String getCode() { - var variable = getVariable(); - - return variable.getCode(); + return getVariable().getCode(); } } diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/dimstmt/DimensionDecl.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/dimstmt/DimensionDecl.java new file mode 100644 index 00000000..2df42a12 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/dimstmt/DimensionDecl.java @@ -0,0 +1,30 @@ +package pt.up.fe.specs.fortran.ast.nodes.stmt.dimstmt; + +import org.suikasoft.jOptions.Datakey.DataKey; +import org.suikasoft.jOptions.Datakey.KeyFactory; +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.specification.shape.ArraySpec; + +import java.util.Collection; + +public class DimensionDecl extends FortranNode { + public static final DataKey NAME = KeyFactory.string("name"); + + public DimensionDecl(DataStore data, Collection children) { + super(data, children); + } + + public String getName() { + return get(NAME); + } + + public ArraySpec getArraySpecification() { + return getChild(ArraySpec.class); + } + + @Override + public String getCode() { + return getName() + getArraySpecification().getCode(); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/dimstmt/DimensionStmt.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/dimstmt/DimensionStmt.java new file mode 100644 index 00000000..1d49124b --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/dimstmt/DimensionStmt.java @@ -0,0 +1,37 @@ +package pt.up.fe.specs.fortran.ast.nodes.stmt.dimstmt; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.FortranKeyword; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.stmt.SpecStmt; +import pt.up.fe.specs.fortran.ast.nodes.stmt.Stmt; + +import java.util.Collection; +import java.util.List; +import java.util.stream.Collectors; + +public class DimensionStmt extends SpecStmt { + public DimensionStmt(DataStore data, Collection children) { + super(data, children); + } + + public List getDimensionDecls() { + return getChildrenOf(DimensionDecl.class); + } + + @Override + public String getStmtCode() { + var code = new StringBuilder(); + + code.append(keyword(FortranKeyword.DIMENSION)) + .append(!fixedForm() ? " :: " : " "); + + var decls = getDimensionDecls(); + var declsCode = decls.stream() + .map(DimensionDecl::getCode) + .collect(Collectors.joining(", ")); + code.append(declsCode); + + return code.toString(); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/enums/ImportKind.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/enums/ImportKind.java new file mode 100644 index 00000000..c9075699 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/enums/ImportKind.java @@ -0,0 +1,8 @@ +package pt.up.fe.specs.fortran.ast.nodes.stmt.enums; + +public enum ImportKind { + DEFAULT, + ONLY, + NONE, + ALL; +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/ifstmt/ElseBlock.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/ifstmt/ElseBlock.java index 1b5d99e7..b9ca7608 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/ifstmt/ElseBlock.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/ifstmt/ElseBlock.java @@ -2,9 +2,7 @@ import org.suikasoft.jOptions.Interfaces.DataStore; import pt.up.fe.specs.fortran.ast.nodes.FortranNode; -import pt.up.fe.specs.fortran.ast.nodes.program.Execution; -import pt.up.fe.specs.fortran.ast.nodes.program.StmtBlock; -import pt.up.fe.specs.fortran.ast.nodes.stmt.Stmt; +import pt.up.fe.specs.fortran.ast.nodes.program.ExecBlock; import java.util.Collection; @@ -17,8 +15,8 @@ public ElseStmt getElseStmt() { return getChild(ElseStmt.class, 0); } - public Execution getBlock() { - return getChild(Execution.class, 1); + public ExecBlock getBlock() { + return getChild(ExecBlock.class, 1); } @Override diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/ifstmt/ElseIfBlock.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/ifstmt/ElseIfBlock.java index b7e06555..884b15e6 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/ifstmt/ElseIfBlock.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/ifstmt/ElseIfBlock.java @@ -1,12 +1,9 @@ package pt.up.fe.specs.fortran.ast.nodes.stmt.ifstmt; import org.suikasoft.jOptions.Interfaces.DataStore; -import pt.up.fe.specs.fortran.ast.FortranKeyword; import pt.up.fe.specs.fortran.ast.nodes.FortranNode; -import pt.up.fe.specs.fortran.ast.nodes.expr.Expr; +import pt.up.fe.specs.fortran.ast.nodes.program.ExecBlock; import pt.up.fe.specs.fortran.ast.nodes.program.Execution; -import pt.up.fe.specs.fortran.ast.nodes.program.StmtBlock; -import pt.up.fe.specs.fortran.ast.nodes.stmt.Stmt; import java.util.Collection; @@ -19,8 +16,8 @@ public ElseIfStmt getElseIfStmt() { return getChild(ElseIfStmt.class, 0); } - public Execution getBlock() { - return getChild(Execution.class, 1); + public ExecBlock getBlock() { + return getChild(ExecBlock.class, 1); } @Override diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/ifstmt/ElseIfStmt.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/ifstmt/ElseIfStmt.java index 04353499..bac12de0 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/ifstmt/ElseIfStmt.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/ifstmt/ElseIfStmt.java @@ -26,12 +26,8 @@ public String getStmtCode() { var code = new StringBuilder(); - code.append(keyword(FortranKeyword.ELSE)) - .append(" ") - .append(keyword(FortranKeyword.IF)) - .append(" (") - .append(condition.getCode()) - .append(") ") + code.append(keyword(FortranKeyword.ELSE)).append(" ").append(keyword(FortranKeyword.IF)) + .append(" (").append(condition.getCode()).append(") ") .append(keyword(FortranKeyword.THEN)); nameOpt.ifPresent(name -> code.append(" ").append(name)); diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/ifstmt/EndIfStmt.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/ifstmt/EndIfStmt.java index 5f9636fc..7a647d5b 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/ifstmt/EndIfStmt.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/ifstmt/EndIfStmt.java @@ -21,11 +21,11 @@ public String getStmtCode() { var code = new StringBuilder(); - code.append(keyword(FortranKeyword.END)) - .append(" ") - .append(keyword(FortranKeyword.IF)); + code.append(keyword(FortranKeyword.END)).append(" ").append(keyword(FortranKeyword.IF)); - nameOpt.ifPresent(name -> code.append(" ").append(name)); + if (!fixedForm()) { + nameOpt.ifPresent(name -> code.append(" ").append(name)); + } return code.toString(); } diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/ifstmt/IfConstruct.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/ifstmt/IfConstruct.java index b4d700e5..c8838a73 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/ifstmt/IfConstruct.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/ifstmt/IfConstruct.java @@ -4,7 +4,7 @@ import org.suikasoft.jOptions.Datakey.KeyFactory; import org.suikasoft.jOptions.Interfaces.DataStore; import pt.up.fe.specs.fortran.ast.nodes.FortranNode; -import pt.up.fe.specs.fortran.ast.nodes.stmt.ExecutableStmt; +import pt.up.fe.specs.fortran.ast.nodes.program.construct.ExecConstruct; import java.util.Collection; import java.util.List; @@ -13,7 +13,7 @@ /** * R1134 if-construct */ -public class IfConstruct extends ExecutableStmt { +public class IfConstruct extends ExecConstruct { public static final DataKey> NAME = KeyFactory.optional("name"); public IfConstruct(DataStore data, Collection children) { @@ -41,7 +41,7 @@ public EndIfStmt getEndIfStmt() { } @Override - public String getStmtCode() { + public String getCode() { var ifThenBlock = getIfThenBlock(); var elseIfBlocks = getElseIfBlocks(); var elseBlock = getElseBlock(); diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/ifstmt/IfStmt.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/ifstmt/IfStmt.java index 485c0e8e..5c9542b8 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/ifstmt/IfStmt.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/ifstmt/IfStmt.java @@ -26,11 +26,6 @@ public String getStmtCode() { var condition = getCondition(); var thenAction = getThenAction(); - return String.format( - "%s (%s) %s", - keyword(FortranKeyword.IF), - condition.getCode(), - thenAction.getCode() - ); + return keyword(FortranKeyword.IF) + " (" + condition.getCode() + ") " + thenAction.getStmtCode(); } } diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/ifstmt/IfThenBlock.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/ifstmt/IfThenBlock.java index 8796e048..69b26990 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/ifstmt/IfThenBlock.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/ifstmt/IfThenBlock.java @@ -1,11 +1,9 @@ package pt.up.fe.specs.fortran.ast.nodes.stmt.ifstmt; import org.suikasoft.jOptions.Interfaces.DataStore; -import pt.up.fe.specs.fortran.ast.FortranKeyword; import pt.up.fe.specs.fortran.ast.nodes.FortranNode; -import pt.up.fe.specs.fortran.ast.nodes.expr.Expr; +import pt.up.fe.specs.fortran.ast.nodes.program.ExecBlock; import pt.up.fe.specs.fortran.ast.nodes.program.Execution; -import pt.up.fe.specs.fortran.ast.nodes.program.StmtBlock; import java.util.Collection; @@ -18,8 +16,8 @@ public IfThenStmt getIfThenStmt() { return getChild(IfThenStmt.class, 0); } - public Execution getBlock() { - return getChild(Execution.class, 1); + public ExecBlock getBlock() { + return getChild(ExecBlock.class, 1); } @Override diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/ifstmt/IfThenStmt.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/ifstmt/IfThenStmt.java index cb55b986..49baf6f8 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/ifstmt/IfThenStmt.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/ifstmt/IfThenStmt.java @@ -30,9 +30,7 @@ public String getStmtCode() { nameOpt.ifPresent(name -> code.append(name).append(" : ")); code.append(keyword(FortranKeyword.IF)) - .append(" (") - .append(condition.getCode()) - .append(") ") + .append(" (").append(condition.getCode()).append(") ") .append(keyword(FortranKeyword.THEN)); return code.toString(); diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/implicit/DefaultImplicitStmt.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/implicit/DefaultImplicitStmt.java new file mode 100644 index 00000000..b1cc2656 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/implicit/DefaultImplicitStmt.java @@ -0,0 +1,29 @@ +package pt.up.fe.specs.fortran.ast.nodes.stmt.implicit; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.FortranKeyword; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.specification.ImplicitSpec; + +import java.util.Collection; +import java.util.List; +import java.util.stream.Collectors; + +public class DefaultImplicitStmt extends ImplicitStmt { + public DefaultImplicitStmt(DataStore data, Collection children) { + super(data, children); + } + + public List getSpecs() { + return getChildren(ImplicitSpec.class); + } + + @Override + public String getStmtCode() { + var specsCode = getSpecs().stream() + .map(ImplicitSpec::getCode) + .collect(Collectors.joining(", ")); + + return keyword(FortranKeyword.IMPLICIT) + " " + specsCode; + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/implicit/IDEStmtImplicitAdapter.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/implicit/IDEStmtImplicitAdapter.java new file mode 100644 index 00000000..2187fade --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/implicit/IDEStmtImplicitAdapter.java @@ -0,0 +1,22 @@ +package pt.up.fe.specs.fortran.ast.nodes.stmt.implicit; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.stmt.IDEStmt; + +import java.util.Collection; + +public class IDEStmtImplicitAdapter extends ImplicitPartStmt { + public IDEStmtImplicitAdapter(DataStore data, Collection children) { + super(data, children); + } + + public IDEStmt getStmt() { + return getChild(IDEStmt.class, 0); + } + + @Override + public String getStmtCode() { + return getStmt().getStmtCode(); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/implicit/ISStmtImplicitAdapter.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/implicit/ISStmtImplicitAdapter.java new file mode 100644 index 00000000..36e9ce75 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/implicit/ISStmtImplicitAdapter.java @@ -0,0 +1,22 @@ +package pt.up.fe.specs.fortran.ast.nodes.stmt.implicit; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.stmt.ISStmt; + +import java.util.Collection; + +public class ISStmtImplicitAdapter extends ImplicitPartStmt { + public ISStmtImplicitAdapter(DataStore data, Collection children) { + super(data, children); + } + + public ISStmt getStmt() { + return getChild(ISStmt.class, 0); + } + + @Override + public String getStmtCode() { + return getStmt().getStmtCode(); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/implicit/ImplicitNoneStmt.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/implicit/ImplicitNoneStmt.java new file mode 100644 index 00000000..4d720c9c --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/implicit/ImplicitNoneStmt.java @@ -0,0 +1,44 @@ +package pt.up.fe.specs.fortran.ast.nodes.stmt.implicit; + +import org.suikasoft.jOptions.Datakey.DataKey; +import org.suikasoft.jOptions.Datakey.KeyFactory; +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.FortranKeyword; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +public class ImplicitNoneStmt extends ImplicitStmt { + public static final DataKey EXPLICIT_TYPES = KeyFactory.bool("explicit_types"); + public static final DataKey EXPLICIT_EXTERNAL = KeyFactory.bool("explicit_external"); + + public ImplicitNoneStmt(DataStore data, Collection children) { + super(data, children); + } + + public boolean explicitTypes() { + return get(EXPLICIT_TYPES); + } + + public boolean explicitExternal() { + return get(EXPLICIT_EXTERNAL); + } + + @Override + public String getStmtCode() { + var prefix = keyword(FortranKeyword.IMPLICIT) + " " + keyword(FortranKeyword.NONE); + + var typeCode = explicitTypes() ? keyword(FortranKeyword.TYPE) : ""; + var externalCode = explicitExternal() ? keyword(FortranKeyword.EXTERNAL) : ""; + + var specsCode = Stream.of(typeCode, externalCode) + .filter(code -> !code.isEmpty()) + .collect(Collectors.joining(", ")); + + return specsCode.isEmpty() + ? prefix + : prefix + " (" + specsCode + ")"; + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/implicit/ImplicitPartStmt.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/implicit/ImplicitPartStmt.java new file mode 100644 index 00000000..a5870899 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/implicit/ImplicitPartStmt.java @@ -0,0 +1,13 @@ +package pt.up.fe.specs.fortran.ast.nodes.stmt.implicit; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.stmt.Stmt; + +import java.util.Collection; + +public abstract class ImplicitPartStmt extends Stmt { + public ImplicitPartStmt(DataStore data, Collection children) { + super(data, children); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/implicit/ImplicitStmt.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/implicit/ImplicitStmt.java new file mode 100644 index 00000000..bbef869f --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/implicit/ImplicitStmt.java @@ -0,0 +1,12 @@ +package pt.up.fe.specs.fortran.ast.nodes.stmt.implicit; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; + +public abstract class ImplicitStmt extends ImplicitPartStmt { + public ImplicitStmt(DataStore data, Collection children) { + super(data, children); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/interfaces/AbstractInterfaceStmt.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/interfaces/AbstractInterfaceStmt.java new file mode 100644 index 00000000..bd16ea7f --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/interfaces/AbstractInterfaceStmt.java @@ -0,0 +1,25 @@ +package pt.up.fe.specs.fortran.ast.nodes.stmt.interfaces; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.FortranKeyword; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.specification.genericspec.GenericSpec; + +import java.util.Collection; +import java.util.Optional; + +public class AbstractInterfaceStmt extends InterfaceStmt { + public AbstractInterfaceStmt(DataStore data, Collection children) { + super(data, children); + } + + @Override + public Optional getGenericSpec() { + return Optional.empty(); + } + + @Override + public String getStmtCode() { + return keyword(FortranKeyword.ABSTRACT) + " " + keyword(FortranKeyword.INTERFACE); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/interfaces/DefaultInterfaceStmt.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/interfaces/DefaultInterfaceStmt.java new file mode 100644 index 00000000..167ff07c --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/interfaces/DefaultInterfaceStmt.java @@ -0,0 +1,29 @@ +package pt.up.fe.specs.fortran.ast.nodes.stmt.interfaces; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.FortranKeyword; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.specification.genericspec.GenericSpec; + +import java.util.Collection; +import java.util.Optional; + +public class DefaultInterfaceStmt extends InterfaceStmt { + public DefaultInterfaceStmt(DataStore data, Collection children) { + super(data, children); + } + + @Override + public Optional getGenericSpec() { + return getChildTry(GenericSpec.class, 0); + } + + @Override + public String getStmtCode() { + var genericSpecCode = getGenericSpec() + .map(spec -> spec.getCode() + " ") + .orElse(""); + + return keyword(FortranKeyword.INTERFACE) + genericSpecCode; + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/interfaces/EndInterfaceStmt.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/interfaces/EndInterfaceStmt.java new file mode 100644 index 00000000..b9f5b805 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/interfaces/EndInterfaceStmt.java @@ -0,0 +1,24 @@ +package pt.up.fe.specs.fortran.ast.nodes.stmt.interfaces; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.FortranKeyword; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.specification.interfaces.InterfaceBlock; +import pt.up.fe.specs.fortran.ast.nodes.stmt.Stmt; + +import java.util.Collection; + +public class EndInterfaceStmt extends Stmt { + public EndInterfaceStmt(DataStore data, Collection children) { + super(data, children); + } + + @Override + public String getStmtCode() { + var genericSpecCode = getAncestor(InterfaceBlock.class).getGenericSpec() + .map(spec -> " " + spec.getCode()) + .orElse(""); + + return keyword(FortranKeyword.END) + " " + keyword(FortranKeyword.INTERFACE) + genericSpecCode; + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/interfaces/InterfaceStmt.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/interfaces/InterfaceStmt.java new file mode 100644 index 00000000..c365c06b --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/interfaces/InterfaceStmt.java @@ -0,0 +1,17 @@ +package pt.up.fe.specs.fortran.ast.nodes.stmt.interfaces; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.specification.genericspec.GenericSpec; +import pt.up.fe.specs.fortran.ast.nodes.stmt.Stmt; + +import java.util.Collection; +import java.util.Optional; + +public abstract class InterfaceStmt extends Stmt { + public InterfaceStmt(DataStore data, Collection children) { + super(data, children); + } + + public abstract Optional getGenericSpec(); +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/loop/DoConstruct.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/loop/DoConstruct.java index 93e3ae18..8f295d04 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/loop/DoConstruct.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/loop/DoConstruct.java @@ -4,20 +4,20 @@ import org.suikasoft.jOptions.Datakey.KeyFactory; import org.suikasoft.jOptions.Interfaces.DataStore; import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.decl.LabelDecl; import pt.up.fe.specs.fortran.ast.nodes.loops.LoopControl; import pt.up.fe.specs.fortran.ast.nodes.loops.enums.DoKind; -import pt.up.fe.specs.fortran.ast.nodes.program.Execution; -import pt.up.fe.specs.fortran.ast.nodes.stmt.ExecutableStmt; +import pt.up.fe.specs.fortran.ast.nodes.program.ExecBlock; +import pt.up.fe.specs.fortran.ast.nodes.program.construct.ActionStmtAdapter; +import pt.up.fe.specs.fortran.ast.nodes.program.construct.ExecConstruct; +import pt.up.fe.specs.fortran.ast.nodes.stmt.ContinueStmt; import java.util.Collection; import java.util.Optional; -import static pt.up.fe.specs.fortran.ast.FortranKeyword.DO; -import static pt.up.fe.specs.fortran.ast.FortranKeyword.END; - -public class DoConstruct extends ExecutableStmt { - +public class DoConstruct extends ExecConstruct { public static final DataKey> NAME = KeyFactory.optional("name"); + public static final DataKey> DO_LABEL = KeyFactory.optional("doLabel"); public DoConstruct(DataStore data, Collection children) { super(data, children); @@ -27,8 +27,8 @@ public DoStmt getDoStmt() { return getChild(DoStmt.class); } - public Execution getBody() { - return getChild(Execution.class); + public ExecBlock getBody() { + return getChild(ExecBlock.class); } public EndDoStmt getEndDoStmt() { @@ -43,6 +43,10 @@ public Optional getName() { return get(NAME); } + public Optional getDoLabel() { + return get(DO_LABEL); + } + public DoKind getKind() { return getControl() .map(DoKind::fromControl) @@ -56,11 +60,43 @@ private String getControlCode() { } @Override - public String getStmtCode() { + public String getCode() { var doStmt = getDoStmt(); var body = getBody(); var endDoStmt = getEndDoStmt(); - return doStmt.getCode() + ln() + indent(body.getCode()) + ln() + endDoStmt.getCode(); + var code = new StringBuilder(); + + code.append(doStmt.getCode()).append(ln()) + .append(indent(body.getCode())); + + var endDoStmtCode = endDoStmt.getCode(); + if (!endDoStmtCode.isEmpty()) { + code.append(ln()).append(endDoStmtCode); + } + + return code.toString(); + } + + public boolean hasContinueEnd() { + var doLabelOpt = getDoLabel(); + if (doLabelOpt.isEmpty()) { + return false; + } + + var doLabel = doLabelOpt.get(); + var body = getBody(); + var lastConstruct = body.getChildTry(body.getNumChildren() - 1); + + if (lastConstruct.isPresent() && lastConstruct.get() instanceof ActionStmtAdapter stmtAdapter) { + var lastStmt = stmtAdapter.getStmt(); + + if (lastStmt instanceof ContinueStmt contStmt) { + var contLabel = contStmt.getLabel().map(LabelDecl::getValue); + return contLabel.map(doLabel::equals).orElse(false); + } + } + + return false; } } diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/loop/DoStmt.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/loop/DoStmt.java index c05054c8..965c3024 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/loop/DoStmt.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/loop/DoStmt.java @@ -1,7 +1,5 @@ package pt.up.fe.specs.fortran.ast.nodes.stmt.loop; -import org.suikasoft.jOptions.Datakey.DataKey; -import org.suikasoft.jOptions.Datakey.KeyFactory; import org.suikasoft.jOptions.Interfaces.DataStore; import pt.up.fe.specs.fortran.ast.FortranKeyword; import pt.up.fe.specs.fortran.ast.nodes.FortranNode; @@ -12,8 +10,6 @@ import java.util.Optional; public class DoStmt extends Stmt { - public static final DataKey> DO_LABEL = KeyFactory.optional("do_label"); - public DoStmt(DataStore data, Collection children) { super(data, children); } @@ -22,14 +18,12 @@ public Optional getLoopControl() { return getChildOf(LoopControl.class); } - public Optional getDoLabel() { - return get(DO_LABEL); - } - @Override public String getStmtCode() { - var doNameOpt = getAncestor(DoConstruct.class).getName(); - var doLabelOpt = getDoLabel(); + var parent = getAncestor(DoConstruct.class); + + var doNameOpt = parent.getName(); + var doLabelOpt = parent.getDoLabel(); var loopControlOpt = getLoopControl(); var code = new StringBuilder(); diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/loop/EndDoStmt.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/loop/EndDoStmt.java index e4af4555..14326a2f 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/loop/EndDoStmt.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/loop/EndDoStmt.java @@ -14,9 +14,18 @@ public EndDoStmt(DataStore data, Collection children) { @Override public String getStmtCode() { - var doNameOpt = getAncestor(DoConstruct.class).getName(); - var doNameSuffix = doNameOpt.map(name -> " " + name).orElse(""); + var parent = getAncestor(DoConstruct.class); + if (parent.hasContinueEnd()) { + return ""; + } - return keyword(FortranKeyword.END) + " " + keyword(FortranKeyword.DO) + doNameSuffix; + var doLabelOpt = parent.getDoLabel(); + var labelPrefix = doLabelOpt.map(label -> label + " ").orElse(""); + + var nameSuffix = !fixedForm() + ? parent.getName().map(name -> " " + name).orElse("") + : ""; + + return labelPrefix + keyword(FortranKeyword.END) + " " + keyword(FortranKeyword.DO) + nameSuffix; } } diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/pointerassign/DoubleBound.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/pointerassign/DoubleBound.java new file mode 100644 index 00000000..0822b5ee --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/pointerassign/DoubleBound.java @@ -0,0 +1,26 @@ +package pt.up.fe.specs.fortran.ast.nodes.stmt.pointerassign; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.expr.Expr; + +import java.util.Collection; + +public class DoubleBound extends FortranNode { + public DoubleBound(DataStore data, Collection children) { + super(data, children); + } + + public Expr getLowerBound() { + return getChild(Expr.class, 0); + } + + public Expr getUpperBound() { + return getChild(Expr.class, 1); + } + + @Override + public String getCode() { + return getLowerBound().getCode() + ":" + getUpperBound().getCode(); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/pointerassign/DoubleBoundPointerAssignStmt.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/pointerassign/DoubleBoundPointerAssignStmt.java new file mode 100644 index 00000000..6a3ca109 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/pointerassign/DoubleBoundPointerAssignStmt.java @@ -0,0 +1,29 @@ +package pt.up.fe.specs.fortran.ast.nodes.stmt.pointerassign; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; +import java.util.List; +import java.util.stream.Collectors; + +public class DoubleBoundPointerAssignStmt extends PointerAssignStmt { + public DoubleBoundPointerAssignStmt(DataStore data, Collection children) { + super(data, children); + } + + public List getBounds() { + return getChildrenOf(DoubleBound.class); + } + + @Override + public String getStmtCode() { + var objectCode = getObject().getCode(); + var boundsCode = getBounds().stream() + .map(DoubleBound::getCode) + .collect(Collectors.joining(", ", "(", ")")); + var targetCode = getTarget().getCode(); + + return objectCode + boundsCode + " => " + targetCode; + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/pointerassign/PointerAssignStmt.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/pointerassign/PointerAssignStmt.java new file mode 100644 index 00000000..8bb10700 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/pointerassign/PointerAssignStmt.java @@ -0,0 +1,23 @@ +package pt.up.fe.specs.fortran.ast.nodes.stmt.pointerassign; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.expr.DataRef; +import pt.up.fe.specs.fortran.ast.nodes.expr.Expr; +import pt.up.fe.specs.fortran.ast.nodes.stmt.ActionStmt; + +import java.util.Collection; + +public abstract class PointerAssignStmt extends ActionStmt { + public PointerAssignStmt(DataStore data, Collection children) { + super(data, children); + } + + public DataRef getObject() { + return getChild(DataRef.class, 0); + } + + public Expr getTarget() { + return getChild(Expr.class, getNumChildren() - 1); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/pointerassign/SingleBoundPointerAssignStmt.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/pointerassign/SingleBoundPointerAssignStmt.java new file mode 100644 index 00000000..adc26c2b --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/pointerassign/SingleBoundPointerAssignStmt.java @@ -0,0 +1,34 @@ +package pt.up.fe.specs.fortran.ast.nodes.stmt.pointerassign; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.expr.Expr; +import pt.up.fe.specs.util.SpecsCollections; + +import java.util.Collection; +import java.util.List; +import java.util.stream.Collectors; + +public class SingleBoundPointerAssignStmt extends PointerAssignStmt { + public SingleBoundPointerAssignStmt(DataStore data, Collection children) { + super(data, children); + } + + public List getBounds() { + return SpecsCollections.cast(getChildren().subList(1, getNumChildren() - 1), Expr.class); + } + + @Override + public String getStmtCode() { + var objectCode = getObject().getCode(); + var targetCode = getTarget().getCode(); + + var bounds = getBounds(); + var boundsCode = bounds.isEmpty() ? "" + : bounds.stream() + .map(bound -> bound.getCode() + ":") + .collect(Collectors.joining(", ", "(", ")")); + + return objectCode + boundsCode + " => " + targetCode; + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/selectcase/CaseBlock.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/selectcase/CaseBlock.java index 6f289075..a1ee99bf 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/selectcase/CaseBlock.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/selectcase/CaseBlock.java @@ -2,7 +2,7 @@ import org.suikasoft.jOptions.Interfaces.DataStore; import pt.up.fe.specs.fortran.ast.nodes.FortranNode; -import pt.up.fe.specs.fortran.ast.nodes.program.StmtBlock; +import pt.up.fe.specs.fortran.ast.nodes.program.ExecBlock; import java.util.Collection; @@ -15,8 +15,8 @@ public CaseStmt getCaseStmt() { return getChild(CaseStmt.class, 0); } - public StmtBlock getStmtBlock() { - return getChild(StmtBlock.class, 1); + public ExecBlock getStmtBlock() { + return getChild(ExecBlock.class, 1); } @Override diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/selectcase/CaseConstruct.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/selectcase/CaseConstruct.java index 868ada9c..2f646230 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/selectcase/CaseConstruct.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/selectcase/CaseConstruct.java @@ -4,13 +4,13 @@ import org.suikasoft.jOptions.Datakey.KeyFactory; import org.suikasoft.jOptions.Interfaces.DataStore; import pt.up.fe.specs.fortran.ast.nodes.FortranNode; -import pt.up.fe.specs.fortran.ast.nodes.stmt.ExecutableStmt; +import pt.up.fe.specs.fortran.ast.nodes.program.construct.ExecConstruct; import java.util.Collection; import java.util.List; import java.util.Optional; -public class CaseConstruct extends ExecutableStmt { +public class CaseConstruct extends ExecConstruct { public static final DataKey> NAME = KeyFactory.optional("name"); public CaseConstruct(DataStore data, Collection children) { @@ -34,7 +34,7 @@ public EndSelectStmt getEndSelectStmt() { } @Override - public String getStmtCode() { + public String getCode() { var selectCaseStmt = getSelectCaseStmt(); var caseBlocks = getCaseBlocks(); var endSelectStmt = getEndSelectStmt(); diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/typedef/ComponentDefStmt.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/typedef/ComponentDefStmt.java new file mode 100644 index 00000000..26469c7d --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/typedef/ComponentDefStmt.java @@ -0,0 +1,13 @@ +package pt.up.fe.specs.fortran.ast.nodes.stmt.typedef; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.stmt.Stmt; + +import java.util.Collection; + +public abstract class ComponentDefStmt extends Stmt { + public ComponentDefStmt(DataStore data, Collection children) { + super(data, children); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/typedef/DataComponentDefStmt.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/typedef/DataComponentDefStmt.java new file mode 100644 index 00000000..dff3d5b0 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/typedef/DataComponentDefStmt.java @@ -0,0 +1,44 @@ +package pt.up.fe.specs.fortran.ast.nodes.stmt.typedef; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.decl.component.ComponentDecl; +import pt.up.fe.specs.fortran.ast.nodes.decl.component.attr.ComponentAttr; +import pt.up.fe.specs.fortran.ast.nodes.type.decltype.DeclType; + +import java.util.Collection; +import java.util.List; +import java.util.stream.Collectors; + +public class DataComponentDefStmt extends ComponentDefStmt { + public DataComponentDefStmt(DataStore data, Collection children) { + super(data, children); + } + + public DeclType getDeclType() { + return getChild(DeclType.class, 0); + } + + public List getAttrs() { + return getChildrenOf(ComponentAttr.class); + } + + public List getDecls() { + return getChildrenOf(ComponentDecl.class); + } + + @Override + public String getStmtCode() { + var declTypeCode = getDeclType().getCode(); + + var attrsCode = getAttrs().stream() + .map(attr -> ", " + attr.getCode()) + .collect(Collectors.joining()); + + var declsCode = getDecls().stream() + .map(ComponentDecl::getCode) + .collect(Collectors.joining(", ")); + + return declTypeCode + attrsCode + " :: " + declsCode; + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/typedef/DerivedTypeStmt.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/typedef/DerivedTypeStmt.java new file mode 100644 index 00000000..490f71a9 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/typedef/DerivedTypeStmt.java @@ -0,0 +1,49 @@ +package pt.up.fe.specs.fortran.ast.nodes.stmt.typedef; + +import org.suikasoft.jOptions.Datakey.DataKey; +import org.suikasoft.jOptions.Datakey.KeyFactory; +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.FortranKeyword; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.decl.NamedParameter; +import pt.up.fe.specs.fortran.ast.nodes.specification.type.TypeAttr; +import pt.up.fe.specs.fortran.ast.nodes.stmt.Stmt; + +import java.security.Key; +import java.util.Collection; +import java.util.List; +import java.util.stream.Collectors; + +public class DerivedTypeStmt extends Stmt { + public static final DataKey TYPE_NAME = KeyFactory.string("type_name"); + + public DerivedTypeStmt(DataStore data, Collection children) { + super(data, children); + } + + public List getTypeAttrs() { + return getChildrenOf(TypeAttr.class); + } + + public String getTypeName() { + return get(TYPE_NAME); + } + + public List getParameters() { + return getChildrenOf(NamedParameter.class); + } + + @Override + public String getStmtCode() { + var typeAttrsCode = getTypeAttrs().stream() + .map(attr -> ", " + attr.getCode()) + .collect(Collectors.joining()); + + var params = getParameters(); + var paramsCode = params.isEmpty() ? "" : params.stream() + .map(NamedParameter::getCode) + .collect(Collectors.joining(", ", "(", ")")); + + return keyword(FortranKeyword.TYPE) + typeAttrsCode + " :: " + getTypeName() + paramsCode; + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/typedef/EndTypeStmt.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/typedef/EndTypeStmt.java new file mode 100644 index 00000000..372eac6e --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/typedef/EndTypeStmt.java @@ -0,0 +1,22 @@ +package pt.up.fe.specs.fortran.ast.nodes.stmt.typedef; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.FortranKeyword; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.specification.DerivedTypeDef; +import pt.up.fe.specs.fortran.ast.nodes.stmt.Stmt; + +import java.util.Collection; + +public class EndTypeStmt extends Stmt { + public EndTypeStmt(DataStore data, Collection children) { + super(data, children); + } + + @Override + public String getStmtCode() { + var typeName = getAncestor(DerivedTypeDef.class).getTypeName(); + + return keyword(FortranKeyword.END) + " " + keyword(FortranKeyword.TYPE) + " " + typeName; + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/typedef/PrivateOrSequenceStmt.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/typedef/PrivateOrSequenceStmt.java new file mode 100644 index 00000000..aec15aa4 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/typedef/PrivateOrSequenceStmt.java @@ -0,0 +1,14 @@ +package pt.up.fe.specs.fortran.ast.nodes.stmt.typedef; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.stmt.Stmt; + +import java.util.Collection; + +// TODO(Process-ing): Implement variants +public abstract class PrivateOrSequenceStmt extends Stmt { + public PrivateOrSequenceStmt(DataStore data, Collection children) { + super(data, children); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/typedef/TypeBoundProcedurePart.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/typedef/TypeBoundProcedurePart.java new file mode 100644 index 00000000..24a6b0c3 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/typedef/TypeBoundProcedurePart.java @@ -0,0 +1,13 @@ +package pt.up.fe.specs.fortran.ast.nodes.stmt.typedef; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; + +// TODO(Process-ing): Implement this node +public class TypeBoundProcedurePart extends FortranNode { + public TypeBoundProcedurePart(DataStore data, Collection children) { + super(data, children); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/typedef/TypeParamDefStmt.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/typedef/TypeParamDefStmt.java new file mode 100644 index 00000000..cd599dd9 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/typedef/TypeParamDefStmt.java @@ -0,0 +1,14 @@ +package pt.up.fe.specs.fortran.ast.nodes.stmt.typedef; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.stmt.Stmt; + +import java.util.Collection; + +// TODO(Process-ing): Implement this node +public class TypeParamDefStmt extends Stmt { + public TypeParamDefStmt(DataStore data, Collection children) { + super(data, children); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/usestmt/NamesRename.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/usestmt/NamesRename.java new file mode 100644 index 00000000..7e3b8953 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/usestmt/NamesRename.java @@ -0,0 +1,33 @@ +package pt.up.fe.specs.fortran.ast.nodes.stmt.usestmt; + +import org.suikasoft.jOptions.Datakey.DataKey; +import org.suikasoft.jOptions.Datakey.KeyFactory; +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; + +public class NamesRename extends Rename { + public static final DataKey LOCAL_NAME = KeyFactory.string("localName"); + public static final DataKey GLOBAL_NAME = KeyFactory.string("globalName"); + + public NamesRename(DataStore data, Collection children) { + super(data, children); + } + + public String getLocalName() { + return get(LOCAL_NAME); + } + + public String getGlobalName() { + return get(GLOBAL_NAME); + } + + @Override + public String getCode() { + var localName = getLocalName(); + var globalName = getGlobalName(); + + return localName + " => " + globalName; + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/usestmt/Only.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/usestmt/Only.java new file mode 100644 index 00000000..49ff4462 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/usestmt/Only.java @@ -0,0 +1,12 @@ +package pt.up.fe.specs.fortran.ast.nodes.stmt.usestmt; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; + +public abstract class Only extends FortranNode { + public Only(DataStore data, Collection children) { + super(data, children); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/usestmt/OnlyGenericSpec.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/usestmt/OnlyGenericSpec.java new file mode 100644 index 00000000..7661ce1f --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/usestmt/OnlyGenericSpec.java @@ -0,0 +1,13 @@ +package pt.up.fe.specs.fortran.ast.nodes.stmt.usestmt; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; + +// TODO(Process-ing): Complete and use this subclass +public class OnlyGenericSpec extends Only { + public OnlyGenericSpec(DataStore data, Collection children) { + super(data, children); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/usestmt/OperatorsRename.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/usestmt/OperatorsRename.java new file mode 100644 index 00000000..98ad252f --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/usestmt/OperatorsRename.java @@ -0,0 +1,13 @@ +package pt.up.fe.specs.fortran.ast.nodes.stmt.usestmt; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; + +// TODO(Process-ing): Complete and use this subclass +public class OperatorsRename extends Rename { + public OperatorsRename(DataStore data, Collection children) { + super(data, children); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/usestmt/Rename.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/usestmt/Rename.java new file mode 100644 index 00000000..2211f0cc --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/usestmt/Rename.java @@ -0,0 +1,12 @@ +package pt.up.fe.specs.fortran.ast.nodes.stmt.usestmt; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; + +public abstract class Rename extends Only { + public Rename(DataStore data, Collection children) { + super(data, children); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/UseStmt.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/usestmt/UseName.java similarity index 51% rename from FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/UseStmt.java rename to FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/usestmt/UseName.java index 79e0e991..9cbf1834 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/UseStmt.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/usestmt/UseName.java @@ -1,18 +1,16 @@ -package pt.up.fe.specs.fortran.ast.nodes.stmt; +package pt.up.fe.specs.fortran.ast.nodes.stmt.usestmt; import org.suikasoft.jOptions.Datakey.DataKey; import org.suikasoft.jOptions.Datakey.KeyFactory; import org.suikasoft.jOptions.Interfaces.DataStore; -import pt.up.fe.specs.fortran.ast.FortranKeyword; import pt.up.fe.specs.fortran.ast.nodes.FortranNode; import java.util.Collection; -public class UseStmt extends Stmt { +public class UseName extends Only { + public static final DataKey NAME = KeyFactory.string("name"); - public static DataKey NAME = KeyFactory.string("name"); - - public UseStmt(DataStore data, Collection children) { + public UseName(DataStore data, Collection children) { super(data, children); } @@ -21,7 +19,7 @@ public String getName() { } @Override - public String getStmtCode() { - return FortranKeyword.USE + " " + getName(); + public String getCode() { + return getName(); } } diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/usestmt/UseOnlyStmt.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/usestmt/UseOnlyStmt.java new file mode 100644 index 00000000..e6fe0807 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/usestmt/UseOnlyStmt.java @@ -0,0 +1,30 @@ +package pt.up.fe.specs.fortran.ast.nodes.stmt.usestmt; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.FortranKeyword; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; +import java.util.List; +import java.util.stream.Collectors; + +public class UseOnlyStmt extends UseStmt { + public UseOnlyStmt(DataStore data, Collection children) { + super(data, children); + } + + public List getOnlySpecs() { + return getChildrenOf(Only.class); + } + + @Override + public String getStmtCode() { + var usePrefix = getUseStmtPrefix(); + + var onlyListSuffix = getOnlySpecs().stream() + .map(Only::getCode) + .collect(Collectors.joining(", ")); + + return usePrefix + ", " + keyword(FortranKeyword.ONLY) + " : " + onlyListSuffix; + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/usestmt/UseRenameStmt.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/usestmt/UseRenameStmt.java new file mode 100644 index 00000000..0dc934b2 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/usestmt/UseRenameStmt.java @@ -0,0 +1,29 @@ +package pt.up.fe.specs.fortran.ast.nodes.stmt.usestmt; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; +import java.util.List; +import java.util.stream.Collectors; + +public class UseRenameStmt extends UseStmt { + public UseRenameStmt(DataStore data, Collection children) { + super(data, children); + } + + public List getRenames() { + return getChildrenOf(Rename.class); + } + + @Override + public String getStmtCode() { + var usePrefix = getUseStmtPrefix(); + + var renamesSuffix = getRenames().stream() + .map(rename -> ", " + rename.getCode()) + .collect(Collectors.joining()); + + return usePrefix + renamesSuffix; + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/usestmt/UseStmt.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/usestmt/UseStmt.java new file mode 100644 index 00000000..1b5787f7 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/stmt/usestmt/UseStmt.java @@ -0,0 +1,49 @@ +package pt.up.fe.specs.fortran.ast.nodes.stmt.usestmt; + +import org.suikasoft.jOptions.Datakey.DataKey; +import org.suikasoft.jOptions.Datakey.KeyFactory; +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.FortranKeyword; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.stmt.Stmt; + +import java.util.Collection; +import java.util.Optional; + +public abstract class UseStmt extends Stmt { + public static final DataKey> INTRINSIC = KeyFactory.optional("intrinsic"); + public static final DataKey NAME = KeyFactory.string("name"); + + public UseStmt(DataStore data, Collection children) { + super(data, children); + } + + public Optional isIntrinsic() { + return get(INTRINSIC); + } + + public String getName() { + return get(NAME); + } + + protected String getUseStmtPrefix() { + var intrinsic = isIntrinsic(); + var name = getName(); + + var code = new StringBuilder(); + + code.append(keyword(FortranKeyword.USE)); + + intrinsic.ifPresentOrElse(intrinsicVal -> { + var intrinsicCode = keyword(intrinsicVal ? FortranKeyword.INTRINSIC : FortranKeyword.NON_INTRINSIC); + + code.append(", ").append(intrinsicCode).append(" :: "); + }, () -> { + code.append(!fixedForm() ? " :: " : " "); + }); + + code.append(name); + + return code.toString(); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/CharacterType.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/CharacterType.java index 10cffbfb..a7523b55 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/CharacterType.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/CharacterType.java @@ -3,6 +3,7 @@ import org.suikasoft.jOptions.Interfaces.DataStore; import pt.up.fe.specs.fortran.ast.FortranKeyword; import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.type.lenselector.LenSelector; import java.util.Collection; import java.util.Optional; @@ -12,12 +13,14 @@ public CharacterType(DataStore data, Collection children) super(data, children); } - public Optional getSelector() { - return getChildTry(CharSelector.class); + public Optional getSelector() { + return getChildTry(LenSelector.class); } @Override public String getCode() { - return keyword(FortranKeyword.CHARACTER) + getSelector().map(CharSelector::getCode).orElse(""); + var selectorCode = getSelector().map(LenSelector::getCode).orElse(""); + + return keyword(FortranKeyword.CHARACTER) + selectorCode; } } diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/ComplexType.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/ComplexType.java new file mode 100644 index 00000000..332d07be --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/ComplexType.java @@ -0,0 +1,24 @@ +package pt.up.fe.specs.fortran.ast.nodes.type; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.FortranKeyword; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.decl.KindSelector; + +import java.util.Collection; +import java.util.Optional; + +public class ComplexType extends IntrinsicType { + public ComplexType(DataStore data, Collection children) { + super(data, children); + } + + public Optional getKindSelector() { + return getChildOf(KindSelector.class); + } + + @Override + public String getCode() { + return keyword(FortranKeyword.COMPLEX) + getKindSelector().map(FortranNode::getCode).orElse(""); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/DerivedType.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/DerivedType.java new file mode 100644 index 00000000..c1e47369 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/DerivedType.java @@ -0,0 +1,40 @@ +package pt.up.fe.specs.fortran.ast.nodes.type; + +import org.suikasoft.jOptions.Datakey.DataKey; +import org.suikasoft.jOptions.Datakey.KeyFactory; +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.type.typeparam.TypeParam; + +import java.util.Collection; +import java.util.List; +import java.util.stream.Collectors; + +public class DerivedType extends FortranType { + public static final DataKey NAME = KeyFactory.string("name"); + + public DerivedType(DataStore data, Collection children) { + super(data, children); + } + + public String getName() { + return get(NAME); + } + + public List getTypeParams() { + return getChildren(TypeParam.class); + } + + @Override + public String getCode() { + var typeParams = getTypeParams(); + + var typeParamsCode = typeParams.isEmpty() + ? "" + : typeParams.stream() + .map(TypeParam::getCode) + .collect(Collectors.joining(", ", " (", ")")); + + return getName() + typeParamsCode; + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/FortranType.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/FortranType.java index d1650c2b..452fe176 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/FortranType.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/FortranType.java @@ -6,7 +6,6 @@ import java.util.Collection; public abstract class FortranType extends FortranNode { - public FortranType(DataStore data, Collection children) { super(data, children); } diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/attributes/AccessAttrSpec.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/attributes/AccessAttrSpec.java new file mode 100644 index 00000000..d73e5b14 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/attributes/AccessAttrSpec.java @@ -0,0 +1,26 @@ +package pt.up.fe.specs.fortran.ast.nodes.type.attributes; + +import org.suikasoft.jOptions.Datakey.DataKey; +import org.suikasoft.jOptions.Datakey.KeyFactory; +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.specification.enums.AccessKind; + +import java.util.Collection; + +public class AccessAttrSpec extends AttrSpec { + public static final DataKey ACCESS_KIND = KeyFactory.enumeration("access_kind", AccessKind.class); + + public AccessAttrSpec(DataStore data, Collection children) { + super(data, children); + } + + public AccessKind getAccessKind() { + return get(ACCESS_KIND); + } + + @Override + public String getCode() { + return encase(getAccessKind().name()); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/attributes/AttributeSpecifier.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/attributes/AttrSpec.java similarity index 60% rename from FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/attributes/AttributeSpecifier.java rename to FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/attributes/AttrSpec.java index a1fb09da..836eec13 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/attributes/AttributeSpecifier.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/attributes/AttrSpec.java @@ -5,8 +5,8 @@ import java.util.Collection; -public abstract class AttributeSpecifier extends FortranNode { - public AttributeSpecifier(DataStore data, Collection children) { +public abstract class AttrSpec extends FortranNode { + public AttrSpec(DataStore data, Collection children) { super(data, children); } } diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/attributes/CodimAttrSpec.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/attributes/CodimAttrSpec.java new file mode 100644 index 00000000..ccea334d --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/attributes/CodimAttrSpec.java @@ -0,0 +1,23 @@ +package pt.up.fe.specs.fortran.ast.nodes.type.attributes; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.FortranKeyword; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.specification.coshape.CoarraySpec; + +import java.util.Collection; + +public class CodimAttrSpec extends AttrSpec { + public CodimAttrSpec(DataStore data, Collection children) { + super(data, children); + } + + public CoarraySpec getCoarraySpec() { + return getChild(CoarraySpec.class, 0); + } + + @Override + public String getCode() { + return keyword(FortranKeyword.CODIMENSION) + getCoarraySpec().getCode(); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/attributes/DimensionSpec.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/attributes/DimAttrSpec.java similarity index 52% rename from FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/attributes/DimensionSpec.java rename to FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/attributes/DimAttrSpec.java index c92f4645..e317890a 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/attributes/DimensionSpec.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/attributes/DimAttrSpec.java @@ -3,22 +3,22 @@ import org.suikasoft.jOptions.Interfaces.DataStore; import pt.up.fe.specs.fortran.ast.FortranKeyword; import pt.up.fe.specs.fortran.ast.nodes.FortranNode; -import pt.up.fe.specs.fortran.ast.nodes.specification.ArraySpecification; +import pt.up.fe.specs.fortran.ast.nodes.specification.shape.ArraySpec; import java.util.Collection; -public class DimensionSpec extends AttributeSpecifier { - public DimensionSpec(DataStore data, Collection children) { +public class DimAttrSpec extends AttrSpec { + public DimAttrSpec(DataStore data, Collection children) { super(data, children); } + private ArraySpec getArraySpec() { + return getChild(ArraySpec.class, 0); + } + @Override public String getCode() { - var arraySpec = getArraySpecification(); + var arraySpec = getArraySpec(); return keyword(FortranKeyword.DIMENSION) + arraySpec.getCode(); } - - private ArraySpecification getArraySpecification() { - return getChild(ArraySpecification.class, 0); - } } diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/attributes/IntentSpec.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/attributes/IntentAttrSpec.java similarity index 65% rename from FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/attributes/IntentSpec.java rename to FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/attributes/IntentAttrSpec.java index 9255db1f..9a74d862 100644 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/attributes/IntentSpec.java +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/attributes/IntentAttrSpec.java @@ -3,16 +3,19 @@ import org.suikasoft.jOptions.Datakey.DataKey; import org.suikasoft.jOptions.Datakey.KeyFactory; import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.FortranContext; import pt.up.fe.specs.fortran.ast.nodes.FortranNode; import pt.up.fe.specs.fortran.ast.nodes.type.attributes.enums.IntentKind; import java.util.Collection; -public class IntentSpec extends AttributeSpecifier { +import static pt.up.fe.specs.fortran.ast.FortranKeyword.INTENT; + +public class IntentAttrSpec extends AttrSpec { public final static DataKey KIND = KeyFactory.enumeration("kind", IntentKind.class); - public IntentSpec(DataStore data, Collection children) { + public IntentAttrSpec(DataStore data, Collection children) { super(data, children); } @@ -22,6 +25,6 @@ public IntentKind getKind() { @Override public String getCode() { - return "intent(" + getKind().getString().toLowerCase() + ")"; + return keyword(INTENT) + "(" + encase(getKind().getString()) + ")"; } } diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/attributes/KeywordAttributeSpecifier.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/attributes/KeywordAttributeSpecifier.java deleted file mode 100644 index 977e2288..00000000 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/attributes/KeywordAttributeSpecifier.java +++ /dev/null @@ -1,29 +0,0 @@ -package pt.up.fe.specs.fortran.ast.nodes.type.attributes; - -import org.suikasoft.jOptions.Datakey.DataKey; -import org.suikasoft.jOptions.Datakey.KeyFactory; -import org.suikasoft.jOptions.Interfaces.DataStore; -import pt.up.fe.specs.fortran.ast.nodes.FortranNode; - -import java.util.Collection; - -public abstract class KeywordAttributeSpecifier extends AttributeSpecifier { - // DATAKEYS BEGIN - - /** - * The keyword of the attribute specifier, e.g., "allocatable", "pointer", etc. - */ - public final static DataKey KEYWORD = KeyFactory.string("keyword"); - - - // DATAKEYS END - - public KeywordAttributeSpecifier(DataStore data, Collection children) { - super(data, children); - } - - @Override - public String getCode() { - return get(KEYWORD).toUpperCase(); - } -} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/attributes/LangBindAttrSpec.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/attributes/LangBindAttrSpec.java new file mode 100644 index 00000000..abfd2710 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/attributes/LangBindAttrSpec.java @@ -0,0 +1,22 @@ +package pt.up.fe.specs.fortran.ast.nodes.type.attributes; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.specification.LanguageBindingSpec; + +import java.util.Collection; + +public class LangBindAttrSpec extends AttrSpec { + public LangBindAttrSpec(DataStore data, Collection children) { + super(data, children); + } + + public LanguageBindingSpec getLanguageBindingSpec() { + return getChild(LanguageBindingSpec.class, 0); + } + + @Override + public String getCode() { + return getLanguageBindingSpec().getCode(); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/attributes/OtherAttrSpec.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/attributes/OtherAttrSpec.java new file mode 100644 index 00000000..232ea99d --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/attributes/OtherAttrSpec.java @@ -0,0 +1,26 @@ +package pt.up.fe.specs.fortran.ast.nodes.type.attributes; + +import org.suikasoft.jOptions.Datakey.DataKey; +import org.suikasoft.jOptions.Datakey.KeyFactory; +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.type.attributes.enums.AttrSpecKind; + +import java.util.Collection; + +public class OtherAttrSpec extends AttrSpec { + public static final DataKey KIND = KeyFactory.enumeration("kind", AttrSpecKind.class); + + public OtherAttrSpec(DataStore data, Collection children) { + super(data, children); + } + + public AttrSpecKind getKind() { + return get(KIND); + } + + @Override + public String getCode() { + return encase(getKind().name()); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/attributes/ParameterKeyword.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/attributes/ParameterKeyword.java deleted file mode 100644 index 214065f1..00000000 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/attributes/ParameterKeyword.java +++ /dev/null @@ -1,12 +0,0 @@ -package pt.up.fe.specs.fortran.ast.nodes.type.attributes; - -import org.suikasoft.jOptions.Interfaces.DataStore; -import pt.up.fe.specs.fortran.ast.nodes.FortranNode; - -import java.util.Collection; - -public class ParameterKeyword extends KeywordAttributeSpecifier { - public ParameterKeyword(DataStore data, Collection children) { - super(data, children); - } -} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/attributes/enums/AttrSpecKind.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/attributes/enums/AttrSpecKind.java new file mode 100644 index 00000000..8e6041d4 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/attributes/enums/AttrSpecKind.java @@ -0,0 +1,25 @@ +package pt.up.fe.specs.fortran.ast.nodes.type.attributes.enums; + +public enum AttrSpecKind { + ALLOCATABLE, + ASYNCHRONOUS, + CONTIGUOUS, + EXTERNAL, + INTRINSIC, + OPTIONAL, + PARAMETER, + POINTER, + PROTECTED, + SAVE, + TARGET, + VALUE, + VOLATILE, + + // CUDA + CONSTANT, + DEVICE, + MANAGED, + PINNED, + SHARED, + TEXTURE; +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/decltype/DeclType.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/decltype/DeclType.java new file mode 100644 index 00000000..0971628e --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/decltype/DeclType.java @@ -0,0 +1,12 @@ +package pt.up.fe.specs.fortran.ast.nodes.type.decltype; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; + +public abstract class DeclType extends FortranNode { + public DeclType(DataStore data, Collection children) { + super(data, children); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/decltype/DerivedDeclType.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/decltype/DerivedDeclType.java new file mode 100644 index 00000000..100e9631 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/decltype/DerivedDeclType.java @@ -0,0 +1,34 @@ +package pt.up.fe.specs.fortran.ast.nodes.type.decltype; + +import org.suikasoft.jOptions.Datakey.DataKey; +import org.suikasoft.jOptions.Datakey.KeyFactory; +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.type.DerivedType; +import pt.up.fe.specs.fortran.ast.nodes.type.enums.DeclTypeKind; + +import java.util.Collection; + +public class DerivedDeclType extends DeclType { + public static final DataKey KIND = KeyFactory.enumeration("kind", DeclTypeKind.class); + + public DerivedDeclType(DataStore data, Collection children) { + super(data, children); + } + + public DeclTypeKind getKind() { + return get(KIND); + } + + public DerivedType getDerivedType() { + return getChild(DerivedType.class, 0); + } + + @Override + public String getCode() { + var kindCode = encase(getKind().name()); + var derivedTypeCode = getDerivedType().getCode(); + + return kindCode + "(" + derivedTypeCode + ")"; + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/decltype/IntrinsicDeclType.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/decltype/IntrinsicDeclType.java new file mode 100644 index 00000000..43f9d6f6 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/decltype/IntrinsicDeclType.java @@ -0,0 +1,22 @@ +package pt.up.fe.specs.fortran.ast.nodes.type.decltype; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.type.IntrinsicType; + +import java.util.Collection; + +public class IntrinsicDeclType extends DeclType { + public IntrinsicDeclType(DataStore data, Collection children) { + super(data, children); + } + + public IntrinsicType getIntrinsicType() { + return getChild(IntrinsicType.class, 0); + } + + @Override + public String getCode() { + return getIntrinsicType().getCode(); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/decltype/StarDeclType.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/decltype/StarDeclType.java new file mode 100644 index 00000000..53ea629c --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/decltype/StarDeclType.java @@ -0,0 +1,28 @@ +package pt.up.fe.specs.fortran.ast.nodes.type.decltype; + +import org.suikasoft.jOptions.Datakey.DataKey; +import org.suikasoft.jOptions.Datakey.KeyFactory; +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.type.enums.DeclTypeKind; + +import java.util.Collection; + +public class StarDeclType extends DeclType { + public static final DataKey KIND = KeyFactory.enumeration("kind", DeclTypeKind.class); + + public StarDeclType(DataStore data, Collection children) { + super(data, children); + } + + public DeclTypeKind getKind() { + return get(KIND); + } + + @Override + public String getCode() { + var kindCode = encase(getKind().name()); + + return kindCode + "(*)"; + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/enums/DeclTypeKind.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/enums/DeclTypeKind.java new file mode 100644 index 00000000..23e0bfe3 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/enums/DeclTypeKind.java @@ -0,0 +1,6 @@ +package pt.up.fe.specs.fortran.ast.nodes.type.enums; + +public enum DeclTypeKind { + TYPE, + CLASS; +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/lenselector/CharLenSelector.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/lenselector/CharLenSelector.java new file mode 100644 index 00000000..77ab3a0b --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/lenselector/CharLenSelector.java @@ -0,0 +1,12 @@ +package pt.up.fe.specs.fortran.ast.nodes.type.lenselector; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; + +public abstract class CharLenSelector extends LenSelector { + public CharLenSelector(DataStore data, Collection children) { + super(data, children); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/lenselector/ConstLenSelector.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/lenselector/ConstLenSelector.java new file mode 100644 index 00000000..a4ff39c9 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/lenselector/ConstLenSelector.java @@ -0,0 +1,25 @@ +package pt.up.fe.specs.fortran.ast.nodes.type.lenselector; + +import org.suikasoft.jOptions.Datakey.DataKey; +import org.suikasoft.jOptions.Datakey.KeyFactory; +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; + +public class ConstLenSelector extends CharLenSelector { + public static final DataKey LENGTH = KeyFactory.longInt("length"); + + public ConstLenSelector(DataStore data, Collection children) { + super(data, children); + } + + public long getLength() { + return get(LENGTH); + } + + @Override + public String getCode() { + return "*" + getLength(); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/lenselector/KindParamLenSelector.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/lenselector/KindParamLenSelector.java new file mode 100644 index 00000000..8519178c --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/lenselector/KindParamLenSelector.java @@ -0,0 +1,34 @@ +package pt.up.fe.specs.fortran.ast.nodes.type.lenselector; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.FortranKeyword; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.type.typeparam.TypeParamValue; +import pt.up.fe.specs.fortran.ast.nodes.expr.Expr; + +import java.util.Collection; +import java.util.Optional; + +public class KindParamLenSelector extends LenSelector { + public KindParamLenSelector(DataStore data, Collection children) { + super(data, children); + } + + public Expr getKind() { + return getChild(Expr.class, 0); + } + + public Optional getLength() { + return getChildTry(TypeParamValue.class, 1); + } + + @Override + public String getCode() { + var kindCode = keyword(FortranKeyword.KIND) + "=" + getKind().getCode(); + var lenCode = getLength() + .map(len -> ", LEN=" + len.getCode()) + .orElseGet(() -> ""); + + return "(" + kindCode + lenCode + ")"; + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/lenselector/LenSelector.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/lenselector/LenSelector.java new file mode 100644 index 00000000..51262b7e --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/lenselector/LenSelector.java @@ -0,0 +1,12 @@ +package pt.up.fe.specs.fortran.ast.nodes.type.lenselector; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; + +public abstract class LenSelector extends FortranNode { + public LenSelector(DataStore data, Collection children) { + super(data, children); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/lenselector/ParamCharLenSelector.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/lenselector/ParamCharLenSelector.java new file mode 100644 index 00000000..3572ce51 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/lenselector/ParamCharLenSelector.java @@ -0,0 +1,24 @@ +package pt.up.fe.specs.fortran.ast.nodes.type.lenselector; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.type.typeparam.TypeParamValue; + +import java.util.Collection; + +public class ParamCharLenSelector extends CharLenSelector { + public ParamCharLenSelector(DataStore data, Collection children) { + super(data, children); + } + + public TypeParamValue getLength() { + return getChild(TypeParamValue.class, 0); + } + + @Override + public String getCode() { + var lengthCode = getLength().getCode(); + + return "*(" + lengthCode + ")"; + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/lenselector/ParamLenSelector.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/lenselector/ParamLenSelector.java new file mode 100644 index 00000000..2f5aabba --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/lenselector/ParamLenSelector.java @@ -0,0 +1,25 @@ +package pt.up.fe.specs.fortran.ast.nodes.type.lenselector; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.FortranKeyword; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.type.typeparam.TypeParamValue; + +import java.util.Collection; + +public class ParamLenSelector extends LenSelector { + public ParamLenSelector(DataStore data, Collection children) { + super(data, children); + } + + public TypeParamValue getLength() { + return getChild(TypeParamValue.class, 0); + } + + @Override + public String getCode() { + var lenCode = keyword(FortranKeyword.LEN) + "=" + getLength().getCode(); + + return "(" + lenCode + ")"; + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/shapes/AllocateShapeSpecification.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/shapes/AllocateShapeSpecification.java deleted file mode 100644 index 87178398..00000000 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/shapes/AllocateShapeSpecification.java +++ /dev/null @@ -1,12 +0,0 @@ -package pt.up.fe.specs.fortran.ast.nodes.type.shapes; - -import org.suikasoft.jOptions.Interfaces.DataStore; -import pt.up.fe.specs.fortran.ast.nodes.FortranNode; - -import java.util.Collection; - -public class AllocateShapeSpecification extends BoundedShapeSpecification { - public AllocateShapeSpecification(DataStore data, Collection children) { - super(data, children); - } -} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/shapes/BoundedShapeSpecification.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/shapes/BoundedShapeSpecification.java deleted file mode 100644 index f49d6f6e..00000000 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/shapes/BoundedShapeSpecification.java +++ /dev/null @@ -1,25 +0,0 @@ -package pt.up.fe.specs.fortran.ast.nodes.type.shapes; - -import org.suikasoft.jOptions.Interfaces.DataStore; -import pt.up.fe.specs.fortran.ast.nodes.FortranNode; -import pt.up.fe.specs.fortran.ast.nodes.expr.Expr; - -import java.util.Collection; -import java.util.List; -import java.util.stream.Collectors; - -public abstract class BoundedShapeSpecification extends ShapeSpecification { - public BoundedShapeSpecification(DataStore data, Collection children) { - super(data, children); - } - - @Override - public String getCode() { - var bounds = getBounds(); - return bounds.stream().map(Expr::getCode).collect(Collectors.joining(":")); - } - - private List getBounds() { - return getChildren(Expr.class); - } -} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/shapes/ExplicitShapeSpecification.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/shapes/ExplicitShapeSpecification.java deleted file mode 100644 index 5b6fc3d8..00000000 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/shapes/ExplicitShapeSpecification.java +++ /dev/null @@ -1,16 +0,0 @@ -package pt.up.fe.specs.fortran.ast.nodes.type.shapes; - -import org.suikasoft.jOptions.Interfaces.DataStore; -import pt.up.fe.specs.fortran.ast.nodes.FortranNode; -import pt.up.fe.specs.fortran.ast.nodes.expr.Expr; -import pt.up.fe.specs.fortran.ast.nodes.expr.IntLiteral; - -import java.util.Collection; -import java.util.List; -import java.util.stream.Collectors; - -public class ExplicitShapeSpecification extends BoundedShapeSpecification { - public ExplicitShapeSpecification(DataStore data, Collection children) { - super(data, children); - } -} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/typeparam/DeferredTypeParamValue.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/typeparam/DeferredTypeParamValue.java new file mode 100644 index 00000000..3c974cb2 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/typeparam/DeferredTypeParamValue.java @@ -0,0 +1,17 @@ +package pt.up.fe.specs.fortran.ast.nodes.type.typeparam; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; + +public class DeferredTypeParamValue extends TypeParamValue { + public DeferredTypeParamValue(DataStore data, Collection children) { + super(data, children); + } + + @Override + public String getCode() { + return ":"; + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/typeparam/ExprTypeParamValue.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/typeparam/ExprTypeParamValue.java new file mode 100644 index 00000000..3bc72ff9 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/typeparam/ExprTypeParamValue.java @@ -0,0 +1,22 @@ +package pt.up.fe.specs.fortran.ast.nodes.type.typeparam; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.expr.Expr; + +import java.util.Collection; + +public class ExprTypeParamValue extends TypeParamValue { + public ExprTypeParamValue(DataStore data, Collection children) { + super(data, children); + } + + public Expr getExpr() { + return getChild(Expr.class, 0); + } + + @Override + public String getCode() { + return getExpr().getCode(); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/typeparam/StarTypeParamValue.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/typeparam/StarTypeParamValue.java new file mode 100644 index 00000000..f2a226e7 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/typeparam/StarTypeParamValue.java @@ -0,0 +1,17 @@ +package pt.up.fe.specs.fortran.ast.nodes.type.typeparam; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; + +public class StarTypeParamValue extends TypeParamValue { + public StarTypeParamValue(DataStore data, Collection children) { + super(data, children); + } + + @Override + public String getCode() { + return "*"; + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/typeparam/TypeParam.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/typeparam/TypeParam.java new file mode 100644 index 00000000..b07b5747 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/typeparam/TypeParam.java @@ -0,0 +1,32 @@ +package pt.up.fe.specs.fortran.ast.nodes.type.typeparam; + +import org.suikasoft.jOptions.Datakey.DataKey; +import org.suikasoft.jOptions.Datakey.KeyFactory; +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; +import java.util.List; +import java.util.Optional; + +public class TypeParam extends FortranNode { + public static final DataKey> KEYWORD = KeyFactory.optional("keyword"); + + public TypeParam(DataStore data, Collection children) { + super(data, children); + } + + public Optional getKeyword() { + return get(KEYWORD); + } + + public TypeParamValue getValue() { + return getChild(TypeParamValue.class, 0); + } + + @Override + public String getCode() { + var keyword = getKeyword().map(k -> k + "=").orElse(""); + return keyword + getValue().getCode(); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/typeparam/TypeParamValue.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/typeparam/TypeParamValue.java new file mode 100644 index 00000000..893ccf29 --- /dev/null +++ b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/type/typeparam/TypeParamValue.java @@ -0,0 +1,12 @@ +package pt.up.fe.specs.fortran.ast.nodes.type.typeparam; + +import org.suikasoft.jOptions.Interfaces.DataStore; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Collection; + +public abstract class TypeParamValue extends FortranNode { + public TypeParamValue(DataStore data, Collection children) { + super(data, children); + } +} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/utils/Format.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/utils/Format.java deleted file mode 100644 index 6168fe0b..00000000 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/utils/Format.java +++ /dev/null @@ -1,25 +0,0 @@ -package pt.up.fe.specs.fortran.ast.nodes.utils; - -import org.suikasoft.jOptions.Interfaces.DataStore; -import pt.up.fe.specs.fortran.ast.nodes.FortranNode; - -import java.util.Collection; - -/** - * R1215 format - */ -public class Format extends FortranNode { - - public Format(DataStore data, Collection children) { - super(data, children); - } - - public FortranNode getFormatType() { - return getChild(0); - } - - @Override - public String getCode() { - return getFormatType().getCode(); - } -} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/utils/IoControlSpec.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/utils/IoControlSpec.java deleted file mode 100644 index e285272b..00000000 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/utils/IoControlSpec.java +++ /dev/null @@ -1,32 +0,0 @@ -package pt.up.fe.specs.fortran.ast.nodes.utils; - -import org.suikasoft.jOptions.Datakey.DataKey; -import org.suikasoft.jOptions.Datakey.KeyFactory; -import org.suikasoft.jOptions.Interfaces.DataStore; -import pt.up.fe.specs.fortran.ast.nodes.FortranNode; -import pt.up.fe.specs.fortran.ast.nodes.expr.Expr; -import pt.up.fe.specs.fortran.ast.nodes.utils.enums.IoControlSpecKind; - -import java.util.Collection; - -public class IoControlSpec extends FortranNode { - - public static DataKey KIND = KeyFactory.enumeration("kind", IoControlSpecKind.class); - - public IoControlSpec(DataStore data, Collection children) { - super(data, children); - } - - public IoControlSpecKind getKind() { - return get(KIND); - } - - public Expr getValue() { - return getChild(Expr.class); - } - - @Override - public String getCode() { - return getKind().getString() + '=' + getValue().getCode(); - } -} diff --git a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/utils/enums/IoControlSpecKind.java b/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/utils/enums/IoControlSpecKind.java deleted file mode 100644 index 47c94a75..00000000 --- a/FortranAst/src/pt/up/fe/specs/fortran/ast/nodes/utils/enums/IoControlSpecKind.java +++ /dev/null @@ -1,23 +0,0 @@ -package pt.up.fe.specs.fortran.ast.nodes.utils.enums; - -import pt.up.fe.specs.util.providers.StringProvider; - -public enum IoControlSpecKind implements StringProvider { - ADVANCE; - - public String getKindCode() { - switch (this) { - case ADVANCE -> { - return "advance"; - } - default -> { - return ""; - } - } - } - - @Override - public String getString() { - return getKindCode(); - } -} diff --git a/FortranAst/test/pt/up/fe/specs/fortran/ast/FortranAstTest.java b/FortranAst/test/pt/up/fe/specs/fortran/ast/FortranAstTest.java index 4441629b..a34be08c 100644 --- a/FortranAst/test/pt/up/fe/specs/fortran/ast/FortranAstTest.java +++ b/FortranAst/test/pt/up/fe/specs/fortran/ast/FortranAstTest.java @@ -58,7 +58,7 @@ void testMainProgram() { @Test void testHelloWorld() { // Build AST - var print = factory.printStmt(factory.format(factory.star()), factory.stringLiteral("Hello, World!")); + var print = factory.printStmt(factory.starFormat(), factory.stringLiteral("Hello, World!")); var program = factory.fortranFile(List.of(factory.mainProgram("hello", List.of(print)))); test("hello.f90", program); } diff --git a/FortranParser/resources-test/fortran/parser/arrays/array_implied_do.json b/FortranParser/resources-test/fortran/parser/arrays/array_implied_do.json index 8ffdf375..0bdfb36f 100644 --- a/FortranParser/resources-test/fortran/parser/arrays/array_implied_do.json +++ b/FortranParser/resources-test/fortran/parser/arrays/array_implied_do.json @@ -1,1774 +1,1775 @@ { + "fileExtension": "f90", "nodes": [ { - "id": "0x555653744f00-Program", + "id": "0x5586ec7b9f00-Program", "ProgramUnit": [ - "0x555653780e90-ProgramUnit" + "0x5586ec7f5dc0-ProgramUnit" ] }, { - "id": "0x555653780e90-ProgramUnit", + "id": "0x5586ec7f5dc0-ProgramUnit", "variantKey": "MainProgram", - "MainProgram": "0x555653779800-MainProgram" + "MainProgram": "0x5586ec7ee850-MainProgram" }, { - "id": "0x555653779800-MainProgram", - "Statement": "0x555653779948-Statement", - "SpecificationPart": "0x5556537798a0-SpecificationPart", - "ExecutionPart": "0x555653779888-ExecutionPart", - "Statement": "0x555653779800-Statement" + "id": "0x5586ec7ee850-MainProgram", + "Statement": "0x5586ec7ee998-Statement", + "SpecificationPart": "0x5586ec7ee8f0-SpecificationPart", + "ExecutionPart": "0x5586ec7ee8d8-ExecutionPart", + "Statement": "0x5586ec7ee850-Statement" }, { - "id": "0x555653779948-Statement", - "statement": "0x555653779958-ProgramStmt", + "id": "0x5586ec7ee998-Statement", + "statement": "0x5586ec7ee9a8-ProgramStmt", "source": "program TEST_IMPLIED_DO" }, { - "id": "0x555653779958-ProgramStmt", - "Name": "0x555653779958-Name" + "id": "0x5586ec7ee9a8-ProgramStmt", + "Name": "0x5586ec7ee9a8-Name" }, { - "id": "0x555653779958-Name", + "id": "0x5586ec7ee9a8-Name", "source": "TEST_IMPLIED_DO" }, { - "id": "0x5556537798a0-SpecificationPart", - "ImplicitPart": "0x5556537798b8-ImplicitPart", + "id": "0x5586ec7ee8f0-SpecificationPart", + "ImplicitPart": "0x5586ec7ee908-ImplicitPart", "DeclarationConstruct": [ - "0x555653752170-DeclarationConstruct", - "0x555653751da0-DeclarationConstruct", - "0x5556537701d0-DeclarationConstruct", - "0x555653770480-DeclarationConstruct", - "0x555653770730-DeclarationConstruct" + "0x5586ec7c7170-DeclarationConstruct", + "0x5586ec7c6da0-DeclarationConstruct", + "0x5586ec7e5060-DeclarationConstruct", + "0x5586ec7e5310-DeclarationConstruct", + "0x5586ec7e55c0-DeclarationConstruct" ] }, { - "id": "0x5556537798b8-ImplicitPart" + "id": "0x5586ec7ee908-ImplicitPart" }, { - "id": "0x555653752170-DeclarationConstruct", + "id": "0x5586ec7c7170-DeclarationConstruct", "variantKey": "SpecificationConstruct", - "SpecificationConstruct": "0x555653752170-SpecificationConstruct" + "SpecificationConstruct": "0x5586ec7c7170-SpecificationConstruct" }, { - "id": "0x555653752170-SpecificationConstruct", + "id": "0x5586ec7c7170-SpecificationConstruct", "variantKey": "Statement", - "Statement": "0x555653752170-Statement" + "Statement": "0x5586ec7c7170-Statement" }, { - "id": "0x555653752170-Statement", - "statement": "0x555653781570-TypeDeclarationStmt", + "id": "0x5586ec7c7170-Statement", + "statement": "0x5586ec7f63e0-TypeDeclarationStmt", "source": "integer :: i, j" }, { - "id": "0x555653781570-TypeDeclarationStmt", - "DeclarationTypeSpec": "0x5556537815a0-DeclarationTypeSpec", + "id": "0x5586ec7f63e0-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x5586ec7f6410-DeclarationTypeSpec", "EntityDecl": [ - "0x55565376f880-EntityDecl", - "0x55565376f790-EntityDecl" + "0x5586ec7e4790-EntityDecl", + "0x5586ec76f270-EntityDecl" ] }, { - "id": "0x5556537815a0-DeclarationTypeSpec", + "id": "0x5586ec7f6410-DeclarationTypeSpec", "variantKey": "IntrinsicTypeSpec", - "IntrinsicTypeSpec": "0x5556537815a0-IntrinsicTypeSpec" + "IntrinsicTypeSpec": "0x5586ec7f6410-IntrinsicTypeSpec" }, { - "id": "0x5556537815a0-IntrinsicTypeSpec", + "id": "0x5586ec7f6410-IntrinsicTypeSpec", "variantKey": "IntegerTypeSpec", - "IntegerTypeSpec": "0x5556537815a0-IntegerTypeSpec" + "IntegerTypeSpec": "0x5586ec7f6410-IntegerTypeSpec" }, { - "id": "0x5556537815a0-IntegerTypeSpec" + "id": "0x5586ec7f6410-IntegerTypeSpec" }, { - "id": "0x55565376f880-EntityDecl", - "Name": "0x55565376f938-Name" + "id": "0x5586ec7e4790-EntityDecl", + "Name": "0x5586ec7e4848-Name" }, { - "id": "0x55565376f938-Name", + "id": "0x5586ec7e4848-Name", "source": "i" }, { - "id": "0x55565376f790-EntityDecl", - "Name": "0x55565376f848-Name" + "id": "0x5586ec76f270-EntityDecl", + "Name": "0x5586ec76f328-Name" }, { - "id": "0x55565376f848-Name", + "id": "0x5586ec76f328-Name", "source": "j" }, { - "id": "0x555653751da0-DeclarationConstruct", + "id": "0x5586ec7c6da0-DeclarationConstruct", "variantKey": "SpecificationConstruct", - "SpecificationConstruct": "0x555653751da0-SpecificationConstruct" + "SpecificationConstruct": "0x5586ec7c6da0-SpecificationConstruct" }, { - "id": "0x555653751da0-SpecificationConstruct", + "id": "0x5586ec7c6da0-SpecificationConstruct", "variantKey": "Statement", - "Statement": "0x555653751da0-Statement" + "Statement": "0x5586ec7c6da0-Statement" }, { - "id": "0x555653751da0-Statement", - "statement": "0x55565376f960-TypeDeclarationStmt", + "id": "0x5586ec7c6da0-Statement", + "statement": "0x5586ec7f6460-TypeDeclarationStmt", "source": "integer, dimension(5) :: arr1, arr2, arr3" }, { - "id": "0x55565376f960-TypeDeclarationStmt", - "DeclarationTypeSpec": "0x55565376f990-DeclarationTypeSpec", + "id": "0x5586ec7f6460-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x5586ec7f6490-DeclarationTypeSpec", "AttrSpec": [ - "0x555653788a00-AttrSpec" + "0x5586ec7fd990-AttrSpec" ], "EntityDecl": [ - "0x55565376fcc0-EntityDecl", - "0x55565376fae0-EntityDecl", - "0x55565376fbd0-EntityDecl" + "0x5586ec7e4b50-EntityDecl", + "0x5586ec7e4970-EntityDecl", + "0x5586ec7e4a60-EntityDecl" ] }, { - "id": "0x55565376f990-DeclarationTypeSpec", + "id": "0x5586ec7f6490-DeclarationTypeSpec", "variantKey": "IntrinsicTypeSpec", - "IntrinsicTypeSpec": "0x55565376f990-IntrinsicTypeSpec" + "IntrinsicTypeSpec": "0x5586ec7f6490-IntrinsicTypeSpec" }, { - "id": "0x55565376f990-IntrinsicTypeSpec", + "id": "0x5586ec7f6490-IntrinsicTypeSpec", "variantKey": "IntegerTypeSpec", - "IntegerTypeSpec": "0x55565376f990-IntegerTypeSpec" + "IntegerTypeSpec": "0x5586ec7f6490-IntegerTypeSpec" }, { - "id": "0x55565376f990-IntegerTypeSpec" + "id": "0x5586ec7f6490-IntegerTypeSpec" }, { - "id": "0x555653788a00-AttrSpec", + "id": "0x5586ec7fd990-AttrSpec", "variantKey": "ArraySpec", - "ArraySpec": "0x555653788a00-ArraySpec" + "ArraySpec": "0x5586ec7fd990-ArraySpec" }, { - "id": "0x555653788a00-ArraySpec", + "id": "0x5586ec7fd990-ArraySpec", "variantKey": "ExplicitShapeSpec", "ExplicitShapeSpec": [ - "0x555653780cd0-ExplicitShapeSpec" + "0x5586ec7f5c00-ExplicitShapeSpec" ] }, { - "id": "0x555653780cd0-ExplicitShapeSpec", - "upper_bound": "0x555653780cd0-SpecificationExpr" + "id": "0x5586ec7f5c00-ExplicitShapeSpec", + "upper_bound": "0x5586ec7f5c00-SpecificationExpr" }, { - "id": "0x555653780cd0-SpecificationExpr", - "Expr": "0x5556536e4790-Expr" + "id": "0x5586ec7f5c00-SpecificationExpr", + "Expr": "0x5586ec759790-Expr" }, { - "id": "0x5556536e4790-Expr", + "id": "0x5586ec759790-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x5556536e47b0-LiteralConstant" + "LiteralConstant": "0x5586ec7597b0-LiteralConstant" }, { - "id": "0x5556536e47b0-LiteralConstant", + "id": "0x5586ec7597b0-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x5556536e47b0-IntLiteralConstant" + "IntLiteralConstant": "0x5586ec7597b0-IntLiteralConstant" }, { - "id": "0x5556536e47b0-IntLiteralConstant", + "id": "0x5586ec7597b0-IntLiteralConstant", "CharBlock": "5" }, { - "id": "0x55565376fcc0-EntityDecl", - "Name": "0x55565376fd78-Name" + "id": "0x5586ec7e4b50-EntityDecl", + "Name": "0x5586ec7e4c08-Name" }, { - "id": "0x55565376fd78-Name", + "id": "0x5586ec7e4c08-Name", "source": "arr1" }, { - "id": "0x55565376fae0-EntityDecl", - "Name": "0x55565376fb98-Name" + "id": "0x5586ec7e4970-EntityDecl", + "Name": "0x5586ec7e4a28-Name" }, { - "id": "0x55565376fb98-Name", + "id": "0x5586ec7e4a28-Name", "source": "arr2" }, { - "id": "0x55565376fbd0-EntityDecl", - "Name": "0x55565376fc88-Name" + "id": "0x5586ec7e4a60-EntityDecl", + "Name": "0x5586ec7e4b18-Name" }, { - "id": "0x55565376fc88-Name", + "id": "0x5586ec7e4b18-Name", "source": "arr3" }, { - "id": "0x5556537701d0-DeclarationConstruct", + "id": "0x5586ec7e5060-DeclarationConstruct", "variantKey": "SpecificationConstruct", - "SpecificationConstruct": "0x5556537701d0-SpecificationConstruct" + "SpecificationConstruct": "0x5586ec7e5060-SpecificationConstruct" }, { - "id": "0x5556537701d0-SpecificationConstruct", + "id": "0x5586ec7e5060-SpecificationConstruct", "variantKey": "Statement", - "Statement": "0x5556537701d0-Statement" + "Statement": "0x5586ec7e5060-Statement" }, { - "id": "0x5556537701d0-Statement", - "statement": "0x55565376f9e0-TypeDeclarationStmt", + "id": "0x5586ec7e5060-Statement", + "statement": "0x5586ec7e4870-TypeDeclarationStmt", "source": "integer, dimension(10) :: arr4, arr5" }, { - "id": "0x55565376f9e0-TypeDeclarationStmt", - "DeclarationTypeSpec": "0x55565376fa10-DeclarationTypeSpec", + "id": "0x5586ec7e4870-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x5586ec7e48a0-DeclarationTypeSpec", "AttrSpec": [ - "0x555653781990-AttrSpec" + "0x5586ec7f6920-AttrSpec" ], "EntityDecl": [ - "0x5556537700e0-EntityDecl", - "0x55565376fff0-EntityDecl" + "0x5586ec7e4f70-EntityDecl", + "0x5586ec7e4e80-EntityDecl" ] }, { - "id": "0x55565376fa10-DeclarationTypeSpec", + "id": "0x5586ec7e48a0-DeclarationTypeSpec", "variantKey": "IntrinsicTypeSpec", - "IntrinsicTypeSpec": "0x55565376fa10-IntrinsicTypeSpec" + "IntrinsicTypeSpec": "0x5586ec7e48a0-IntrinsicTypeSpec" }, { - "id": "0x55565376fa10-IntrinsicTypeSpec", + "id": "0x5586ec7e48a0-IntrinsicTypeSpec", "variantKey": "IntegerTypeSpec", - "IntegerTypeSpec": "0x55565376fa10-IntegerTypeSpec" + "IntegerTypeSpec": "0x5586ec7e48a0-IntegerTypeSpec" }, { - "id": "0x55565376fa10-IntegerTypeSpec" + "id": "0x5586ec7e48a0-IntegerTypeSpec" }, { - "id": "0x555653781990-AttrSpec", + "id": "0x5586ec7f6920-AttrSpec", "variantKey": "ArraySpec", - "ArraySpec": "0x555653781990-ArraySpec" + "ArraySpec": "0x5586ec7f6920-ArraySpec" }, { - "id": "0x555653781990-ArraySpec", + "id": "0x5586ec7f6920-ArraySpec", "variantKey": "ExplicitShapeSpec", "ExplicitShapeSpec": [ - "0x555653780d00-ExplicitShapeSpec" + "0x5586ec7f5c30-ExplicitShapeSpec" ] }, { - "id": "0x555653780d00-ExplicitShapeSpec", - "upper_bound": "0x555653780d00-SpecificationExpr" + "id": "0x5586ec7f5c30-ExplicitShapeSpec", + "upper_bound": "0x5586ec7f5c30-SpecificationExpr" }, { - "id": "0x555653780d00-SpecificationExpr", - "Expr": "0x55565376ff00-Expr" + "id": "0x5586ec7f5c30-SpecificationExpr", + "Expr": "0x5586ec7e4d90-Expr" }, { - "id": "0x55565376ff00-Expr", + "id": "0x5586ec7e4d90-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55565376ff20-LiteralConstant" + "LiteralConstant": "0x5586ec7e4db0-LiteralConstant" }, { - "id": "0x55565376ff20-LiteralConstant", + "id": "0x5586ec7e4db0-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55565376ff20-IntLiteralConstant" + "IntLiteralConstant": "0x5586ec7e4db0-IntLiteralConstant" }, { - "id": "0x55565376ff20-IntLiteralConstant", + "id": "0x5586ec7e4db0-IntLiteralConstant", "CharBlock": "10" }, { - "id": "0x5556537700e0-EntityDecl", - "Name": "0x555653770198-Name" + "id": "0x5586ec7e4f70-EntityDecl", + "Name": "0x5586ec7e5028-Name" }, { - "id": "0x555653770198-Name", + "id": "0x5586ec7e5028-Name", "source": "arr4" }, { - "id": "0x55565376fff0-EntityDecl", - "Name": "0x5556537700a8-Name" + "id": "0x5586ec7e4e80-EntityDecl", + "Name": "0x5586ec7e4f38-Name" }, { - "id": "0x5556537700a8-Name", + "id": "0x5586ec7e4f38-Name", "source": "arr5" }, { - "id": "0x555653770480-DeclarationConstruct", + "id": "0x5586ec7e5310-DeclarationConstruct", "variantKey": "SpecificationConstruct", - "SpecificationConstruct": "0x555653770480-SpecificationConstruct" + "SpecificationConstruct": "0x5586ec7e5310-SpecificationConstruct" }, { - "id": "0x555653770480-SpecificationConstruct", + "id": "0x5586ec7e5310-SpecificationConstruct", "variantKey": "Statement", - "Statement": "0x555653770480-Statement" + "Statement": "0x5586ec7e5310-Statement" }, { - "id": "0x555653770480-Statement", - "statement": "0x55565376fe80-TypeDeclarationStmt", + "id": "0x5586ec7e5310-Statement", + "statement": "0x5586ec7e4d10-TypeDeclarationStmt", "source": "integer, dimension(9) :: arr6" }, { - "id": "0x55565376fe80-TypeDeclarationStmt", - "DeclarationTypeSpec": "0x55565376feb0-DeclarationTypeSpec", + "id": "0x5586ec7e4d10-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x5586ec7e4d40-DeclarationTypeSpec", "AttrSpec": [ - "0x555653782500-AttrSpec" + "0x5586ec7f7490-AttrSpec" ], "EntityDecl": [ - "0x555653770390-EntityDecl" + "0x5586ec7e5220-EntityDecl" ] }, { - "id": "0x55565376feb0-DeclarationTypeSpec", + "id": "0x5586ec7e4d40-DeclarationTypeSpec", "variantKey": "IntrinsicTypeSpec", - "IntrinsicTypeSpec": "0x55565376feb0-IntrinsicTypeSpec" + "IntrinsicTypeSpec": "0x5586ec7e4d40-IntrinsicTypeSpec" }, { - "id": "0x55565376feb0-IntrinsicTypeSpec", + "id": "0x5586ec7e4d40-IntrinsicTypeSpec", "variantKey": "IntegerTypeSpec", - "IntegerTypeSpec": "0x55565376feb0-IntegerTypeSpec" + "IntegerTypeSpec": "0x5586ec7e4d40-IntegerTypeSpec" }, { - "id": "0x55565376feb0-IntegerTypeSpec" + "id": "0x5586ec7e4d40-IntegerTypeSpec" }, { - "id": "0x555653782500-AttrSpec", + "id": "0x5586ec7f7490-AttrSpec", "variantKey": "ArraySpec", - "ArraySpec": "0x555653782500-ArraySpec" + "ArraySpec": "0x5586ec7f7490-ArraySpec" }, { - "id": "0x555653782500-ArraySpec", + "id": "0x5586ec7f7490-ArraySpec", "variantKey": "ExplicitShapeSpec", "ExplicitShapeSpec": [ - "0x555653780d30-ExplicitShapeSpec" + "0x5586ec7f5c60-ExplicitShapeSpec" ] }, { - "id": "0x555653780d30-ExplicitShapeSpec", - "upper_bound": "0x555653780d30-SpecificationExpr" + "id": "0x5586ec7f5c60-ExplicitShapeSpec", + "upper_bound": "0x5586ec7f5c60-SpecificationExpr" }, { - "id": "0x555653780d30-SpecificationExpr", - "Expr": "0x5556537702a0-Expr" + "id": "0x5586ec7f5c60-SpecificationExpr", + "Expr": "0x5586ec7e5130-Expr" }, { - "id": "0x5556537702a0-Expr", + "id": "0x5586ec7e5130-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x5556537702c0-LiteralConstant" + "LiteralConstant": "0x5586ec7e5150-LiteralConstant" }, { - "id": "0x5556537702c0-LiteralConstant", + "id": "0x5586ec7e5150-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x5556537702c0-IntLiteralConstant" + "IntLiteralConstant": "0x5586ec7e5150-IntLiteralConstant" }, { - "id": "0x5556537702c0-IntLiteralConstant", + "id": "0x5586ec7e5150-IntLiteralConstant", "CharBlock": "9" }, { - "id": "0x555653770390-EntityDecl", - "Name": "0x555653770448-Name" + "id": "0x5586ec7e5220-EntityDecl", + "Name": "0x5586ec7e52d8-Name" }, { - "id": "0x555653770448-Name", + "id": "0x5586ec7e52d8-Name", "source": "arr6" }, { - "id": "0x555653770730-DeclarationConstruct", + "id": "0x5586ec7e55c0-DeclarationConstruct", "variantKey": "SpecificationConstruct", - "SpecificationConstruct": "0x555653770730-SpecificationConstruct" + "SpecificationConstruct": "0x5586ec7e55c0-SpecificationConstruct" }, { - "id": "0x555653770730-SpecificationConstruct", + "id": "0x5586ec7e55c0-SpecificationConstruct", "variantKey": "Statement", - "Statement": "0x555653770730-Statement" + "Statement": "0x5586ec7e55c0-Statement" }, { - "id": "0x555653770730-Statement", - "statement": "0x555653770220-TypeDeclarationStmt", + "id": "0x5586ec7e55c0-Statement", + "statement": "0x5586ec7e50b0-TypeDeclarationStmt", "source": "integer, dimension(15) :: arr7" }, { - "id": "0x555653770220-TypeDeclarationStmt", - "DeclarationTypeSpec": "0x555653770250-DeclarationTypeSpec", + "id": "0x5586ec7e50b0-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x5586ec7e50e0-DeclarationTypeSpec", "AttrSpec": [ - "0x55565377bcc0-AttrSpec" + "0x5586ec7f0c50-AttrSpec" ], "EntityDecl": [ - "0x555653770640-EntityDecl" + "0x5586ec7e54d0-EntityDecl" ] }, { - "id": "0x555653770250-DeclarationTypeSpec", + "id": "0x5586ec7e50e0-DeclarationTypeSpec", "variantKey": "IntrinsicTypeSpec", - "IntrinsicTypeSpec": "0x555653770250-IntrinsicTypeSpec" + "IntrinsicTypeSpec": "0x5586ec7e50e0-IntrinsicTypeSpec" }, { - "id": "0x555653770250-IntrinsicTypeSpec", + "id": "0x5586ec7e50e0-IntrinsicTypeSpec", "variantKey": "IntegerTypeSpec", - "IntegerTypeSpec": "0x555653770250-IntegerTypeSpec" + "IntegerTypeSpec": "0x5586ec7e50e0-IntegerTypeSpec" }, { - "id": "0x555653770250-IntegerTypeSpec" + "id": "0x5586ec7e50e0-IntegerTypeSpec" }, { - "id": "0x55565377bcc0-AttrSpec", + "id": "0x5586ec7f0c50-AttrSpec", "variantKey": "ArraySpec", - "ArraySpec": "0x55565377bcc0-ArraySpec" + "ArraySpec": "0x5586ec7f0c50-ArraySpec" }, { - "id": "0x55565377bcc0-ArraySpec", + "id": "0x5586ec7f0c50-ArraySpec", "variantKey": "ExplicitShapeSpec", "ExplicitShapeSpec": [ - "0x555653780d80-ExplicitShapeSpec" + "0x5586ec7f5cb0-ExplicitShapeSpec" ] }, { - "id": "0x555653780d80-ExplicitShapeSpec", - "upper_bound": "0x555653780d80-SpecificationExpr" + "id": "0x5586ec7f5cb0-ExplicitShapeSpec", + "upper_bound": "0x5586ec7f5cb0-SpecificationExpr" }, { - "id": "0x555653780d80-SpecificationExpr", - "Expr": "0x555653770550-Expr" + "id": "0x5586ec7f5cb0-SpecificationExpr", + "Expr": "0x5586ec7e53e0-Expr" }, { - "id": "0x555653770550-Expr", + "id": "0x5586ec7e53e0-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x555653770570-LiteralConstant" + "LiteralConstant": "0x5586ec7e5400-LiteralConstant" }, { - "id": "0x555653770570-LiteralConstant", + "id": "0x5586ec7e5400-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x555653770570-IntLiteralConstant" + "IntLiteralConstant": "0x5586ec7e5400-IntLiteralConstant" }, { - "id": "0x555653770570-IntLiteralConstant", + "id": "0x5586ec7e5400-IntLiteralConstant", "CharBlock": "15" }, { - "id": "0x555653770640-EntityDecl", - "Name": "0x5556537706f8-Name" + "id": "0x5586ec7e54d0-EntityDecl", + "Name": "0x5586ec7e5588-Name" }, { - "id": "0x5556537706f8-Name", + "id": "0x5586ec7e5588-Name", "source": "arr7" }, { - "id": "0x555653779888-ExecutionPart", + "id": "0x5586ec7ee8d8-ExecutionPart", "ExecutionPartConstruct": [ - "0x555653772670-ExecutionPartConstruct", - "0x555653772e40-ExecutionPartConstruct", - "0x5556537733f0-ExecutionPartConstruct", - "0x555653773ca0-ExecutionPartConstruct", - "0x555653774330-ExecutionPartConstruct", - "0x555653775a10-ExecutionPartConstruct", - "0x555653776500-ExecutionPartConstruct" + "0x5586ec7e75f0-ExecutionPartConstruct", + "0x5586ec7e7ea0-ExecutionPartConstruct", + "0x5586ec7e8450-ExecutionPartConstruct", + "0x5586ec7e8d00-ExecutionPartConstruct", + "0x5586ec7e9390-ExecutionPartConstruct", + "0x5586ec7eaaf0-ExecutionPartConstruct", + "0x5586ec7eb5e0-ExecutionPartConstruct" ] }, { - "id": "0x555653779888-ExecutionPartConstruct" + "id": "0x5586ec7ee8d8-ExecutionPartConstruct" }, { - "id": "0x555653772670-ExecutionPartConstruct", + "id": "0x5586ec7e75f0-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x555653772670-ExecutableConstruct" + "ExecutableConstruct": "0x5586ec7e75f0-ExecutableConstruct" }, { - "id": "0x555653772670-ExecutableConstruct", + "id": "0x5586ec7e75f0-ExecutableConstruct", "variantKey": "Statement", - "Statement": "0x555653772670-Statement" + "Statement": "0x5586ec7e75f0-Statement" }, { - "id": "0x555653772670-Statement", - "statement": "0x555653772680-ActionStmt", + "id": "0x5586ec7e75f0-Statement", + "statement": "0x5586ec7e7600-ActionStmt", "source": "arr1 = [(i, i = 1, 5)]" }, { - "id": "0x555653772680-ActionStmt", + "id": "0x5586ec7e7600-ActionStmt", "variantKey": "AssignmentStmt", - "AssignmentStmt": "0x555653781ad0-AssignmentStmt" + "AssignmentStmt": "0x5586ec7f6a60-AssignmentStmt" }, { - "id": "0x555653781ad0-AssignmentStmt", - "Variable": "0x555653781bb0-Variable", - "Expr": "0x555653781ae0-Expr" + "id": "0x5586ec7f6a60-AssignmentStmt", + "Variable": "0x5586ec7f6b40-Variable", + "Expr": "0x5586ec7f6a70-Expr" }, { - "id": "0x555653781bb0-Variable", + "id": "0x5586ec7f6b40-Variable", "variantKey": "Designator", - "Designator": "0x555653770ec0-Designator" + "Designator": "0x5586ec7e5a30-Designator" }, { - "id": "0x555653770ec0-Designator", + "id": "0x5586ec7e5a30-Designator", "variantKey": "DataRef", - "DataRef": "0x555653770ed0-DataRef" + "DataRef": "0x5586ec7e5a40-DataRef" }, { - "id": "0x555653770ed0-DataRef", + "id": "0x5586ec7e5a40-DataRef", "variantKey": "Name", - "Name": "0x555653770ed0-Name" + "Name": "0x5586ec7e5a40-Name" }, { - "id": "0x555653770ed0-Name", + "id": "0x5586ec7e5a40-Name", "source": "arr1" }, { - "id": "0x555653781ae0-Expr", + "id": "0x5586ec7f6a70-Expr", "variantKey": "ArrayConstructor", - "ArrayConstructor": "0x555653781b00-ArrayConstructor" + "ArrayConstructor": "0x5586ec7f6a90-ArrayConstructor" }, { - "id": "0x555653781b00-ArrayConstructor", - "AcSpec": "0x555653781b00-AcSpec" + "id": "0x5586ec7f6a90-ArrayConstructor", + "AcSpec": "0x5586ec7f6a90-AcSpec" }, { - "id": "0x555653781b00-AcSpec", + "id": "0x5586ec7f6a90-AcSpec", "values": [ - "0x55565377f9e0-AcValue" + "0x5586ec7f4910-AcValue" ] }, { - "id": "0x55565377f9e0-AcValue", + "id": "0x5586ec7f4910-AcValue", "variantKey": "AcImpliedDo", - "AcImpliedDo": "0x5556537704d0-AcImpliedDo" + "AcImpliedDo": "0x5586ec7e5690-AcImpliedDo" }, { - "id": "0x5556537704d0-AcImpliedDo", + "id": "0x5586ec7e5690-AcImpliedDo", "AcValue": [ - "0x5556537800c0-AcValue" + "0x5586ec7f4ff0-AcValue" ], - "AcImpliedDoControl": "0x5556537704d0-AcImpliedDoControl" + "AcImpliedDoControl": "0x5586ec7e5690-AcImpliedDoControl" }, { - "id": "0x5556537800c0-AcValue", + "id": "0x5586ec7f4ff0-AcValue", "variantKey": "Expr", - "Expr": "0x555653771e20-Expr" + "Expr": "0x5586ec7e6e10-Expr" }, { - "id": "0x555653771e20-Expr", + "id": "0x5586ec7e6e10-Expr", "variantKey": "Designator", - "Designator": "0x555653752100-Designator" + "Designator": "0x5586ec7c7100-Designator" }, { - "id": "0x555653752100-Designator", + "id": "0x5586ec7c7100-Designator", "variantKey": "DataRef", - "DataRef": "0x555653752110-DataRef" + "DataRef": "0x5586ec7c7110-DataRef" }, { - "id": "0x555653752110-DataRef", + "id": "0x5586ec7c7110-DataRef", "variantKey": "Name", - "Name": "0x555653752110-Name" + "Name": "0x5586ec7c7110-Name" }, { - "id": "0x555653752110-Name", + "id": "0x5586ec7c7110-Name", "source": "i" }, { - "id": "0x5556537704d0-AcImpliedDoControl", - "value": "0x5556537704d0-LoopBounds" + "id": "0x5586ec7e5690-AcImpliedDoControl", + "value": "0x5586ec7e5690-LoopBounds" }, { - "id": "0x5556537704d0-LoopBounds", - "var": "0x5556537704d0-Name", - "lower": "0x555653772350-Expr", - "upper": "0x555653771d40-Expr" + "id": "0x5586ec7e5690-LoopBounds", + "var": "0x5586ec7e5690-Name", + "lower": "0x5586ec7e7340-Expr", + "upper": "0x5586ec7e6d30-Expr" }, { - "id": "0x5556537704d0-Name", + "id": "0x5586ec7e5690-Name", "source": "i" }, { - "id": "0x555653772350-Expr", + "id": "0x5586ec7e7340-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x555653772370-LiteralConstant" + "LiteralConstant": "0x5586ec7e7360-LiteralConstant" }, { - "id": "0x555653772370-LiteralConstant", + "id": "0x5586ec7e7360-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x555653772370-IntLiteralConstant" + "IntLiteralConstant": "0x5586ec7e7360-IntLiteralConstant" }, { - "id": "0x555653772370-IntLiteralConstant", + "id": "0x5586ec7e7360-IntLiteralConstant", "CharBlock": "1" }, { - "id": "0x555653771d40-Expr", + "id": "0x5586ec7e6d30-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x555653771d60-LiteralConstant" + "LiteralConstant": "0x5586ec7e6d50-LiteralConstant" }, { - "id": "0x555653771d60-LiteralConstant", + "id": "0x5586ec7e6d50-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x555653771d60-IntLiteralConstant" + "IntLiteralConstant": "0x5586ec7e6d50-IntLiteralConstant" }, { - "id": "0x555653771d60-IntLiteralConstant", + "id": "0x5586ec7e6d50-IntLiteralConstant", "CharBlock": "5" }, { - "id": "0x555653772e40-ExecutionPartConstruct", + "id": "0x5586ec7e7ea0-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x555653772e40-ExecutableConstruct" + "ExecutableConstruct": "0x5586ec7e7ea0-ExecutableConstruct" }, { - "id": "0x555653772e40-ExecutableConstruct", + "id": "0x5586ec7e7ea0-ExecutableConstruct", "variantKey": "Statement", - "Statement": "0x555653772e40-Statement" + "Statement": "0x5586ec7e7ea0-Statement" }, { - "id": "0x555653772e40-Statement", - "statement": "0x555653772e50-ActionStmt", + "id": "0x5586ec7e7ea0-Statement", + "statement": "0x5586ec7e7eb0-ActionStmt", "source": "arr2 = [(i * 10, i = 1, 5)]" }, { - "id": "0x555653772e50-ActionStmt", + "id": "0x5586ec7e7eb0-ActionStmt", "variantKey": "AssignmentStmt", - "AssignmentStmt": "0x555653772cb0-AssignmentStmt" + "AssignmentStmt": "0x5586ec7e7d10-AssignmentStmt" }, { - "id": "0x555653772cb0-AssignmentStmt", - "Variable": "0x555653772d90-Variable", - "Expr": "0x555653772cc0-Expr" + "id": "0x5586ec7e7d10-AssignmentStmt", + "Variable": "0x5586ec7e7df0-Variable", + "Expr": "0x5586ec7e7d20-Expr" }, { - "id": "0x555653772d90-Variable", + "id": "0x5586ec7e7df0-Variable", "variantKey": "Designator", - "Designator": "0x555653771c70-Designator" + "Designator": "0x5586ec7e6c60-Designator" }, { - "id": "0x555653771c70-Designator", + "id": "0x5586ec7e6c60-Designator", "variantKey": "DataRef", - "DataRef": "0x555653771c80-DataRef" + "DataRef": "0x5586ec7e6c70-DataRef" }, { - "id": "0x555653771c80-DataRef", + "id": "0x5586ec7e6c70-DataRef", "variantKey": "Name", - "Name": "0x555653771c80-Name" + "Name": "0x5586ec7e6c70-Name" }, { - "id": "0x555653771c80-Name", + "id": "0x5586ec7e6c70-Name", "source": "arr2" }, { - "id": "0x555653772cc0-Expr", + "id": "0x5586ec7e7d20-Expr", "variantKey": "ArrayConstructor", - "ArrayConstructor": "0x555653772ce0-ArrayConstructor" + "ArrayConstructor": "0x5586ec7e7d40-ArrayConstructor" }, { - "id": "0x555653772ce0-ArrayConstructor", - "AcSpec": "0x555653772ce0-AcSpec" + "id": "0x5586ec7e7d40-ArrayConstructor", + "AcSpec": "0x5586ec7e7d40-AcSpec" }, { - "id": "0x555653772ce0-AcSpec", + "id": "0x5586ec7e7d40-AcSpec", "values": [ - "0x555653780580-AcValue" + "0x5586ec7f54b0-AcValue" ] }, { - "id": "0x555653780580-AcValue", + "id": "0x5586ec7f54b0-AcValue", "variantKey": "AcImpliedDo", - "AcImpliedDo": "0x555653770800-AcImpliedDo" + "AcImpliedDo": "0x5586ec7e5e20-AcImpliedDo" }, { - "id": "0x555653770800-AcImpliedDo", + "id": "0x5586ec7e5e20-AcImpliedDo", "AcValue": [ - "0x555653780180-AcValue" + "0x5586ec7f50b0-AcValue" ], - "AcImpliedDoControl": "0x555653770800-AcImpliedDoControl" + "AcImpliedDoControl": "0x5586ec7e5e20-AcImpliedDoControl" }, { - "id": "0x555653780180-AcValue", + "id": "0x5586ec7f50b0-AcValue", "variantKey": "Expr", - "Expr": "0x555653772940-Expr" + "Expr": "0x5586ec7e79a0-Expr" }, { - "id": "0x555653772940-Expr", + "id": "0x5586ec7e79a0-Expr", "variantKey": "Multiply", - "Multiply": "0x555653772960-Multiply" + "Multiply": "0x5586ec7e79c0-Multiply" }, { - "id": "0x555653772960-Multiply", - "left": "0x555653772860-Expr", - "right": "0x5556537713d0-Expr", + "id": "0x5586ec7e79c0-Multiply", + "left": "0x5586ec7e78c0-Expr", + "right": "0x5586ec7e7640-Expr", "op": "MULTIPLY" }, { - "id": "0x555653772860-Expr", + "id": "0x5586ec7e78c0-Expr", "variantKey": "Designator", - "Designator": "0x555653772800-Designator" + "Designator": "0x5586ec7e7860-Designator" }, { - "id": "0x555653772800-Designator", + "id": "0x5586ec7e7860-Designator", "variantKey": "DataRef", - "DataRef": "0x555653772810-DataRef" + "DataRef": "0x5586ec7e7870-DataRef" }, { - "id": "0x555653772810-DataRef", + "id": "0x5586ec7e7870-DataRef", "variantKey": "Name", - "Name": "0x555653772810-Name" + "Name": "0x5586ec7e7870-Name" }, { - "id": "0x555653772810-Name", + "id": "0x5586ec7e7870-Name", "source": "i" }, { - "id": "0x5556537713d0-Expr", + "id": "0x5586ec7e7640-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x5556537713f0-LiteralConstant" + "LiteralConstant": "0x5586ec7e7660-LiteralConstant" }, { - "id": "0x5556537713f0-LiteralConstant", + "id": "0x5586ec7e7660-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x5556537713f0-IntLiteralConstant" + "IntLiteralConstant": "0x5586ec7e7660-IntLiteralConstant" }, { - "id": "0x5556537713f0-IntLiteralConstant", + "id": "0x5586ec7e7660-IntLiteralConstant", "CharBlock": "10" }, { - "id": "0x555653770800-AcImpliedDoControl", - "value": "0x555653770800-LoopBounds" + "id": "0x5586ec7e5e20-AcImpliedDoControl", + "value": "0x5586ec7e5e20-LoopBounds" }, { - "id": "0x555653770800-LoopBounds", - "var": "0x555653770800-Name", - "lower": "0x5556537726c0-Expr", - "upper": "0x555653772a80-Expr" + "id": "0x5586ec7e5e20-LoopBounds", + "var": "0x5586ec7e5e20-Name", + "lower": "0x5586ec7e7720-Expr", + "upper": "0x5586ec7e7ae0-Expr" }, { - "id": "0x555653770800-Name", + "id": "0x5586ec7e5e20-Name", "source": "i" }, { - "id": "0x5556537726c0-Expr", + "id": "0x5586ec7e7720-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x5556537726e0-LiteralConstant" + "LiteralConstant": "0x5586ec7e7740-LiteralConstant" }, { - "id": "0x5556537726e0-LiteralConstant", + "id": "0x5586ec7e7740-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x5556537726e0-IntLiteralConstant" + "IntLiteralConstant": "0x5586ec7e7740-IntLiteralConstant" }, { - "id": "0x5556537726e0-IntLiteralConstant", + "id": "0x5586ec7e7740-IntLiteralConstant", "CharBlock": "1" }, { - "id": "0x555653772a80-Expr", + "id": "0x5586ec7e7ae0-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x555653772aa0-LiteralConstant" + "LiteralConstant": "0x5586ec7e7b00-LiteralConstant" }, { - "id": "0x555653772aa0-LiteralConstant", + "id": "0x5586ec7e7b00-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x555653772aa0-IntLiteralConstant" + "IntLiteralConstant": "0x5586ec7e7b00-IntLiteralConstant" }, { - "id": "0x555653772aa0-IntLiteralConstant", + "id": "0x5586ec7e7b00-IntLiteralConstant", "CharBlock": "5" }, { - "id": "0x5556537733f0-ExecutionPartConstruct", + "id": "0x5586ec7e8450-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x5556537733f0-ExecutableConstruct" + "ExecutableConstruct": "0x5586ec7e8450-ExecutableConstruct" }, { - "id": "0x5556537733f0-ExecutableConstruct", + "id": "0x5586ec7e8450-ExecutableConstruct", "variantKey": "Statement", - "Statement": "0x5556537733f0-Statement" + "Statement": "0x5586ec7e8450-Statement" }, { - "id": "0x5556537733f0-Statement", - "statement": "0x555653773400-ActionStmt", + "id": "0x5586ec7e8450-Statement", + "statement": "0x5586ec7e8460-ActionStmt", "source": "arr3 = [(i, i = 1, 9, 2)]" }, { - "id": "0x555653773400-ActionStmt", + "id": "0x5586ec7e8460-ActionStmt", "variantKey": "AssignmentStmt", - "AssignmentStmt": "0x5556537732d0-AssignmentStmt" + "AssignmentStmt": "0x5586ec7e8330-AssignmentStmt" }, { - "id": "0x5556537732d0-AssignmentStmt", - "Variable": "0x5556537733b0-Variable", - "Expr": "0x5556537732e0-Expr" + "id": "0x5586ec7e8330-AssignmentStmt", + "Variable": "0x5586ec7e8410-Variable", + "Expr": "0x5586ec7e8340-Expr" }, { - "id": "0x5556537733b0-Variable", + "id": "0x5586ec7e8410-Variable", "variantKey": "Designator", - "Designator": "0x555653771a50-Designator" + "Designator": "0x5586ec7e6a40-Designator" }, { - "id": "0x555653771a50-Designator", + "id": "0x5586ec7e6a40-Designator", "variantKey": "DataRef", - "DataRef": "0x555653771a60-DataRef" + "DataRef": "0x5586ec7e6a50-DataRef" }, { - "id": "0x555653771a60-DataRef", + "id": "0x5586ec7e6a50-DataRef", "variantKey": "Name", - "Name": "0x555653771a60-Name" + "Name": "0x5586ec7e6a50-Name" }, { - "id": "0x555653771a60-Name", + "id": "0x5586ec7e6a50-Name", "source": "arr3" }, { - "id": "0x5556537732e0-Expr", + "id": "0x5586ec7e8340-Expr", "variantKey": "ArrayConstructor", - "ArrayConstructor": "0x555653773300-ArrayConstructor" + "ArrayConstructor": "0x5586ec7e8360-ArrayConstructor" }, { - "id": "0x555653773300-ArrayConstructor", - "AcSpec": "0x555653773300-AcSpec" + "id": "0x5586ec7e8360-ArrayConstructor", + "AcSpec": "0x5586ec7e8360-AcSpec" }, { - "id": "0x555653773300-AcSpec", + "id": "0x5586ec7e8360-AcSpec", "values": [ - "0x555653780e10-AcValue" + "0x5586ec7f5d40-AcValue" ] }, { - "id": "0x555653780e10-AcValue", + "id": "0x5586ec7f5d40-AcValue", "variantKey": "AcImpliedDo", - "AcImpliedDo": "0x555653771650-AcImpliedDo" + "AcImpliedDo": "0x5586ec7fd610-AcImpliedDo" }, { - "id": "0x555653771650-AcImpliedDo", + "id": "0x5586ec7fd610-AcImpliedDo", "AcValue": [ - "0x555653780db0-AcValue" + "0x5586ec7f5ce0-AcValue" ], - "AcImpliedDoControl": "0x555653771650-AcImpliedDoControl" + "AcImpliedDoControl": "0x5586ec7fd610-AcImpliedDoControl" }, { - "id": "0x555653780db0-AcValue", + "id": "0x5586ec7f5ce0-AcValue", "variantKey": "Expr", - "Expr": "0x555653772e90-Expr" + "Expr": "0x5586ec7e7ef0-Expr" }, { - "id": "0x555653772e90-Expr", + "id": "0x5586ec7e7ef0-Expr", "variantKey": "Designator", - "Designator": "0x555653772130-Designator" + "Designator": "0x5586ec7e7120-Designator" }, { - "id": "0x555653772130-Designator", + "id": "0x5586ec7e7120-Designator", "variantKey": "DataRef", - "DataRef": "0x555653772140-DataRef" + "DataRef": "0x5586ec7e7130-DataRef" }, { - "id": "0x555653772140-DataRef", + "id": "0x5586ec7e7130-DataRef", "variantKey": "Name", - "Name": "0x555653772140-Name" + "Name": "0x5586ec7e7130-Name" }, { - "id": "0x555653772140-Name", + "id": "0x5586ec7e7130-Name", "source": "i" }, { - "id": "0x555653771650-AcImpliedDoControl", - "value": "0x555653771650-LoopBounds" + "id": "0x5586ec7fd610-AcImpliedDoControl", + "value": "0x5586ec7fd610-LoopBounds" }, { - "id": "0x555653771650-LoopBounds", - "var": "0x555653771650-Name", - "lower": "0x555653772f70-Expr", - "upper": "0x5556537730b0-Expr", - "step": "0x5556537731f0-Expr" + "id": "0x5586ec7fd610-LoopBounds", + "var": "0x5586ec7fd610-Name", + "lower": "0x5586ec7e7fd0-Expr", + "upper": "0x5586ec7e8110-Expr", + "step": "0x5586ec7e8250-Expr" }, { - "id": "0x555653771650-Name", + "id": "0x5586ec7fd610-Name", "source": "i" }, { - "id": "0x555653772f70-Expr", + "id": "0x5586ec7e7fd0-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x555653772f90-LiteralConstant" + "LiteralConstant": "0x5586ec7e7ff0-LiteralConstant" }, { - "id": "0x555653772f90-LiteralConstant", + "id": "0x5586ec7e7ff0-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x555653772f90-IntLiteralConstant" + "IntLiteralConstant": "0x5586ec7e7ff0-IntLiteralConstant" }, { - "id": "0x555653772f90-IntLiteralConstant", + "id": "0x5586ec7e7ff0-IntLiteralConstant", "CharBlock": "1" }, { - "id": "0x5556537730b0-Expr", + "id": "0x5586ec7e8110-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x5556537730d0-LiteralConstant" + "LiteralConstant": "0x5586ec7e8130-LiteralConstant" }, { - "id": "0x5556537730d0-LiteralConstant", + "id": "0x5586ec7e8130-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x5556537730d0-IntLiteralConstant" + "IntLiteralConstant": "0x5586ec7e8130-IntLiteralConstant" }, { - "id": "0x5556537730d0-IntLiteralConstant", + "id": "0x5586ec7e8130-IntLiteralConstant", "CharBlock": "9" }, { - "id": "0x5556537731f0-Expr", + "id": "0x5586ec7e8250-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x555653773210-LiteralConstant" + "LiteralConstant": "0x5586ec7e8270-LiteralConstant" }, { - "id": "0x555653773210-LiteralConstant", + "id": "0x5586ec7e8270-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x555653773210-IntLiteralConstant" + "IntLiteralConstant": "0x5586ec7e8270-IntLiteralConstant" }, { - "id": "0x555653773210-IntLiteralConstant", + "id": "0x5586ec7e8270-IntLiteralConstant", "CharBlock": "2" }, { - "id": "0x555653773ca0-ExecutionPartConstruct", + "id": "0x5586ec7e8d00-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x555653773ca0-ExecutableConstruct" + "ExecutableConstruct": "0x5586ec7e8d00-ExecutableConstruct" }, { - "id": "0x555653773ca0-ExecutableConstruct", + "id": "0x5586ec7e8d00-ExecutableConstruct", "variantKey": "Statement", - "Statement": "0x555653773ca0-Statement" + "Statement": "0x5586ec7e8d00-Statement" }, { - "id": "0x555653773ca0-Statement", - "statement": "0x555653773cb0-ActionStmt", + "id": "0x5586ec7e8d00-Statement", + "statement": "0x5586ec7e8d10-ActionStmt", "source": "arr4 = [0,(i, i = 1, 8), 99]" }, { - "id": "0x555653773cb0-ActionStmt", + "id": "0x5586ec7e8d10-ActionStmt", "variantKey": "AssignmentStmt", - "AssignmentStmt": "0x555653773b10-AssignmentStmt" + "AssignmentStmt": "0x5586ec7e8b70-AssignmentStmt" }, { - "id": "0x555653773b10-AssignmentStmt", - "Variable": "0x555653773bf0-Variable", - "Expr": "0x555653773b20-Expr" + "id": "0x5586ec7e8b70-AssignmentStmt", + "Variable": "0x5586ec7e8c50-Variable", + "Expr": "0x5586ec7e8b80-Expr" }, { - "id": "0x555653773bf0-Variable", + "id": "0x5586ec7e8c50-Variable", "variantKey": "Designator", - "Designator": "0x555653772a20-Designator" + "Designator": "0x5586ec7e7a80-Designator" }, { - "id": "0x555653772a20-Designator", + "id": "0x5586ec7e7a80-Designator", "variantKey": "DataRef", - "DataRef": "0x555653772a30-DataRef" + "DataRef": "0x5586ec7e7a90-DataRef" }, { - "id": "0x555653772a30-DataRef", + "id": "0x5586ec7e7a90-DataRef", "variantKey": "Name", - "Name": "0x555653772a30-Name" + "Name": "0x5586ec7e7a90-Name" }, { - "id": "0x555653772a30-Name", + "id": "0x5586ec7e7a90-Name", "source": "arr4" }, { - "id": "0x555653773b20-Expr", + "id": "0x5586ec7e8b80-Expr", "variantKey": "ArrayConstructor", - "ArrayConstructor": "0x555653773b40-ArrayConstructor" + "ArrayConstructor": "0x5586ec7e8ba0-ArrayConstructor" }, { - "id": "0x555653773b40-ArrayConstructor", - "AcSpec": "0x555653773b40-AcSpec" + "id": "0x5586ec7e8ba0-ArrayConstructor", + "AcSpec": "0x5586ec7e8ba0-AcSpec" }, { - "id": "0x555653773b40-AcSpec", + "id": "0x5586ec7e8ba0-AcSpec", "values": [ - "0x55565377f7e0-AcValue", - "0x55565377f960-AcValue", - "0x55565377f730-AcValue" + "0x5586ec7f4710-AcValue", + "0x5586ec7f4890-AcValue", + "0x5586ec7f4660-AcValue" ] }, { - "id": "0x55565377f7e0-AcValue", + "id": "0x5586ec7f4710-AcValue", "variantKey": "Expr", - "Expr": "0x555653773440-Expr" + "Expr": "0x5586ec7e84a0-Expr" }, { - "id": "0x555653773440-Expr", + "id": "0x5586ec7e84a0-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x555653773460-LiteralConstant" + "LiteralConstant": "0x5586ec7e84c0-LiteralConstant" }, { - "id": "0x555653773460-LiteralConstant", + "id": "0x5586ec7e84c0-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x555653773460-IntLiteralConstant" + "IntLiteralConstant": "0x5586ec7e84c0-IntLiteralConstant" }, { - "id": "0x555653773460-IntLiteralConstant", + "id": "0x5586ec7e84c0-IntLiteralConstant", "CharBlock": "0" }, { - "id": "0x55565377f960-AcValue", + "id": "0x5586ec7f4890-AcValue", "variantKey": "AcImpliedDo", - "AcImpliedDo": "0x5556537886f0-AcImpliedDo" + "AcImpliedDo": "0x5586ec7e5610-AcImpliedDo" }, { - "id": "0x5556537886f0-AcImpliedDo", + "id": "0x5586ec7e5610-AcImpliedDo", "AcValue": [ - "0x555653780e50-AcValue" + "0x5586ec7f5d80-AcValue" ], - "AcImpliedDoControl": "0x5556537886f0-AcImpliedDoControl" + "AcImpliedDoControl": "0x5586ec7e5610-AcImpliedDoControl" }, { - "id": "0x555653780e50-AcValue", + "id": "0x5586ec7f5d80-AcValue", "variantKey": "Expr", - "Expr": "0x555653773580-Expr" + "Expr": "0x5586ec7e85e0-Expr" }, { - "id": "0x555653773580-Expr", + "id": "0x5586ec7e85e0-Expr", "variantKey": "Designator", - "Designator": "0x555653773520-Designator" + "Designator": "0x5586ec7e8580-Designator" }, { - "id": "0x555653773520-Designator", + "id": "0x5586ec7e8580-Designator", "variantKey": "DataRef", - "DataRef": "0x555653773530-DataRef" + "DataRef": "0x5586ec7e8590-DataRef" }, { - "id": "0x555653773530-DataRef", + "id": "0x5586ec7e8590-DataRef", "variantKey": "Name", - "Name": "0x555653773530-Name" + "Name": "0x5586ec7e8590-Name" }, { - "id": "0x555653773530-Name", + "id": "0x5586ec7e8590-Name", "source": "i" }, { - "id": "0x5556537886f0-AcImpliedDoControl", - "value": "0x5556537886f0-LoopBounds" + "id": "0x5586ec7e5610-AcImpliedDoControl", + "value": "0x5586ec7e5610-LoopBounds" }, { - "id": "0x5556537886f0-LoopBounds", - "var": "0x5556537886f0-Name", - "lower": "0x555653773660-Expr", - "upper": "0x5556537737a0-Expr" + "id": "0x5586ec7e5610-LoopBounds", + "var": "0x5586ec7e5610-Name", + "lower": "0x5586ec7e86c0-Expr", + "upper": "0x5586ec7e8800-Expr" }, { - "id": "0x5556537886f0-Name", + "id": "0x5586ec7e5610-Name", "source": "i" }, { - "id": "0x555653773660-Expr", + "id": "0x5586ec7e86c0-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x555653773680-LiteralConstant" + "LiteralConstant": "0x5586ec7e86e0-LiteralConstant" }, { - "id": "0x555653773680-LiteralConstant", + "id": "0x5586ec7e86e0-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x555653773680-IntLiteralConstant" + "IntLiteralConstant": "0x5586ec7e86e0-IntLiteralConstant" }, { - "id": "0x555653773680-IntLiteralConstant", + "id": "0x5586ec7e86e0-IntLiteralConstant", "CharBlock": "1" }, { - "id": "0x5556537737a0-Expr", + "id": "0x5586ec7e8800-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x5556537737c0-LiteralConstant" + "LiteralConstant": "0x5586ec7e8820-LiteralConstant" }, { - "id": "0x5556537737c0-LiteralConstant", + "id": "0x5586ec7e8820-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x5556537737c0-IntLiteralConstant" + "IntLiteralConstant": "0x5586ec7e8820-IntLiteralConstant" }, { - "id": "0x5556537737c0-IntLiteralConstant", + "id": "0x5586ec7e8820-IntLiteralConstant", "CharBlock": "8" }, { - "id": "0x55565377f730-AcValue", + "id": "0x5586ec7f4660-AcValue", "variantKey": "Expr", - "Expr": "0x5556537738e0-Expr" + "Expr": "0x5586ec7e8940-Expr" }, { - "id": "0x5556537738e0-Expr", + "id": "0x5586ec7e8940-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x555653773900-LiteralConstant" + "LiteralConstant": "0x5586ec7e8960-LiteralConstant" }, { - "id": "0x555653773900-LiteralConstant", + "id": "0x5586ec7e8960-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x555653773900-IntLiteralConstant" + "IntLiteralConstant": "0x5586ec7e8960-IntLiteralConstant" }, { - "id": "0x555653773900-IntLiteralConstant", + "id": "0x5586ec7e8960-IntLiteralConstant", "CharBlock": "99" }, { - "id": "0x555653774330-ExecutionPartConstruct", + "id": "0x5586ec7e9390-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x555653774330-ExecutableConstruct" + "ExecutableConstruct": "0x5586ec7e9390-ExecutableConstruct" }, { - "id": "0x555653774330-ExecutableConstruct", + "id": "0x5586ec7e9390-ExecutableConstruct", "variantKey": "Statement", - "Statement": "0x555653774330-Statement" + "Statement": "0x5586ec7e9390-Statement" }, { - "id": "0x555653774330-Statement", - "statement": "0x555653774340-ActionStmt", + "id": "0x5586ec7e9390-Statement", + "statement": "0x5586ec7e93a0-ActionStmt", "source": "arr5 = [integer ::(i * 2, i = 1, 10)]" }, { - "id": "0x555653774340-ActionStmt", + "id": "0x5586ec7e93a0-ActionStmt", "variantKey": "AssignmentStmt", - "AssignmentStmt": "0x555653774210-AssignmentStmt" + "AssignmentStmt": "0x5586ec7e9270-AssignmentStmt" }, { - "id": "0x555653774210-AssignmentStmt", - "Variable": "0x5556537742f0-Variable", - "Expr": "0x555653774220-Expr" + "id": "0x5586ec7e9270-AssignmentStmt", + "Variable": "0x5586ec7e9350-Variable", + "Expr": "0x5586ec7e9280-Expr" }, { - "id": "0x5556537742f0-Variable", + "id": "0x5586ec7e9350-Variable", "variantKey": "Designator", - "Designator": "0x555653770ad0-Designator" + "Designator": "0x5586ec7e5f80-Designator" }, { - "id": "0x555653770ad0-Designator", + "id": "0x5586ec7e5f80-Designator", "variantKey": "DataRef", - "DataRef": "0x555653770ae0-DataRef" + "DataRef": "0x5586ec7e5f90-DataRef" }, { - "id": "0x555653770ae0-DataRef", + "id": "0x5586ec7e5f90-DataRef", "variantKey": "Name", - "Name": "0x555653770ae0-Name" + "Name": "0x5586ec7e5f90-Name" }, { - "id": "0x555653770ae0-Name", + "id": "0x5586ec7e5f90-Name", "source": "arr5" }, { - "id": "0x555653774220-Expr", + "id": "0x5586ec7e9280-Expr", "variantKey": "ArrayConstructor", - "ArrayConstructor": "0x555653774240-ArrayConstructor" + "ArrayConstructor": "0x5586ec7e92a0-ArrayConstructor" }, { - "id": "0x555653774240-ArrayConstructor", - "AcSpec": "0x555653774240-AcSpec" + "id": "0x5586ec7e92a0-ArrayConstructor", + "AcSpec": "0x5586ec7e92a0-AcSpec" }, { - "id": "0x555653774240-AcSpec", - "type": "0x555653774258-TypeSpec", + "id": "0x5586ec7e92a0-AcSpec", + "type": "0x5586ec7e92b8-TypeSpec", "values": [ - "0x55565377f820-AcValue" + "0x5586ec7f4750-AcValue" ] }, { - "id": "0x555653774258-TypeSpec", + "id": "0x5586ec7e92b8-TypeSpec", "variantKey": "IntrinsicTypeSpec", - "IntrinsicTypeSpec": "0x555653774260-IntrinsicTypeSpec" + "IntrinsicTypeSpec": "0x5586ec7e92c0-IntrinsicTypeSpec" }, { - "id": "0x555653774260-IntrinsicTypeSpec", + "id": "0x5586ec7e92c0-IntrinsicTypeSpec", "variantKey": "IntegerTypeSpec", - "IntegerTypeSpec": "0x555653774260-IntegerTypeSpec" + "IntegerTypeSpec": "0x5586ec7e92c0-IntegerTypeSpec" }, { - "id": "0x555653774260-IntegerTypeSpec" + "id": "0x5586ec7e92c0-IntegerTypeSpec" }, { - "id": "0x55565377f820-AcValue", + "id": "0x5586ec7f4750-AcValue", "variantKey": "AcImpliedDo", - "AcImpliedDo": "0x555653770780-AcImpliedDo" + "AcImpliedDo": "0x5586ec7e0aa0-AcImpliedDo" }, { - "id": "0x555653770780-AcImpliedDo", + "id": "0x5586ec7e0aa0-AcImpliedDo", "AcValue": [ - "0x55565377f7a0-AcValue" + "0x5586ec7f46d0-AcValue" ], - "AcImpliedDoControl": "0x555653770780-AcImpliedDoControl" + "AcImpliedDoControl": "0x5586ec7e0aa0-AcImpliedDoControl" }, { - "id": "0x55565377f7a0-AcValue", + "id": "0x5586ec7f46d0-AcValue", "variantKey": "Expr", - "Expr": "0x555653773ff0-Expr" + "Expr": "0x5586ec7e9050-Expr" }, { - "id": "0x555653773ff0-Expr", + "id": "0x5586ec7e9050-Expr", "variantKey": "Multiply", - "Multiply": "0x555653774010-Multiply" + "Multiply": "0x5586ec7e9070-Multiply" }, { - "id": "0x555653774010-Multiply", - "left": "0x555653773f10-Expr", - "right": "0x555653773cf0-Expr", + "id": "0x5586ec7e9070-Multiply", + "left": "0x5586ec7e8f70-Expr", + "right": "0x5586ec7e8d50-Expr", "op": "MULTIPLY" }, { - "id": "0x555653773f10-Expr", + "id": "0x5586ec7e8f70-Expr", "variantKey": "Designator", - "Designator": "0x555653773eb0-Designator" + "Designator": "0x5586ec7e8f10-Designator" }, { - "id": "0x555653773eb0-Designator", + "id": "0x5586ec7e8f10-Designator", "variantKey": "DataRef", - "DataRef": "0x555653773ec0-DataRef" + "DataRef": "0x5586ec7e8f20-DataRef" }, { - "id": "0x555653773ec0-DataRef", + "id": "0x5586ec7e8f20-DataRef", "variantKey": "Name", - "Name": "0x555653773ec0-Name" + "Name": "0x5586ec7e8f20-Name" }, { - "id": "0x555653773ec0-Name", + "id": "0x5586ec7e8f20-Name", "source": "i" }, { - "id": "0x555653773cf0-Expr", + "id": "0x5586ec7e8d50-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x555653773d10-LiteralConstant" + "LiteralConstant": "0x5586ec7e8d70-LiteralConstant" }, { - "id": "0x555653773d10-LiteralConstant", + "id": "0x5586ec7e8d70-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x555653773d10-IntLiteralConstant" + "IntLiteralConstant": "0x5586ec7e8d70-IntLiteralConstant" }, { - "id": "0x555653773d10-IntLiteralConstant", + "id": "0x5586ec7e8d70-IntLiteralConstant", "CharBlock": "2" }, { - "id": "0x555653770780-AcImpliedDoControl", - "value": "0x555653770780-LoopBounds" + "id": "0x5586ec7e0aa0-AcImpliedDoControl", + "value": "0x5586ec7e0aa0-LoopBounds" }, { - "id": "0x555653770780-LoopBounds", - "var": "0x555653770780-Name", - "lower": "0x555653773dd0-Expr", - "upper": "0x555653774130-Expr" + "id": "0x5586ec7e0aa0-LoopBounds", + "var": "0x5586ec7e0aa0-Name", + "lower": "0x5586ec7e8e30-Expr", + "upper": "0x5586ec7e9190-Expr" }, { - "id": "0x555653770780-Name", + "id": "0x5586ec7e0aa0-Name", "source": "i" }, { - "id": "0x555653773dd0-Expr", + "id": "0x5586ec7e8e30-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x555653773df0-LiteralConstant" + "LiteralConstant": "0x5586ec7e8e50-LiteralConstant" }, { - "id": "0x555653773df0-LiteralConstant", + "id": "0x5586ec7e8e50-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x555653773df0-IntLiteralConstant" + "IntLiteralConstant": "0x5586ec7e8e50-IntLiteralConstant" }, { - "id": "0x555653773df0-IntLiteralConstant", + "id": "0x5586ec7e8e50-IntLiteralConstant", "CharBlock": "1" }, { - "id": "0x555653774130-Expr", + "id": "0x5586ec7e9190-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x555653774150-LiteralConstant" + "LiteralConstant": "0x5586ec7e91b0-LiteralConstant" }, { - "id": "0x555653774150-LiteralConstant", + "id": "0x5586ec7e91b0-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x555653774150-IntLiteralConstant" + "IntLiteralConstant": "0x5586ec7e91b0-IntLiteralConstant" }, { - "id": "0x555653774150-IntLiteralConstant", + "id": "0x5586ec7e91b0-IntLiteralConstant", "CharBlock": "10" }, { - "id": "0x555653775a10-ExecutionPartConstruct", + "id": "0x5586ec7eaaf0-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x555653775a10-ExecutableConstruct" + "ExecutableConstruct": "0x5586ec7eaaf0-ExecutableConstruct" }, { - "id": "0x555653775a10-ExecutableConstruct", + "id": "0x5586ec7eaaf0-ExecutableConstruct", "variantKey": "Statement", - "Statement": "0x555653775a10-Statement" + "Statement": "0x5586ec7eaaf0-Statement" }, { - "id": "0x555653775a10-Statement", - "statement": "0x555653775a20-ActionStmt", + "id": "0x5586ec7eaaf0-Statement", + "statement": "0x5586ec7eab00-ActionStmt", "source": "arr6 = [((i + j, i = 1, 3), j = 1, 3)]" }, { - "id": "0x555653775a20-ActionStmt", + "id": "0x5586ec7eab00-ActionStmt", "variantKey": "AssignmentStmt", - "AssignmentStmt": "0x555653775880-AssignmentStmt" + "AssignmentStmt": "0x5586ec7ea960-AssignmentStmt" }, { - "id": "0x555653775880-AssignmentStmt", - "Variable": "0x555653775960-Variable", - "Expr": "0x555653775890-Expr" + "id": "0x5586ec7ea960-AssignmentStmt", + "Variable": "0x5586ec7eaa40-Variable", + "Expr": "0x5586ec7ea970-Expr" }, { - "id": "0x555653775960-Variable", + "id": "0x5586ec7eaa40-Variable", "variantKey": "Designator", - "Designator": "0x5556537815f0-Designator" + "Designator": "0x5586ec7f6680-Designator" }, { - "id": "0x5556537815f0-Designator", + "id": "0x5586ec7f6680-Designator", "variantKey": "DataRef", - "DataRef": "0x555653781600-DataRef" + "DataRef": "0x5586ec7f6690-DataRef" }, { - "id": "0x555653781600-DataRef", + "id": "0x5586ec7f6690-DataRef", "variantKey": "Name", - "Name": "0x555653781600-Name" + "Name": "0x5586ec7f6690-Name" }, { - "id": "0x555653781600-Name", + "id": "0x5586ec7f6690-Name", "source": "arr6" }, { - "id": "0x555653775890-Expr", + "id": "0x5586ec7ea970-Expr", "variantKey": "ArrayConstructor", - "ArrayConstructor": "0x5556537758b0-ArrayConstructor" + "ArrayConstructor": "0x5586ec7ea990-ArrayConstructor" }, { - "id": "0x5556537758b0-ArrayConstructor", - "AcSpec": "0x5556537758b0-AcSpec" + "id": "0x5586ec7ea990-ArrayConstructor", + "AcSpec": "0x5586ec7ea990-AcSpec" }, { - "id": "0x5556537758b0-AcSpec", + "id": "0x5586ec7ea990-AcSpec", "values": [ - "0x55565377f920-AcValue" + "0x5586ec7f4850-AcValue" ] }, { - "id": "0x55565377f920-AcValue", + "id": "0x5586ec7f4850-AcValue", "variantKey": "AcImpliedDo", - "AcImpliedDo": "0x555653770880-AcImpliedDo" + "AcImpliedDo": "0x5586ec7e5da0-AcImpliedDo" }, { - "id": "0x555653770880-AcImpliedDo", + "id": "0x5586ec7e5da0-AcImpliedDo", "AcValue": [ - "0x55565377f8c0-AcValue" + "0x5586ec7f47f0-AcValue" ], - "AcImpliedDoControl": "0x555653770880-AcImpliedDoControl" + "AcImpliedDoControl": "0x5586ec7e5da0-AcImpliedDoControl" }, { - "id": "0x55565377f8c0-AcValue", + "id": "0x5586ec7f47f0-AcValue", "variantKey": "AcImpliedDo", - "AcImpliedDo": "0x55565376baf0-AcImpliedDo" + "AcImpliedDo": "0x5586ec7e5710-AcImpliedDo" }, { - "id": "0x55565376baf0-AcImpliedDo", + "id": "0x5586ec7e5710-AcImpliedDo", "AcValue": [ - "0x55565377f880-AcValue" + "0x5586ec7f47b0-AcValue" ], - "AcImpliedDoControl": "0x55565376baf0-AcImpliedDoControl" + "AcImpliedDoControl": "0x5586ec7e5710-AcImpliedDoControl" }, { - "id": "0x55565377f880-AcValue", + "id": "0x5586ec7f47b0-AcValue", "variantKey": "Expr", - "Expr": "0x555653774740-Expr" + "Expr": "0x5586ec7e9820-Expr" }, { - "id": "0x555653774740-Expr", + "id": "0x5586ec7e9820-Expr", "variantKey": "Add", - "Add": "0x555653774760-Add" + "Add": "0x5586ec7e9840-Add" }, { - "id": "0x555653774760-Add", - "left": "0x555653774660-Expr", - "right": "0x555653774380-Expr", + "id": "0x5586ec7e9840-Add", + "left": "0x5586ec7e9740-Expr", + "right": "0x5586ec7e9460-Expr", "op": "ADD" }, { - "id": "0x555653774660-Expr", + "id": "0x5586ec7e9740-Expr", "variantKey": "Designator", - "Designator": "0x555653773740-Designator" + "Designator": "0x5586ec7e87a0-Designator" }, { - "id": "0x555653773740-Designator", + "id": "0x5586ec7e87a0-Designator", "variantKey": "DataRef", - "DataRef": "0x555653773750-DataRef" + "DataRef": "0x5586ec7e87b0-DataRef" }, { - "id": "0x555653773750-DataRef", + "id": "0x5586ec7e87b0-DataRef", "variantKey": "Name", - "Name": "0x555653773750-Name" + "Name": "0x5586ec7e87b0-Name" }, { - "id": "0x555653773750-Name", + "id": "0x5586ec7e87b0-Name", "source": "i" }, { - "id": "0x555653774380-Expr", + "id": "0x5586ec7e9460-Expr", "variantKey": "Designator", - "Designator": "0x555653774600-Designator" + "Designator": "0x5586ec7e96e0-Designator" }, { - "id": "0x555653774600-Designator", + "id": "0x5586ec7e96e0-Designator", "variantKey": "DataRef", - "DataRef": "0x555653774610-DataRef" + "DataRef": "0x5586ec7e96f0-DataRef" }, { - "id": "0x555653774610-DataRef", + "id": "0x5586ec7e96f0-DataRef", "variantKey": "Name", - "Name": "0x555653774610-Name" + "Name": "0x5586ec7e96f0-Name" }, { - "id": "0x555653774610-Name", + "id": "0x5586ec7e96f0-Name", "source": "j" }, { - "id": "0x55565376baf0-AcImpliedDoControl", - "value": "0x55565376baf0-LoopBounds" + "id": "0x5586ec7e5710-AcImpliedDoControl", + "value": "0x5586ec7e5710-LoopBounds" }, { - "id": "0x55565376baf0-LoopBounds", - "var": "0x55565376baf0-Name", - "lower": "0x555653774460-Expr", - "upper": "0x555653774b20-Expr" + "id": "0x5586ec7e5710-LoopBounds", + "var": "0x5586ec7e5710-Name", + "lower": "0x5586ec7e9540-Expr", + "upper": "0x5586ec7e9c00-Expr" }, { - "id": "0x55565376baf0-Name", + "id": "0x5586ec7e5710-Name", "source": "i" }, { - "id": "0x555653774460-Expr", + "id": "0x5586ec7e9540-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x555653774480-LiteralConstant" + "LiteralConstant": "0x5586ec7e9560-LiteralConstant" }, { - "id": "0x555653774480-LiteralConstant", + "id": "0x5586ec7e9560-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x555653774480-IntLiteralConstant" + "IntLiteralConstant": "0x5586ec7e9560-IntLiteralConstant" }, { - "id": "0x555653774480-IntLiteralConstant", + "id": "0x5586ec7e9560-IntLiteralConstant", "CharBlock": "1" }, { - "id": "0x555653774b20-Expr", + "id": "0x5586ec7e9c00-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x555653774b40-LiteralConstant" + "LiteralConstant": "0x5586ec7e9c20-LiteralConstant" }, { - "id": "0x555653774b40-LiteralConstant", + "id": "0x5586ec7e9c20-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x555653774b40-IntLiteralConstant" + "IntLiteralConstant": "0x5586ec7e9c20-IntLiteralConstant" }, { - "id": "0x555653774b40-IntLiteralConstant", + "id": "0x5586ec7e9c20-IntLiteralConstant", "CharBlock": "3" }, { - "id": "0x555653770880-AcImpliedDoControl", - "value": "0x555653770880-LoopBounds" + "id": "0x5586ec7e5da0-AcImpliedDoControl", + "value": "0x5586ec7e5da0-LoopBounds" }, { - "id": "0x555653770880-LoopBounds", - "var": "0x555653770880-Name", - "lower": "0x555653775190-Expr", - "upper": "0x555653775650-Expr" + "id": "0x5586ec7e5da0-LoopBounds", + "var": "0x5586ec7e5da0-Name", + "lower": "0x5586ec7ea270-Expr", + "upper": "0x5586ec7ea730-Expr" }, { - "id": "0x555653770880-Name", + "id": "0x5586ec7e5da0-Name", "source": "j" }, { - "id": "0x555653775190-Expr", + "id": "0x5586ec7ea270-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x5556537751b0-LiteralConstant" + "LiteralConstant": "0x5586ec7ea290-LiteralConstant" }, { - "id": "0x5556537751b0-LiteralConstant", + "id": "0x5586ec7ea290-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x5556537751b0-IntLiteralConstant" + "IntLiteralConstant": "0x5586ec7ea290-IntLiteralConstant" }, { - "id": "0x5556537751b0-IntLiteralConstant", + "id": "0x5586ec7ea290-IntLiteralConstant", "CharBlock": "1" }, { - "id": "0x555653775650-Expr", + "id": "0x5586ec7ea730-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x555653775670-LiteralConstant" + "LiteralConstant": "0x5586ec7ea750-LiteralConstant" }, { - "id": "0x555653775670-LiteralConstant", + "id": "0x5586ec7ea750-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x555653775670-IntLiteralConstant" + "IntLiteralConstant": "0x5586ec7ea750-IntLiteralConstant" }, { - "id": "0x555653775670-IntLiteralConstant", + "id": "0x5586ec7ea750-IntLiteralConstant", "CharBlock": "3" }, { - "id": "0x555653776500-ExecutionPartConstruct", + "id": "0x5586ec7eb5e0-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x555653776500-ExecutableConstruct" + "ExecutableConstruct": "0x5586ec7eb5e0-ExecutableConstruct" }, { - "id": "0x555653776500-ExecutableConstruct", + "id": "0x5586ec7eb5e0-ExecutableConstruct", "variantKey": "Statement", - "Statement": "0x555653776500-Statement" + "Statement": "0x5586ec7eb5e0-Statement" }, { - "id": "0x555653776500-Statement", - "statement": "0x555653776510-ActionStmt", + "id": "0x5586ec7eb5e0-Statement", + "statement": "0x5586ec7eb5f0-ActionStmt", "source": "arr7 = [(i, i * 10, i * 100, i = 1, 5)]" }, { - "id": "0x555653776510-ActionStmt", + "id": "0x5586ec7eb5f0-ActionStmt", "variantKey": "AssignmentStmt", - "AssignmentStmt": "0x5556537763e0-AssignmentStmt" + "AssignmentStmt": "0x5586ec7eb4c0-AssignmentStmt" }, { - "id": "0x5556537763e0-AssignmentStmt", - "Variable": "0x5556537764c0-Variable", - "Expr": "0x5556537763f0-Expr" + "id": "0x5586ec7eb4c0-AssignmentStmt", + "Variable": "0x5586ec7eb5a0-Variable", + "Expr": "0x5586ec7eb4d0-Expr" }, { - "id": "0x5556537764c0-Variable", + "id": "0x5586ec7eb5a0-Variable", "variantKey": "Designator", - "Designator": "0x555653774900-Designator" + "Designator": "0x5586ec7e99e0-Designator" }, { - "id": "0x555653774900-Designator", + "id": "0x5586ec7e99e0-Designator", "variantKey": "DataRef", - "DataRef": "0x555653774910-DataRef" + "DataRef": "0x5586ec7e99f0-DataRef" }, { - "id": "0x555653774910-DataRef", + "id": "0x5586ec7e99f0-DataRef", "variantKey": "Name", - "Name": "0x555653774910-Name" + "Name": "0x5586ec7e99f0-Name" }, { - "id": "0x555653774910-Name", + "id": "0x5586ec7e99f0-Name", "source": "arr7" }, { - "id": "0x5556537763f0-Expr", + "id": "0x5586ec7eb4d0-Expr", "variantKey": "ArrayConstructor", - "ArrayConstructor": "0x555653776410-ArrayConstructor" + "ArrayConstructor": "0x5586ec7eb4f0-ArrayConstructor" }, { - "id": "0x555653776410-ArrayConstructor", - "AcSpec": "0x555653776410-AcSpec" + "id": "0x5586ec7eb4f0-ArrayConstructor", + "AcSpec": "0x5586ec7eb4f0-AcSpec" }, { - "id": "0x555653776410-AcSpec", + "id": "0x5586ec7eb4f0-AcSpec", "values": [ - "0x55565377f560-AcValue" + "0x5586ec7f4490-AcValue" ] }, { - "id": "0x55565377f560-AcValue", + "id": "0x5586ec7f4490-AcValue", "variantKey": "AcImpliedDo", - "AcImpliedDo": "0x5556537715d0-AcImpliedDo" + "AcImpliedDo": "0x5586ec7e93e0-AcImpliedDo" }, { - "id": "0x5556537715d0-AcImpliedDo", + "id": "0x5586ec7e93e0-AcImpliedDo", "AcValue": [ - "0x55565377f500-AcValue", - "0x55565377f6f0-AcValue", - "0x55565377f4c0-AcValue" + "0x5586ec7f4430-AcValue", + "0x5586ec7f4620-AcValue", + "0x5586ec7f43f0-AcValue" ], - "AcImpliedDoControl": "0x5556537715d0-AcImpliedDoControl" + "AcImpliedDoControl": "0x5586ec7e93e0-AcImpliedDoControl" }, { - "id": "0x55565377f500-AcValue", + "id": "0x5586ec7f4430-AcValue", "variantKey": "Expr", - "Expr": "0x555653775ca0-Expr" + "Expr": "0x5586ec7ead80-Expr" }, { - "id": "0x555653775ca0-Expr", + "id": "0x5586ec7ead80-Expr", "variantKey": "Designator", - "Designator": "0x5556537740d0-Designator" + "Designator": "0x5586ec7e9130-Designator" }, { - "id": "0x5556537740d0-Designator", + "id": "0x5586ec7e9130-Designator", "variantKey": "DataRef", - "DataRef": "0x5556537740e0-DataRef" + "DataRef": "0x5586ec7e9140-DataRef" }, { - "id": "0x5556537740e0-DataRef", + "id": "0x5586ec7e9140-DataRef", "variantKey": "Name", - "Name": "0x5556537740e0-Name" + "Name": "0x5586ec7e9140-Name" }, { - "id": "0x5556537740e0-Name", + "id": "0x5586ec7e9140-Name", "source": "i" }, { - "id": "0x55565377f6f0-AcValue", + "id": "0x5586ec7f4620-AcValue", "variantKey": "Expr", - "Expr": "0x555653775bc0-Expr" + "Expr": "0x5586ec7eaca0-Expr" }, { - "id": "0x555653775bc0-Expr", + "id": "0x5586ec7eaca0-Expr", "variantKey": "Multiply", - "Multiply": "0x555653775be0-Multiply" + "Multiply": "0x5586ec7eacc0-Multiply" }, { - "id": "0x555653775be0-Multiply", - "left": "0x555653775ae0-Expr", - "right": "0x555653775d80-Expr", + "id": "0x5586ec7eacc0-Multiply", + "left": "0x5586ec7eabc0-Expr", + "right": "0x5586ec7eae60-Expr", "op": "MULTIPLY" }, { - "id": "0x555653775ae0-Expr", + "id": "0x5586ec7eabc0-Expr", "variantKey": "Designator", - "Designator": "0x555653771150-Designator" + "Designator": "0x5586ec7e6440-Designator" }, { - "id": "0x555653771150-Designator", + "id": "0x5586ec7e6440-Designator", "variantKey": "DataRef", - "DataRef": "0x555653771160-DataRef" + "DataRef": "0x5586ec7e6450-DataRef" }, { - "id": "0x555653771160-DataRef", + "id": "0x5586ec7e6450-DataRef", "variantKey": "Name", - "Name": "0x555653771160-Name" + "Name": "0x5586ec7e6450-Name" }, { - "id": "0x555653771160-Name", + "id": "0x5586ec7e6450-Name", "source": "i" }, { - "id": "0x555653775d80-Expr", + "id": "0x5586ec7eae60-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x555653775da0-LiteralConstant" + "LiteralConstant": "0x5586ec7eae80-LiteralConstant" }, { - "id": "0x555653775da0-LiteralConstant", + "id": "0x5586ec7eae80-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x555653775da0-IntLiteralConstant" + "IntLiteralConstant": "0x5586ec7eae80-IntLiteralConstant" }, { - "id": "0x555653775da0-IntLiteralConstant", + "id": "0x5586ec7eae80-IntLiteralConstant", "CharBlock": "10" }, { - "id": "0x55565377f4c0-AcValue", + "id": "0x5586ec7f43f0-AcValue", "variantKey": "Expr", - "Expr": "0x555653775f40-Expr" + "Expr": "0x5586ec7eb020-Expr" }, { - "id": "0x555653775f40-Expr", + "id": "0x5586ec7eb020-Expr", "variantKey": "Multiply", - "Multiply": "0x555653775f60-Multiply" + "Multiply": "0x5586ec7eb040-Multiply" }, { - "id": "0x555653775f60-Multiply", - "left": "0x555653775e60-Expr", - "right": "0x555653776020-Expr", + "id": "0x5586ec7eb040-Multiply", + "left": "0x5586ec7eaf40-Expr", + "right": "0x5586ec7eb100-Expr", "op": "MULTIPLY" }, { - "id": "0x555653775e60-Expr", + "id": "0x5586ec7eaf40-Expr", "variantKey": "Designator", - "Designator": "0x555653770df0-Designator" + "Designator": "0x5586ec7e5960-Designator" }, { - "id": "0x555653770df0-Designator", + "id": "0x5586ec7e5960-Designator", "variantKey": "DataRef", - "DataRef": "0x555653770e00-DataRef" + "DataRef": "0x5586ec7e5970-DataRef" }, { - "id": "0x555653770e00-DataRef", + "id": "0x5586ec7e5970-DataRef", "variantKey": "Name", - "Name": "0x555653770e00-Name" + "Name": "0x5586ec7e5970-Name" }, { - "id": "0x555653770e00-Name", + "id": "0x5586ec7e5970-Name", "source": "i" }, { - "id": "0x555653776020-Expr", + "id": "0x5586ec7eb100-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x555653776040-LiteralConstant" + "LiteralConstant": "0x5586ec7eb120-LiteralConstant" }, { - "id": "0x555653776040-LiteralConstant", + "id": "0x5586ec7eb120-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x555653776040-IntLiteralConstant" + "IntLiteralConstant": "0x5586ec7eb120-IntLiteralConstant" }, { - "id": "0x555653776040-IntLiteralConstant", + "id": "0x5586ec7eb120-IntLiteralConstant", "CharBlock": "100" }, { - "id": "0x5556537715d0-AcImpliedDoControl", - "value": "0x5556537715d0-LoopBounds" + "id": "0x5586ec7e93e0-AcImpliedDoControl", + "value": "0x5586ec7e93e0-LoopBounds" }, { - "id": "0x5556537715d0-LoopBounds", - "var": "0x5556537715d0-Name", - "lower": "0x5556537761c0-Expr", - "upper": "0x555653776300-Expr" + "id": "0x5586ec7e93e0-LoopBounds", + "var": "0x5586ec7e93e0-Name", + "lower": "0x5586ec7eb2a0-Expr", + "upper": "0x5586ec7eb3e0-Expr" }, { - "id": "0x5556537715d0-Name", + "id": "0x5586ec7e93e0-Name", "source": "i" }, { - "id": "0x5556537761c0-Expr", + "id": "0x5586ec7eb2a0-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x5556537761e0-LiteralConstant" + "LiteralConstant": "0x5586ec7eb2c0-LiteralConstant" }, { - "id": "0x5556537761e0-LiteralConstant", + "id": "0x5586ec7eb2c0-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x5556537761e0-IntLiteralConstant" + "IntLiteralConstant": "0x5586ec7eb2c0-IntLiteralConstant" }, { - "id": "0x5556537761e0-IntLiteralConstant", + "id": "0x5586ec7eb2c0-IntLiteralConstant", "CharBlock": "1" }, { - "id": "0x555653776300-Expr", + "id": "0x5586ec7eb3e0-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x555653776320-LiteralConstant" + "LiteralConstant": "0x5586ec7eb400-LiteralConstant" }, { - "id": "0x555653776320-LiteralConstant", + "id": "0x5586ec7eb400-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x555653776320-IntLiteralConstant" + "IntLiteralConstant": "0x5586ec7eb400-IntLiteralConstant" }, { - "id": "0x555653776320-IntLiteralConstant", + "id": "0x5586ec7eb400-IntLiteralConstant", "CharBlock": "5" }, { - "id": "0x555653779800-Statement", - "statement": "0x555653779810-EndProgramStmt", + "id": "0x5586ec7ee850-Statement", + "statement": "0x5586ec7ee860-EndProgramStmt", "source": "end program TEST_IMPLIED_DO" }, { - "id": "0x555653779810-EndProgramStmt", - "Name": "0x555653779810-Name" + "id": "0x5586ec7ee860-EndProgramStmt", + "Name": "0x5586ec7ee860-Name" }, { - "id": "0x555653779810-Name", + "id": "0x5586ec7ee860-Name", "source": "TEST_IMPLIED_DO" } ], "comments": [ { - "text": "! Basic implied-do", - "stmtId": "0x555653772670-Statement", + "text": " Basic implied-do", + "stmtId": "0x5586ec7e75f0-Statement", "trailing": false }, { - "text": "! With expression", - "stmtId": "0x555653772e40-Statement", + "text": " With expression", + "stmtId": "0x5586ec7e7ea0-Statement", "trailing": false }, { - "text": "! With step", - "stmtId": "0x5556537733f0-Statement", + "text": " With step", + "stmtId": "0x5586ec7e8450-Statement", "trailing": false }, { - "text": "! Mixed values and implied-do", - "stmtId": "0x555653773ca0-Statement", + "text": " Mixed values and implied-do", + "stmtId": "0x5586ec7e8d00-Statement", "trailing": false }, { - "text": "! With type-spec", - "stmtId": "0x555653774330-Statement", + "text": " With type-spec", + "stmtId": "0x5586ec7e9390-Statement", "trailing": false }, { - "text": "! Nested implied-do", - "stmtId": "0x555653775a10-Statement", + "text": " Nested implied-do", + "stmtId": "0x5586ec7eaaf0-Statement", "trailing": false }, { - "text": "! Multiple values per iteration", - "stmtId": "0x555653776500-Statement", + "text": " Multiple values per iteration", + "stmtId": "0x5586ec7eb5e0-Statement", "trailing": false } ], diff --git a/FortranParser/resources-test/fortran/parser/binary_operator.expected.f90 b/FortranParser/resources-test/fortran/parser/binary_operator.expected.f90 index 900293fa..1dc64851 100644 --- a/FortranParser/resources-test/fortran/parser/binary_operator.expected.f90 +++ b/FortranParser/resources-test/fortran/parser/binary_operator.expected.f90 @@ -1,5 +1,5 @@ PROGRAM TEST_EXPRS - LOGICAL :: l + LOGICAL :: l, l1 = .TRUE., l2 = .FALSE. INTEGER :: i, a = 1, b = 1 l = 0 < a l = 2 <= 3 @@ -8,11 +8,15 @@ PROGRAM TEST_EXPRS l = a == b l = 0 /= 1 + l = l1 .AND. l2 + l = l1 .OR. l2 + l = l1 .EQV. l2 + l = l1 .NEQV. l2 + i = a + 1 i = a - b i = 4 * 5 i = 6 / b i = 0 + 1 - b * 5 / a + 7 - END PROGRAM TEST_EXPRS \ No newline at end of file diff --git a/FortranParser/resources-test/fortran/parser/binary_operator.f90 b/FortranParser/resources-test/fortran/parser/binary_operator.f90 index 6b96bc70..de887b32 100644 --- a/FortranParser/resources-test/fortran/parser/binary_operator.f90 +++ b/FortranParser/resources-test/fortran/parser/binary_operator.f90 @@ -1,5 +1,5 @@ program test_exprs - logical :: l + logical :: l, l1 = .true., l2 = .false. integer :: i, a = 1, b = 1 l = 0 < a l = 2 <= 3 @@ -8,11 +8,15 @@ program test_exprs l = a == b l = 0 /= 1 + l = l1 .and. l2 + l = l1 .or. l2 + l = l1 .eqv. l2 + l = l1 .neqv. l2 + i = a + 1 i = a - b i = 4 * 5 i = 6 / b i = 0 + 1 - b * 5 / a + 7 - end program test_exprs \ No newline at end of file diff --git a/FortranParser/resources-test/fortran/parser/binary_operator.json b/FortranParser/resources-test/fortran/parser/binary_operator.json index e8f00fcb..1caf8b43 100644 --- a/FortranParser/resources-test/fortran/parser/binary_operator.json +++ b/FortranParser/resources-test/fortran/parser/binary_operator.json @@ -1,1287 +1,1723 @@ { + "fileExtension": "f90", "nodes": [ { - "id": "0x55876aff3f00-Program", + "id": "0x55e0a3522f00-Program", "ProgramUnit": [ - "0x55876b031820-ProgramUnit" + "0x55e0a3560810-ProgramUnit" ] }, { - "id": "0x55876b031820-ProgramUnit", + "id": "0x55e0a3560810-ProgramUnit", "variantKey": "MainProgram", - "MainProgram": "0x55876b024820-MainProgram" + "MainProgram": "0x55e0a355fda0-MainProgram" }, { - "id": "0x55876b024820-MainProgram", - "Statement": "0x55876b024968-Statement", - "SpecificationPart": "0x55876b0248c0-SpecificationPart", - "ExecutionPart": "0x55876b0248a8-ExecutionPart", - "Statement": "0x55876b024820-Statement" + "id": "0x55e0a355fda0-MainProgram", + "Statement": "0x55e0a355fee8-Statement", + "SpecificationPart": "0x55e0a355fe40-SpecificationPart", + "ExecutionPart": "0x55e0a355fe28-ExecutionPart", + "Statement": "0x55e0a355fda0-Statement" }, { - "id": "0x55876b024968-Statement", - "statement": "0x55876b024978-ProgramStmt", + "id": "0x55e0a355fee8-Statement", + "statement": "0x55e0a355fef8-ProgramStmt", "source": "program TEST_EXPRS" }, { - "id": "0x55876b024978-ProgramStmt", - "Name": "0x55876b024978-Name" + "id": "0x55e0a355fef8-ProgramStmt", + "Name": "0x55e0a355fef8-Name" }, { - "id": "0x55876b024978-Name", + "id": "0x55e0a355fef8-Name", "source": "TEST_EXPRS" }, { - "id": "0x55876b0248c0-SpecificationPart", - "ImplicitPart": "0x55876b0248d8-ImplicitPart", + "id": "0x55e0a355fe40-SpecificationPart", + "ImplicitPart": "0x55e0a355fe58-ImplicitPart", "DeclarationConstruct": [ - "0x55876b001110-DeclarationConstruct", - "0x55876b02ee30-DeclarationConstruct" + "0x55e0a352fda0-DeclarationConstruct", + "0x55e0a355e160-DeclarationConstruct" ] }, { - "id": "0x55876b0248d8-ImplicitPart" + "id": "0x55e0a355fe58-ImplicitPart" }, { - "id": "0x55876b001110-DeclarationConstruct", + "id": "0x55e0a352fda0-DeclarationConstruct", "variantKey": "SpecificationConstruct", - "SpecificationConstruct": "0x55876b001110-SpecificationConstruct" + "SpecificationConstruct": "0x55e0a352fda0-SpecificationConstruct" }, { - "id": "0x55876b001110-SpecificationConstruct", + "id": "0x55e0a352fda0-SpecificationConstruct", "variantKey": "Statement", - "Statement": "0x55876b001110-Statement" + "Statement": "0x55e0a352fda0-Statement" }, { - "id": "0x55876b001110-Statement", - "statement": "0x55876b02e3b0-TypeDeclarationStmt", - "source": "logical :: l" + "id": "0x55e0a352fda0-Statement", + "statement": "0x55e0a355d3a0-TypeDeclarationStmt", + "source": "logical :: l, l1 = .true., l2 = .false." }, { - "id": "0x55876b02e3b0-TypeDeclarationStmt", - "DeclarationTypeSpec": "0x55876b02e3e0-DeclarationTypeSpec", + "id": "0x55e0a355d3a0-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x55e0a355d3d0-DeclarationTypeSpec", "EntityDecl": [ - "0x55876b02e4c0-EntityDecl" + "0x55e0a355da80-EntityDecl", + "0x55e0a355d590-EntityDecl", + "0x55e0a355d990-EntityDecl" ] }, { - "id": "0x55876b02e3e0-DeclarationTypeSpec", + "id": "0x55e0a355d3d0-DeclarationTypeSpec", "variantKey": "IntrinsicTypeSpec", - "IntrinsicTypeSpec": "0x55876b02e3e0-IntrinsicTypeSpec" + "IntrinsicTypeSpec": "0x55e0a355d3d0-IntrinsicTypeSpec" }, { - "id": "0x55876b02e3e0-IntrinsicTypeSpec", + "id": "0x55e0a355d3d0-IntrinsicTypeSpec", "variantKey": "Logical", - "Logical": "0x55876b02e3e0-Logical" + "Logical": "0x55e0a355d3d0-Logical" }, { - "id": "0x55876b02e3e0-Logical" + "id": "0x55e0a355d3d0-Logical" }, { - "id": "0x55876b02e4c0-EntityDecl", - "Name": "0x55876b02e578-Name" + "id": "0x55e0a355da80-EntityDecl", + "Name": "0x55e0a355db38-Name" }, { - "id": "0x55876b02e578-Name", + "id": "0x55e0a355db38-Name", "source": "l" }, { - "id": "0x55876b02ee30-DeclarationConstruct", + "id": "0x55e0a355d590-EntityDecl", + "Name": "0x55e0a355d648-Name", + "Initialization": "0x55e0a355d590-Initialization" + }, + { + "id": "0x55e0a355d648-Name", + "source": "l1" + }, + { + "id": "0x55e0a355d590-Initialization", + "variantKey": "Expr", + "Expr": "0x55e0a34c2790-Expr" + }, + { + "id": "0x55e0a34c2790-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55e0a34c27b0-LiteralConstant" + }, + { + "id": "0x55e0a34c27b0-LiteralConstant", + "variantKey": "LogicalLiteralConstant", + "LogicalLiteralConstant": "0x55e0a34c27b0-LogicalLiteralConstant" + }, + { + "id": "0x55e0a34c27b0-LogicalLiteralConstant", + "bool": "1" + }, + { + "id": "0x55e0a355d990-EntityDecl", + "Name": "0x55e0a355da48-Name", + "Initialization": "0x55e0a355d990-Initialization" + }, + { + "id": "0x55e0a355da48-Name", + "source": "l2" + }, + { + "id": "0x55e0a355d990-Initialization", + "variantKey": "Expr", + "Expr": "0x55e0a355d8a0-Expr" + }, + { + "id": "0x55e0a355d8a0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55e0a355d8c0-LiteralConstant" + }, + { + "id": "0x55e0a355d8c0-LiteralConstant", + "variantKey": "LogicalLiteralConstant", + "LogicalLiteralConstant": "0x55e0a355d8c0-LogicalLiteralConstant" + }, + { + "id": "0x55e0a355d8c0-LogicalLiteralConstant", + "bool": "0" + }, + { + "id": "0x55e0a355e160-DeclarationConstruct", "variantKey": "SpecificationConstruct", - "SpecificationConstruct": "0x55876b02ee30-SpecificationConstruct" + "SpecificationConstruct": "0x55e0a355e160-SpecificationConstruct" }, { - "id": "0x55876b02ee30-SpecificationConstruct", + "id": "0x55e0a355e160-SpecificationConstruct", "variantKey": "Statement", - "Statement": "0x55876b02ee30-Statement" + "Statement": "0x55e0a355e160-Statement" }, { - "id": "0x55876b02ee30-Statement", - "statement": "0x55876b02e430-TypeDeclarationStmt", + "id": "0x55e0a355e160-Statement", + "statement": "0x55e0a355d420-TypeDeclarationStmt", "source": "integer :: i, a = 1, b = 1" }, { - "id": "0x55876b02e430-TypeDeclarationStmt", - "DeclarationTypeSpec": "0x55876b02e460-DeclarationTypeSpec", + "id": "0x55e0a355d420-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x55e0a355d450-DeclarationTypeSpec", "EntityDecl": [ - "0x55876b02ec60-EntityDecl", - "0x55876b02e780-EntityDecl", - "0x55876b02eb70-EntityDecl" + "0x55e0a355e070-EntityDecl", + "0x55e0a355ddb0-EntityDecl", + "0x55e0a355df80-EntityDecl" ] }, { - "id": "0x55876b02e460-DeclarationTypeSpec", + "id": "0x55e0a355d450-DeclarationTypeSpec", "variantKey": "IntrinsicTypeSpec", - "IntrinsicTypeSpec": "0x55876b02e460-IntrinsicTypeSpec" + "IntrinsicTypeSpec": "0x55e0a355d450-IntrinsicTypeSpec" }, { - "id": "0x55876b02e460-IntrinsicTypeSpec", + "id": "0x55e0a355d450-IntrinsicTypeSpec", "variantKey": "IntegerTypeSpec", - "IntegerTypeSpec": "0x55876b02e460-IntegerTypeSpec" + "IntegerTypeSpec": "0x55e0a355d450-IntegerTypeSpec" }, { - "id": "0x55876b02e460-IntegerTypeSpec" + "id": "0x55e0a355d450-IntegerTypeSpec" }, { - "id": "0x55876b02ec60-EntityDecl", - "Name": "0x55876b02ed18-Name" + "id": "0x55e0a355e070-EntityDecl", + "Name": "0x55e0a355e128-Name" }, { - "id": "0x55876b02ed18-Name", + "id": "0x55e0a355e128-Name", "source": "i" }, { - "id": "0x55876b02e780-EntityDecl", - "Name": "0x55876b02e838-Name", - "Initialization": "0x55876b02e780-Initialization" + "id": "0x55e0a355ddb0-EntityDecl", + "Name": "0x55e0a355de68-Name", + "Initialization": "0x55e0a355ddb0-Initialization" }, { - "id": "0x55876b02e838-Name", + "id": "0x55e0a355de68-Name", "source": "a" }, { - "id": "0x55876b02e780-Initialization", + "id": "0x55e0a355ddb0-Initialization", "variantKey": "Expr", - "Expr": "0x55876b02e690-Expr" + "Expr": "0x55e0a355dcc0-Expr" }, { - "id": "0x55876b02e690-Expr", + "id": "0x55e0a355dcc0-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55876b02e6b0-LiteralConstant" + "LiteralConstant": "0x55e0a355dce0-LiteralConstant" }, { - "id": "0x55876b02e6b0-LiteralConstant", + "id": "0x55e0a355dce0-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55876b02e6b0-IntLiteralConstant" + "IntLiteralConstant": "0x55e0a355dce0-IntLiteralConstant" }, { - "id": "0x55876b02e6b0-IntLiteralConstant", + "id": "0x55e0a355dce0-IntLiteralConstant", "CharBlock": "1" }, { - "id": "0x55876b02eb70-EntityDecl", - "Name": "0x55876b02ec28-Name", - "Initialization": "0x55876b02eb70-Initialization" + "id": "0x55e0a355df80-EntityDecl", + "Name": "0x55e0a355e038-Name", + "Initialization": "0x55e0a355df80-Initialization" }, { - "id": "0x55876b02ec28-Name", + "id": "0x55e0a355e038-Name", "source": "b" }, { - "id": "0x55876b02eb70-Initialization", + "id": "0x55e0a355df80-Initialization", "variantKey": "Expr", - "Expr": "0x55876b02ea80-Expr" + "Expr": "0x55e0a355de90-Expr" }, { - "id": "0x55876b02ea80-Expr", + "id": "0x55e0a355de90-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55876b02eaa0-LiteralConstant" + "LiteralConstant": "0x55e0a355deb0-LiteralConstant" }, { - "id": "0x55876b02eaa0-LiteralConstant", + "id": "0x55e0a355deb0-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55876b02eaa0-IntLiteralConstant" + "IntLiteralConstant": "0x55e0a355deb0-IntLiteralConstant" }, { - "id": "0x55876b02eaa0-IntLiteralConstant", + "id": "0x55e0a355deb0-IntLiteralConstant", "CharBlock": "1" }, { - "id": "0x55876b0248a8-ExecutionPart", + "id": "0x55e0a355fe28-ExecutionPart", "ExecutionPartConstruct": [ - "0x55876b02fa60-ExecutionPartConstruct", - "0x55876b02f500-ExecutionPartConstruct", - "0x55876b01e700-ExecutionPartConstruct", - "0x55876b01ea30-ExecutionPartConstruct", - "0x55876b01efb0-ExecutionPartConstruct", - "0x55876b01f2e0-ExecutionPartConstruct", - "0x55876b01f6d0-ExecutionPartConstruct", - "0x55876b01fb80-ExecutionPartConstruct", - "0x55876b01f7f0-ExecutionPartConstruct", - "0x55876b0202a0-ExecutionPartConstruct", - "0x55876b0216d0-ExecutionPartConstruct" + "0x55e0a355f5a0-ExecutionPartConstruct", + "0x55e0a355eb00-ExecutionPartConstruct", + "0x55e0a354da50-ExecutionPartConstruct", + "0x55e0a354dd80-ExecutionPartConstruct", + "0x55e0a354e300-ExecutionPartConstruct", + "0x55e0a354e630-ExecutionPartConstruct", + "0x55e0a354eae0-ExecutionPartConstruct", + "0x55e0a354ef30-ExecutionPartConstruct", + "0x55e0a354f380-ExecutionPartConstruct", + "0x55e0a354f7d0-ExecutionPartConstruct", + "0x55e0a354fb60-ExecutionPartConstruct", + "0x55e0a3550010-ExecutionPartConstruct", + "0x55e0a354fc80-ExecutionPartConstruct", + "0x55e0a3550730-ExecutionPartConstruct", + "0x55e0a3551b60-ExecutionPartConstruct" ] }, { - "id": "0x55876b0248a8-ExecutionPartConstruct" + "id": "0x55e0a355fe28-ExecutionPartConstruct" }, { - "id": "0x55876b02fa60-ExecutionPartConstruct", + "id": "0x55e0a355f5a0-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x55876b02fa60-ExecutableConstruct" + "ExecutableConstruct": "0x55e0a355f5a0-ExecutableConstruct" }, { - "id": "0x55876b02fa60-ExecutableConstruct", + "id": "0x55e0a355f5a0-ExecutableConstruct", "variantKey": "Statement", - "Statement": "0x55876b02fa60-Statement" + "Statement": "0x55e0a355f5a0-Statement" }, { - "id": "0x55876b02fa60-Statement", - "statement": "0x55876b02fa70-ActionStmt", + "id": "0x55e0a355f5a0-Statement", + "statement": "0x55e0a355f5b0-ActionStmt", "source": "l = 0 < a" }, { - "id": "0x55876b02fa70-ActionStmt", + "id": "0x55e0a355f5b0-ActionStmt", "variantKey": "AssignmentStmt", - "AssignmentStmt": "0x55876b030960-AssignmentStmt" + "AssignmentStmt": "0x55e0a355f950-AssignmentStmt" }, { - "id": "0x55876b030960-AssignmentStmt", - "Variable": "0x55876b030a40-Variable", - "Expr": "0x55876b030970-Expr" + "id": "0x55e0a355f950-AssignmentStmt", + "Variable": "0x55e0a355fa30-Variable", + "Expr": "0x55e0a355f960-Expr" }, { - "id": "0x55876b030a40-Variable", + "id": "0x55e0a355fa30-Variable", "variantKey": "Designator", - "Designator": "0x55876b000d90-Designator" + "Designator": "0x55e0a355f670-Designator" }, { - "id": "0x55876b000d90-Designator", + "id": "0x55e0a355f670-Designator", "variantKey": "DataRef", - "DataRef": "0x55876b000da0-DataRef" + "DataRef": "0x55e0a355f680-DataRef" }, { - "id": "0x55876b000da0-DataRef", + "id": "0x55e0a355f680-DataRef", "variantKey": "Name", - "Name": "0x55876b000da0-Name" + "Name": "0x55e0a355f680-Name" }, { - "id": "0x55876b000da0-Name", + "id": "0x55e0a355f680-Name", "source": "l" }, { - "id": "0x55876b030970-Expr", + "id": "0x55e0a355f960-Expr", "variantKey": "LT", - "LT": "0x55876b030990-LT" + "LT": "0x55e0a355f980-LT" }, { - "id": "0x55876b030990-LT", - "left": "0x55876b0305c0-Expr", - "right": "0x55876b0304e0-Expr", + "id": "0x55e0a355f980-LT", + "left": "0x55e0a355e3b0-Expr", + "right": "0x55e0a355ee10-Expr", "op": "LT" }, { - "id": "0x55876b0305c0-Expr", + "id": "0x55e0a355e3b0-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55876b0305e0-LiteralConstant" + "LiteralConstant": "0x55e0a355e3d0-LiteralConstant" }, { - "id": "0x55876b0305e0-LiteralConstant", + "id": "0x55e0a355e3d0-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55876b0305e0-IntLiteralConstant" + "IntLiteralConstant": "0x55e0a355e3d0-IntLiteralConstant" }, { - "id": "0x55876b0305e0-IntLiteralConstant", + "id": "0x55e0a355e3d0-IntLiteralConstant", "CharBlock": "0" }, { - "id": "0x55876b0304e0-Expr", + "id": "0x55e0a355ee10-Expr", "variantKey": "Designator", - "Designator": "0x55876b02e860-Designator" + "Designator": "0x55e0a355d260-Designator" }, { - "id": "0x55876b02e860-Designator", + "id": "0x55e0a355d260-Designator", "variantKey": "DataRef", - "DataRef": "0x55876b02e870-DataRef" + "DataRef": "0x55e0a355d270-DataRef" }, { - "id": "0x55876b02e870-DataRef", + "id": "0x55e0a355d270-DataRef", "variantKey": "Name", - "Name": "0x55876b02e870-Name" + "Name": "0x55e0a355d270-Name" }, { - "id": "0x55876b02e870-Name", + "id": "0x55e0a355d270-Name", "source": "a" }, { - "id": "0x55876b02f500-ExecutionPartConstruct", + "id": "0x55e0a355eb00-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x55876b02f500-ExecutableConstruct" + "ExecutableConstruct": "0x55e0a355eb00-ExecutableConstruct" }, { - "id": "0x55876b02f500-ExecutableConstruct", + "id": "0x55e0a355eb00-ExecutableConstruct", "variantKey": "Statement", - "Statement": "0x55876b02f500-Statement" + "Statement": "0x55e0a355eb00-Statement" }, { - "id": "0x55876b02f500-Statement", - "statement": "0x55876b02f510-ActionStmt", + "id": "0x55e0a355eb00-Statement", + "statement": "0x55e0a355eb10-ActionStmt", "source": "l = 2 <= 3" }, { - "id": "0x55876b02f510-ActionStmt", + "id": "0x55e0a355eb10-ActionStmt", "variantKey": "AssignmentStmt", - "AssignmentStmt": "0x55876b02f2b0-AssignmentStmt" + "AssignmentStmt": "0x55e0a355e970-AssignmentStmt" }, { - "id": "0x55876b02f2b0-AssignmentStmt", - "Variable": "0x55876b02f390-Variable", - "Expr": "0x55876b02f2c0-Expr" + "id": "0x55e0a355e970-AssignmentStmt", + "Variable": "0x55e0a355ea50-Variable", + "Expr": "0x55e0a355e980-Expr" }, { - "id": "0x55876b02f390-Variable", + "id": "0x55e0a355ea50-Variable", "variantKey": "Designator", - "Designator": "0x55876b02fef0-Designator" + "Designator": "0x55e0a355f4d0-Designator" }, { - "id": "0x55876b02fef0-Designator", + "id": "0x55e0a355f4d0-Designator", "variantKey": "DataRef", - "DataRef": "0x55876b02ff00-DataRef" + "DataRef": "0x55e0a355f4e0-DataRef" }, { - "id": "0x55876b02ff00-DataRef", + "id": "0x55e0a355f4e0-DataRef", "variantKey": "Name", - "Name": "0x55876b02ff00-Name" + "Name": "0x55e0a355f4e0-Name" }, { - "id": "0x55876b02ff00-Name", + "id": "0x55e0a355f4e0-Name", "source": "l" }, { - "id": "0x55876b02f2c0-Expr", + "id": "0x55e0a355e980-Expr", "variantKey": "LE", - "LE": "0x55876b02f2e0-LE" + "LE": "0x55e0a355e9a0-LE" }, { - "id": "0x55876b02f2e0-LE", - "left": "0x55876b02f160-Expr", - "right": "0x55876b02f080-Expr", + "id": "0x55e0a355e9a0-LE", + "left": "0x55e0a355e820-Expr", + "right": "0x55e0a355e6b0-Expr", "op": "LE" }, { - "id": "0x55876b02f160-Expr", + "id": "0x55e0a355e820-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55876b02f180-LiteralConstant" + "LiteralConstant": "0x55e0a355e840-LiteralConstant" }, { - "id": "0x55876b02f180-LiteralConstant", + "id": "0x55e0a355e840-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55876b02f180-IntLiteralConstant" + "IntLiteralConstant": "0x55e0a355e840-IntLiteralConstant" }, { - "id": "0x55876b02f180-IntLiteralConstant", + "id": "0x55e0a355e840-IntLiteralConstant", "CharBlock": "2" }, { - "id": "0x55876b02f080-Expr", + "id": "0x55e0a355e6b0-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55876b02f0a0-LiteralConstant" + "LiteralConstant": "0x55e0a355e6d0-LiteralConstant" }, { - "id": "0x55876b02f0a0-LiteralConstant", + "id": "0x55e0a355e6d0-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55876b02f0a0-IntLiteralConstant" + "IntLiteralConstant": "0x55e0a355e6d0-IntLiteralConstant" }, { - "id": "0x55876b02f0a0-IntLiteralConstant", + "id": "0x55e0a355e6d0-IntLiteralConstant", "CharBlock": "3" }, { - "id": "0x55876b01e700-ExecutionPartConstruct", + "id": "0x55e0a354da50-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x55876b01e700-ExecutableConstruct" + "ExecutableConstruct": "0x55e0a354da50-ExecutableConstruct" }, { - "id": "0x55876b01e700-ExecutableConstruct", + "id": "0x55e0a354da50-ExecutableConstruct", "variantKey": "Statement", - "Statement": "0x55876b01e700-Statement" + "Statement": "0x55e0a354da50-Statement" }, { - "id": "0x55876b01e700-Statement", - "statement": "0x55876b01e710-ActionStmt", + "id": "0x55e0a354da50-Statement", + "statement": "0x55e0a354da60-ActionStmt", "source": "l = b > 5" }, { - "id": "0x55876b01e710-ActionStmt", + "id": "0x55e0a354da60-ActionStmt", "variantKey": "AssignmentStmt", - "AssignmentStmt": "0x55876b02f7d0-AssignmentStmt" + "AssignmentStmt": "0x55e0a354d930-AssignmentStmt" }, { - "id": "0x55876b02f7d0-AssignmentStmt", - "Variable": "0x55876b02f8b0-Variable", - "Expr": "0x55876b02f7e0-Expr" + "id": "0x55e0a354d930-AssignmentStmt", + "Variable": "0x55e0a354da10-Variable", + "Expr": "0x55e0a354d940-Expr" }, { - "id": "0x55876b02f8b0-Variable", + "id": "0x55e0a354da10-Variable", "variantKey": "Designator", - "Designator": "0x55876b02ff50-Designator" + "Designator": "0x55e0a355f530-Designator" }, { - "id": "0x55876b02ff50-Designator", + "id": "0x55e0a355f530-Designator", "variantKey": "DataRef", - "DataRef": "0x55876b02ff60-DataRef" + "DataRef": "0x55e0a355f540-DataRef" }, { - "id": "0x55876b02ff60-DataRef", + "id": "0x55e0a355f540-DataRef", "variantKey": "Name", - "Name": "0x55876b02ff60-Name" + "Name": "0x55e0a355f540-Name" }, { - "id": "0x55876b02ff60-Name", + "id": "0x55e0a355f540-Name", "source": "l" }, { - "id": "0x55876b02f7e0-Expr", + "id": "0x55e0a354d940-Expr", "variantKey": "GT", - "GT": "0x55876b02f800-GT" + "GT": "0x55e0a354d960-GT" }, { - "id": "0x55876b02f800-GT", - "left": "0x55876b02f6f0-Expr", - "right": "0x55876b02f610-Expr", + "id": "0x55e0a354d960-GT", + "left": "0x55e0a354d850-Expr", + "right": "0x55e0a354d770-Expr", "op": "GT" }, { - "id": "0x55876b02f6f0-Expr", + "id": "0x55e0a354d850-Expr", "variantKey": "Designator", - "Designator": "0x55876b02f550-Designator" + "Designator": "0x55e0a355eb50-Designator" }, { - "id": "0x55876b02f550-Designator", + "id": "0x55e0a355eb50-Designator", "variantKey": "DataRef", - "DataRef": "0x55876b02f560-DataRef" + "DataRef": "0x55e0a355eb60-DataRef" }, { - "id": "0x55876b02f560-DataRef", + "id": "0x55e0a355eb60-DataRef", "variantKey": "Name", - "Name": "0x55876b02f560-Name" + "Name": "0x55e0a355eb60-Name" }, { - "id": "0x55876b02f560-Name", + "id": "0x55e0a355eb60-Name", "source": "b" }, { - "id": "0x55876b02f610-Expr", + "id": "0x55e0a354d770-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55876b02f630-LiteralConstant" + "LiteralConstant": "0x55e0a354d790-LiteralConstant" }, { - "id": "0x55876b02f630-LiteralConstant", + "id": "0x55e0a354d790-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55876b02f630-IntLiteralConstant" + "IntLiteralConstant": "0x55e0a354d790-IntLiteralConstant" }, { - "id": "0x55876b02f630-IntLiteralConstant", + "id": "0x55e0a354d790-IntLiteralConstant", "CharBlock": "5" }, { - "id": "0x55876b01ea30-ExecutionPartConstruct", + "id": "0x55e0a354dd80-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x55876b01ea30-ExecutableConstruct" + "ExecutableConstruct": "0x55e0a354dd80-ExecutableConstruct" }, { - "id": "0x55876b01ea30-ExecutableConstruct", + "id": "0x55e0a354dd80-ExecutableConstruct", "variantKey": "Statement", - "Statement": "0x55876b01ea30-Statement" + "Statement": "0x55e0a354dd80-Statement" }, { - "id": "0x55876b01ea30-Statement", - "statement": "0x55876b01ea40-ActionStmt", + "id": "0x55e0a354dd80-Statement", + "statement": "0x55e0a354dd90-ActionStmt", "source": "l = 6 >= 7" }, { - "id": "0x55876b01ea40-ActionStmt", + "id": "0x55e0a354dd90-ActionStmt", "variantKey": "AssignmentStmt", - "AssignmentStmt": "0x55876b01e910-AssignmentStmt" + "AssignmentStmt": "0x55e0a354dc60-AssignmentStmt" }, { - "id": "0x55876b01e910-AssignmentStmt", - "Variable": "0x55876b01e9f0-Variable", - "Expr": "0x55876b01e920-Expr" + "id": "0x55e0a354dc60-AssignmentStmt", + "Variable": "0x55e0a354dd40-Variable", + "Expr": "0x55e0a354dc70-Expr" }, { - "id": "0x55876b01e9f0-Variable", + "id": "0x55e0a354dd40-Variable", "variantKey": "Designator", - "Designator": "0x55876b030090-Designator" + "Designator": "0x55e0a3530100-Designator" }, { - "id": "0x55876b030090-Designator", + "id": "0x55e0a3530100-Designator", "variantKey": "DataRef", - "DataRef": "0x55876b0300a0-DataRef" + "DataRef": "0x55e0a3530110-DataRef" }, { - "id": "0x55876b0300a0-DataRef", + "id": "0x55e0a3530110-DataRef", "variantKey": "Name", - "Name": "0x55876b0300a0-Name" + "Name": "0x55e0a3530110-Name" }, { - "id": "0x55876b0300a0-Name", + "id": "0x55e0a3530110-Name", "source": "l" }, { - "id": "0x55876b01e920-Expr", + "id": "0x55e0a354dc70-Expr", "variantKey": "GE", - "GE": "0x55876b01e940-GE" + "GE": "0x55e0a354dc90-GE" }, { - "id": "0x55876b01e940-GE", - "left": "0x55876b01e830-Expr", - "right": "0x55876b01e750-Expr", + "id": "0x55e0a354dc90-GE", + "left": "0x55e0a354db80-Expr", + "right": "0x55e0a354daa0-Expr", "op": "GE" }, { - "id": "0x55876b01e830-Expr", + "id": "0x55e0a354db80-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55876b01e850-LiteralConstant" + "LiteralConstant": "0x55e0a354dba0-LiteralConstant" }, { - "id": "0x55876b01e850-LiteralConstant", + "id": "0x55e0a354dba0-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55876b01e850-IntLiteralConstant" + "IntLiteralConstant": "0x55e0a354dba0-IntLiteralConstant" }, { - "id": "0x55876b01e850-IntLiteralConstant", + "id": "0x55e0a354dba0-IntLiteralConstant", "CharBlock": "6" }, { - "id": "0x55876b01e750-Expr", + "id": "0x55e0a354daa0-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55876b01e770-LiteralConstant" + "LiteralConstant": "0x55e0a354dac0-LiteralConstant" }, { - "id": "0x55876b01e770-LiteralConstant", + "id": "0x55e0a354dac0-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55876b01e770-IntLiteralConstant" + "IntLiteralConstant": "0x55e0a354dac0-IntLiteralConstant" }, { - "id": "0x55876b01e770-IntLiteralConstant", + "id": "0x55e0a354dac0-IntLiteralConstant", "CharBlock": "7" }, { - "id": "0x55876b01efb0-ExecutionPartConstruct", + "id": "0x55e0a354e300-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x55876b01efb0-ExecutableConstruct" + "ExecutableConstruct": "0x55e0a354e300-ExecutableConstruct" }, { - "id": "0x55876b01efb0-ExecutableConstruct", + "id": "0x55e0a354e300-ExecutableConstruct", "variantKey": "Statement", - "Statement": "0x55876b01efb0-Statement" + "Statement": "0x55e0a354e300-Statement" }, { - "id": "0x55876b01efb0-Statement", - "statement": "0x55876b01efc0-ActionStmt", + "id": "0x55e0a354e300-Statement", + "statement": "0x55e0a354e310-ActionStmt", "source": "l = a == b" }, { - "id": "0x55876b01efc0-ActionStmt", + "id": "0x55e0a354e310-ActionStmt", "variantKey": "AssignmentStmt", - "AssignmentStmt": "0x55876b01ee20-AssignmentStmt" + "AssignmentStmt": "0x55e0a354e170-AssignmentStmt" }, { - "id": "0x55876b01ee20-AssignmentStmt", - "Variable": "0x55876b01ef00-Variable", - "Expr": "0x55876b01ee30-Expr" + "id": "0x55e0a354e170-AssignmentStmt", + "Variable": "0x55e0a354e250-Variable", + "Expr": "0x55e0a354e180-Expr" }, { - "id": "0x55876b01ef00-Variable", + "id": "0x55e0a354e250-Variable", "variantKey": "Designator", - "Designator": "0x55876b02fab0-Designator" + "Designator": "0x55e0a355e570-Designator" }, { - "id": "0x55876b02fab0-Designator", + "id": "0x55e0a355e570-Designator", "variantKey": "DataRef", - "DataRef": "0x55876b02fac0-DataRef" + "DataRef": "0x55e0a355e580-DataRef" }, { - "id": "0x55876b02fac0-DataRef", + "id": "0x55e0a355e580-DataRef", "variantKey": "Name", - "Name": "0x55876b02fac0-Name" + "Name": "0x55e0a355e580-Name" }, { - "id": "0x55876b02fac0-Name", + "id": "0x55e0a355e580-Name", "source": "l" }, { - "id": "0x55876b01ee30-Expr", + "id": "0x55e0a354e180-Expr", "variantKey": "EQ", - "EQ": "0x55876b01ee50-EQ" + "EQ": "0x55e0a354e1a0-EQ" }, { - "id": "0x55876b01ee50-EQ", - "left": "0x55876b01ed40-Expr", - "right": "0x55876b01ec60-Expr", + "id": "0x55e0a354e1a0-EQ", + "left": "0x55e0a354e090-Expr", + "right": "0x55e0a354dfb0-Expr", "op": "EQ" }, { - "id": "0x55876b01ed40-Expr", + "id": "0x55e0a354e090-Expr", "variantKey": "Designator", - "Designator": "0x55876b01eae0-Designator" + "Designator": "0x55e0a354de30-Designator" }, { - "id": "0x55876b01eae0-Designator", + "id": "0x55e0a354de30-Designator", "variantKey": "DataRef", - "DataRef": "0x55876b01eaf0-DataRef" + "DataRef": "0x55e0a354de40-DataRef" }, { - "id": "0x55876b01eaf0-DataRef", + "id": "0x55e0a354de40-DataRef", "variantKey": "Name", - "Name": "0x55876b01eaf0-Name" + "Name": "0x55e0a354de40-Name" }, { - "id": "0x55876b01eaf0-Name", + "id": "0x55e0a354de40-Name", "source": "a" }, { - "id": "0x55876b01ec60-Expr", + "id": "0x55e0a354dfb0-Expr", "variantKey": "Designator", - "Designator": "0x55876b01ec00-Designator" + "Designator": "0x55e0a354df50-Designator" }, { - "id": "0x55876b01ec00-Designator", + "id": "0x55e0a354df50-Designator", "variantKey": "DataRef", - "DataRef": "0x55876b01ec10-DataRef" + "DataRef": "0x55e0a354df60-DataRef" }, { - "id": "0x55876b01ec10-DataRef", + "id": "0x55e0a354df60-DataRef", "variantKey": "Name", - "Name": "0x55876b01ec10-Name" + "Name": "0x55e0a354df60-Name" }, { - "id": "0x55876b01ec10-Name", + "id": "0x55e0a354df60-Name", "source": "b" }, { - "id": "0x55876b01f2e0-ExecutionPartConstruct", + "id": "0x55e0a354e630-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x55876b01f2e0-ExecutableConstruct" + "ExecutableConstruct": "0x55e0a354e630-ExecutableConstruct" }, { - "id": "0x55876b01f2e0-ExecutableConstruct", + "id": "0x55e0a354e630-ExecutableConstruct", "variantKey": "Statement", - "Statement": "0x55876b01f2e0-Statement" + "Statement": "0x55e0a354e630-Statement" }, { - "id": "0x55876b01f2e0-Statement", - "statement": "0x55876b01f2f0-ActionStmt", + "id": "0x55e0a354e630-Statement", + "statement": "0x55e0a354e640-ActionStmt", "source": "l = 0 /= 1" }, { - "id": "0x55876b01f2f0-ActionStmt", + "id": "0x55e0a354e640-ActionStmt", "variantKey": "AssignmentStmt", - "AssignmentStmt": "0x55876b01f1c0-AssignmentStmt" + "AssignmentStmt": "0x55e0a354e510-AssignmentStmt" }, { - "id": "0x55876b01f1c0-AssignmentStmt", - "Variable": "0x55876b01f2a0-Variable", - "Expr": "0x55876b01f1d0-Expr" + "id": "0x55e0a354e510-AssignmentStmt", + "Variable": "0x55e0a354e5f0-Variable", + "Expr": "0x55e0a354e520-Expr" }, { - "id": "0x55876b01f2a0-Variable", + "id": "0x55e0a354e5f0-Variable", "variantKey": "Designator", - "Designator": "0x55876b02f5b0-Designator" + "Designator": "0x55e0a355ebb0-Designator" }, { - "id": "0x55876b02f5b0-Designator", + "id": "0x55e0a355ebb0-Designator", "variantKey": "DataRef", - "DataRef": "0x55876b02f5c0-DataRef" + "DataRef": "0x55e0a355ebc0-DataRef" }, { - "id": "0x55876b02f5c0-DataRef", + "id": "0x55e0a355ebc0-DataRef", "variantKey": "Name", - "Name": "0x55876b02f5c0-Name" + "Name": "0x55e0a355ebc0-Name" }, { - "id": "0x55876b02f5c0-Name", + "id": "0x55e0a355ebc0-Name", "source": "l" }, { - "id": "0x55876b01f1d0-Expr", + "id": "0x55e0a354e520-Expr", "variantKey": "NE", - "NE": "0x55876b01f1f0-NE" + "NE": "0x55e0a354e540-NE" }, { - "id": "0x55876b01f1f0-NE", - "left": "0x55876b01f0e0-Expr", - "right": "0x55876b01f000-Expr", + "id": "0x55e0a354e540-NE", + "left": "0x55e0a354e430-Expr", + "right": "0x55e0a354e350-Expr", "op": "NE" }, { - "id": "0x55876b01f0e0-Expr", + "id": "0x55e0a354e430-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55876b01f100-LiteralConstant" + "LiteralConstant": "0x55e0a354e450-LiteralConstant" }, { - "id": "0x55876b01f100-LiteralConstant", + "id": "0x55e0a354e450-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55876b01f100-IntLiteralConstant" + "IntLiteralConstant": "0x55e0a354e450-IntLiteralConstant" }, { - "id": "0x55876b01f100-IntLiteralConstant", + "id": "0x55e0a354e450-IntLiteralConstant", "CharBlock": "0" }, { - "id": "0x55876b01f000-Expr", + "id": "0x55e0a354e350-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55876b01f020-LiteralConstant" + "LiteralConstant": "0x55e0a354e370-LiteralConstant" }, { - "id": "0x55876b01f020-LiteralConstant", + "id": "0x55e0a354e370-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55876b01f020-IntLiteralConstant" + "IntLiteralConstant": "0x55e0a354e370-IntLiteralConstant" }, { - "id": "0x55876b01f020-IntLiteralConstant", + "id": "0x55e0a354e370-IntLiteralConstant", "CharBlock": "1" }, { - "id": "0x55876b01f6d0-ExecutionPartConstruct", + "id": "0x55e0a354eae0-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55e0a354eae0-ExecutableConstruct" + }, + { + "id": "0x55e0a354eae0-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55e0a354eae0-Statement" + }, + { + "id": "0x55e0a354eae0-Statement", + "statement": "0x55e0a354eaf0-ActionStmt", + "source": "l = l1 .and. l2" + }, + { + "id": "0x55e0a354eaf0-ActionStmt", + "variantKey": "AssignmentStmt", + "AssignmentStmt": "0x55e0a354e9c0-AssignmentStmt" + }, + { + "id": "0x55e0a354e9c0-AssignmentStmt", + "Variable": "0x55e0a354eaa0-Variable", + "Expr": "0x55e0a354e9d0-Expr" + }, + { + "id": "0x55e0a354eaa0-Variable", + "variantKey": "Designator", + "Designator": "0x55e0a354ddd0-Designator" + }, + { + "id": "0x55e0a354ddd0-Designator", + "variantKey": "DataRef", + "DataRef": "0x55e0a354dde0-DataRef" + }, + { + "id": "0x55e0a354dde0-DataRef", + "variantKey": "Name", + "Name": "0x55e0a354dde0-Name" + }, + { + "id": "0x55e0a354dde0-Name", + "source": "l" + }, + { + "id": "0x55e0a354e9d0-Expr", + "variantKey": "AND", + "AND": "0x55e0a354e9f0-AND" + }, + { + "id": "0x55e0a354e9f0-AND", + "left": "0x55e0a354e8e0-Expr", + "right": "0x55e0a354e800-Expr", + "op": "AND" + }, + { + "id": "0x55e0a354e8e0-Expr", + "variantKey": "Designator", + "Designator": "0x55e0a354e680-Designator" + }, + { + "id": "0x55e0a354e680-Designator", + "variantKey": "DataRef", + "DataRef": "0x55e0a354e690-DataRef" + }, + { + "id": "0x55e0a354e690-DataRef", + "variantKey": "Name", + "Name": "0x55e0a354e690-Name" + }, + { + "id": "0x55e0a354e690-Name", + "source": "l1" + }, + { + "id": "0x55e0a354e800-Expr", + "variantKey": "Designator", + "Designator": "0x55e0a354e7a0-Designator" + }, + { + "id": "0x55e0a354e7a0-Designator", + "variantKey": "DataRef", + "DataRef": "0x55e0a354e7b0-DataRef" + }, + { + "id": "0x55e0a354e7b0-DataRef", + "variantKey": "Name", + "Name": "0x55e0a354e7b0-Name" + }, + { + "id": "0x55e0a354e7b0-Name", + "source": "l2" + }, + { + "id": "0x55e0a354ef30-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55e0a354ef30-ExecutableConstruct" + }, + { + "id": "0x55e0a354ef30-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55e0a354ef30-Statement" + }, + { + "id": "0x55e0a354ef30-Statement", + "statement": "0x55e0a354ef40-ActionStmt", + "source": "l = l1 .or. l2" + }, + { + "id": "0x55e0a354ef40-ActionStmt", + "variantKey": "AssignmentStmt", + "AssignmentStmt": "0x55e0a354ee10-AssignmentStmt" + }, + { + "id": "0x55e0a354ee10-AssignmentStmt", + "Variable": "0x55e0a354eef0-Variable", + "Expr": "0x55e0a354ee20-Expr" + }, + { + "id": "0x55e0a354eef0-Variable", + "variantKey": "Designator", + "Designator": "0x55e0a354de90-Designator" + }, + { + "id": "0x55e0a354de90-Designator", + "variantKey": "DataRef", + "DataRef": "0x55e0a354dea0-DataRef" + }, + { + "id": "0x55e0a354dea0-DataRef", + "variantKey": "Name", + "Name": "0x55e0a354dea0-Name" + }, + { + "id": "0x55e0a354dea0-Name", + "source": "l" + }, + { + "id": "0x55e0a354ee20-Expr", + "variantKey": "OR", + "OR": "0x55e0a354ee40-OR" + }, + { + "id": "0x55e0a354ee40-OR", + "left": "0x55e0a354ed30-Expr", + "right": "0x55e0a354ec50-Expr", + "op": "OR" + }, + { + "id": "0x55e0a354ed30-Expr", + "variantKey": "Designator", + "Designator": "0x55e0a354e740-Designator" + }, + { + "id": "0x55e0a354e740-Designator", + "variantKey": "DataRef", + "DataRef": "0x55e0a354e750-DataRef" + }, + { + "id": "0x55e0a354e750-DataRef", + "variantKey": "Name", + "Name": "0x55e0a354e750-Name" + }, + { + "id": "0x55e0a354e750-Name", + "source": "l1" + }, + { + "id": "0x55e0a354ec50-Expr", + "variantKey": "Designator", + "Designator": "0x55e0a354ebf0-Designator" + }, + { + "id": "0x55e0a354ebf0-Designator", + "variantKey": "DataRef", + "DataRef": "0x55e0a354ec00-DataRef" + }, + { + "id": "0x55e0a354ec00-DataRef", + "variantKey": "Name", + "Name": "0x55e0a354ec00-Name" + }, + { + "id": "0x55e0a354ec00-Name", + "source": "l2" + }, + { + "id": "0x55e0a354f380-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55e0a354f380-ExecutableConstruct" + }, + { + "id": "0x55e0a354f380-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55e0a354f380-Statement" + }, + { + "id": "0x55e0a354f380-Statement", + "statement": "0x55e0a354f390-ActionStmt", + "source": "l = l1 .eqv. l2" + }, + { + "id": "0x55e0a354f390-ActionStmt", + "variantKey": "AssignmentStmt", + "AssignmentStmt": "0x55e0a354f260-AssignmentStmt" + }, + { + "id": "0x55e0a354f260-AssignmentStmt", + "Variable": "0x55e0a354f340-Variable", + "Expr": "0x55e0a354f270-Expr" + }, + { + "id": "0x55e0a354f340-Variable", + "variantKey": "Designator", + "Designator": "0x55e0a354def0-Designator" + }, + { + "id": "0x55e0a354def0-Designator", + "variantKey": "DataRef", + "DataRef": "0x55e0a354df00-DataRef" + }, + { + "id": "0x55e0a354df00-DataRef", + "variantKey": "Name", + "Name": "0x55e0a354df00-Name" + }, + { + "id": "0x55e0a354df00-Name", + "source": "l" + }, + { + "id": "0x55e0a354f270-Expr", + "variantKey": "EQV", + "EQV": "0x55e0a354f290-EQV" + }, + { + "id": "0x55e0a354f290-EQV", + "left": "0x55e0a354f180-Expr", + "right": "0x55e0a354f0a0-Expr", + "op": "EQV" + }, + { + "id": "0x55e0a354f180-Expr", + "variantKey": "Designator", + "Designator": "0x55e0a354eb90-Designator" + }, + { + "id": "0x55e0a354eb90-Designator", + "variantKey": "DataRef", + "DataRef": "0x55e0a354eba0-DataRef" + }, + { + "id": "0x55e0a354eba0-DataRef", + "variantKey": "Name", + "Name": "0x55e0a354eba0-Name" + }, + { + "id": "0x55e0a354eba0-Name", + "source": "l1" + }, + { + "id": "0x55e0a354f0a0-Expr", + "variantKey": "Designator", + "Designator": "0x55e0a354f040-Designator" + }, + { + "id": "0x55e0a354f040-Designator", + "variantKey": "DataRef", + "DataRef": "0x55e0a354f050-DataRef" + }, + { + "id": "0x55e0a354f050-DataRef", + "variantKey": "Name", + "Name": "0x55e0a354f050-Name" + }, + { + "id": "0x55e0a354f050-Name", + "source": "l2" + }, + { + "id": "0x55e0a354f7d0-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55e0a354f7d0-ExecutableConstruct" + }, + { + "id": "0x55e0a354f7d0-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55e0a354f7d0-Statement" + }, + { + "id": "0x55e0a354f7d0-Statement", + "statement": "0x55e0a354f7e0-ActionStmt", + "source": "l = l1 .neqv. l2" + }, + { + "id": "0x55e0a354f7e0-ActionStmt", + "variantKey": "AssignmentStmt", + "AssignmentStmt": "0x55e0a354f6b0-AssignmentStmt" + }, + { + "id": "0x55e0a354f6b0-AssignmentStmt", + "Variable": "0x55e0a354f790-Variable", + "Expr": "0x55e0a354f6c0-Expr" + }, + { + "id": "0x55e0a354f790-Variable", + "variantKey": "Designator", + "Designator": "0x55e0a354e6e0-Designator" + }, + { + "id": "0x55e0a354e6e0-Designator", + "variantKey": "DataRef", + "DataRef": "0x55e0a354e6f0-DataRef" + }, + { + "id": "0x55e0a354e6f0-DataRef", + "variantKey": "Name", + "Name": "0x55e0a354e6f0-Name" + }, + { + "id": "0x55e0a354e6f0-Name", + "source": "l" + }, + { + "id": "0x55e0a354f6c0-Expr", + "variantKey": "NEQV", + "NEQV": "0x55e0a354f6e0-NEQV" + }, + { + "id": "0x55e0a354f6e0-NEQV", + "left": "0x55e0a354f5d0-Expr", + "right": "0x55e0a354f4f0-Expr", + "op": "NEQV" + }, + { + "id": "0x55e0a354f5d0-Expr", + "variantKey": "Designator", + "Designator": "0x55e0a354efe0-Designator" + }, + { + "id": "0x55e0a354efe0-Designator", + "variantKey": "DataRef", + "DataRef": "0x55e0a354eff0-DataRef" + }, + { + "id": "0x55e0a354eff0-DataRef", + "variantKey": "Name", + "Name": "0x55e0a354eff0-Name" + }, + { + "id": "0x55e0a354eff0-Name", + "source": "l1" + }, + { + "id": "0x55e0a354f4f0-Expr", + "variantKey": "Designator", + "Designator": "0x55e0a354f490-Designator" + }, + { + "id": "0x55e0a354f490-Designator", + "variantKey": "DataRef", + "DataRef": "0x55e0a354f4a0-DataRef" + }, + { + "id": "0x55e0a354f4a0-DataRef", + "variantKey": "Name", + "Name": "0x55e0a354f4a0-Name" + }, + { + "id": "0x55e0a354f4a0-Name", + "source": "l2" + }, + { + "id": "0x55e0a354fb60-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x55876b01f6d0-ExecutableConstruct" + "ExecutableConstruct": "0x55e0a354fb60-ExecutableConstruct" }, { - "id": "0x55876b01f6d0-ExecutableConstruct", + "id": "0x55e0a354fb60-ExecutableConstruct", "variantKey": "Statement", - "Statement": "0x55876b01f6d0-Statement" + "Statement": "0x55e0a354fb60-Statement" }, { - "id": "0x55876b01f6d0-Statement", - "statement": "0x55876b01f6e0-ActionStmt", + "id": "0x55e0a354fb60-Statement", + "statement": "0x55e0a354fb70-ActionStmt", "source": "i = a + 1" }, { - "id": "0x55876b01f6e0-ActionStmt", + "id": "0x55e0a354fb70-ActionStmt", "variantKey": "AssignmentStmt", - "AssignmentStmt": "0x55876b01f5b0-AssignmentStmt" + "AssignmentStmt": "0x55e0a354fa40-AssignmentStmt" }, { - "id": "0x55876b01f5b0-AssignmentStmt", - "Variable": "0x55876b01f690-Variable", - "Expr": "0x55876b01f5c0-Expr" + "id": "0x55e0a354fa40-AssignmentStmt", + "Variable": "0x55e0a354fb20-Variable", + "Expr": "0x55e0a354fa50-Expr" }, { - "id": "0x55876b01f690-Variable", + "id": "0x55e0a354fb20-Variable", "variantKey": "Designator", - "Designator": "0x55876b01ea80-Designator" + "Designator": "0x55e0a354eb30-Designator" }, { - "id": "0x55876b01ea80-Designator", + "id": "0x55e0a354eb30-Designator", "variantKey": "DataRef", - "DataRef": "0x55876b01ea90-DataRef" + "DataRef": "0x55e0a354eb40-DataRef" }, { - "id": "0x55876b01ea90-DataRef", + "id": "0x55e0a354eb40-DataRef", "variantKey": "Name", - "Name": "0x55876b01ea90-Name" + "Name": "0x55e0a354eb40-Name" }, { - "id": "0x55876b01ea90-Name", + "id": "0x55e0a354eb40-Name", "source": "i" }, { - "id": "0x55876b01f5c0-Expr", + "id": "0x55e0a354fa50-Expr", "variantKey": "Add", - "Add": "0x55876b01f5e0-Add" + "Add": "0x55e0a354fa70-Add" }, { - "id": "0x55876b01f5e0-Add", - "left": "0x55876b01f4d0-Expr", - "right": "0x55876b01f3f0-Expr", + "id": "0x55e0a354fa70-Add", + "left": "0x55e0a354f960-Expr", + "right": "0x55e0a354f880-Expr", "op": "ADD" }, { - "id": "0x55876b01f4d0-Expr", + "id": "0x55e0a354f960-Expr", "variantKey": "Designator", - "Designator": "0x55876b01f330-Designator" + "Designator": "0x55e0a354f430-Designator" }, { - "id": "0x55876b01f330-Designator", + "id": "0x55e0a354f430-Designator", "variantKey": "DataRef", - "DataRef": "0x55876b01f340-DataRef" + "DataRef": "0x55e0a354f440-DataRef" }, { - "id": "0x55876b01f340-DataRef", + "id": "0x55e0a354f440-DataRef", "variantKey": "Name", - "Name": "0x55876b01f340-Name" + "Name": "0x55e0a354f440-Name" }, { - "id": "0x55876b01f340-Name", + "id": "0x55e0a354f440-Name", "source": "a" }, { - "id": "0x55876b01f3f0-Expr", + "id": "0x55e0a354f880-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55876b01f410-LiteralConstant" + "LiteralConstant": "0x55e0a354f8a0-LiteralConstant" }, { - "id": "0x55876b01f410-LiteralConstant", + "id": "0x55e0a354f8a0-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55876b01f410-IntLiteralConstant" + "IntLiteralConstant": "0x55e0a354f8a0-IntLiteralConstant" }, { - "id": "0x55876b01f410-IntLiteralConstant", + "id": "0x55e0a354f8a0-IntLiteralConstant", "CharBlock": "1" }, { - "id": "0x55876b01fb80-ExecutionPartConstruct", + "id": "0x55e0a3550010-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x55876b01fb80-ExecutableConstruct" + "ExecutableConstruct": "0x55e0a3550010-ExecutableConstruct" }, { - "id": "0x55876b01fb80-ExecutableConstruct", + "id": "0x55e0a3550010-ExecutableConstruct", "variantKey": "Statement", - "Statement": "0x55876b01fb80-Statement" + "Statement": "0x55e0a3550010-Statement" }, { - "id": "0x55876b01fb80-Statement", - "statement": "0x55876b01fb90-ActionStmt", + "id": "0x55e0a3550010-Statement", + "statement": "0x55e0a3550020-ActionStmt", "source": "i = a - b" }, { - "id": "0x55876b01fb90-ActionStmt", + "id": "0x55e0a3550020-ActionStmt", "variantKey": "AssignmentStmt", - "AssignmentStmt": "0x55876b01fa60-AssignmentStmt" + "AssignmentStmt": "0x55e0a354fef0-AssignmentStmt" }, { - "id": "0x55876b01fa60-AssignmentStmt", - "Variable": "0x55876b01fb40-Variable", - "Expr": "0x55876b01fa70-Expr" + "id": "0x55e0a354fef0-AssignmentStmt", + "Variable": "0x55e0a354ffd0-Variable", + "Expr": "0x55e0a354ff00-Expr" }, { - "id": "0x55876b01fb40-Variable", + "id": "0x55e0a354ffd0-Variable", "variantKey": "Designator", - "Designator": "0x55876b01eb40-Designator" + "Designator": "0x55e0a354ef80-Designator" }, { - "id": "0x55876b01eb40-Designator", + "id": "0x55e0a354ef80-Designator", "variantKey": "DataRef", - "DataRef": "0x55876b01eb50-DataRef" + "DataRef": "0x55e0a354ef90-DataRef" }, { - "id": "0x55876b01eb50-DataRef", + "id": "0x55e0a354ef90-DataRef", "variantKey": "Name", - "Name": "0x55876b01eb50-Name" + "Name": "0x55e0a354ef90-Name" }, { - "id": "0x55876b01eb50-Name", + "id": "0x55e0a354ef90-Name", "source": "i" }, { - "id": "0x55876b01fa70-Expr", + "id": "0x55e0a354ff00-Expr", "variantKey": "Subtract", - "Subtract": "0x55876b01fa90-Subtract" + "Subtract": "0x55e0a354ff20-Subtract" }, { - "id": "0x55876b01fa90-Subtract", - "left": "0x55876b01f980-Expr", - "right": "0x55876b01f8a0-Expr", + "id": "0x55e0a354ff20-Subtract", + "left": "0x55e0a354fe10-Expr", + "right": "0x55e0a354fd30-Expr", "op": "SUBTRACT" }, { - "id": "0x55876b01f980-Expr", + "id": "0x55e0a354fe10-Expr", "variantKey": "Designator", - "Designator": "0x55876b01f720-Designator" + "Designator": "0x55e0a354fbb0-Designator" }, { - "id": "0x55876b01f720-Designator", + "id": "0x55e0a354fbb0-Designator", "variantKey": "DataRef", - "DataRef": "0x55876b01f730-DataRef" + "DataRef": "0x55e0a354fbc0-DataRef" }, { - "id": "0x55876b01f730-DataRef", + "id": "0x55e0a354fbc0-DataRef", "variantKey": "Name", - "Name": "0x55876b01f730-Name" + "Name": "0x55e0a354fbc0-Name" }, { - "id": "0x55876b01f730-Name", + "id": "0x55e0a354fbc0-Name", "source": "a" }, { - "id": "0x55876b01f8a0-Expr", + "id": "0x55e0a354fd30-Expr", "variantKey": "Designator", - "Designator": "0x55876b01f840-Designator" + "Designator": "0x55e0a354fcd0-Designator" }, { - "id": "0x55876b01f840-Designator", + "id": "0x55e0a354fcd0-Designator", "variantKey": "DataRef", - "DataRef": "0x55876b01f850-DataRef" + "DataRef": "0x55e0a354fce0-DataRef" }, { - "id": "0x55876b01f850-DataRef", + "id": "0x55e0a354fce0-DataRef", "variantKey": "Name", - "Name": "0x55876b01f850-Name" + "Name": "0x55e0a354fce0-Name" }, { - "id": "0x55876b01f850-Name", + "id": "0x55e0a354fce0-Name", "source": "b" }, { - "id": "0x55876b01f7f0-ExecutionPartConstruct", + "id": "0x55e0a354fc80-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x55876b01f7f0-ExecutableConstruct" + "ExecutableConstruct": "0x55e0a354fc80-ExecutableConstruct" }, { - "id": "0x55876b01f7f0-ExecutableConstruct", + "id": "0x55e0a354fc80-ExecutableConstruct", "variantKey": "Statement", - "Statement": "0x55876b01f7f0-Statement" + "Statement": "0x55e0a354fc80-Statement" }, { - "id": "0x55876b01f7f0-Statement", - "statement": "0x55876b01f800-ActionStmt", + "id": "0x55e0a354fc80-Statement", + "statement": "0x55e0a354fc90-ActionStmt", "source": "i = 4 * 5" }, { - "id": "0x55876b01f800-ActionStmt", + "id": "0x55e0a354fc90-ActionStmt", "variantKey": "AssignmentStmt", - "AssignmentStmt": "0x55876b01fd90-AssignmentStmt" + "AssignmentStmt": "0x55e0a3550220-AssignmentStmt" }, { - "id": "0x55876b01fd90-AssignmentStmt", - "Variable": "0x55876b01fe70-Variable", - "Expr": "0x55876b01fda0-Expr" + "id": "0x55e0a3550220-AssignmentStmt", + "Variable": "0x55e0a3550300-Variable", + "Expr": "0x55e0a3550230-Expr" }, { - "id": "0x55876b01fe70-Variable", + "id": "0x55e0a3550300-Variable", "variantKey": "Designator", - "Designator": "0x55876b01eba0-Designator" + "Designator": "0x55e0a354f3d0-Designator" }, { - "id": "0x55876b01eba0-Designator", + "id": "0x55e0a354f3d0-Designator", "variantKey": "DataRef", - "DataRef": "0x55876b01ebb0-DataRef" + "DataRef": "0x55e0a354f3e0-DataRef" }, { - "id": "0x55876b01ebb0-DataRef", + "id": "0x55e0a354f3e0-DataRef", "variantKey": "Name", - "Name": "0x55876b01ebb0-Name" + "Name": "0x55e0a354f3e0-Name" }, { - "id": "0x55876b01ebb0-Name", + "id": "0x55e0a354f3e0-Name", "source": "i" }, { - "id": "0x55876b01fda0-Expr", + "id": "0x55e0a3550230-Expr", "variantKey": "Multiply", - "Multiply": "0x55876b01fdc0-Multiply" + "Multiply": "0x55e0a3550250-Multiply" }, { - "id": "0x55876b01fdc0-Multiply", - "left": "0x55876b01fcb0-Expr", - "right": "0x55876b01fbd0-Expr", + "id": "0x55e0a3550250-Multiply", + "left": "0x55e0a3550140-Expr", + "right": "0x55e0a3550060-Expr", "op": "MULTIPLY" }, { - "id": "0x55876b01fcb0-Expr", + "id": "0x55e0a3550140-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55876b01fcd0-LiteralConstant" + "LiteralConstant": "0x55e0a3550160-LiteralConstant" }, { - "id": "0x55876b01fcd0-LiteralConstant", + "id": "0x55e0a3550160-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55876b01fcd0-IntLiteralConstant" + "IntLiteralConstant": "0x55e0a3550160-IntLiteralConstant" }, { - "id": "0x55876b01fcd0-IntLiteralConstant", + "id": "0x55e0a3550160-IntLiteralConstant", "CharBlock": "4" }, { - "id": "0x55876b01fbd0-Expr", + "id": "0x55e0a3550060-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55876b01fbf0-LiteralConstant" + "LiteralConstant": "0x55e0a3550080-LiteralConstant" }, { - "id": "0x55876b01fbf0-LiteralConstant", + "id": "0x55e0a3550080-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55876b01fbf0-IntLiteralConstant" + "IntLiteralConstant": "0x55e0a3550080-IntLiteralConstant" }, { - "id": "0x55876b01fbf0-IntLiteralConstant", + "id": "0x55e0a3550080-IntLiteralConstant", "CharBlock": "5" }, { - "id": "0x55876b0202a0-ExecutionPartConstruct", + "id": "0x55e0a3550730-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x55876b0202a0-ExecutableConstruct" + "ExecutableConstruct": "0x55e0a3550730-ExecutableConstruct" }, { - "id": "0x55876b0202a0-ExecutableConstruct", + "id": "0x55e0a3550730-ExecutableConstruct", "variantKey": "Statement", - "Statement": "0x55876b0202a0-Statement" + "Statement": "0x55e0a3550730-Statement" }, { - "id": "0x55876b0202a0-Statement", - "statement": "0x55876b0202b0-ActionStmt", + "id": "0x55e0a3550730-Statement", + "statement": "0x55e0a3550740-ActionStmt", "source": "i = 6 / b" }, { - "id": "0x55876b0202b0-ActionStmt", + "id": "0x55e0a3550740-ActionStmt", "variantKey": "AssignmentStmt", - "AssignmentStmt": "0x55876b020180-AssignmentStmt" + "AssignmentStmt": "0x55e0a3550610-AssignmentStmt" }, { - "id": "0x55876b020180-AssignmentStmt", - "Variable": "0x55876b020260-Variable", - "Expr": "0x55876b020190-Expr" + "id": "0x55e0a3550610-AssignmentStmt", + "Variable": "0x55e0a35506f0-Variable", + "Expr": "0x55e0a3550620-Expr" }, { - "id": "0x55876b020260-Variable", + "id": "0x55e0a35506f0-Variable", "variantKey": "Designator", - "Designator": "0x55876b01f390-Designator" + "Designator": "0x55e0a354f820-Designator" }, { - "id": "0x55876b01f390-Designator", + "id": "0x55e0a354f820-Designator", "variantKey": "DataRef", - "DataRef": "0x55876b01f3a0-DataRef" + "DataRef": "0x55e0a354f830-DataRef" }, { - "id": "0x55876b01f3a0-DataRef", + "id": "0x55e0a354f830-DataRef", "variantKey": "Name", - "Name": "0x55876b01f3a0-Name" + "Name": "0x55e0a354f830-Name" }, { - "id": "0x55876b01f3a0-Name", + "id": "0x55e0a354f830-Name", "source": "i" }, { - "id": "0x55876b020190-Expr", + "id": "0x55e0a3550620-Expr", "variantKey": "Divide", - "Divide": "0x55876b0201b0-Divide" + "Divide": "0x55e0a3550640-Divide" }, { - "id": "0x55876b0201b0-Divide", - "left": "0x55876b0200a0-Expr", - "right": "0x55876b01ffc0-Expr", + "id": "0x55e0a3550640-Divide", + "left": "0x55e0a3550530-Expr", + "right": "0x55e0a3550450-Expr", "op": "DIVIDE" }, { - "id": "0x55876b0200a0-Expr", + "id": "0x55e0a3550530-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55876b0200c0-LiteralConstant" + "LiteralConstant": "0x55e0a3550550-LiteralConstant" }, { - "id": "0x55876b0200c0-LiteralConstant", + "id": "0x55e0a3550550-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55876b0200c0-IntLiteralConstant" + "IntLiteralConstant": "0x55e0a3550550-IntLiteralConstant" }, { - "id": "0x55876b0200c0-IntLiteralConstant", + "id": "0x55e0a3550550-IntLiteralConstant", "CharBlock": "6" }, { - "id": "0x55876b01ffc0-Expr", + "id": "0x55e0a3550450-Expr", "variantKey": "Designator", - "Designator": "0x55876b01ff60-Designator" + "Designator": "0x55e0a35503f0-Designator" }, { - "id": "0x55876b01ff60-Designator", + "id": "0x55e0a35503f0-Designator", "variantKey": "DataRef", - "DataRef": "0x55876b01ff70-DataRef" + "DataRef": "0x55e0a3550400-DataRef" }, { - "id": "0x55876b01ff70-DataRef", + "id": "0x55e0a3550400-DataRef", "variantKey": "Name", - "Name": "0x55876b01ff70-Name" + "Name": "0x55e0a3550400-Name" }, { - "id": "0x55876b01ff70-Name", + "id": "0x55e0a3550400-Name", "source": "b" }, { - "id": "0x55876b0216d0-ExecutionPartConstruct", + "id": "0x55e0a3551b60-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x55876b0216d0-ExecutableConstruct" + "ExecutableConstruct": "0x55e0a3551b60-ExecutableConstruct" }, { - "id": "0x55876b0216d0-ExecutableConstruct", + "id": "0x55e0a3551b60-ExecutableConstruct", "variantKey": "Statement", - "Statement": "0x55876b0216d0-Statement" + "Statement": "0x55e0a3551b60-Statement" }, { - "id": "0x55876b0216d0-Statement", - "statement": "0x55876b0216e0-ActionStmt", + "id": "0x55e0a3551b60-Statement", + "statement": "0x55e0a3551b70-ActionStmt", "source": "i = 0 + 1 - b * 5 / a + 7" }, { - "id": "0x55876b0216e0-ActionStmt", + "id": "0x55e0a3551b70-ActionStmt", "variantKey": "AssignmentStmt", - "AssignmentStmt": "0x55876b021540-AssignmentStmt" + "AssignmentStmt": "0x55e0a35519d0-AssignmentStmt" }, { - "id": "0x55876b021540-AssignmentStmt", - "Variable": "0x55876b021620-Variable", - "Expr": "0x55876b021550-Expr" + "id": "0x55e0a35519d0-AssignmentStmt", + "Variable": "0x55e0a3551ab0-Variable", + "Expr": "0x55e0a35519e0-Expr" }, { - "id": "0x55876b021620-Variable", + "id": "0x55e0a3551ab0-Variable", "variantKey": "Designator", - "Designator": "0x55876b01f780-Designator" + "Designator": "0x55e0a354fc10-Designator" }, { - "id": "0x55876b01f780-Designator", + "id": "0x55e0a354fc10-Designator", "variantKey": "DataRef", - "DataRef": "0x55876b01f790-DataRef" + "DataRef": "0x55e0a354fc20-DataRef" }, { - "id": "0x55876b01f790-DataRef", + "id": "0x55e0a354fc20-DataRef", "variantKey": "Name", - "Name": "0x55876b01f790-Name" + "Name": "0x55e0a354fc20-Name" }, { - "id": "0x55876b01f790-Name", + "id": "0x55e0a354fc20-Name", "source": "i" }, { - "id": "0x55876b021550-Expr", + "id": "0x55e0a35519e0-Expr", "variantKey": "Add", - "Add": "0x55876b021570-Add" + "Add": "0x55e0a3551a00-Add" }, { - "id": "0x55876b021570-Add", - "left": "0x55876b0213f0-Expr", - "right": "0x55876b021310-Expr", + "id": "0x55e0a3551a00-Add", + "left": "0x55e0a3551880-Expr", + "right": "0x55e0a35517a0-Expr", "op": "ADD" }, { - "id": "0x55876b0213f0-Expr", + "id": "0x55e0a3551880-Expr", "variantKey": "Subtract", - "Subtract": "0x55876b021410-Subtract" + "Subtract": "0x55e0a35518a0-Subtract" }, { - "id": "0x55876b021410-Subtract", - "left": "0x55876b021010-Expr", - "right": "0x55876b020f30-Expr", + "id": "0x55e0a35518a0-Subtract", + "left": "0x55e0a35514a0-Expr", + "right": "0x55e0a35513c0-Expr", "op": "SUBTRACT" }, { - "id": "0x55876b021010-Expr", + "id": "0x55e0a35514a0-Expr", "variantKey": "Add", - "Add": "0x55876b021030-Add" + "Add": "0x55e0a35514c0-Add" }, { - "id": "0x55876b021030-Add", - "left": "0x55876b0203d0-Expr", - "right": "0x55876b0202f0-Expr", + "id": "0x55e0a35514c0-Add", + "left": "0x55e0a3550860-Expr", + "right": "0x55e0a3550780-Expr", "op": "ADD" }, { - "id": "0x55876b0203d0-Expr", + "id": "0x55e0a3550860-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55876b0203f0-LiteralConstant" + "LiteralConstant": "0x55e0a3550880-LiteralConstant" }, { - "id": "0x55876b0203f0-LiteralConstant", + "id": "0x55e0a3550880-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55876b0203f0-IntLiteralConstant" + "IntLiteralConstant": "0x55e0a3550880-IntLiteralConstant" }, { - "id": "0x55876b0203f0-IntLiteralConstant", + "id": "0x55e0a3550880-IntLiteralConstant", "CharBlock": "0" }, { - "id": "0x55876b0202f0-Expr", + "id": "0x55e0a3550780-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55876b020310-LiteralConstant" + "LiteralConstant": "0x55e0a35507a0-LiteralConstant" }, { - "id": "0x55876b020310-LiteralConstant", + "id": "0x55e0a35507a0-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55876b020310-IntLiteralConstant" + "IntLiteralConstant": "0x55e0a35507a0-IntLiteralConstant" }, { - "id": "0x55876b020310-IntLiteralConstant", + "id": "0x55e0a35507a0-IntLiteralConstant", "CharBlock": "1" }, { - "id": "0x55876b020f30-Expr", + "id": "0x55e0a35513c0-Expr", "variantKey": "Divide", - "Divide": "0x55876b020f50-Divide" + "Divide": "0x55e0a35513e0-Divide" }, { - "id": "0x55876b020f50-Divide", - "left": "0x55876b020e50-Expr", - "right": "0x55876b020d70-Expr", + "id": "0x55e0a35513e0-Divide", + "left": "0x55e0a35512e0-Expr", + "right": "0x55e0a3551200-Expr", "op": "DIVIDE" }, { - "id": "0x55876b020e50-Expr", + "id": "0x55e0a35512e0-Expr", "variantKey": "Multiply", - "Multiply": "0x55876b020e70-Multiply" + "Multiply": "0x55e0a3551300-Multiply" }, { - "id": "0x55876b020e70-Multiply", - "left": "0x55876b020780-Expr", - "right": "0x55876b0206a0-Expr", + "id": "0x55e0a3551300-Multiply", + "left": "0x55e0a3550c10-Expr", + "right": "0x55e0a3550b30-Expr", "op": "MULTIPLY" }, { - "id": "0x55876b020780-Expr", + "id": "0x55e0a3550c10-Expr", "variantKey": "Designator", - "Designator": "0x55876b020570-Designator" + "Designator": "0x55e0a3550a00-Designator" }, { - "id": "0x55876b020570-Designator", + "id": "0x55e0a3550a00-Designator", "variantKey": "DataRef", - "DataRef": "0x55876b020580-DataRef" + "DataRef": "0x55e0a3550a10-DataRef" }, { - "id": "0x55876b020580-DataRef", + "id": "0x55e0a3550a10-DataRef", "variantKey": "Name", - "Name": "0x55876b020580-Name" + "Name": "0x55e0a3550a10-Name" }, { - "id": "0x55876b020580-Name", + "id": "0x55e0a3550a10-Name", "source": "b" }, { - "id": "0x55876b0206a0-Expr", + "id": "0x55e0a3550b30-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55876b0206c0-LiteralConstant" + "LiteralConstant": "0x55e0a3550b50-LiteralConstant" }, { - "id": "0x55876b0206c0-LiteralConstant", + "id": "0x55e0a3550b50-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55876b0206c0-IntLiteralConstant" + "IntLiteralConstant": "0x55e0a3550b50-IntLiteralConstant" }, { - "id": "0x55876b0206c0-IntLiteralConstant", + "id": "0x55e0a3550b50-IntLiteralConstant", "CharBlock": "5" }, { - "id": "0x55876b020d70-Expr", + "id": "0x55e0a3551200-Expr", "variantKey": "Designator", - "Designator": "0x55876b020ca0-Designator" + "Designator": "0x55e0a3551130-Designator" }, { - "id": "0x55876b020ca0-Designator", + "id": "0x55e0a3551130-Designator", "variantKey": "DataRef", - "DataRef": "0x55876b020cb0-DataRef" + "DataRef": "0x55e0a3551140-DataRef" }, { - "id": "0x55876b020cb0-DataRef", + "id": "0x55e0a3551140-DataRef", "variantKey": "Name", - "Name": "0x55876b020cb0-Name" + "Name": "0x55e0a3551140-Name" }, { - "id": "0x55876b020cb0-Name", + "id": "0x55e0a3551140-Name", "source": "a" }, { - "id": "0x55876b021310-Expr", + "id": "0x55e0a35517a0-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55876b021330-LiteralConstant" + "LiteralConstant": "0x55e0a35517c0-LiteralConstant" }, { - "id": "0x55876b021330-LiteralConstant", + "id": "0x55e0a35517c0-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55876b021330-IntLiteralConstant" + "IntLiteralConstant": "0x55e0a35517c0-IntLiteralConstant" }, { - "id": "0x55876b021330-IntLiteralConstant", + "id": "0x55e0a35517c0-IntLiteralConstant", "CharBlock": "7" }, { - "id": "0x55876b024820-Statement", - "statement": "0x55876b024830-EndProgramStmt", + "id": "0x55e0a355fda0-Statement", + "statement": "0x55e0a355fdb0-EndProgramStmt", "source": "end program TEST_EXPRS" }, { - "id": "0x55876b024830-EndProgramStmt", - "Name": "0x55876b024830-Name" + "id": "0x55e0a355fdb0-EndProgramStmt", + "Name": "0x55e0a355fdb0-Name" }, { - "id": "0x55876b024830-Name", + "id": "0x55e0a355fdb0-Name", "source": "TEST_EXPRS" } ], + "comments": [], "enums": { "Fortran::common::CUDADataAttr": [ "Constant", diff --git a/FortranParser/resources-test/fortran/parser/comment.json b/FortranParser/resources-test/fortran/parser/comment.json index 90897cb2..6186ba9e 100644 --- a/FortranParser/resources-test/fortran/parser/comment.json +++ b/FortranParser/resources-test/fortran/parser/comment.json @@ -1,254 +1,255 @@ { + "fileExtension": "f90", "nodes": [ { - "id": "0x5611007d4f00-Program", + "id": "0x562236921f00-Program", "ProgramUnit": [ - "0x561100809c90-ProgramUnit" + "0x562236956be0-ProgramUnit" ] }, { - "id": "0x561100809c90-ProgramUnit", + "id": "0x562236956be0-ProgramUnit", "variantKey": "MainProgram", - "MainProgram": "0x561100802090-MainProgram" + "MainProgram": "0x56223694f120-MainProgram" }, { - "id": "0x561100802090-MainProgram", - "Statement": "0x5611008021d8-Statement", - "SpecificationPart": "0x561100802130-SpecificationPart", - "ExecutionPart": "0x561100802118-ExecutionPart", - "Statement": "0x561100802090-Statement" + "id": "0x56223694f120-MainProgram", + "Statement": "0x56223694f268-Statement", + "SpecificationPart": "0x56223694f1c0-SpecificationPart", + "ExecutionPart": "0x56223694f1a8-ExecutionPart", + "Statement": "0x56223694f120-Statement" }, { - "id": "0x5611008021d8-Statement", - "statement": "0x5611008021e8-ProgramStmt", + "id": "0x56223694f268-Statement", + "statement": "0x56223694f278-ProgramStmt", "source": "program HELLO" }, { - "id": "0x5611008021e8-ProgramStmt", - "Name": "0x5611008021e8-Name" + "id": "0x56223694f278-ProgramStmt", + "Name": "0x56223694f278-Name" }, { - "id": "0x5611008021e8-Name", + "id": "0x56223694f278-Name", "source": "HELLO" }, { - "id": "0x561100802130-SpecificationPart", - "ImplicitPart": "0x561100802148-ImplicitPart" + "id": "0x56223694f1c0-SpecificationPart", + "ImplicitPart": "0x56223694f1d8-ImplicitPart" }, { - "id": "0x561100802148-ImplicitPart" + "id": "0x56223694f1d8-ImplicitPart" }, { - "id": "0x561100802118-ExecutionPart", + "id": "0x56223694f1a8-ExecutionPart", "ExecutionPartConstruct": [ - "0x561100814a20-ExecutionPartConstruct", - "0x561100811470-ExecutionPartConstruct", - "0x5611008142c0-ExecutionPartConstruct" + "0x562236961d00-ExecutionPartConstruct", + "0x562236960df0-ExecutionPartConstruct", + "0x56223695e660-ExecutionPartConstruct" ] }, { - "id": "0x561100802118-ExecutionPartConstruct" + "id": "0x56223694f1a8-ExecutionPartConstruct" }, { - "id": "0x561100814a20-ExecutionPartConstruct", + "id": "0x562236961d00-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x561100814a20-ExecutableConstruct" + "ExecutableConstruct": "0x562236961d00-ExecutableConstruct" }, { - "id": "0x561100814a20-ExecutableConstruct", + "id": "0x562236961d00-ExecutableConstruct", "variantKey": "Statement", - "Statement": "0x561100814a20-Statement" + "Statement": "0x562236961d00-Statement" }, { - "id": "0x561100814a20-Statement", - "statement": "0x561100814a30-ActionStmt", + "id": "0x562236961d00-Statement", + "statement": "0x562236961d10-ActionStmt", "source": "print *, \"Hello, \"\"World!\"\"\"" }, { - "id": "0x561100814a30-ActionStmt", + "id": "0x562236961d10-ActionStmt", "variantKey": "PrintStmt", - "PrintStmt": "0x56110078a260-PrintStmt" + "PrintStmt": "0x5622368d7260-PrintStmt" }, { - "id": "0x56110078a260-PrintStmt", - "Format": "0x56110078a278-Format", + "id": "0x5622368d7260-PrintStmt", + "Format": "0x5622368d7278-Format", "OutputItem": [ - "0x561100815e60-OutputItem" + "0x562236962f20-OutputItem" ] }, { - "id": "0x56110078a278-Format", + "id": "0x5622368d7278-Format", "variantKey": "Star", - "Star": "0x56110078a278-Star" + "Star": "0x5622368d7278-Star" }, { - "id": "0x56110078a278-Star" + "id": "0x5622368d7278-Star" }, { - "id": "0x561100815e60-OutputItem", + "id": "0x562236962f20-OutputItem", "variantKey": "Expr", - "Expr": "0x561100815e60-Expr" + "Expr": "0x562236962f20-Expr" }, { - "id": "0x561100815e60-Expr", + "id": "0x562236962f20-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x561100815e80-LiteralConstant" + "LiteralConstant": "0x562236962f40-LiteralConstant" }, { - "id": "0x561100815e80-LiteralConstant", + "id": "0x562236962f40-LiteralConstant", "variantKey": "CharLiteralConstant", - "CharLiteralConstant": "0x561100815e80-CharLiteralConstant" + "CharLiteralConstant": "0x562236962f40-CharLiteralConstant" }, { - "id": "0x561100815e80-CharLiteralConstant", + "id": "0x562236962f40-CharLiteralConstant", "string": "Hello, \"World!\"" }, { - "id": "0x561100811470-ExecutionPartConstruct", + "id": "0x562236960df0-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x561100811470-ExecutableConstruct" + "ExecutableConstruct": "0x562236960df0-ExecutableConstruct" }, { - "id": "0x561100811470-ExecutableConstruct", + "id": "0x562236960df0-ExecutableConstruct", "variantKey": "Statement", - "Statement": "0x561100811470-Statement" + "Statement": "0x562236960df0-Statement" }, { - "id": "0x561100811470-Statement", - "statement": "0x561100811480-ActionStmt", + "id": "0x562236960df0-Statement", + "statement": "0x562236960e00-ActionStmt", "source": "print *, \"Some\"" }, { - "id": "0x561100811480-ActionStmt", + "id": "0x562236960e00-ActionStmt", "variantKey": "PrintStmt", - "PrintStmt": "0x561100811360-PrintStmt" + "PrintStmt": "0x562236960ce0-PrintStmt" }, { - "id": "0x561100811360-PrintStmt", - "Format": "0x561100811378-Format", + "id": "0x562236960ce0-PrintStmt", + "Format": "0x562236960cf8-Format", "OutputItem": [ - "0x561100813c30-OutputItem" + "0x562236961ae0-OutputItem" ] }, { - "id": "0x561100811378-Format", + "id": "0x562236960cf8-Format", "variantKey": "Star", - "Star": "0x561100811378-Star" + "Star": "0x562236960cf8-Star" }, { - "id": "0x561100811378-Star" + "id": "0x562236960cf8-Star" }, { - "id": "0x561100813c30-OutputItem", + "id": "0x562236961ae0-OutputItem", "variantKey": "Expr", - "Expr": "0x561100813c30-Expr" + "Expr": "0x562236961ae0-Expr" }, { - "id": "0x561100813c30-Expr", + "id": "0x562236961ae0-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x561100813c50-LiteralConstant" + "LiteralConstant": "0x562236961b00-LiteralConstant" }, { - "id": "0x561100813c50-LiteralConstant", + "id": "0x562236961b00-LiteralConstant", "variantKey": "CharLiteralConstant", - "CharLiteralConstant": "0x561100813c50-CharLiteralConstant" + "CharLiteralConstant": "0x562236961b00-CharLiteralConstant" }, { - "id": "0x561100813c50-CharLiteralConstant", + "id": "0x562236961b00-CharLiteralConstant", "string": "Some" }, { - "id": "0x5611008142c0-ExecutionPartConstruct", + "id": "0x56223695e660-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x5611008142c0-ExecutableConstruct" + "ExecutableConstruct": "0x56223695e660-ExecutableConstruct" }, { - "id": "0x5611008142c0-ExecutableConstruct", + "id": "0x56223695e660-ExecutableConstruct", "variantKey": "Statement", - "Statement": "0x5611008142c0-Statement" + "Statement": "0x56223695e660-Statement" }, { - "id": "0x5611008142c0-Statement", - "statement": "0x5611008142d0-ActionStmt", + "id": "0x56223695e660-Statement", + "statement": "0x56223695e670-ActionStmt", "source": "print *, \"thing\"" }, { - "id": "0x5611008142d0-ActionStmt", + "id": "0x56223695e670-ActionStmt", "variantKey": "PrintStmt", - "PrintStmt": "0x5611008141b0-PrintStmt" + "PrintStmt": "0x56223695e550-PrintStmt" }, { - "id": "0x5611008141b0-PrintStmt", - "Format": "0x5611008141c8-Format", + "id": "0x56223695e550-PrintStmt", + "Format": "0x56223695e568-Format", "OutputItem": [ - "0x5611008114d0-OutputItem" + "0x56223695e470-OutputItem" ] }, { - "id": "0x5611008141c8-Format", + "id": "0x56223695e568-Format", "variantKey": "Star", - "Star": "0x5611008141c8-Star" + "Star": "0x56223695e568-Star" }, { - "id": "0x5611008141c8-Star" + "id": "0x56223695e568-Star" }, { - "id": "0x5611008114d0-OutputItem", + "id": "0x56223695e470-OutputItem", "variantKey": "Expr", - "Expr": "0x5611008114d0-Expr" + "Expr": "0x56223695e470-Expr" }, { - "id": "0x5611008114d0-Expr", + "id": "0x56223695e470-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x5611008114f0-LiteralConstant" + "LiteralConstant": "0x56223695e490-LiteralConstant" }, { - "id": "0x5611008114f0-LiteralConstant", + "id": "0x56223695e490-LiteralConstant", "variantKey": "CharLiteralConstant", - "CharLiteralConstant": "0x5611008114f0-CharLiteralConstant" + "CharLiteralConstant": "0x56223695e490-CharLiteralConstant" }, { - "id": "0x5611008114f0-CharLiteralConstant", + "id": "0x56223695e490-CharLiteralConstant", "string": "thing" }, { - "id": "0x561100802090-Statement", - "statement": "0x5611008020a0-EndProgramStmt", + "id": "0x56223694f120-Statement", + "statement": "0x56223694f130-EndProgramStmt", "source": "end program HELLO" }, { - "id": "0x5611008020a0-EndProgramStmt", - "Name": "0x5611008020a0-Name" + "id": "0x56223694f130-EndProgramStmt", + "Name": "0x56223694f130-Name" }, { - "id": "0x5611008020a0-Name", + "id": "0x56223694f130-Name", "source": "HELLO" } ], "comments": [ { - "text": "! This is a \\comment", - "stmtId": "0x5611008021d8-Statement", + "text": " This is a \\comment", + "stmtId": "0x56223694f268-Statement", "trailing": false }, { - "text": "! This is \"another comment\"", - "stmtId": "0x561100814a20-Statement", + "text": " This is \"another comment\"", + "stmtId": "0x562236961d00-Statement", "trailing": false }, { - "text": "! This is a trailing comment", - "stmtId": "0x561100814a20-Statement", + "text": " This is a trailing comment", + "stmtId": "0x562236961d00-Statement", "trailing": true }, { - "text": "! This is a comment after a semicolon", - "stmtId": "0x5611008142c0-Statement", + "text": " This is a comment after a semicolon", + "stmtId": "0x56223695e660-Statement", "trailing": true }, { - "text": "! This is a final comment", - "stmtId": "0x5611007d4f00-Program", + "text": " This is a final comment", + "stmtId": "0x562236921f00-Program", "trailing": false } ], diff --git a/FortranParser/resources-test/fortran/parser/concurrent.json b/FortranParser/resources-test/fortran/parser/concurrent.json index 7e0abca8..685edd05 100644 --- a/FortranParser/resources-test/fortran/parser/concurrent.json +++ b/FortranParser/resources-test/fortran/parser/concurrent.json @@ -1,417 +1,419 @@ { + "fileExtension": "f90", "nodes": [ { - "id": "0x7fffcdb2a400-Program", + "id": "0x55b25f6e2f00-Program", "ProgramUnit": [ - "0x7fffcdb54000-ProgramUnit" + "0x55b25f718e20-ProgramUnit" ] }, { - "id": "0x7fffcdb54000-ProgramUnit", + "id": "0x55b25f718e20-ProgramUnit", "variantKey": "MainProgram", - "MainProgram": "0x7fffcdb56a30-MainProgram" + "MainProgram": "0x55b25f7108b0-MainProgram" }, { - "id": "0x7fffcdb56a30-MainProgram", - "Statement": "0x7fffcdb56b78-Statement", - "SpecificationPart": "0x7fffcdb56ad0-SpecificationPart", - "ExecutionPart": "0x7fffcdb56ab8-ExecutionPart", - "Statement": "0x7fffcdb56a30-Statement" + "id": "0x55b25f7108b0-MainProgram", + "Statement": "0x55b25f7109f8-Statement", + "SpecificationPart": "0x55b25f710950-SpecificationPart", + "ExecutionPart": "0x55b25f710938-ExecutionPart", + "Statement": "0x55b25f7108b0-Statement" }, { - "id": "0x7fffcdb56b78-Statement", - "statement": "0x7fffcdb56b88-ProgramStmt", + "id": "0x55b25f7109f8-Statement", + "statement": "0x55b25f710a08-ProgramStmt", "source": "program SIMPLE_LOOP" }, { - "id": "0x7fffcdb56b88-ProgramStmt", - "Name": "0x7fffcdb56b88-Name" + "id": "0x55b25f710a08-ProgramStmt", + "Name": "0x55b25f710a08-Name" }, { - "id": "0x7fffcdb56b88-Name", + "id": "0x55b25f710a08-Name", "source": "SIMPLE_LOOP" }, { - "id": "0x7fffcdb56ad0-SpecificationPart", - "ImplicitPart": "0x7fffcdb56ae8-ImplicitPart", + "id": "0x55b25f710950-SpecificationPart", + "ImplicitPart": "0x55b25f710968-ImplicitPart", "DeclarationConstruct": [ - "0x7fffcdb30d50-DeclarationConstruct", - "0x7fffcdb30980-DeclarationConstruct" + "0x55b25f6f0170-DeclarationConstruct", + "0x55b25f6f0110-DeclarationConstruct" ] }, { - "id": "0x7fffcdb56ae8-ImplicitPart" + "id": "0x55b25f710968-ImplicitPart" }, { - "id": "0x7fffcdb30d50-DeclarationConstruct", + "id": "0x55b25f6f0170-DeclarationConstruct", "variantKey": "SpecificationConstruct", - "SpecificationConstruct": "0x7fffcdb30d50-SpecificationConstruct" + "SpecificationConstruct": "0x55b25f6f0170-SpecificationConstruct" }, { - "id": "0x7fffcdb30d50-SpecificationConstruct", + "id": "0x55b25f6f0170-SpecificationConstruct", "variantKey": "Statement", - "Statement": "0x7fffcdb30d50-Statement" + "Statement": "0x55b25f6f0170-Statement" }, { - "id": "0x7fffcdb30d50-Statement", - "statement": "0x7fffcdb38910-TypeDeclarationStmt", + "id": "0x55b25f6f0170-Statement", + "statement": "0x55b25f71cd20-TypeDeclarationStmt", "source": "integer :: i, j" }, { - "id": "0x7fffcdb38910-TypeDeclarationStmt", - "DeclarationTypeSpec": "0x7fffcdb38940-DeclarationTypeSpec", + "id": "0x55b25f71cd20-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x55b25f71cd50-DeclarationTypeSpec", "EntityDecl": [ - "0x7fffcdb54830-EntityDecl", - "0x7fffcdb546a0-EntityDecl" + "0x55b25f71cf20-EntityDecl", + "0x55b25f71ce30-EntityDecl" ] }, { - "id": "0x7fffcdb38940-DeclarationTypeSpec", + "id": "0x55b25f71cd50-DeclarationTypeSpec", "variantKey": "IntrinsicTypeSpec", - "IntrinsicTypeSpec": "0x7fffcdb38940-IntrinsicTypeSpec" + "IntrinsicTypeSpec": "0x55b25f71cd50-IntrinsicTypeSpec" }, { - "id": "0x7fffcdb38940-IntrinsicTypeSpec", + "id": "0x55b25f71cd50-IntrinsicTypeSpec", "variantKey": "IntegerTypeSpec", - "IntegerTypeSpec": "0x7fffcdb38940-IntegerTypeSpec" + "IntegerTypeSpec": "0x55b25f71cd50-IntegerTypeSpec" }, { - "id": "0x7fffcdb38940-IntegerTypeSpec" + "id": "0x55b25f71cd50-IntegerTypeSpec" }, { - "id": "0x7fffcdb54830-EntityDecl", - "Name": "0x7fffcdb548e8-Name" + "id": "0x55b25f71cf20-EntityDecl", + "Name": "0x55b25f71cfd8-Name" }, { - "id": "0x7fffcdb548e8-Name", + "id": "0x55b25f71cfd8-Name", "source": "i" }, { - "id": "0x7fffcdb546a0-EntityDecl", - "Name": "0x7fffcdb54758-Name" + "id": "0x55b25f71ce30-EntityDecl", + "Name": "0x55b25f71cee8-Name" }, { - "id": "0x7fffcdb54758-Name", + "id": "0x55b25f71cee8-Name", "source": "j" }, { - "id": "0x7fffcdb30980-DeclarationConstruct", + "id": "0x55b25f6f0110-DeclarationConstruct", "variantKey": "SpecificationConstruct", - "SpecificationConstruct": "0x7fffcdb30980-SpecificationConstruct" + "SpecificationConstruct": "0x55b25f6f0110-SpecificationConstruct" }, { - "id": "0x7fffcdb30980-SpecificationConstruct", + "id": "0x55b25f6f0110-SpecificationConstruct", "variantKey": "Statement", - "Statement": "0x7fffcdb30980-Statement" + "Statement": "0x55b25f6f0110-Statement" }, { - "id": "0x7fffcdb30980-Statement", - "statement": "0x7fffcdb54910-TypeDeclarationStmt", + "id": "0x55b25f6f0110-Statement", + "statement": "0x55b25f71cda0-TypeDeclarationStmt", "source": "real :: x" }, { - "id": "0x7fffcdb54910-TypeDeclarationStmt", - "DeclarationTypeSpec": "0x7fffcdb54940-DeclarationTypeSpec", + "id": "0x55b25f71cda0-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x55b25f71cdd0-DeclarationTypeSpec", "EntityDecl": [ - "0x7fffcdb549a0-EntityDecl" + "0x55b25f71d090-EntityDecl" ] }, { - "id": "0x7fffcdb54940-DeclarationTypeSpec", + "id": "0x55b25f71cdd0-DeclarationTypeSpec", "variantKey": "IntrinsicTypeSpec", - "IntrinsicTypeSpec": "0x7fffcdb54940-IntrinsicTypeSpec" + "IntrinsicTypeSpec": "0x55b25f71cdd0-IntrinsicTypeSpec" }, { - "id": "0x7fffcdb54940-IntrinsicTypeSpec", + "id": "0x55b25f71cdd0-IntrinsicTypeSpec", "variantKey": "Real", - "Real": "0x7fffcdb54940-Real" + "Real": "0x55b25f71cdd0-Real" }, { - "id": "0x7fffcdb54940-Real" + "id": "0x55b25f71cdd0-Real" }, { - "id": "0x7fffcdb549a0-EntityDecl", - "Name": "0x7fffcdb54a58-Name" + "id": "0x55b25f71d090-EntityDecl", + "Name": "0x55b25f71d148-Name" }, { - "id": "0x7fffcdb54a58-Name", + "id": "0x55b25f71d148-Name", "source": "x" }, { - "id": "0x7fffcdb56ab8-ExecutionPart", + "id": "0x55b25f710938-ExecutionPart", "ExecutionPartConstruct": [ - "0x7fffcdb56310-ExecutionPartConstruct" + "0x55b25f71ea10-ExecutionPartConstruct" ] }, { - "id": "0x7fffcdb56ab8-ExecutionPartConstruct" + "id": "0x55b25f710938-ExecutionPartConstruct" }, { - "id": "0x7fffcdb56310-ExecutionPartConstruct", + "id": "0x55b25f71ea10-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x7fffcdb56310-ExecutableConstruct" + "ExecutableConstruct": "0x55b25f71ea10-ExecutableConstruct" }, { - "id": "0x7fffcdb56310-ExecutableConstruct", + "id": "0x55b25f71ea10-ExecutableConstruct", "variantKey": "DoConstruct", - "DoConstruct": "0x7fffcdb15490-DoConstruct" + "DoConstruct": "0x55b25f6b8780-DoConstruct" }, { - "id": "0x7fffcdb15490-DoConstruct", - "Statement": "0x7fffcdb154e8-Statement", + "id": "0x55b25f6b8780-DoConstruct", + "Statement": "0x55b25f6b87d8-Statement", "ExecutionPartConstruct": [ - "0x7fffcdb56450-ExecutionPartConstruct" + "0x55b25f71eb50-ExecutionPartConstruct" ], - "Statement": "0x7fffcdb15490-Statement" + "Statement": "0x55b25f6b8780-Statement" }, { - "id": "0x7fffcdb154e8-Statement", - "statement": "0x7fffcdb154f8-NonLabelDoStmt", + "id": "0x55b25f6b87d8-Statement", + "statement": "0x55b25f6b87e8-NonLabelDoStmt", "source": "do concurrent(i = 1:10:1, j = 1:10, i > 5)" }, { - "id": "0x7fffcdb154f8-NonLabelDoStmt", - "LoopControl": "0x7fffcdb154f8-LoopControl" + "id": "0x55b25f6b87e8-NonLabelDoStmt", + "LoopControl": "0x55b25f6b87e8-LoopControl" }, { - "id": "0x7fffcdb154f8-LoopControl", + "id": "0x55b25f6b87e8-LoopControl", "variantKey": "Concurrent", - "Concurrent": "0x7fffcdb154f8-Concurrent" + "Concurrent": "0x55b25f6b87e8-Concurrent" }, { - "id": "0x7fffcdb154f8-Concurrent", - "ConcurrentHeader": "0x7fffcdb15510-ConcurrentHeader" + "id": "0x55b25f6b87e8-Concurrent", + "ConcurrentHeader": "0x55b25f6b8800-ConcurrentHeader" }, { - "id": "0x7fffcdb15510-ConcurrentHeader", + "id": "0x55b25f6b8800-ConcurrentHeader", "ConcurrentControl": [ - "0x7fffcdb52e40-ConcurrentControl", - "0x7fffcdb52db0-ConcurrentControl" + "0x55b25f726680-ConcurrentControl", + "0x55b25f70a100-ConcurrentControl" ], - "Expr": "0x7fffcdb56780-Expr" + "Expr": "0x55b25f70d770-Expr" }, { - "id": "0x7fffcdb52e40-ConcurrentControl", - "var": "0x7fffcdb52e60-Name", - "lower": "0x7fffcdb531d0-Expr", - "upper": "0x7fffcdb56060-Expr", - "step": "0x7fffcdb56140-Expr" + "id": "0x55b25f726680-ConcurrentControl", + "var": "0x55b25f7266a0-Name", + "lower": "0x55b25f71e620-Expr", + "upper": "0x55b25f71e700-Expr", + "step": "0x55b25f71e7e0-Expr" }, { - "id": "0x7fffcdb52e60-Name", + "id": "0x55b25f7266a0-Name", "source": "i" }, { - "id": "0x7fffcdb531d0-Expr", + "id": "0x55b25f71e620-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x7fffcdb531f0-LiteralConstant" + "LiteralConstant": "0x55b25f71e640-LiteralConstant" }, { - "id": "0x7fffcdb531f0-LiteralConstant", + "id": "0x55b25f71e640-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x7fffcdb531f0-IntLiteralConstant" + "IntLiteralConstant": "0x55b25f71e640-IntLiteralConstant" }, { - "id": "0x7fffcdb531f0-IntLiteralConstant", + "id": "0x55b25f71e640-IntLiteralConstant", "CharBlock": "1" }, { - "id": "0x7fffcdb56060-Expr", + "id": "0x55b25f71e700-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x7fffcdb56080-LiteralConstant" + "LiteralConstant": "0x55b25f71e720-LiteralConstant" }, { - "id": "0x7fffcdb56080-LiteralConstant", + "id": "0x55b25f71e720-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x7fffcdb56080-IntLiteralConstant" + "IntLiteralConstant": "0x55b25f71e720-IntLiteralConstant" }, { - "id": "0x7fffcdb56080-IntLiteralConstant", + "id": "0x55b25f71e720-IntLiteralConstant", "CharBlock": "10" }, { - "id": "0x7fffcdb56140-Expr", + "id": "0x55b25f71e7e0-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x7fffcdb56160-LiteralConstant" + "LiteralConstant": "0x55b25f71e800-LiteralConstant" }, { - "id": "0x7fffcdb56160-LiteralConstant", + "id": "0x55b25f71e800-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x7fffcdb56160-IntLiteralConstant" + "IntLiteralConstant": "0x55b25f71e800-IntLiteralConstant" }, { - "id": "0x7fffcdb56160-IntLiteralConstant", + "id": "0x55b25f71e800-IntLiteralConstant", "CharBlock": "1" }, { - "id": "0x7fffcdb52db0-ConcurrentControl", - "var": "0x7fffcdb52dd0-Name", - "lower": "0x7fffcdb56220-Expr", - "upper": "0x7fffcdb56360-Expr" + "id": "0x55b25f70a100-ConcurrentControl", + "var": "0x55b25f70a120-Name", + "lower": "0x55b25f71e920-Expr", + "upper": "0x55b25f71ea60-Expr" }, { - "id": "0x7fffcdb52dd0-Name", + "id": "0x55b25f70a120-Name", "source": "j" }, { - "id": "0x7fffcdb56220-Expr", + "id": "0x55b25f71e920-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x7fffcdb56240-LiteralConstant" + "LiteralConstant": "0x55b25f71e940-LiteralConstant" }, { - "id": "0x7fffcdb56240-LiteralConstant", + "id": "0x55b25f71e940-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x7fffcdb56240-IntLiteralConstant" + "IntLiteralConstant": "0x55b25f71e940-IntLiteralConstant" }, { - "id": "0x7fffcdb56240-IntLiteralConstant", + "id": "0x55b25f71e940-IntLiteralConstant", "CharBlock": "1" }, { - "id": "0x7fffcdb56360-Expr", + "id": "0x55b25f71ea60-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x7fffcdb56380-LiteralConstant" + "LiteralConstant": "0x55b25f71ea80-LiteralConstant" }, { - "id": "0x7fffcdb56380-LiteralConstant", + "id": "0x55b25f71ea80-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x7fffcdb56380-IntLiteralConstant" + "IntLiteralConstant": "0x55b25f71ea80-IntLiteralConstant" }, { - "id": "0x7fffcdb56380-IntLiteralConstant", + "id": "0x55b25f71ea80-IntLiteralConstant", "CharBlock": "10" }, { - "id": "0x7fffcdb56780-Expr", + "id": "0x55b25f70d770-Expr", "variantKey": "GT", - "GT": "0x7fffcdb567a0-GT" + "GT": "0x55b25f70d790-GT" }, { - "id": "0x7fffcdb567a0-GT", - "left": "0x7fffcdb566a0-Expr", - "right": "0x7fffcdb565c0-Expr", + "id": "0x55b25f70d790-GT", + "left": "0x55b25f71eda0-Expr", + "right": "0x55b25f71ecc0-Expr", "op": "GT" }, { - "id": "0x7fffcdb566a0-Expr", + "id": "0x55b25f71eda0-Expr", "variantKey": "Designator", - "Designator": "0x7fffcdb56500-Designator" + "Designator": "0x55b25f71ec00-Designator" }, { - "id": "0x7fffcdb56500-Designator", + "id": "0x55b25f71ec00-Designator", "variantKey": "DataRef", - "DataRef": "0x7fffcdb56510-DataRef" + "DataRef": "0x55b25f71ec10-DataRef" }, { - "id": "0x7fffcdb56510-DataRef", + "id": "0x55b25f71ec10-DataRef", "variantKey": "Name", - "Name": "0x7fffcdb56510-Name" + "Name": "0x55b25f71ec10-Name" }, { - "id": "0x7fffcdb56510-Name", + "id": "0x55b25f71ec10-Name", "source": "i" }, { - "id": "0x7fffcdb565c0-Expr", + "id": "0x55b25f71ecc0-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x7fffcdb565e0-LiteralConstant" + "LiteralConstant": "0x55b25f71ece0-LiteralConstant" }, { - "id": "0x7fffcdb565e0-LiteralConstant", + "id": "0x55b25f71ece0-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x7fffcdb565e0-IntLiteralConstant" + "IntLiteralConstant": "0x55b25f71ece0-IntLiteralConstant" }, { - "id": "0x7fffcdb565e0-IntLiteralConstant", + "id": "0x55b25f71ece0-IntLiteralConstant", "CharBlock": "5" }, { - "id": "0x7fffcdb154d0-ExecutionPartConstruct" + "id": "0x55b25f6b87c0-ExecutionPartConstruct" }, { - "id": "0x7fffcdb56450-ExecutionPartConstruct", + "id": "0x55b25f71eb50-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x7fffcdb56450-ExecutableConstruct" + "ExecutableConstruct": "0x55b25f71eb50-ExecutableConstruct" }, { - "id": "0x7fffcdb56450-ExecutableConstruct", + "id": "0x55b25f71eb50-ExecutableConstruct", "variantKey": "Statement", - "Statement": "0x7fffcdb56450-Statement" + "Statement": "0x55b25f71eb50-Statement" }, { - "id": "0x7fffcdb56450-Statement", - "statement": "0x7fffcdb56460-ActionStmt", + "id": "0x55b25f71eb50-Statement", + "statement": "0x55b25f71eb60-ActionStmt", "source": "x = 0.0" }, { - "id": "0x7fffcdb56460-ActionStmt", + "id": "0x55b25f71eb60-ActionStmt", "variantKey": "AssignmentStmt", - "AssignmentStmt": "0x7fffcdb53a60-AssignmentStmt" + "AssignmentStmt": "0x55b25f6f0ce0-AssignmentStmt" }, { - "id": "0x7fffcdb53a60-AssignmentStmt", - "Variable": "0x7fffcdb53b40-Variable", - "Expr": "0x7fffcdb53a70-Expr" + "id": "0x55b25f6f0ce0-AssignmentStmt", + "Variable": "0x55b25f6f0dc0-Variable", + "Expr": "0x55b25f6f0cf0-Expr" }, { - "id": "0x7fffcdb53b40-Variable", + "id": "0x55b25f6f0dc0-Variable", "variantKey": "Designator", - "Designator": "0x7fffcdb55690-Designator" + "Designator": "0x55b25f71e8c0-Designator" }, { - "id": "0x7fffcdb55690-Designator", + "id": "0x55b25f71e8c0-Designator", "variantKey": "DataRef", - "DataRef": "0x7fffcdb556a0-DataRef" + "DataRef": "0x55b25f71e8d0-DataRef" }, { - "id": "0x7fffcdb556a0-DataRef", + "id": "0x55b25f71e8d0-DataRef", "variantKey": "Name", - "Name": "0x7fffcdb556a0-Name" + "Name": "0x55b25f71e8d0-Name" }, { - "id": "0x7fffcdb556a0-Name", + "id": "0x55b25f71e8d0-Name", "source": "x" }, { - "id": "0x7fffcdb53a70-Expr", + "id": "0x55b25f6f0cf0-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x7fffcdb53a90-LiteralConstant" + "LiteralConstant": "0x55b25f6f0d10-LiteralConstant" }, { - "id": "0x7fffcdb53a90-LiteralConstant", + "id": "0x55b25f6f0d10-LiteralConstant", "variantKey": "RealLiteralConstant", - "RealLiteralConstant": "0x7fffcdb53a90-RealLiteralConstant" + "RealLiteralConstant": "0x55b25f6f0d10-RealLiteralConstant" }, { - "id": "0x7fffcdb53a90-RealLiteralConstant", - "real": "0x7fffcdb53a90-Real" + "id": "0x55b25f6f0d10-RealLiteralConstant", + "real": "0x55b25f6f0d10-Real" }, { - "id": "0x7fffcdb53a90-Real", + "id": "0x55b25f6f0d10-Real", "source": "0.0" }, { - "id": "0x7fffcdb15490-Statement", - "statement": "0x7fffcdb154a0-EndDoStmt", + "id": "0x55b25f6b8780-Statement", + "statement": "0x55b25f6b8790-EndDoStmt", "source": "end do" }, { - "id": "0x7fffcdb154a0-EndDoStmt" + "id": "0x55b25f6b8790-EndDoStmt" }, { - "id": "0x7fffcdb56a30-Statement", - "statement": "0x7fffcdb56a40-EndProgramStmt", + "id": "0x55b25f7108b0-Statement", + "statement": "0x55b25f7108c0-EndProgramStmt", "source": "end program SIMPLE_LOOP" }, { - "id": "0x7fffcdb56a40-EndProgramStmt", - "Name": "0x7fffcdb56a40-Name" + "id": "0x55b25f7108c0-EndProgramStmt", + "Name": "0x55b25f7108c0-Name" }, { - "id": "0x7fffcdb56a40-Name", + "id": "0x55b25f7108c0-Name", "source": "SIMPLE_LOOP" } ], + "comments": [], "enums": { "Fortran::common::CUDADataAttr": [ "Constant", @@ -429,6 +431,27 @@ "Global", "Grid_Global" ], + "Fortran::common::ImportKind": [ + "Default", + "Only", + "None", + "All" + ], + "Fortran::common::OmpDependenceKind": [ + "In", + "Out", + "Inout", + "Inoutset", + "Mutexinoutset", + "Depobj" + ], + "Fortran::common::OmpMemoryOrderType": [ + "Acq_Rel", + "Acquire", + "Relaxed", + "Release", + "Seq_Cst" + ], "Fortran::common::OpenACCDeviceType": [ "Star", "Default", @@ -450,6 +473,11 @@ "Object", "Common" ], + "Fortran::parser::CompilerDirective::VectorLength::Kind": [ + "Auto", + "Fixed", + "Scalable" + ], "Fortran::parser::ConnectSpec::CharExpr::Kind": [ "Access", "Action", @@ -559,53 +587,38 @@ "Eqv", "Neqv" ], - "Fortran::parser::OmpTraitSelectorName::Value": [ - "Arch", - "Atomic_Default_Mem_Order", - "Condition", - "Device_Num", - "Extension", - "Isa", - "Kind", - "Requires", - "Simd", - "Uid", - "Vendor" + "Fortran::parser::OmpAccessGroup::Value": [ + "Cgroup" ], - "Fortran::parser::OmpTraitSetSelectorName::Value": [ - "Construct", - "Device", - "Implementation", - "Target_Device", - "User" + "Fortran::parser::OmpAdjustArgsClause::OmpAdjustOp::Value": [ + "Nothing", + "Need_Device_Ptr" ], - "Fortran::parser::OmpMapType::Value": [ - "Alloc", - "Delete", - "From", - "Release", - "To", - "Tofrom" - ], - "Fortran::parser::OmpMapTypeModifier::Value": [ - "Always", - "Close", - "Present", - "Ompx_Hold" + "Fortran::parser::OmpAlwaysModifier::Value": [ + "Always" ], "Fortran::parser::OmpAtClause::ActionTime": [ "Compilation", "Execution" ], - "Fortran::parser::OmpSeverityClause::Severity": [ - "Fatal", - "Warning" + "Fortran::parser::OmpAttachModifier::Value": [ + "Always", + "Never", + "Auto" ], - "Fortran::parser::OmpCancelType::Type": [ + "Fortran::parser::OmpAutomapModifier::Value": [ + "Automap" + ], + "Fortran::parser::OmpBindClause::Binding": [ "Parallel", - "Sections", - "Do", - "Taskgroup" + "Teams", + "Thread" + ], + "Fortran::parser::OmpChunkModifier::Value": [ + "Simd" + ], + "Fortran::parser::OmpCloseModifier::Value": [ + "Close" ], "Fortran::parser::OmpDefaultClause::DataSharingAttribute": [ "Private", @@ -613,13 +626,6 @@ "Shared", "None" ], - "Fortran::parser::OmpVariableCategory::Value": [ - "Aggregate", - "All", - "Allocatable", - "Pointer", - "Scalar" - ], "Fortran::parser::OmpDefaultmapClause::ImplicitBehavior": [ "Alloc", "To", @@ -627,23 +633,36 @@ "Tofrom", "Firstprivate", "None", - "Default" + "Default", + "Present" + ], + "Fortran::parser::OmpDeleteModifier::Value": [ + "Delete" ], "Fortran::parser::OmpDependenceType::Value": [ "Sink", "Source" ], - "Fortran::parser::OmpTaskDependenceType::Value": [ - "In", - "Out", - "Inout", - "Inoutset", - "Mutexinoutset", - "Depobj" + "Fortran::parser::OmpDeviceModifier::Value": [ + "Ancestor", + "Device_Num" + ], + "Fortran::parser::OmpDeviceTypeClause::DeviceTypeDescription": [ + "Any", + "Host", + "Nohost" + ], + "Fortran::parser::OmpDirectiveSpecification::Flag": [ + "DeprecatedSyntax", + "CrossesLabelDo" ], "Fortran::parser::OmpExpectation::Value": [ "Present" ], + "Fortran::parser::OmpInteropType::Value": [ + "Target", + "Targetsync" + ], "Fortran::parser::OmpLastprivateModifier::Value": [ "Conditional" ], @@ -652,9 +671,32 @@ "Uval", "Val" ], + "Fortran::parser::OmpMapType::Value": [ + "Alloc", + "Delete", + "From", + "Release", + "Storage", + "To", + "Tofrom" + ], + "Fortran::parser::OmpMapTypeModifier::Value": [ + "Always", + "Close", + "Present", + "Ompx_Hold" + ], + "Fortran::parser::OmpObject::Invalid::Kind": [ + "BlankCommonBlock" + ], "Fortran::parser::OmpOrderClause::Ordering": [ "Concurrent" ], + "Fortran::parser::OmpOrderingModifier::Value": [ + "Monotonic", + "Nonmonotonic", + "Simd" + ], "Fortran::parser::OmpOrderModifier::Value": [ "Reproducible", "Unconstrained" @@ -662,10 +704,8 @@ "Fortran::parser::OmpPrescriptiveness::Value": [ "Strict" ], - "Fortran::parser::OmpBindClause::Binding": [ - "Parallel", - "Teams", - "Thread" + "Fortran::parser::OmpPresentModifier::Value": [ + "Present" ], "Fortran::parser::OmpProcBindClause::AffinityPolicy": [ "Close", @@ -678,6 +718,11 @@ "Inscan", "Task" ], + "Fortran::parser::OmpRefModifier::Value": [ + "Ref_Ptee", + "Ref_Ptr", + "Ref_Ptr_Ptee" + ], "Fortran::parser::OmpScheduleClause::Kind": [ "Static", "Dynamic", @@ -685,27 +730,46 @@ "Auto", "Runtime" ], - "Fortran::parser::OmpDeviceModifier::Value": [ - "Ancestor", - "Device_Num" + "Fortran::parser::OmpSelfModifier::Value": [ + "Self" ], - "Fortran::parser::OmpDeviceTypeClause::DeviceTypeDescription": [ - "Any", - "Host", - "Nohost" + "Fortran::parser::OmpSeverityClause::SevLevel": [ + "Fatal", + "Warning" ], - "Fortran::parser::OmpChunkModifier::Value": [ - "Simd" + "Fortran::parser::OmpThreadsetClause::ThreadsetPolicy": [ + "Omp_Pool", + "Omp_Team" ], - "Fortran::parser::OmpOrderingModifier::Value": [ - "Monotonic", - "Nonmonotonic", - "Simd" + "Fortran::parser::OmpTraitSelectorName::Value": [ + "Arch", + "Atomic_Default_Mem_Order", + "Condition", + "Device_Num", + "Extension", + "Isa", + "Kind", + "Requires", + "Simd", + "Uid", + "Vendor" + ], + "Fortran::parser::OmpTraitSetSelectorName::Value": [ + "Construct", + "Device", + "Implementation", + "Target_Device", + "User" ], - "Fortran::common::OmpAtomicDefaultMemOrderType": [ - "SeqCst", - "AcqRel", - "Relaxed" + "Fortran::parser::OmpVariableCategory::Value": [ + "Aggregate", + "All", + "Allocatable", + "Pointer", + "Scalar" + ], + "Fortran::parser::OmpxHoldModifier::Value": [ + "Ompx_Hold" ], "Fortran::parser::ProcedureStmt::Kind": [ "ModuleProcedure", @@ -724,4 +788,4 @@ "Non_Intrinsic" ] } -} \ No newline at end of file +} diff --git a/FortranParser/resources-test/fortran/parser/conditionalstmt/chained_if.expected.f90 b/FortranParser/resources-test/fortran/parser/conditionalstmt/chained_if.expected.f90 index 46ac2636..0d87e340 100644 --- a/FortranParser/resources-test/fortran/parser/conditionalstmt/chained_if.expected.f90 +++ b/FortranParser/resources-test/fortran/parser/conditionalstmt/chained_if.expected.f90 @@ -1,7 +1,7 @@ PROGRAM IF LOGICAL :: cond1, cond2 - cond1 = .false. - cond2 = .true. + cond1 = .FALSE. + cond2 = .TRUE. IF (cond1) THEN PRINT *, "cond1 is true" diff --git a/FortranParser/resources-test/fortran/parser/conditionalstmt/if_then.expected.f90 b/FortranParser/resources-test/fortran/parser/conditionalstmt/if_then.expected.f90 index 1b18e374..47be87bf 100644 --- a/FortranParser/resources-test/fortran/parser/conditionalstmt/if_then.expected.f90 +++ b/FortranParser/resources-test/fortran/parser/conditionalstmt/if_then.expected.f90 @@ -1,6 +1,6 @@ PROGRAM IF LOGICAL :: cond - cond = .false. + cond = .FALSE. IF (cond) THEN PRINT *, "cond is true" diff --git a/FortranParser/resources-test/fortran/parser/conditionalstmt/if_then_else.expected.f90 b/FortranParser/resources-test/fortran/parser/conditionalstmt/if_then_else.expected.f90 index ea6852a8..8a7c7d0c 100644 --- a/FortranParser/resources-test/fortran/parser/conditionalstmt/if_then_else.expected.f90 +++ b/FortranParser/resources-test/fortran/parser/conditionalstmt/if_then_else.expected.f90 @@ -1,6 +1,6 @@ PROGRAM IF LOGICAL :: cond - cond = .false. + cond = .FALSE. IF (cond) THEN PRINT *, "cond is true" diff --git a/FortranParser/resources-test/fortran/parser/conditionalstmt/logical_if.expected.f90 b/FortranParser/resources-test/fortran/parser/conditionalstmt/logical_if.expected.f90 index 73e48239..1f9a31dc 100644 --- a/FortranParser/resources-test/fortran/parser/conditionalstmt/logical_if.expected.f90 +++ b/FortranParser/resources-test/fortran/parser/conditionalstmt/logical_if.expected.f90 @@ -1,7 +1,7 @@ PROGRAM LOGICAL_IF LOGICAL :: cond INTEGER :: result - cond = .false. + cond = .FALSE. result = 2 IF (cond) result = 3 END PROGRAM LOGICAL_IF \ No newline at end of file diff --git a/FortranParser/resources-test/fortran/parser/conditionalstmt/named_chained_if.expected.f90 b/FortranParser/resources-test/fortran/parser/conditionalstmt/named_chained_if.expected.f90 index 81cf74ff..e8c1e53d 100644 --- a/FortranParser/resources-test/fortran/parser/conditionalstmt/named_chained_if.expected.f90 +++ b/FortranParser/resources-test/fortran/parser/conditionalstmt/named_chained_if.expected.f90 @@ -1,7 +1,7 @@ PROGRAM IF LOGICAL :: cond1, cond2 - cond1 = .false. - cond2 = .true. + cond1 = .FALSE. + cond2 = .TRUE. named_if : IF (cond1) THEN PRINT *, "cond1 is true" diff --git a/FortranParser/resources-test/fortran/parser/continuation_line.expected.f b/FortranParser/resources-test/fortran/parser/continuation_line.expected.f new file mode 100644 index 00000000..1769c11c --- /dev/null +++ b/FortranParser/resources-test/fortran/parser/continuation_line.expected.f @@ -0,0 +1,6 @@ + PROGRAMCONTINUATION_LINE + INTEGERa(1000),b(100),c(100),d(100),e(100),f(100),g(100),code,erro + +r_here + WRITE(*,*)"REALLY cc + +c LONG STRING" + END \ No newline at end of file diff --git a/FortranParser/resources-test/fortran/parser/continuation_line.f b/FortranParser/resources-test/fortran/parser/continuation_line.f new file mode 100644 index 00000000..571b0b3b --- /dev/null +++ b/FortranParser/resources-test/fortran/parser/continuation_line.f @@ -0,0 +1,6 @@ + program continuation_line + integer a(1000),b(100),c(100),d(100),e(100),f(100),g(100),code + + ,error_here + write (*,*) 'REALLY + =ccc LONG STRING' + end program continuation_line \ No newline at end of file diff --git a/FortranParser/resources-test/fortran/parser/continuation_line.json b/FortranParser/resources-test/fortran/parser/continuation_line.json new file mode 100644 index 00000000..1ec970d8 --- /dev/null +++ b/FortranParser/resources-test/fortran/parser/continuation_line.json @@ -0,0 +1,832 @@ +{ + "fileExtension": "f", + "nodes": [ + { + "id": "0x55a5bfc43f00-Program", + "ProgramUnit": [ + "0x55a5bfc86030-ProgramUnit" + ] + }, + { + "id": "0x55a5bfc86030-ProgramUnit", + "variantKey": "MainProgram", + "MainProgram": "0x55a5bfc80930-MainProgram" + }, + { + "id": "0x55a5bfc80930-MainProgram", + "Statement": "0x55a5bfc80a78-Statement", + "SpecificationPart": "0x55a5bfc809d0-SpecificationPart", + "ExecutionPart": "0x55a5bfc809b8-ExecutionPart", + "Statement": "0x55a5bfc80930-Statement" + }, + { + "id": "0x55a5bfc80a78-Statement", + "statement": "0x55a5bfc80a88-ProgramStmt", + "source": "programCONTINUATION_LINE" + }, + { + "id": "0x55a5bfc80a88-ProgramStmt", + "Name": "0x55a5bfc80a88-Name" + }, + { + "id": "0x55a5bfc80a88-Name", + "source": "CONTINUATION_LINE" + }, + { + "id": "0x55a5bfc809d0-SpecificationPart", + "ImplicitPart": "0x55a5bfc809e8-ImplicitPart", + "DeclarationConstruct": [ + "0x55a5bfc6e9b0-DeclarationConstruct" + ] + }, + { + "id": "0x55a5bfc809e8-ImplicitPart" + }, + { + "id": "0x55a5bfc6e9b0-DeclarationConstruct", + "variantKey": "SpecificationConstruct", + "SpecificationConstruct": "0x55a5bfc6e9b0-SpecificationConstruct" + }, + { + "id": "0x55a5bfc6e9b0-SpecificationConstruct", + "variantKey": "Statement", + "Statement": "0x55a5bfc6e9b0-Statement" + }, + { + "id": "0x55a5bfc6e9b0-Statement", + "statement": "0x55a5bfc83780-TypeDeclarationStmt", + "source": "integera(1000),b(100),c(100),d(100),e(100),f(100),g(100),code,error_here" + }, + { + "id": "0x55a5bfc83780-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x55a5bfc837b0-DeclarationTypeSpec", + "EntityDecl": [ + "0x55a5bfc6e780-EntityDecl", + "0x55a5bfc83ba0-EntityDecl", + "0x55a5bfc83f30-EntityDecl", + "0x55a5bfc84320-EntityDecl", + "0x55a5bfc84710-EntityDecl", + "0x55a5bfc84b00-EntityDecl", + "0x55a5bfc84ef0-EntityDecl", + "0x55a5bfc87130-EntityDecl", + "0x55a5bfbf9270-EntityDecl" + ] + }, + { + "id": "0x55a5bfc837b0-DeclarationTypeSpec", + "variantKey": "IntrinsicTypeSpec", + "IntrinsicTypeSpec": "0x55a5bfc837b0-IntrinsicTypeSpec" + }, + { + "id": "0x55a5bfc837b0-IntrinsicTypeSpec", + "variantKey": "IntegerTypeSpec", + "IntegerTypeSpec": "0x55a5bfc837b0-IntegerTypeSpec" + }, + { + "id": "0x55a5bfc837b0-IntegerTypeSpec" + }, + { + "id": "0x55a5bfc6e780-EntityDecl", + "Name": "0x55a5bfc6e838-Name", + "ArraySpec": "0x55a5bfc6e800-ArraySpec" + }, + { + "id": "0x55a5bfc6e838-Name", + "source": "a" + }, + { + "id": "0x55a5bfc6e800-ArraySpec", + "variantKey": "ExplicitShapeSpec", + "ExplicitShapeSpec": [ + "0x55a5bfc795e0-ExplicitShapeSpec" + ] + }, + { + "id": "0x55a5bfc795e0-ExplicitShapeSpec", + "upper_bound": "0x55a5bfc795e0-SpecificationExpr" + }, + { + "id": "0x55a5bfc795e0-SpecificationExpr", + "Expr": "0x55a5bfbe3790-Expr" + }, + { + "id": "0x55a5bfbe3790-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55a5bfbe37b0-LiteralConstant" + }, + { + "id": "0x55a5bfbe37b0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55a5bfbe37b0-IntLiteralConstant" + }, + { + "id": "0x55a5bfbe37b0-IntLiteralConstant", + "CharBlock": "1000" + }, + { + "id": "0x55a5bfc83ba0-EntityDecl", + "Name": "0x55a5bfc83c58-Name", + "ArraySpec": "0x55a5bfc83c20-ArraySpec" + }, + { + "id": "0x55a5bfc83c58-Name", + "source": "b" + }, + { + "id": "0x55a5bfc83c20-ArraySpec", + "variantKey": "ExplicitShapeSpec", + "ExplicitShapeSpec": [ + "0x55a5bfc79610-ExplicitShapeSpec" + ] + }, + { + "id": "0x55a5bfc79610-ExplicitShapeSpec", + "upper_bound": "0x55a5bfc79610-SpecificationExpr" + }, + { + "id": "0x55a5bfc79610-SpecificationExpr", + "Expr": "0x55a5bfc83ab0-Expr" + }, + { + "id": "0x55a5bfc83ab0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55a5bfc83ad0-LiteralConstant" + }, + { + "id": "0x55a5bfc83ad0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55a5bfc83ad0-IntLiteralConstant" + }, + { + "id": "0x55a5bfc83ad0-IntLiteralConstant", + "CharBlock": "100" + }, + { + "id": "0x55a5bfc83f30-EntityDecl", + "Name": "0x55a5bfc83fe8-Name", + "ArraySpec": "0x55a5bfc83fb0-ArraySpec" + }, + { + "id": "0x55a5bfc83fe8-Name", + "source": "c" + }, + { + "id": "0x55a5bfc83fb0-ArraySpec", + "variantKey": "ExplicitShapeSpec", + "ExplicitShapeSpec": [ + "0x55a5bfc79640-ExplicitShapeSpec" + ] + }, + { + "id": "0x55a5bfc79640-ExplicitShapeSpec", + "upper_bound": "0x55a5bfc79640-SpecificationExpr" + }, + { + "id": "0x55a5bfc79640-SpecificationExpr", + "Expr": "0x55a5bfc83e40-Expr" + }, + { + "id": "0x55a5bfc83e40-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55a5bfc83e60-LiteralConstant" + }, + { + "id": "0x55a5bfc83e60-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55a5bfc83e60-IntLiteralConstant" + }, + { + "id": "0x55a5bfc83e60-IntLiteralConstant", + "CharBlock": "100" + }, + { + "id": "0x55a5bfc84320-EntityDecl", + "Name": "0x55a5bfc843d8-Name", + "ArraySpec": "0x55a5bfc843a0-ArraySpec" + }, + { + "id": "0x55a5bfc843d8-Name", + "source": "d" + }, + { + "id": "0x55a5bfc843a0-ArraySpec", + "variantKey": "ExplicitShapeSpec", + "ExplicitShapeSpec": [ + "0x55a5bfc79690-ExplicitShapeSpec" + ] + }, + { + "id": "0x55a5bfc79690-ExplicitShapeSpec", + "upper_bound": "0x55a5bfc79690-SpecificationExpr" + }, + { + "id": "0x55a5bfc79690-SpecificationExpr", + "Expr": "0x55a5bfc84230-Expr" + }, + { + "id": "0x55a5bfc84230-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55a5bfc84250-LiteralConstant" + }, + { + "id": "0x55a5bfc84250-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55a5bfc84250-IntLiteralConstant" + }, + { + "id": "0x55a5bfc84250-IntLiteralConstant", + "CharBlock": "100" + }, + { + "id": "0x55a5bfc84710-EntityDecl", + "Name": "0x55a5bfc847c8-Name", + "ArraySpec": "0x55a5bfc84790-ArraySpec" + }, + { + "id": "0x55a5bfc847c8-Name", + "source": "e" + }, + { + "id": "0x55a5bfc84790-ArraySpec", + "variantKey": "ExplicitShapeSpec", + "ExplicitShapeSpec": [ + "0x55a5bfc797a0-ExplicitShapeSpec" + ] + }, + { + "id": "0x55a5bfc797a0-ExplicitShapeSpec", + "upper_bound": "0x55a5bfc797a0-SpecificationExpr" + }, + { + "id": "0x55a5bfc797a0-SpecificationExpr", + "Expr": "0x55a5bfc84620-Expr" + }, + { + "id": "0x55a5bfc84620-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55a5bfc84640-LiteralConstant" + }, + { + "id": "0x55a5bfc84640-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55a5bfc84640-IntLiteralConstant" + }, + { + "id": "0x55a5bfc84640-IntLiteralConstant", + "CharBlock": "100" + }, + { + "id": "0x55a5bfc84b00-EntityDecl", + "Name": "0x55a5bfc84bb8-Name", + "ArraySpec": "0x55a5bfc84b80-ArraySpec" + }, + { + "id": "0x55a5bfc84bb8-Name", + "source": "f" + }, + { + "id": "0x55a5bfc84b80-ArraySpec", + "variantKey": "ExplicitShapeSpec", + "ExplicitShapeSpec": [ + "0x55a5bfc797d0-ExplicitShapeSpec" + ] + }, + { + "id": "0x55a5bfc797d0-ExplicitShapeSpec", + "upper_bound": "0x55a5bfc797d0-SpecificationExpr" + }, + { + "id": "0x55a5bfc797d0-SpecificationExpr", + "Expr": "0x55a5bfc84a10-Expr" + }, + { + "id": "0x55a5bfc84a10-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55a5bfc84a30-LiteralConstant" + }, + { + "id": "0x55a5bfc84a30-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55a5bfc84a30-IntLiteralConstant" + }, + { + "id": "0x55a5bfc84a30-IntLiteralConstant", + "CharBlock": "100" + }, + { + "id": "0x55a5bfc84ef0-EntityDecl", + "Name": "0x55a5bfc84fa8-Name", + "ArraySpec": "0x55a5bfc84f70-ArraySpec" + }, + { + "id": "0x55a5bfc84fa8-Name", + "source": "g" + }, + { + "id": "0x55a5bfc84f70-ArraySpec", + "variantKey": "ExplicitShapeSpec", + "ExplicitShapeSpec": [ + "0x55a5bfc79820-ExplicitShapeSpec" + ] + }, + { + "id": "0x55a5bfc79820-ExplicitShapeSpec", + "upper_bound": "0x55a5bfc79820-SpecificationExpr" + }, + { + "id": "0x55a5bfc79820-SpecificationExpr", + "Expr": "0x55a5bfc84e00-Expr" + }, + { + "id": "0x55a5bfc84e00-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55a5bfc84e20-LiteralConstant" + }, + { + "id": "0x55a5bfc84e20-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55a5bfc84e20-IntLiteralConstant" + }, + { + "id": "0x55a5bfc84e20-IntLiteralConstant", + "CharBlock": "100" + }, + { + "id": "0x55a5bfc87130-EntityDecl", + "Name": "0x55a5bfc871e8-Name" + }, + { + "id": "0x55a5bfc871e8-Name", + "source": "code" + }, + { + "id": "0x55a5bfbf9270-EntityDecl", + "Name": "0x55a5bfbf9328-Name" + }, + { + "id": "0x55a5bfbf9328-Name", + "source": "error_here" + }, + { + "id": "0x55a5bfc809b8-ExecutionPart", + "ExecutionPartConstruct": [ + "0x55a5bfc84bf0-ExecutionPartConstruct" + ] + }, + { + "id": "0x55a5bfc809b8-ExecutionPartConstruct" + }, + { + "id": "0x55a5bfc84bf0-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55a5bfc84bf0-ExecutableConstruct" + }, + { + "id": "0x55a5bfc84bf0-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55a5bfc84bf0-Statement" + }, + { + "id": "0x55a5bfc84bf0-Statement", + "statement": "0x55a5bfc84c00-ActionStmt", + "source": "write(*,*)'REALLY ccc LONG STRING'" + }, + { + "id": "0x55a5bfc84c00-ActionStmt", + "variantKey": "WriteStmt", + "WriteStmt": "0x55a5bfc7b0e0-WriteStmt" + }, + { + "id": "0x55a5bfc7b0e0-WriteStmt", + "iounit": "0x55a5bfc7b0e0-IoUnit", + "format": "0x55a5bfc7b110-Format", + "controls": [], + "items": [ + "0x55a5bfc6fc10-OutputItem" + ] + }, + { + "id": "0x55a5bfc7b0e0-IoUnit", + "variantKey": "Star", + "Star": "0x55a5bfc7b0e0-Star" + }, + { + "id": "0x55a5bfc7b0e0-Star" + }, + { + "id": "0x55a5bfc7b110-Format", + "variantKey": "Star", + "Star": "0x55a5bfc7b110-Star" + }, + { + "id": "0x55a5bfc7b110-Star" + }, + { + "id": "0x55a5bfc6fc10-OutputItem", + "variantKey": "Expr", + "Expr": "0x55a5bfc6fc10-Expr" + }, + { + "id": "0x55a5bfc6fc10-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55a5bfc6fc30-LiteralConstant" + }, + { + "id": "0x55a5bfc6fc30-LiteralConstant", + "variantKey": "CharLiteralConstant", + "CharLiteralConstant": "0x55a5bfc6fc30-CharLiteralConstant" + }, + { + "id": "0x55a5bfc6fc30-CharLiteralConstant", + "string": "REALLY ccc LONG STRING" + }, + { + "id": "0x55a5bfc80930-Statement", + "statement": "0x55a5bfc80940-EndProgramStmt", + "source": "endprogramCONTINUATION_LINE" + }, + { + "id": "0x55a5bfc80940-EndProgramStmt", + "Name": "0x55a5bfc80940-Name" + }, + { + "id": "0x55a5bfc80940-Name", + "source": "CONTINUATION_LINE" + } + ], + "comments": [], + "enums": { + "Fortran::common::CUDADataAttr": [ + "Constant", + "Device", + "Managed", + "Pinned", + "Shared", + "Texture", + "Unified" + ], + "Fortran::common::CUDASubprogramAttrs": [ + "Host", + "Device", + "HostDevice", + "Global", + "Grid_Global" + ], + "Fortran::common::ImportKind": [ + "Default", + "Only", + "None", + "All" + ], + "Fortran::common::OmpDependenceKind": [ + "In", + "Out", + "Inout", + "Inoutset", + "Mutexinoutset", + "Depobj" + ], + "Fortran::common::OmpMemoryOrderType": [ + "Acq_Rel", + "Acquire", + "Relaxed", + "Release", + "Seq_Cst" + ], + "Fortran::common::OpenACCDeviceType": [ + "Star", + "Default", + "Nvidia", + "Radeon", + "Host", + "Multicore", + "None" + ], + "Fortran::parser::AccDataModifier::Modifier": [ + "ReadOnly", + "Zero" + ], + "Fortran::parser::AccessSpec::Kind": [ + "Public", + "Private" + ], + "Fortran::parser::BindEntity::Kind": [ + "Object", + "Common" + ], + "Fortran::parser::CompilerDirective::VectorLength::Kind": [ + "Auto", + "Fixed", + "Scalable" + ], + "Fortran::parser::ConnectSpec::CharExpr::Kind": [ + "Access", + "Action", + "Asynchronous", + "Blank", + "Decimal", + "Delim", + "Encoding", + "Form", + "Pad", + "Position", + "Round", + "Sign", + "Carriagecontrol", + "Convert", + "Dispose" + ], + "Fortran::parser::DefinedOperator::IntrinsicOperator": [ + "Power", + "Multiply", + "Divide", + "Add", + "Subtract", + "Concat", + "LT", + "LE", + "EQ", + "NE", + "GE", + "GT", + "NOT", + "AND", + "OR", + "EQV", + "NEQV" + ], + "Fortran::parser::ImplicitStmt::ImplicitNoneNameSpec": [ + "External", + "Type" + ], + "Fortran::parser::InquireSpec::CharVar::Kind": [ + "Access", + "Action", + "Asynchronous", + "Blank", + "Decimal", + "Delim", + "Direct", + "Encoding", + "Form", + "Formatted", + "Iomsg", + "Name", + "Pad", + "Position", + "Read", + "Readwrite", + "Round", + "Sequential", + "Sign", + "Stream", + "Status", + "Unformatted", + "Write", + "Carriagecontrol", + "Convert", + "Dispose" + ], + "Fortran::parser::InquireSpec::IntVar::Kind": [ + "Iostat", + "Nextrec", + "Number", + "Pos", + "Recl", + "Size" + ], + "Fortran::parser::InquireSpec::LogVar::Kind": [ + "Exist", + "Named", + "Opened", + "Pending" + ], + "Fortran::parser::IntentSpec::Intent": [ + "In", + "Out", + "InOut" + ], + "Fortran::parser::IoControlSpec::CharExpr::Kind": [ + "Advance", + "Blank", + "Decimal", + "Delim", + "Pad", + "Round", + "Sign" + ], + "Fortran::parser::ReductionOperator::Operator": [ + "Plus", + "Multiply", + "Max", + "Min", + "Iand", + "Ior", + "Ieor", + "And", + "Or", + "Eqv", + "Neqv" + ], + "Fortran::parser::OmpAccessGroup::Value": [ + "Cgroup" + ], + "Fortran::parser::OmpAdjustArgsClause::OmpAdjustOp::Value": [ + "Nothing", + "Need_Device_Ptr" + ], + "Fortran::parser::OmpAlwaysModifier::Value": [ + "Always" + ], + "Fortran::parser::OmpAtClause::ActionTime": [ + "Compilation", + "Execution" + ], + "Fortran::parser::OmpAttachModifier::Value": [ + "Always", + "Never", + "Auto" + ], + "Fortran::parser::OmpAutomapModifier::Value": [ + "Automap" + ], + "Fortran::parser::OmpBindClause::Binding": [ + "Parallel", + "Teams", + "Thread" + ], + "Fortran::parser::OmpChunkModifier::Value": [ + "Simd" + ], + "Fortran::parser::OmpCloseModifier::Value": [ + "Close" + ], + "Fortran::parser::OmpDefaultClause::DataSharingAttribute": [ + "Private", + "Firstprivate", + "Shared", + "None" + ], + "Fortran::parser::OmpDefaultmapClause::ImplicitBehavior": [ + "Alloc", + "To", + "From", + "Tofrom", + "Firstprivate", + "None", + "Default", + "Present" + ], + "Fortran::parser::OmpDeleteModifier::Value": [ + "Delete" + ], + "Fortran::parser::OmpDependenceType::Value": [ + "Sink", + "Source" + ], + "Fortran::parser::OmpDeviceModifier::Value": [ + "Ancestor", + "Device_Num" + ], + "Fortran::parser::OmpDeviceTypeClause::DeviceTypeDescription": [ + "Any", + "Host", + "Nohost" + ], + "Fortran::parser::OmpDirectiveSpecification::Flag": [ + "DeprecatedSyntax", + "CrossesLabelDo" + ], + "Fortran::parser::OmpExpectation::Value": [ + "Present" + ], + "Fortran::parser::OmpInteropType::Value": [ + "Target", + "Targetsync" + ], + "Fortran::parser::OmpLastprivateModifier::Value": [ + "Conditional" + ], + "Fortran::parser::OmpLinearModifier::Value": [ + "Ref", + "Uval", + "Val" + ], + "Fortran::parser::OmpMapType::Value": [ + "Alloc", + "Delete", + "From", + "Release", + "Storage", + "To", + "Tofrom" + ], + "Fortran::parser::OmpMapTypeModifier::Value": [ + "Always", + "Close", + "Present", + "Ompx_Hold" + ], + "Fortran::parser::OmpObject::Invalid::Kind": [ + "BlankCommonBlock" + ], + "Fortran::parser::OmpOrderClause::Ordering": [ + "Concurrent" + ], + "Fortran::parser::OmpOrderingModifier::Value": [ + "Monotonic", + "Nonmonotonic", + "Simd" + ], + "Fortran::parser::OmpOrderModifier::Value": [ + "Reproducible", + "Unconstrained" + ], + "Fortran::parser::OmpPrescriptiveness::Value": [ + "Strict" + ], + "Fortran::parser::OmpPresentModifier::Value": [ + "Present" + ], + "Fortran::parser::OmpProcBindClause::AffinityPolicy": [ + "Close", + "Master", + "Spread", + "Primary" + ], + "Fortran::parser::OmpReductionModifier::Value": [ + "Default", + "Inscan", + "Task" + ], + "Fortran::parser::OmpRefModifier::Value": [ + "Ref_Ptee", + "Ref_Ptr", + "Ref_Ptr_Ptee" + ], + "Fortran::parser::OmpScheduleClause::Kind": [ + "Static", + "Dynamic", + "Guided", + "Auto", + "Runtime" + ], + "Fortran::parser::OmpSelfModifier::Value": [ + "Self" + ], + "Fortran::parser::OmpSeverityClause::SevLevel": [ + "Fatal", + "Warning" + ], + "Fortran::parser::OmpThreadsetClause::ThreadsetPolicy": [ + "Omp_Pool", + "Omp_Team" + ], + "Fortran::parser::OmpTraitSelectorName::Value": [ + "Arch", + "Atomic_Default_Mem_Order", + "Condition", + "Device_Num", + "Extension", + "Isa", + "Kind", + "Requires", + "Simd", + "Uid", + "Vendor" + ], + "Fortran::parser::OmpTraitSetSelectorName::Value": [ + "Construct", + "Device", + "Implementation", + "Target_Device", + "User" + ], + "Fortran::parser::OmpVariableCategory::Value": [ + "Aggregate", + "All", + "Allocatable", + "Pointer", + "Scalar" + ], + "Fortran::parser::OmpxHoldModifier::Value": [ + "Ompx_Hold" + ], + "Fortran::parser::ProcedureStmt::Kind": [ + "ModuleProcedure", + "Procedure" + ], + "Fortran::parser::SavedEntity::Kind": [ + "Entity", + "Common" + ], + "Fortran::parser::StopStmt::Kind": [ + "Stop", + "ErrorStop" + ], + "Fortran::parser::UseStmt::ModuleNature": [ + "Intrinsic", + "Non_Intrinsic" + ] + } +} diff --git a/FortranParser/resources-test/fortran/parser/declaration.json b/FortranParser/resources-test/fortran/parser/declaration.json index a5bffe01..a1c10a98 100644 --- a/FortranParser/resources-test/fortran/parser/declaration.json +++ b/FortranParser/resources-test/fortran/parser/declaration.json @@ -1,152 +1,153 @@ { + "fileExtension": "f90", "nodes": [ { - "id": "0x55f217ee8f00-Program", + "id": "0x56474332af00-Program", "ProgramUnit": [ - "0x55f217f1ee20-ProgramUnit" + "0x564743360d80-ProgramUnit" ] }, { - "id": "0x55f217f1ee20-ProgramUnit", + "id": "0x564743360d80-ProgramUnit", "variantKey": "MainProgram", - "MainProgram": "0x55f217f23890-MainProgram" + "MainProgram": "0x564743365820-MainProgram" }, { - "id": "0x55f217f23890-MainProgram", - "Statement": "0x55f217f239d8-Statement", - "SpecificationPart": "0x55f217f23930-SpecificationPart", - "ExecutionPart": "0x55f217f23918-ExecutionPart", - "Statement": "0x55f217f23890-Statement" + "id": "0x564743365820-MainProgram", + "Statement": "0x564743365968-Statement", + "SpecificationPart": "0x5647433658c0-SpecificationPart", + "ExecutionPart": "0x5647433658a8-ExecutionPart", + "Statement": "0x564743365820-Statement" }, { - "id": "0x55f217f239d8-Statement", - "statement": "0x55f217f239e8-ProgramStmt", + "id": "0x564743365968-Statement", + "statement": "0x564743365978-ProgramStmt", "source": "program DECLARATION" }, { - "id": "0x55f217f239e8-ProgramStmt", - "Name": "0x55f217f239e8-Name" + "id": "0x564743365978-ProgramStmt", + "Name": "0x564743365978-Name" }, { - "id": "0x55f217f239e8-Name", + "id": "0x564743365978-Name", "source": "DECLARATION" }, { - "id": "0x55f217f23930-SpecificationPart", - "ImplicitPart": "0x55f217f23948-ImplicitPart", + "id": "0x5647433658c0-SpecificationPart", + "ImplicitPart": "0x5647433658d8-ImplicitPart", "DeclarationConstruct": [ - "0x55f217ef6110-DeclarationConstruct" + "0x564743338110-DeclarationConstruct" ] }, { - "id": "0x55f217f23948-ImplicitPart" + "id": "0x5647433658d8-ImplicitPart" }, { - "id": "0x55f217ef6110-DeclarationConstruct", + "id": "0x564743338110-DeclarationConstruct", "variantKey": "SpecificationConstruct", - "SpecificationConstruct": "0x55f217ef6110-SpecificationConstruct" + "SpecificationConstruct": "0x564743338110-SpecificationConstruct" }, { - "id": "0x55f217ef6110-SpecificationConstruct", + "id": "0x564743338110-SpecificationConstruct", "variantKey": "Statement", - "Statement": "0x55f217ef6110-Statement" + "Statement": "0x564743338110-Statement" }, { - "id": "0x55f217ef6110-Statement", - "statement": "0x55f217f1c320-TypeDeclarationStmt", + "id": "0x564743338110-Statement", + "statement": "0x56474335e290-TypeDeclarationStmt", "source": "integer :: a, b = 1" }, { - "id": "0x55f217f1c320-TypeDeclarationStmt", - "DeclarationTypeSpec": "0x55f217f1c350-DeclarationTypeSpec", + "id": "0x56474335e290-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x56474335e2c0-DeclarationTypeSpec", "EntityDecl": [ - "0x55f217f1c590-EntityDecl", - "0x55f217f1c4a0-EntityDecl" + "0x56474335e500-EntityDecl", + "0x56474335e410-EntityDecl" ] }, { - "id": "0x55f217f1c350-DeclarationTypeSpec", + "id": "0x56474335e2c0-DeclarationTypeSpec", "variantKey": "IntrinsicTypeSpec", - "IntrinsicTypeSpec": "0x55f217f1c350-IntrinsicTypeSpec" + "IntrinsicTypeSpec": "0x56474335e2c0-IntrinsicTypeSpec" }, { - "id": "0x55f217f1c350-IntrinsicTypeSpec", + "id": "0x56474335e2c0-IntrinsicTypeSpec", "variantKey": "IntegerTypeSpec", - "IntegerTypeSpec": "0x55f217f1c350-IntegerTypeSpec" + "IntegerTypeSpec": "0x56474335e2c0-IntegerTypeSpec" }, { - "id": "0x55f217f1c350-IntegerTypeSpec" + "id": "0x56474335e2c0-IntegerTypeSpec" }, { - "id": "0x55f217f1c590-EntityDecl", - "Name": "0x55f217f1c648-Name" + "id": "0x56474335e500-EntityDecl", + "Name": "0x56474335e5b8-Name" }, { - "id": "0x55f217f1c648-Name", + "id": "0x56474335e5b8-Name", "source": "a" }, { - "id": "0x55f217f1c4a0-EntityDecl", - "Name": "0x55f217f1c558-Name", - "Initialization": "0x55f217f1c4a0-Initialization" + "id": "0x56474335e410-EntityDecl", + "Name": "0x56474335e4c8-Name", + "Initialization": "0x56474335e410-Initialization" }, { - "id": "0x55f217f1c558-Name", + "id": "0x56474335e4c8-Name", "source": "b" }, { - "id": "0x55f217f1c4a0-Initialization", + "id": "0x56474335e410-Initialization", "variantKey": "Expr", - "Expr": "0x55f217e88790-Expr" + "Expr": "0x5647432ca790-Expr" }, { - "id": "0x55f217e88790-Expr", + "id": "0x5647432ca790-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55f217e887b0-LiteralConstant" + "LiteralConstant": "0x5647432ca7b0-LiteralConstant" }, { - "id": "0x55f217e887b0-LiteralConstant", + "id": "0x5647432ca7b0-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55f217e887b0-IntLiteralConstant" + "IntLiteralConstant": "0x5647432ca7b0-IntLiteralConstant" }, { - "id": "0x55f217e887b0-IntLiteralConstant", + "id": "0x5647432ca7b0-IntLiteralConstant", "CharBlock": "1" }, { - "id": "0x55f217f23918-ExecutionPart" + "id": "0x5647433658a8-ExecutionPart" }, { - "id": "0x55f217f23918-list" + "id": "0x5647433658a8-list" }, { - "id": "0x55f217f23890-Statement", - "statement": "0x55f217f238a0-EndProgramStmt", + "id": "0x564743365820-Statement", + "statement": "0x564743365830-EndProgramStmt", "source": "end program DECLARATION" }, { - "id": "0x55f217f238a0-EndProgramStmt", - "Name": "0x55f217f238a0-Name" + "id": "0x564743365830-EndProgramStmt", + "Name": "0x564743365830-Name" }, { - "id": "0x55f217f238a0-Name", + "id": "0x564743365830-Name", "source": "DECLARATION" } ], "comments": [ { - "text": "!integer i;", - "stmtId": "0x55f217f23890-Statement", + "text": "integer i;", + "stmtId": "0x564743365820-Statement", "trailing": false }, { - "text": "! i = 1", - "stmtId": "0x55f217f23890-Statement", + "text": " i = 1", + "stmtId": "0x564743365820-Statement", "trailing": false }, { - "text": "! a = 5", - "stmtId": "0x55f217f23890-Statement", + "text": " a = 5", + "stmtId": "0x564743365820-Statement", "trailing": false } ], diff --git a/FortranParser/resources-test/fortran/parser/do.json b/FortranParser/resources-test/fortran/parser/do.json index 5fe12f36..072c333b 100644 --- a/FortranParser/resources-test/fortran/parser/do.json +++ b/FortranParser/resources-test/fortran/parser/do.json @@ -1,671 +1,672 @@ { + "fileExtension": "f90", "nodes": [ { - "id": "0x55fc72d1ef00-Program", + "id": "0x562ea03d9f00-Program", "ProgramUnit": [ - "0x55fc72d58c70-ProgramUnit" + "0x562ea0413cc0-ProgramUnit" ] }, { - "id": "0x55fc72d58c70-ProgramUnit", + "id": "0x562ea0413cc0-ProgramUnit", "variantKey": "MainProgram", - "MainProgram": "0x55fc72d4ab90-MainProgram" + "MainProgram": "0x562ea0405b40-MainProgram" }, { - "id": "0x55fc72d4ab90-MainProgram", - "Statement": "0x55fc72d4acd8-Statement", - "SpecificationPart": "0x55fc72d4ac30-SpecificationPart", - "ExecutionPart": "0x55fc72d4ac18-ExecutionPart", - "Statement": "0x55fc72d4ab90-Statement" + "id": "0x562ea0405b40-MainProgram", + "Statement": "0x562ea0405c88-Statement", + "SpecificationPart": "0x562ea0405be0-SpecificationPart", + "ExecutionPart": "0x562ea0405bc8-ExecutionPart", + "Statement": "0x562ea0405b40-Statement" }, { - "id": "0x55fc72d4acd8-Statement", - "statement": "0x55fc72d4ace8-ProgramStmt", + "id": "0x562ea0405c88-Statement", + "statement": "0x562ea0405c98-ProgramStmt", "source": "program SIMPLE_LOOP" }, { - "id": "0x55fc72d4ace8-ProgramStmt", - "Name": "0x55fc72d4ace8-Name" + "id": "0x562ea0405c98-ProgramStmt", + "Name": "0x562ea0405c98-Name" }, { - "id": "0x55fc72d4ace8-Name", + "id": "0x562ea0405c98-Name", "source": "SIMPLE_LOOP" }, { - "id": "0x55fc72d4ac30-SpecificationPart", - "ImplicitPart": "0x55fc72d4ac48-ImplicitPart", + "id": "0x562ea0405be0-SpecificationPart", + "ImplicitPart": "0x562ea0405bf8-ImplicitPart", "DeclarationConstruct": [ - "0x55fc72d2c110-DeclarationConstruct" + "0x562ea03e7110-DeclarationConstruct" ] }, { - "id": "0x55fc72d4ac48-ImplicitPart" + "id": "0x562ea0405bf8-ImplicitPart" }, { - "id": "0x55fc72d2c110-DeclarationConstruct", + "id": "0x562ea03e7110-DeclarationConstruct", "variantKey": "SpecificationConstruct", - "SpecificationConstruct": "0x55fc72d2c110-SpecificationConstruct" + "SpecificationConstruct": "0x562ea03e7110-SpecificationConstruct" }, { - "id": "0x55fc72d2c110-SpecificationConstruct", + "id": "0x562ea03e7110-SpecificationConstruct", "variantKey": "Statement", - "Statement": "0x55fc72d2c110-Statement" + "Statement": "0x562ea03e7110-Statement" }, { - "id": "0x55fc72d2c110-Statement", - "statement": "0x55fc72d58f10-TypeDeclarationStmt", + "id": "0x562ea03e7110-Statement", + "statement": "0x562ea0413fc0-TypeDeclarationStmt", "source": "integer :: i, dummy, a = 2" }, { - "id": "0x55fc72d58f10-TypeDeclarationStmt", - "DeclarationTypeSpec": "0x55fc72d58f40-DeclarationTypeSpec", + "id": "0x562ea0413fc0-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x562ea0413ff0-DeclarationTypeSpec", "EntityDecl": [ - "0x55fc72d59270-EntityDecl", - "0x55fc72d59020-EntityDecl", - "0x55fc72d59180-EntityDecl" + "0x562ea0414320-EntityDecl", + "0x562ea04140d0-EntityDecl", + "0x562ea0414230-EntityDecl" ] }, { - "id": "0x55fc72d58f40-DeclarationTypeSpec", + "id": "0x562ea0413ff0-DeclarationTypeSpec", "variantKey": "IntrinsicTypeSpec", - "IntrinsicTypeSpec": "0x55fc72d58f40-IntrinsicTypeSpec" + "IntrinsicTypeSpec": "0x562ea0413ff0-IntrinsicTypeSpec" }, { - "id": "0x55fc72d58f40-IntrinsicTypeSpec", + "id": "0x562ea0413ff0-IntrinsicTypeSpec", "variantKey": "IntegerTypeSpec", - "IntegerTypeSpec": "0x55fc72d58f40-IntegerTypeSpec" + "IntegerTypeSpec": "0x562ea0413ff0-IntegerTypeSpec" }, { - "id": "0x55fc72d58f40-IntegerTypeSpec" + "id": "0x562ea0413ff0-IntegerTypeSpec" }, { - "id": "0x55fc72d59270-EntityDecl", - "Name": "0x55fc72d59328-Name" + "id": "0x562ea0414320-EntityDecl", + "Name": "0x562ea04143d8-Name" }, { - "id": "0x55fc72d59328-Name", + "id": "0x562ea04143d8-Name", "source": "i" }, { - "id": "0x55fc72d59020-EntityDecl", - "Name": "0x55fc72d590d8-Name" + "id": "0x562ea04140d0-EntityDecl", + "Name": "0x562ea0414188-Name" }, { - "id": "0x55fc72d590d8-Name", + "id": "0x562ea0414188-Name", "source": "dummy" }, { - "id": "0x55fc72d59180-EntityDecl", - "Name": "0x55fc72d59238-Name", - "Initialization": "0x55fc72d59180-Initialization" + "id": "0x562ea0414230-EntityDecl", + "Name": "0x562ea04142e8-Name", + "Initialization": "0x562ea0414230-Initialization" }, { - "id": "0x55fc72d59238-Name", + "id": "0x562ea04142e8-Name", "source": "a" }, { - "id": "0x55fc72d59180-Initialization", + "id": "0x562ea0414230-Initialization", "variantKey": "Expr", - "Expr": "0x55fc72cbe790-Expr" + "Expr": "0x562ea0379790-Expr" }, { - "id": "0x55fc72cbe790-Expr", + "id": "0x562ea0379790-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55fc72cbe7b0-LiteralConstant" + "LiteralConstant": "0x562ea03797b0-LiteralConstant" }, { - "id": "0x55fc72cbe7b0-LiteralConstant", + "id": "0x562ea03797b0-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55fc72cbe7b0-IntLiteralConstant" + "IntLiteralConstant": "0x562ea03797b0-IntLiteralConstant" }, { - "id": "0x55fc72cbe7b0-IntLiteralConstant", + "id": "0x562ea03797b0-IntLiteralConstant", "CharBlock": "2" }, { - "id": "0x55fc72d4ac18-ExecutionPart", + "id": "0x562ea0405bc8-ExecutionPart", "ExecutionPartConstruct": [ - "0x55fc72d59ec0-ExecutionPartConstruct", - "0x55fc72d5a5c0-ExecutionPartConstruct", - "0x55fc72d5ac70-ExecutionPartConstruct" + "0x562ea0413e10-ExecutionPartConstruct", + "0x562ea0415620-ExecutionPartConstruct", + "0x562ea0415cd0-ExecutionPartConstruct" ] }, { - "id": "0x55fc72d4ac18-ExecutionPartConstruct" + "id": "0x562ea0405bc8-ExecutionPartConstruct" }, { - "id": "0x55fc72d59ec0-ExecutionPartConstruct", + "id": "0x562ea0413e10-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x55fc72d59ec0-ExecutableConstruct" + "ExecutableConstruct": "0x562ea0413e10-ExecutableConstruct" }, { - "id": "0x55fc72d59ec0-ExecutableConstruct", + "id": "0x562ea0413e10-ExecutableConstruct", "variantKey": "OpenMPConstruct", - "OpenMPConstruct": "0x55fc72d5a400-OpenMPConstruct" + "OpenMPConstruct": "0x562ea0415460-OpenMPConstruct" }, { - "id": "0x55fc72d5a400-OpenMPConstruct", + "id": "0x562ea0415460-OpenMPConstruct", "variantKey": "OpenMPLoopConstruct", - "OpenMPLoopConstruct": "0x55fc72d5a400-OpenMPLoopConstruct" + "OpenMPLoopConstruct": "0x562ea0415460-OpenMPLoopConstruct" }, { - "id": "0x55fc72d5a400-OpenMPLoopConstruct", - "OmpBeginLoopDirective": "0x55fc72d5a4c0-OmpBeginLoopDirective", + "id": "0x562ea0415460-OpenMPLoopConstruct", + "OmpBeginLoopDirective": "0x562ea0415520-OmpBeginLoopDirective", "ExecutionPartConstruct": [ - "0x55fc72d5b280-ExecutionPartConstruct" + "0x562ea04163a0-ExecutionPartConstruct" ], - "OmpEndLoopDirective": "0x55fc72d5a410-OmpEndLoopDirective" + "OmpEndLoopDirective": "0x562ea0415470-OmpEndLoopDirective" }, { - "id": "0x55fc72d5a4c0-OmpBeginLoopDirective", - "OmpDirectiveName": "0x55fc72d5a538-OmpDirectiveName", - "OmpClauseList": "0x55fc72d5a4d8-OmpClauseList", - "Flags = {}": "0x55fc72d5a4d0-Flags = {}" + "id": "0x562ea0415520-OmpBeginLoopDirective", + "OmpDirectiveName": "0x562ea0415598-OmpDirectiveName", + "OmpClauseList": "0x562ea0415538-OmpClauseList", + "Flags = {}": "0x562ea0415530-Flags = {}" }, { - "id": "0x55fc72d5a538-OmpDirectiveName", + "id": "0x562ea0415598-OmpDirectiveName", "directive": "parallel do" }, { - "id": "0x55fc72d5a4d8-OmpClauseList" + "id": "0x562ea0415538-OmpClauseList" }, { - "id": "0x55fc72d5a4a8-ExecutionPartConstruct" + "id": "0x562ea0415508-ExecutionPartConstruct" }, { - "id": "0x55fc72d5b280-ExecutionPartConstruct", + "id": "0x562ea04163a0-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x55fc72d5b280-ExecutableConstruct" + "ExecutableConstruct": "0x562ea04163a0-ExecutableConstruct" }, { - "id": "0x55fc72d5b280-ExecutableConstruct", + "id": "0x562ea04163a0-ExecutableConstruct", "variantKey": "DoConstruct", - "DoConstruct": "0x55fc72cf4780-DoConstruct" + "DoConstruct": "0x562ea03af780-DoConstruct" }, { - "id": "0x55fc72cf4780-DoConstruct", - "Statement": "0x55fc72cf47d8-Statement", + "id": "0x562ea03af780-DoConstruct", + "Statement": "0x562ea03af7d8-Statement", "ExecutionPartConstruct": [ - "0x55fc72d537e0-ExecutionPartConstruct", - "0x55fc72d5a060-ExecutionPartConstruct" + "0x562ea0416980-ExecutionPartConstruct", + "0x562ea04150c0-ExecutionPartConstruct" ], - "Statement": "0x55fc72cf4780-Statement" + "Statement": "0x562ea03af780-Statement" }, { - "id": "0x55fc72cf47d8-Statement", - "statement": "0x55fc72cf47e8-NonLabelDoStmt", + "id": "0x562ea03af7d8-Statement", + "statement": "0x562ea03af7e8-NonLabelDoStmt", "source": "do i = 1, 5, a" }, { - "id": "0x55fc72cf47e8-NonLabelDoStmt", - "LoopControl": "0x55fc72cf47e8-LoopControl" + "id": "0x562ea03af7e8-NonLabelDoStmt", + "LoopControl": "0x562ea03af7e8-LoopControl" }, { - "id": "0x55fc72cf47e8-LoopControl", + "id": "0x562ea03af7e8-LoopControl", "variantKey": "LoopBounds", - "LoopBounds": "0x55fc72cf47e8-LoopBounds" + "LoopBounds": "0x562ea03af7e8-LoopBounds" }, { - "id": "0x55fc72cf47e8-LoopBounds", - "var": "0x55fc72cf47e8-Name", - "lower": "0x55fc72d594b0-Expr", - "upper": "0x55fc72d59dd0-Expr", - "step": "0x55fc72d59f70-Expr" + "id": "0x562ea03af7e8-LoopBounds", + "var": "0x562ea03af7e8-Name", + "lower": "0x562ea0414560-Expr", + "upper": "0x562ea0414ef0-Expr", + "step": "0x562ea0414fd0-Expr" }, { - "id": "0x55fc72cf47e8-Name", + "id": "0x562ea03af7e8-Name", "source": "i" }, { - "id": "0x55fc72d594b0-Expr", + "id": "0x562ea0414560-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55fc72d594d0-LiteralConstant" + "LiteralConstant": "0x562ea0414580-LiteralConstant" }, { - "id": "0x55fc72d594d0-LiteralConstant", + "id": "0x562ea0414580-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55fc72d594d0-IntLiteralConstant" + "IntLiteralConstant": "0x562ea0414580-IntLiteralConstant" }, { - "id": "0x55fc72d594d0-IntLiteralConstant", + "id": "0x562ea0414580-IntLiteralConstant", "CharBlock": "1" }, { - "id": "0x55fc72d59dd0-Expr", + "id": "0x562ea0414ef0-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55fc72d59df0-LiteralConstant" + "LiteralConstant": "0x562ea0414f10-LiteralConstant" }, { - "id": "0x55fc72d59df0-LiteralConstant", + "id": "0x562ea0414f10-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55fc72d59df0-IntLiteralConstant" + "IntLiteralConstant": "0x562ea0414f10-IntLiteralConstant" }, { - "id": "0x55fc72d59df0-IntLiteralConstant", + "id": "0x562ea0414f10-IntLiteralConstant", "CharBlock": "5" }, { - "id": "0x55fc72d59f70-Expr", + "id": "0x562ea0414fd0-Expr", "variantKey": "Designator", - "Designator": "0x55fc72d5b410-Designator" + "Designator": "0x562ea0410b20-Designator" }, { - "id": "0x55fc72d5b410-Designator", + "id": "0x562ea0410b20-Designator", "variantKey": "DataRef", - "DataRef": "0x55fc72d5b420-DataRef" + "DataRef": "0x562ea0410b30-DataRef" }, { - "id": "0x55fc72d5b420-DataRef", + "id": "0x562ea0410b30-DataRef", "variantKey": "Name", - "Name": "0x55fc72d5b420-Name" + "Name": "0x562ea0410b30-Name" }, { - "id": "0x55fc72d5b420-Name", + "id": "0x562ea0410b30-Name", "source": "a" }, { - "id": "0x55fc72cf47c0-ExecutionPartConstruct" + "id": "0x562ea03af7c0-ExecutionPartConstruct" }, { - "id": "0x55fc72d537e0-ExecutionPartConstruct", + "id": "0x562ea0416980-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x55fc72d537e0-ExecutableConstruct" + "ExecutableConstruct": "0x562ea0416980-ExecutableConstruct" }, { - "id": "0x55fc72d537e0-ExecutableConstruct", + "id": "0x562ea0416980-ExecutableConstruct", "variantKey": "Statement", - "Statement": "0x55fc72d537e0-Statement" + "Statement": "0x562ea0416980-Statement" }, { - "id": "0x55fc72d537e0-Statement", - "statement": "0x55fc72d537f0-ActionStmt", + "id": "0x562ea0416980-Statement", + "statement": "0x562ea0416990-ActionStmt", "source": "dummy = 3" }, { - "id": "0x55fc72d537f0-ActionStmt", + "id": "0x562ea0416990-ActionStmt", "variantKey": "AssignmentStmt", - "AssignmentStmt": "0x55fc72d5a220-AssignmentStmt" + "AssignmentStmt": "0x562ea0415280-AssignmentStmt" }, { - "id": "0x55fc72d5a220-AssignmentStmt", - "Variable": "0x55fc72d5a300-Variable", - "Expr": "0x55fc72d5a230-Expr" + "id": "0x562ea0415280-AssignmentStmt", + "Variable": "0x562ea0415360-Variable", + "Expr": "0x562ea0415290-Expr" }, { - "id": "0x55fc72d5a300-Variable", + "id": "0x562ea0415360-Variable", "variantKey": "Designator", - "Designator": "0x55fc72d5a0b0-Designator" + "Designator": "0x562ea0415110-Designator" }, { - "id": "0x55fc72d5a0b0-Designator", + "id": "0x562ea0415110-Designator", "variantKey": "DataRef", - "DataRef": "0x55fc72d5a0c0-DataRef" + "DataRef": "0x562ea0415120-DataRef" }, { - "id": "0x55fc72d5a0c0-DataRef", + "id": "0x562ea0415120-DataRef", "variantKey": "Name", - "Name": "0x55fc72d5a0c0-Name" + "Name": "0x562ea0415120-Name" }, { - "id": "0x55fc72d5a0c0-Name", + "id": "0x562ea0415120-Name", "source": "dummy" }, { - "id": "0x55fc72d5a230-Expr", + "id": "0x562ea0415290-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55fc72d5a250-LiteralConstant" + "LiteralConstant": "0x562ea04152b0-LiteralConstant" }, { - "id": "0x55fc72d5a250-LiteralConstant", + "id": "0x562ea04152b0-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55fc72d5a250-IntLiteralConstant" + "IntLiteralConstant": "0x562ea04152b0-IntLiteralConstant" }, { - "id": "0x55fc72d5a250-IntLiteralConstant", + "id": "0x562ea04152b0-IntLiteralConstant", "CharBlock": "3" }, { - "id": "0x55fc72d5a060-ExecutionPartConstruct", + "id": "0x562ea04150c0-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x55fc72d5a060-ExecutableConstruct" + "ExecutableConstruct": "0x562ea04150c0-ExecutableConstruct" }, { - "id": "0x55fc72d5a060-ExecutableConstruct", + "id": "0x562ea04150c0-ExecutableConstruct", "variantKey": "Statement", - "Statement": "0x55fc72d5a060-Statement" + "Statement": "0x562ea04150c0-Statement" }, { - "id": "0x55fc72d5a060-Statement", - "statement": "0x55fc72d5a070-ActionStmt", + "id": "0x562ea04150c0-Statement", + "statement": "0x562ea04150d0-ActionStmt", "source": "dummy = 4" }, { - "id": "0x55fc72d5a070-ActionStmt", + "id": "0x562ea04150d0-ActionStmt", "variantKey": "AssignmentStmt", - "AssignmentStmt": "0x55fc72d5a110-AssignmentStmt" + "AssignmentStmt": "0x562ea0415170-AssignmentStmt" }, { - "id": "0x55fc72d5a110-AssignmentStmt", - "Variable": "0x55fc72d5a1f0-Variable", - "Expr": "0x55fc72d5a120-Expr" + "id": "0x562ea0415170-AssignmentStmt", + "Variable": "0x562ea0415250-Variable", + "Expr": "0x562ea0415180-Expr" }, { - "id": "0x55fc72d5a1f0-Variable", + "id": "0x562ea0415250-Variable", "variantKey": "Designator", - "Designator": "0x55fc72d5a330-Designator" + "Designator": "0x562ea0415390-Designator" }, { - "id": "0x55fc72d5a330-Designator", + "id": "0x562ea0415390-Designator", "variantKey": "DataRef", - "DataRef": "0x55fc72d5a340-DataRef" + "DataRef": "0x562ea04153a0-DataRef" }, { - "id": "0x55fc72d5a340-DataRef", + "id": "0x562ea04153a0-DataRef", "variantKey": "Name", - "Name": "0x55fc72d5a340-Name" + "Name": "0x562ea04153a0-Name" }, { - "id": "0x55fc72d5a340-Name", + "id": "0x562ea04153a0-Name", "source": "dummy" }, { - "id": "0x55fc72d5a120-Expr", + "id": "0x562ea0415180-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55fc72d5a140-LiteralConstant" + "LiteralConstant": "0x562ea04151a0-LiteralConstant" }, { - "id": "0x55fc72d5a140-LiteralConstant", + "id": "0x562ea04151a0-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55fc72d5a140-IntLiteralConstant" + "IntLiteralConstant": "0x562ea04151a0-IntLiteralConstant" }, { - "id": "0x55fc72d5a140-IntLiteralConstant", + "id": "0x562ea04151a0-IntLiteralConstant", "CharBlock": "4" }, { - "id": "0x55fc72cf4780-Statement", - "statement": "0x55fc72cf4790-EndDoStmt", + "id": "0x562ea03af780-Statement", + "statement": "0x562ea03af790-EndDoStmt", "source": "end do" }, { - "id": "0x55fc72cf4790-EndDoStmt" + "id": "0x562ea03af790-EndDoStmt" }, { - "id": "0x55fc72d5a410-OmpEndLoopDirective", - "OmpDirectiveName": "0x55fc72d5a488-OmpDirectiveName", - "OmpClauseList": "0x55fc72d5a428-OmpClauseList", - "Flags = {}": "0x55fc72d5a420-Flags = {}" + "id": "0x562ea0415470-OmpEndLoopDirective", + "OmpDirectiveName": "0x562ea04154e8-OmpDirectiveName", + "OmpClauseList": "0x562ea0415488-OmpClauseList", + "Flags = {}": "0x562ea0415480-Flags = {}" }, { - "id": "0x55fc72d5a488-OmpDirectiveName", + "id": "0x562ea04154e8-OmpDirectiveName", "directive": "parallel do" }, { - "id": "0x55fc72d5a428-OmpClauseList" + "id": "0x562ea0415488-OmpClauseList" }, { - "id": "0x55fc72d5a5c0-ExecutionPartConstruct", + "id": "0x562ea0415620-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x55fc72d5a5c0-ExecutableConstruct" + "ExecutableConstruct": "0x562ea0415620-ExecutableConstruct" }, { - "id": "0x55fc72d5a5c0-ExecutableConstruct", + "id": "0x562ea0415620-ExecutableConstruct", "variantKey": "DoConstruct", - "DoConstruct": "0x55fc72d5aae0-DoConstruct" + "DoConstruct": "0x562ea0415b40-DoConstruct" }, { - "id": "0x55fc72d5aae0-DoConstruct", - "Statement": "0x55fc72d5ab38-Statement", + "id": "0x562ea0415b40-DoConstruct", + "Statement": "0x562ea0415b98-Statement", "ExecutionPartConstruct": [ - "0x55fc72d5aa90-ExecutionPartConstruct" + "0x562ea0415af0-ExecutionPartConstruct" ], - "Statement": "0x55fc72d5aae0-Statement" + "Statement": "0x562ea0415b40-Statement" }, { - "id": "0x55fc72d5ab38-Statement", - "statement": "0x55fc72d5ab48-NonLabelDoStmt", + "id": "0x562ea0415b98-Statement", + "statement": "0x562ea0415ba8-NonLabelDoStmt", "source": "do while(2 > 0)" }, { - "id": "0x55fc72d5ab48-NonLabelDoStmt", - "LoopControl": "0x55fc72d5ab48-LoopControl" + "id": "0x562ea0415ba8-NonLabelDoStmt", + "LoopControl": "0x562ea0415ba8-LoopControl" }, { - "id": "0x55fc72d5ab48-LoopControl", + "id": "0x562ea0415ba8-LoopControl", "variantKey": "Expr", - "Expr": "0x55fc72d5a7d0-Expr" + "Expr": "0x562ea0415830-Expr" }, { - "id": "0x55fc72d5a7d0-Expr", + "id": "0x562ea0415830-Expr", "variantKey": "GT", - "GT": "0x55fc72d5a7f0-GT" + "GT": "0x562ea0415850-GT" }, { - "id": "0x55fc72d5a7f0-GT", - "left": "0x55fc72d5a6f0-Expr", - "right": "0x55fc72d5a610-Expr", + "id": "0x562ea0415850-GT", + "left": "0x562ea0415750-Expr", + "right": "0x562ea0415670-Expr", "op": "GT" }, { - "id": "0x55fc72d5a6f0-Expr", + "id": "0x562ea0415750-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55fc72d5a710-LiteralConstant" + "LiteralConstant": "0x562ea0415770-LiteralConstant" }, { - "id": "0x55fc72d5a710-LiteralConstant", + "id": "0x562ea0415770-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55fc72d5a710-IntLiteralConstant" + "IntLiteralConstant": "0x562ea0415770-IntLiteralConstant" }, { - "id": "0x55fc72d5a710-IntLiteralConstant", + "id": "0x562ea0415770-IntLiteralConstant", "CharBlock": "2" }, { - "id": "0x55fc72d5a610-Expr", + "id": "0x562ea0415670-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55fc72d5a630-LiteralConstant" + "LiteralConstant": "0x562ea0415690-LiteralConstant" }, { - "id": "0x55fc72d5a630-LiteralConstant", + "id": "0x562ea0415690-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55fc72d5a630-IntLiteralConstant" + "IntLiteralConstant": "0x562ea0415690-IntLiteralConstant" }, { - "id": "0x55fc72d5a630-IntLiteralConstant", + "id": "0x562ea0415690-IntLiteralConstant", "CharBlock": "0" }, { - "id": "0x55fc72d5ab20-ExecutionPartConstruct" + "id": "0x562ea0415b80-ExecutionPartConstruct" }, { - "id": "0x55fc72d5aa90-ExecutionPartConstruct", + "id": "0x562ea0415af0-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x55fc72d5aa90-ExecutableConstruct" + "ExecutableConstruct": "0x562ea0415af0-ExecutableConstruct" }, { - "id": "0x55fc72d5aa90-ExecutableConstruct", + "id": "0x562ea0415af0-ExecutableConstruct", "variantKey": "Statement", - "Statement": "0x55fc72d5aa90-Statement" + "Statement": "0x562ea0415af0-Statement" }, { - "id": "0x55fc72d5aa90-Statement", - "statement": "0x55fc72d5aaa0-ActionStmt", + "id": "0x562ea0415af0-Statement", + "statement": "0x562ea0415b00-ActionStmt", "source": "dummy = 2" }, { - "id": "0x55fc72d5aaa0-ActionStmt", + "id": "0x562ea0415b00-ActionStmt", "variantKey": "AssignmentStmt", - "AssignmentStmt": "0x55fc72d5a970-AssignmentStmt" + "AssignmentStmt": "0x562ea04159d0-AssignmentStmt" }, { - "id": "0x55fc72d5a970-AssignmentStmt", - "Variable": "0x55fc72d5aa50-Variable", - "Expr": "0x55fc72d5a980-Expr" + "id": "0x562ea04159d0-AssignmentStmt", + "Variable": "0x562ea0415ab0-Variable", + "Expr": "0x562ea04159e0-Expr" }, { - "id": "0x55fc72d5aa50-Variable", + "id": "0x562ea0415ab0-Variable", "variantKey": "Designator", - "Designator": "0x55fc72d59f10-Designator" + "Designator": "0x562ea040e730-Designator" }, { - "id": "0x55fc72d59f10-Designator", + "id": "0x562ea040e730-Designator", "variantKey": "DataRef", - "DataRef": "0x55fc72d59f20-DataRef" + "DataRef": "0x562ea040e740-DataRef" }, { - "id": "0x55fc72d59f20-DataRef", + "id": "0x562ea040e740-DataRef", "variantKey": "Name", - "Name": "0x55fc72d59f20-Name" + "Name": "0x562ea040e740-Name" }, { - "id": "0x55fc72d59f20-Name", + "id": "0x562ea040e740-Name", "source": "dummy" }, { - "id": "0x55fc72d5a980-Expr", + "id": "0x562ea04159e0-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55fc72d5a9a0-LiteralConstant" + "LiteralConstant": "0x562ea0415a00-LiteralConstant" }, { - "id": "0x55fc72d5a9a0-LiteralConstant", + "id": "0x562ea0415a00-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55fc72d5a9a0-IntLiteralConstant" + "IntLiteralConstant": "0x562ea0415a00-IntLiteralConstant" }, { - "id": "0x55fc72d5a9a0-IntLiteralConstant", + "id": "0x562ea0415a00-IntLiteralConstant", "CharBlock": "2" }, { - "id": "0x55fc72d5aae0-Statement", - "statement": "0x55fc72d5aaf0-EndDoStmt", + "id": "0x562ea0415b40-Statement", + "statement": "0x562ea0415b50-EndDoStmt", "source": "end do" }, { - "id": "0x55fc72d5aaf0-EndDoStmt" + "id": "0x562ea0415b50-EndDoStmt" }, { - "id": "0x55fc72d5ac70-ExecutionPartConstruct", + "id": "0x562ea0415cd0-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x55fc72d5ac70-ExecutableConstruct" + "ExecutableConstruct": "0x562ea0415cd0-ExecutableConstruct" }, { - "id": "0x55fc72d5ac70-ExecutableConstruct", + "id": "0x562ea0415cd0-ExecutableConstruct", "variantKey": "DoConstruct", - "DoConstruct": "0x55fc72d5ff30-DoConstruct" + "DoConstruct": "0x562ea041aee0-DoConstruct" }, { - "id": "0x55fc72d5ff30-DoConstruct", - "Statement": "0x55fc72d5ff88-Statement", + "id": "0x562ea041aee0-DoConstruct", + "Statement": "0x562ea041af38-Statement", "ExecutionPartConstruct": [ - "0x55fc72d5fee0-ExecutionPartConstruct" + "0x562ea0415e40-ExecutionPartConstruct" ], - "Statement": "0x55fc72d5ff30-Statement" + "Statement": "0x562ea041aee0-Statement" }, { - "id": "0x55fc72d5ff88-Statement", - "statement": "0x55fc72d5ff98-NonLabelDoStmt", + "id": "0x562ea041af38-Statement", + "statement": "0x562ea041af48-NonLabelDoStmt", "source": "name: do" }, { - "id": "0x55fc72d5ff98-NonLabelDoStmt", - "Name": "0x55fc72d60018-Name" + "id": "0x562ea041af48-NonLabelDoStmt", + "Name": "0x562ea041afc8-Name" }, { - "id": "0x55fc72d60018-Name", + "id": "0x562ea041afc8-Name", "source": "name" }, { - "id": "0x55fc72d5ff70-ExecutionPartConstruct" + "id": "0x562ea041af20-ExecutionPartConstruct" }, { - "id": "0x55fc72d5fee0-ExecutionPartConstruct", + "id": "0x562ea0415e40-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x55fc72d5fee0-ExecutableConstruct" + "ExecutableConstruct": "0x562ea0415e40-ExecutableConstruct" }, { - "id": "0x55fc72d5fee0-ExecutableConstruct", + "id": "0x562ea0415e40-ExecutableConstruct", "variantKey": "Statement", - "Statement": "0x55fc72d5fee0-Statement" + "Statement": "0x562ea0415e40-Statement" }, { - "id": "0x55fc72d5fee0-Statement", - "statement": "0x55fc72d5fef0-ActionStmt", + "id": "0x562ea0415e40-Statement", + "statement": "0x562ea0415e50-ActionStmt", "source": "dummy = 4" }, { - "id": "0x55fc72d5fef0-ActionStmt", + "id": "0x562ea0415e50-ActionStmt", "variantKey": "AssignmentStmt", - "AssignmentStmt": "0x55fc72d5fdc0-AssignmentStmt" + "AssignmentStmt": "0x562ea0415d20-AssignmentStmt" }, { - "id": "0x55fc72d5fdc0-AssignmentStmt", - "Variable": "0x55fc72d5fea0-Variable", - "Expr": "0x55fc72d5fdd0-Expr" + "id": "0x562ea0415d20-AssignmentStmt", + "Variable": "0x562ea0415e00-Variable", + "Expr": "0x562ea0415d30-Expr" }, { - "id": "0x55fc72d5fea0-Variable", + "id": "0x562ea0415e00-Variable", "variantKey": "Designator", - "Designator": "0x55fc72d5ac00-Designator" + "Designator": "0x562ea0415c60-Designator" }, { - "id": "0x55fc72d5ac00-Designator", + "id": "0x562ea0415c60-Designator", "variantKey": "DataRef", - "DataRef": "0x55fc72d5ac10-DataRef" + "DataRef": "0x562ea0415c70-DataRef" }, { - "id": "0x55fc72d5ac10-DataRef", + "id": "0x562ea0415c70-DataRef", "variantKey": "Name", - "Name": "0x55fc72d5ac10-Name" + "Name": "0x562ea0415c70-Name" }, { - "id": "0x55fc72d5ac10-Name", + "id": "0x562ea0415c70-Name", "source": "dummy" }, { - "id": "0x55fc72d5fdd0-Expr", + "id": "0x562ea0415d30-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55fc72d5fdf0-LiteralConstant" + "LiteralConstant": "0x562ea0415d50-LiteralConstant" }, { - "id": "0x55fc72d5fdf0-LiteralConstant", + "id": "0x562ea0415d50-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55fc72d5fdf0-IntLiteralConstant" + "IntLiteralConstant": "0x562ea0415d50-IntLiteralConstant" }, { - "id": "0x55fc72d5fdf0-IntLiteralConstant", + "id": "0x562ea0415d50-IntLiteralConstant", "CharBlock": "4" }, { - "id": "0x55fc72d5ff30-Statement", - "statement": "0x55fc72d5ff40-EndDoStmt", + "id": "0x562ea041aee0-Statement", + "statement": "0x562ea041aef0-EndDoStmt", "source": "end do name" }, { - "id": "0x55fc72d5ff40-EndDoStmt", - "Name": "0x55fc72d5ff40-Name" + "id": "0x562ea041aef0-EndDoStmt", + "Name": "0x562ea041aef0-Name" }, { - "id": "0x55fc72d5ff40-Name", + "id": "0x562ea041aef0-Name", "source": "name" }, { - "id": "0x55fc72d4ab90-Statement", - "statement": "0x55fc72d4aba0-EndProgramStmt", + "id": "0x562ea0405b40-Statement", + "statement": "0x562ea0405b50-EndProgramStmt", "source": "end program SIMPLE_LOOP" }, { - "id": "0x55fc72d4aba0-EndProgramStmt", - "Name": "0x55fc72d4aba0-Name" + "id": "0x562ea0405b50-EndProgramStmt", + "Name": "0x562ea0405b50-Name" }, { - "id": "0x55fc72d4aba0-Name", + "id": "0x562ea0405b50-Name", "source": "SIMPLE_LOOP" } ], "comments": [ { - "text": "!use omp_lib", - "stmtId": "0x55fc72d2c110-Statement", + "text": "use omp_lib", + "stmtId": "0x562ea03e7110-Statement", "trailing": false } ], diff --git a/FortranParser/resources-test/fortran/parser/expr/complex_literal.expected.f90 b/FortranParser/resources-test/fortran/parser/expr/complex_literal.expected.f90 new file mode 100644 index 00000000..73525103 --- /dev/null +++ b/FortranParser/resources-test/fortran/parser/expr/complex_literal.expected.f90 @@ -0,0 +1,19 @@ +PROGRAM COMPLEX_LITERAL + USE, INTRINSIC :: iso_fortran_env, ONLY : sp => real32, dp => real64 + + ! 1. Basic Default Real Literals + COMPLEX :: c_default = (3.0, 4.0) + + ! 2. Integer Components (automatically converted to real) + COMPLEX :: c_int = (1, -2) + + ! 3. Scientific / Exponential Notation + COMPLEX :: c_exp = (1.5e2, -2.0e-1) ! Represents (150.0, -0.2) + + ! 4. Double Precision (using 'd' exponent notation) + COMPLEX(dp) :: c_double_d = (1.0d0, 3.141592653589793d0) + + ! 5. Kind Parameter Suffixes (Modern Standard) + COMPLEX(dp) :: c_double_kind = (2.5_dp, -5.5_dp) + COMPLEX(sp) :: c_single_kind = (1.0_sp, 0.5_sp) +END PROGRAM COMPLEX_LITERAL \ No newline at end of file diff --git a/FortranParser/resources-test/fortran/parser/expr/complex_literal.f90 b/FortranParser/resources-test/fortran/parser/expr/complex_literal.f90 new file mode 100644 index 00000000..72bb17d0 --- /dev/null +++ b/FortranParser/resources-test/fortran/parser/expr/complex_literal.f90 @@ -0,0 +1,19 @@ +program complex_literal + use, intrinsic :: iso_fortran_env, only: sp => real32, dp => real64 + + ! 1. Basic Default Real Literals + complex :: c_default = (3.0, 4.0) + + ! 2. Integer Components (automatically converted to real) + complex :: c_int = (1, -2) + + ! 3. Scientific / Exponential Notation + complex :: c_exp = (1.5e2, -2.0e-1) ! Represents (150.0, -0.2) + + ! 4. Double Precision (using 'd' exponent notation) + complex(dp) :: c_double_d = (1.0d0, 3.141592653589793d0) + + ! 5. Kind Parameter Suffixes (Modern Standard) + complex(dp) :: c_double_kind = (2.5_dp, -5.5_dp) + complex(sp) :: c_single_kind = (1.0_sp, 0.5_sp) +end program complex_literal \ No newline at end of file diff --git a/FortranParser/resources-test/fortran/parser/expr/complex_literal.json b/FortranParser/resources-test/fortran/parser/expr/complex_literal.json new file mode 100644 index 00000000..eada2894 --- /dev/null +++ b/FortranParser/resources-test/fortran/parser/expr/complex_literal.json @@ -0,0 +1,1240 @@ +{ + "fileExtension": "f90", + "nodes": [ + { + "id": "0x55fafcb6af00-Program", + "ProgramUnit": [ + "0x55fafcba6ef0-ProgramUnit" + ] + }, + { + "id": "0x55fafcba6ef0-ProgramUnit", + "variantKey": "MainProgram", + "MainProgram": "0x55fafcb9b010-MainProgram" + }, + { + "id": "0x55fafcb9b010-MainProgram", + "Statement": "0x55fafcb9b158-Statement", + "SpecificationPart": "0x55fafcb9b0b0-SpecificationPart", + "ExecutionPart": "0x55fafcb9b098-ExecutionPart", + "Statement": "0x55fafcb9b010-Statement" + }, + { + "id": "0x55fafcb9b158-Statement", + "statement": "0x55fafcb9b168-ProgramStmt", + "source": "program COMPLEX_LITERAL" + }, + { + "id": "0x55fafcb9b168-ProgramStmt", + "Name": "0x55fafcb9b168-Name" + }, + { + "id": "0x55fafcb9b168-Name", + "source": "COMPLEX_LITERAL" + }, + { + "id": "0x55fafcb9b0b0-SpecificationPart", + "Statement": [ + "0x55fafcba5c00-Statement" + ], + "ImplicitPart": "0x55fafcb9b0c8-ImplicitPart", + "DeclarationConstruct": [ + "0x55fafcb95ab0-DeclarationConstruct", + "0x55fafcb95d60-DeclarationConstruct", + "0x55fafcb96010-DeclarationConstruct", + "0x55fafcb96a30-DeclarationConstruct", + "0x55fafcb96e20-DeclarationConstruct", + "0x55fafcb97210-DeclarationConstruct" + ] + }, + { + "id": "0x55fafcba5c00-Statement", + "statement": "0x55fafcbaecb0-UseStmt", + "source": "use, intrinsic :: iso_fortran_env, only: sp => real32, dp => real64" + }, + { + "id": "0x55fafcbaecb0-UseStmt", + "nature": "0x55fafcbaecb0-ModuleNature", + "moduleName": "0x55fafcbaecb8-Name", + "variantKey": "Only", + "Only": [ + "0x55fafcb78170-Only", + "0x55fafcb694e0-Only" + ] + }, + { + "id": "0x55fafcbaecb0-ModuleNature", + "disambiguation": "Fortran::parser::UseStmt::ModuleNature", + "value": "Intrinsic" + }, + { + "id": "0x55fafcbaecb8-Name", + "source": "iso_fortran_env" + }, + { + "id": "0x55fafcb78170-Only", + "variantKey": "Rename", + "Rename": "0x55fafcb78170-Rename" + }, + { + "id": "0x55fafcb78170-Rename", + "variantKey": "Names", + "Names": "0x55fafcb78170-Names" + }, + { + "id": "0x55fafcb78170-Names", + "local": "0x55fafcb78188-Name", + "global": "0x55fafcb78170-Name" + }, + { + "id": "0x55fafcb78188-Name", + "source": "sp" + }, + { + "id": "0x55fafcb78170-Name", + "source": "real32" + }, + { + "id": "0x55fafcb694e0-Only", + "variantKey": "Rename", + "Rename": "0x55fafcb694e0-Rename" + }, + { + "id": "0x55fafcb694e0-Rename", + "variantKey": "Names", + "Names": "0x55fafcb694e0-Names" + }, + { + "id": "0x55fafcb694e0-Names", + "local": "0x55fafcb694f8-Name", + "global": "0x55fafcb694e0-Name" + }, + { + "id": "0x55fafcb694f8-Name", + "source": "dp" + }, + { + "id": "0x55fafcb694e0-Name", + "source": "real64" + }, + { + "id": "0x55fafcb9b0c8-ImplicitPart" + }, + { + "id": "0x55fafcb95ab0-DeclarationConstruct", + "variantKey": "SpecificationConstruct", + "SpecificationConstruct": "0x55fafcb95ab0-SpecificationConstruct" + }, + { + "id": "0x55fafcb95ab0-SpecificationConstruct", + "variantKey": "Statement", + "Statement": "0x55fafcb95ab0-Statement" + }, + { + "id": "0x55fafcb95ab0-Statement", + "statement": "0x55fafcba7710-TypeDeclarationStmt", + "source": "complex :: c_default =(3.0, 4.0)" + }, + { + "id": "0x55fafcba7710-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x55fafcba7740-DeclarationTypeSpec", + "EntityDecl": [ + "0x55fafcb958e0-EntityDecl" + ] + }, + { + "id": "0x55fafcba7740-DeclarationTypeSpec", + "variantKey": "IntrinsicTypeSpec", + "IntrinsicTypeSpec": "0x55fafcba7740-IntrinsicTypeSpec" + }, + { + "id": "0x55fafcba7740-IntrinsicTypeSpec", + "variantKey": "Complex", + "Complex": "0x55fafcba7740-Complex" + }, + { + "id": "0x55fafcba7740-Complex" + }, + { + "id": "0x55fafcb958e0-EntityDecl", + "Name": "0x55fafcb95998-Name", + "Initialization": "0x55fafcb958e0-Initialization" + }, + { + "id": "0x55fafcb95998-Name", + "source": "c_default" + }, + { + "id": "0x55fafcb958e0-Initialization", + "variantKey": "Expr", + "Expr": "0x55fafcb0a790-Expr" + }, + { + "id": "0x55fafcb0a790-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fafcb0a7b0-LiteralConstant" + }, + { + "id": "0x55fafcb0a7b0-LiteralConstant", + "variantKey": "ComplexLiteralConstant", + "ComplexLiteralConstant": "0x55fafcb0a7b0-ComplexLiteralConstant" + }, + { + "id": "0x55fafcb0a7b0-ComplexLiteralConstant", + "real": "0x55fafcb0a800-ComplexPart", + "imaginary": "0x55fafcb0a7b0-ComplexPart" + }, + { + "id": "0x55fafcb0a800-ComplexPart", + "variantKey": "SignedRealLiteralConstant", + "SignedRealLiteralConstant": "0x55fafcb0a800-SignedRealLiteralConstant" + }, + { + "id": "0x55fafcb0a800-SignedRealLiteralConstant", + "RealLiteralConstant": "0x55fafcb0a800-RealLiteralConstant" + }, + { + "id": "0x55fafcb0a800-RealLiteralConstant", + "real": "0x55fafcb0a800-Real" + }, + { + "id": "0x55fafcb0a800-Real", + "source": "3.0" + }, + { + "id": "0x55fafcb0a7b0-ComplexPart", + "variantKey": "SignedRealLiteralConstant", + "SignedRealLiteralConstant": "0x55fafcb0a7b0-SignedRealLiteralConstant" + }, + { + "id": "0x55fafcb0a7b0-SignedRealLiteralConstant", + "RealLiteralConstant": "0x55fafcb0a7b0-RealLiteralConstant" + }, + { + "id": "0x55fafcb0a7b0-RealLiteralConstant", + "real": "0x55fafcb0a7b0-Real" + }, + { + "id": "0x55fafcb0a7b0-Real", + "source": "4.0" + }, + { + "id": "0x55fafcb95d60-DeclarationConstruct", + "variantKey": "SpecificationConstruct", + "SpecificationConstruct": "0x55fafcb95d60-SpecificationConstruct" + }, + { + "id": "0x55fafcb95d60-SpecificationConstruct", + "variantKey": "Statement", + "Statement": "0x55fafcb95d60-Statement" + }, + { + "id": "0x55fafcb95d60-Statement", + "statement": "0x55fafcba7790-TypeDeclarationStmt", + "source": "complex :: c_int =(1, -2)" + }, + { + "id": "0x55fafcba7790-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x55fafcba77c0-DeclarationTypeSpec", + "EntityDecl": [ + "0x55fafcb95c70-EntityDecl" + ] + }, + { + "id": "0x55fafcba77c0-DeclarationTypeSpec", + "variantKey": "IntrinsicTypeSpec", + "IntrinsicTypeSpec": "0x55fafcba77c0-IntrinsicTypeSpec" + }, + { + "id": "0x55fafcba77c0-IntrinsicTypeSpec", + "variantKey": "Complex", + "Complex": "0x55fafcba77c0-Complex" + }, + { + "id": "0x55fafcba77c0-Complex" + }, + { + "id": "0x55fafcb95c70-EntityDecl", + "Name": "0x55fafcb95d28-Name", + "Initialization": "0x55fafcb95c70-Initialization" + }, + { + "id": "0x55fafcb95d28-Name", + "source": "c_int" + }, + { + "id": "0x55fafcb95c70-Initialization", + "variantKey": "Expr", + "Expr": "0x55fafcb95b80-Expr" + }, + { + "id": "0x55fafcb95b80-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fafcb95ba0-LiteralConstant" + }, + { + "id": "0x55fafcb95ba0-LiteralConstant", + "variantKey": "ComplexLiteralConstant", + "ComplexLiteralConstant": "0x55fafcb95ba0-ComplexLiteralConstant" + }, + { + "id": "0x55fafcb95ba0-ComplexLiteralConstant", + "real": "0x55fafcb95bf0-ComplexPart", + "imaginary": "0x55fafcb95ba0-ComplexPart" + }, + { + "id": "0x55fafcb95bf0-ComplexPart", + "variantKey": "SignedIntLiteralConstant", + "SignedIntLiteralConstant": "0x55fafcb95bf0-SignedIntLiteralConstant" + }, + { + "id": "0x55fafcb95bf0-SignedIntLiteralConstant", + "CharBlock": "1", + "source": "1" + }, + { + "id": "0x55fafcb95ba0-ComplexPart", + "variantKey": "SignedIntLiteralConstant", + "SignedIntLiteralConstant": "0x55fafcb95ba0-SignedIntLiteralConstant" + }, + { + "id": "0x55fafcb95ba0-SignedIntLiteralConstant", + "CharBlock": "-2", + "source": "-2" + }, + { + "id": "0x55fafcb96010-DeclarationConstruct", + "variantKey": "SpecificationConstruct", + "SpecificationConstruct": "0x55fafcb96010-SpecificationConstruct" + }, + { + "id": "0x55fafcb96010-SpecificationConstruct", + "variantKey": "Statement", + "Statement": "0x55fafcb96010-Statement" + }, + { + "id": "0x55fafcb96010-Statement", + "statement": "0x55fafcb95b00-TypeDeclarationStmt", + "source": "complex :: c_exp =(1.5e2, -2.0e-1)" + }, + { + "id": "0x55fafcb95b00-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x55fafcb95b30-DeclarationTypeSpec", + "EntityDecl": [ + "0x55fafcb95f20-EntityDecl" + ] + }, + { + "id": "0x55fafcb95b30-DeclarationTypeSpec", + "variantKey": "IntrinsicTypeSpec", + "IntrinsicTypeSpec": "0x55fafcb95b30-IntrinsicTypeSpec" + }, + { + "id": "0x55fafcb95b30-IntrinsicTypeSpec", + "variantKey": "Complex", + "Complex": "0x55fafcb95b30-Complex" + }, + { + "id": "0x55fafcb95b30-Complex" + }, + { + "id": "0x55fafcb95f20-EntityDecl", + "Name": "0x55fafcb95fd8-Name", + "Initialization": "0x55fafcb95f20-Initialization" + }, + { + "id": "0x55fafcb95fd8-Name", + "source": "c_exp" + }, + { + "id": "0x55fafcb95f20-Initialization", + "variantKey": "Expr", + "Expr": "0x55fafcb95e30-Expr" + }, + { + "id": "0x55fafcb95e30-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fafcb95e50-LiteralConstant" + }, + { + "id": "0x55fafcb95e50-LiteralConstant", + "variantKey": "ComplexLiteralConstant", + "ComplexLiteralConstant": "0x55fafcb95e50-ComplexLiteralConstant" + }, + { + "id": "0x55fafcb95e50-ComplexLiteralConstant", + "real": "0x55fafcb95ea0-ComplexPart", + "imaginary": "0x55fafcb95e50-ComplexPart" + }, + { + "id": "0x55fafcb95ea0-ComplexPart", + "variantKey": "SignedRealLiteralConstant", + "SignedRealLiteralConstant": "0x55fafcb95ea0-SignedRealLiteralConstant" + }, + { + "id": "0x55fafcb95ea0-SignedRealLiteralConstant", + "RealLiteralConstant": "0x55fafcb95ea0-RealLiteralConstant" + }, + { + "id": "0x55fafcb95ea0-RealLiteralConstant", + "real": "0x55fafcb95ea0-Real" + }, + { + "id": "0x55fafcb95ea0-Real", + "source": "1.5e2" + }, + { + "id": "0x55fafcb95e50-ComplexPart", + "variantKey": "SignedRealLiteralConstant", + "SignedRealLiteralConstant": "0x55fafcb95e50-SignedRealLiteralConstant" + }, + { + "id": "0x55fafcb95e50-SignedRealLiteralConstant", + "Sign": "-", + "RealLiteralConstant": "0x55fafcb95e50-RealLiteralConstant" + }, + { + "id": "0x55fafcb95e50-RealLiteralConstant", + "real": "0x55fafcb95e50-Real" + }, + { + "id": "0x55fafcb95e50-Real", + "source": "2.0e-1" + }, + { + "id": "0x55fafcb96a30-DeclarationConstruct", + "variantKey": "SpecificationConstruct", + "SpecificationConstruct": "0x55fafcb96a30-SpecificationConstruct" + }, + { + "id": "0x55fafcb96a30-SpecificationConstruct", + "variantKey": "Statement", + "Statement": "0x55fafcb96a30-Statement" + }, + { + "id": "0x55fafcb96a30-Statement", + "statement": "0x55fafcb95db0-TypeDeclarationStmt", + "source": "complex(dp) :: c_double_d =(1.0d0, 3.141592653589793d0)" + }, + { + "id": "0x55fafcb95db0-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x55fafcb95de0-DeclarationTypeSpec", + "EntityDecl": [ + "0x55fafcb96860-EntityDecl" + ] + }, + { + "id": "0x55fafcb95de0-DeclarationTypeSpec", + "variantKey": "IntrinsicTypeSpec", + "IntrinsicTypeSpec": "0x55fafcb95de0-IntrinsicTypeSpec" + }, + { + "id": "0x55fafcb95de0-IntrinsicTypeSpec", + "variantKey": "Complex", + "Complex": "0x55fafcb95de0-Complex" + }, + { + "id": "0x55fafcb95de0-Complex", + "KindSelector": "0x55fafcb95de0-KindSelector" + }, + { + "id": "0x55fafcb95de0-KindSelector", + "variantKey": "Expr", + "Expr": "0x55fafcb96260-Expr" + }, + { + "id": "0x55fafcb96260-Expr", + "variantKey": "Designator", + "Designator": "0x55fafcbaeb90-Designator" + }, + { + "id": "0x55fafcbaeb90-Designator", + "variantKey": "DataRef", + "DataRef": "0x55fafcbaeba0-DataRef" + }, + { + "id": "0x55fafcbaeba0-DataRef", + "variantKey": "Name", + "Name": "0x55fafcbaeba0-Name" + }, + { + "id": "0x55fafcbaeba0-Name", + "source": "dp" + }, + { + "id": "0x55fafcb96860-EntityDecl", + "Name": "0x55fafcb96918-Name", + "Initialization": "0x55fafcb96860-Initialization" + }, + { + "id": "0x55fafcb96918-Name", + "source": "c_double_d" + }, + { + "id": "0x55fafcb96860-Initialization", + "variantKey": "Expr", + "Expr": "0x55fafcb96770-Expr" + }, + { + "id": "0x55fafcb96770-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fafcb96790-LiteralConstant" + }, + { + "id": "0x55fafcb96790-LiteralConstant", + "variantKey": "ComplexLiteralConstant", + "ComplexLiteralConstant": "0x55fafcb96790-ComplexLiteralConstant" + }, + { + "id": "0x55fafcb96790-ComplexLiteralConstant", + "real": "0x55fafcb967e0-ComplexPart", + "imaginary": "0x55fafcb96790-ComplexPart" + }, + { + "id": "0x55fafcb967e0-ComplexPart", + "variantKey": "SignedRealLiteralConstant", + "SignedRealLiteralConstant": "0x55fafcb967e0-SignedRealLiteralConstant" + }, + { + "id": "0x55fafcb967e0-SignedRealLiteralConstant", + "RealLiteralConstant": "0x55fafcb967e0-RealLiteralConstant" + }, + { + "id": "0x55fafcb967e0-RealLiteralConstant", + "real": "0x55fafcb967e0-Real" + }, + { + "id": "0x55fafcb967e0-Real", + "source": "1.0d0" + }, + { + "id": "0x55fafcb96790-ComplexPart", + "variantKey": "SignedRealLiteralConstant", + "SignedRealLiteralConstant": "0x55fafcb96790-SignedRealLiteralConstant" + }, + { + "id": "0x55fafcb96790-SignedRealLiteralConstant", + "RealLiteralConstant": "0x55fafcb96790-RealLiteralConstant" + }, + { + "id": "0x55fafcb96790-RealLiteralConstant", + "real": "0x55fafcb96790-Real" + }, + { + "id": "0x55fafcb96790-Real", + "source": "3.141592653589793d0" + }, + { + "id": "0x55fafcb96e20-DeclarationConstruct", + "variantKey": "SpecificationConstruct", + "SpecificationConstruct": "0x55fafcb96e20-SpecificationConstruct" + }, + { + "id": "0x55fafcb96e20-SpecificationConstruct", + "variantKey": "Statement", + "Statement": "0x55fafcb96e20-Statement" + }, + { + "id": "0x55fafcb96e20-Statement", + "statement": "0x55fafcb96060-TypeDeclarationStmt", + "source": "complex(dp) :: c_double_kind =(2.5_dp, -5.5_dp)" + }, + { + "id": "0x55fafcb96060-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x55fafcb96090-DeclarationTypeSpec", + "EntityDecl": [ + "0x55fafcb96d30-EntityDecl" + ] + }, + { + "id": "0x55fafcb96090-DeclarationTypeSpec", + "variantKey": "IntrinsicTypeSpec", + "IntrinsicTypeSpec": "0x55fafcb96090-IntrinsicTypeSpec" + }, + { + "id": "0x55fafcb96090-IntrinsicTypeSpec", + "variantKey": "Complex", + "Complex": "0x55fafcb96090-Complex" + }, + { + "id": "0x55fafcb96090-Complex", + "KindSelector": "0x55fafcb96090-KindSelector" + }, + { + "id": "0x55fafcb96090-KindSelector", + "variantKey": "Expr", + "Expr": "0x55fafcb96b00-Expr" + }, + { + "id": "0x55fafcb96b00-Expr", + "variantKey": "Designator", + "Designator": "0x55fafcb77d90-Designator" + }, + { + "id": "0x55fafcb77d90-Designator", + "variantKey": "DataRef", + "DataRef": "0x55fafcb77da0-DataRef" + }, + { + "id": "0x55fafcb77da0-DataRef", + "variantKey": "Name", + "Name": "0x55fafcb77da0-Name" + }, + { + "id": "0x55fafcb77da0-Name", + "source": "dp" + }, + { + "id": "0x55fafcb96d30-EntityDecl", + "Name": "0x55fafcb96de8-Name", + "Initialization": "0x55fafcb96d30-Initialization" + }, + { + "id": "0x55fafcb96de8-Name", + "source": "c_double_kind" + }, + { + "id": "0x55fafcb96d30-Initialization", + "variantKey": "Expr", + "Expr": "0x55fafcb96c40-Expr" + }, + { + "id": "0x55fafcb96c40-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fafcb96c60-LiteralConstant" + }, + { + "id": "0x55fafcb96c60-LiteralConstant", + "variantKey": "ComplexLiteralConstant", + "ComplexLiteralConstant": "0x55fafcb96c60-ComplexLiteralConstant" + }, + { + "id": "0x55fafcb96c60-ComplexLiteralConstant", + "real": "0x55fafcb96cb0-ComplexPart", + "imaginary": "0x55fafcb96c60-ComplexPart" + }, + { + "id": "0x55fafcb96cb0-ComplexPart", + "variantKey": "SignedRealLiteralConstant", + "SignedRealLiteralConstant": "0x55fafcb96cb0-SignedRealLiteralConstant" + }, + { + "id": "0x55fafcb96cb0-SignedRealLiteralConstant", + "RealLiteralConstant": "0x55fafcb96cb0-RealLiteralConstant" + }, + { + "id": "0x55fafcb96cb0-RealLiteralConstant", + "real": "0x55fafcb96cb0-Real", + "kind": "0x55fafcb96cc0-KindParam" + }, + { + "id": "0x55fafcb96cb0-Real", + "source": "2.5" + }, + { + "id": "0x55fafcb96cc0-KindParam", + "variantKey": "Name", + "Name": "0x55fafcb96cc0-Name" + }, + { + "id": "0x55fafcb96cc0-Name", + "source": "dp" + }, + { + "id": "0x55fafcb96c60-ComplexPart", + "variantKey": "SignedRealLiteralConstant", + "SignedRealLiteralConstant": "0x55fafcb96c60-SignedRealLiteralConstant" + }, + { + "id": "0x55fafcb96c60-SignedRealLiteralConstant", + "Sign": "-", + "RealLiteralConstant": "0x55fafcb96c60-RealLiteralConstant" + }, + { + "id": "0x55fafcb96c60-RealLiteralConstant", + "real": "0x55fafcb96c60-Real", + "kind": "0x55fafcb96c70-KindParam" + }, + { + "id": "0x55fafcb96c60-Real", + "source": "5.5" + }, + { + "id": "0x55fafcb96c70-KindParam", + "variantKey": "Name", + "Name": "0x55fafcb96c70-Name" + }, + { + "id": "0x55fafcb96c70-Name", + "source": "dp" + }, + { + "id": "0x55fafcb97210-DeclarationConstruct", + "variantKey": "SpecificationConstruct", + "SpecificationConstruct": "0x55fafcb97210-SpecificationConstruct" + }, + { + "id": "0x55fafcb97210-SpecificationConstruct", + "variantKey": "Statement", + "Statement": "0x55fafcb97210-Statement" + }, + { + "id": "0x55fafcb97210-Statement", + "statement": "0x55fafcb960e0-TypeDeclarationStmt", + "source": "complex(sp) :: c_single_kind =(1.0_sp, 0.5_sp)" + }, + { + "id": "0x55fafcb960e0-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x55fafcb96110-DeclarationTypeSpec", + "EntityDecl": [ + "0x55fafcb97120-EntityDecl" + ] + }, + { + "id": "0x55fafcb96110-DeclarationTypeSpec", + "variantKey": "IntrinsicTypeSpec", + "IntrinsicTypeSpec": "0x55fafcb96110-IntrinsicTypeSpec" + }, + { + "id": "0x55fafcb96110-IntrinsicTypeSpec", + "variantKey": "Complex", + "Complex": "0x55fafcb96110-Complex" + }, + { + "id": "0x55fafcb96110-Complex", + "KindSelector": "0x55fafcb96110-KindSelector" + }, + { + "id": "0x55fafcb96110-KindSelector", + "variantKey": "Expr", + "Expr": "0x55fafcb96ef0-Expr" + }, + { + "id": "0x55fafcb96ef0-Expr", + "variantKey": "Designator", + "Designator": "0x55fafcb78100-Designator" + }, + { + "id": "0x55fafcb78100-Designator", + "variantKey": "DataRef", + "DataRef": "0x55fafcb78110-DataRef" + }, + { + "id": "0x55fafcb78110-DataRef", + "variantKey": "Name", + "Name": "0x55fafcb78110-Name" + }, + { + "id": "0x55fafcb78110-Name", + "source": "sp" + }, + { + "id": "0x55fafcb97120-EntityDecl", + "Name": "0x55fafcb971d8-Name", + "Initialization": "0x55fafcb97120-Initialization" + }, + { + "id": "0x55fafcb971d8-Name", + "source": "c_single_kind" + }, + { + "id": "0x55fafcb97120-Initialization", + "variantKey": "Expr", + "Expr": "0x55fafcb97030-Expr" + }, + { + "id": "0x55fafcb97030-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fafcb97050-LiteralConstant" + }, + { + "id": "0x55fafcb97050-LiteralConstant", + "variantKey": "ComplexLiteralConstant", + "ComplexLiteralConstant": "0x55fafcb97050-ComplexLiteralConstant" + }, + { + "id": "0x55fafcb97050-ComplexLiteralConstant", + "real": "0x55fafcb970a0-ComplexPart", + "imaginary": "0x55fafcb97050-ComplexPart" + }, + { + "id": "0x55fafcb970a0-ComplexPart", + "variantKey": "SignedRealLiteralConstant", + "SignedRealLiteralConstant": "0x55fafcb970a0-SignedRealLiteralConstant" + }, + { + "id": "0x55fafcb970a0-SignedRealLiteralConstant", + "RealLiteralConstant": "0x55fafcb970a0-RealLiteralConstant" + }, + { + "id": "0x55fafcb970a0-RealLiteralConstant", + "real": "0x55fafcb970a0-Real", + "kind": "0x55fafcb970b0-KindParam" + }, + { + "id": "0x55fafcb970a0-Real", + "source": "1.0" + }, + { + "id": "0x55fafcb970b0-KindParam", + "variantKey": "Name", + "Name": "0x55fafcb970b0-Name" + }, + { + "id": "0x55fafcb970b0-Name", + "source": "sp" + }, + { + "id": "0x55fafcb97050-ComplexPart", + "variantKey": "SignedRealLiteralConstant", + "SignedRealLiteralConstant": "0x55fafcb97050-SignedRealLiteralConstant" + }, + { + "id": "0x55fafcb97050-SignedRealLiteralConstant", + "RealLiteralConstant": "0x55fafcb97050-RealLiteralConstant" + }, + { + "id": "0x55fafcb97050-RealLiteralConstant", + "real": "0x55fafcb97050-Real", + "kind": "0x55fafcb97060-KindParam" + }, + { + "id": "0x55fafcb97050-Real", + "source": "0.5" + }, + { + "id": "0x55fafcb97060-KindParam", + "variantKey": "Name", + "Name": "0x55fafcb97060-Name" + }, + { + "id": "0x55fafcb97060-Name", + "source": "sp" + }, + { + "id": "0x55fafcb9b098-ExecutionPart" + }, + { + "id": "0x55fafcb9b098-list" + }, + { + "id": "0x55fafcb9b010-Statement", + "statement": "0x55fafcb9b020-EndProgramStmt", + "source": "end program COMPLEX_LITERAL" + }, + { + "id": "0x55fafcb9b020-EndProgramStmt", + "Name": "0x55fafcb9b020-Name" + }, + { + "id": "0x55fafcb9b020-Name", + "source": "COMPLEX_LITERAL" + } + ], + "comments": [ + { + "text": " 1. Basic Default Real Literals", + "stmtId": "0x55fafcb95ab0-Statement", + "trailing": false + }, + { + "text": " 2. Integer Components (automatically converted to real)", + "stmtId": "0x55fafcb95d60-Statement", + "trailing": false + }, + { + "text": " 3. Scientific / Exponential Notation", + "stmtId": "0x55fafcb96010-Statement", + "trailing": false + }, + { + "text": " Represents (150.0, -0.2)", + "stmtId": "0x55fafcb96010-Statement", + "trailing": true + }, + { + "text": " 4. Double Precision (using 'd' exponent notation)", + "stmtId": "0x55fafcb96a30-Statement", + "trailing": false + }, + { + "text": " 5. Kind Parameter Suffixes (Modern Standard)", + "stmtId": "0x55fafcb96e20-Statement", + "trailing": false + } + ], + "enums": { + "Fortran::common::CUDADataAttr": [ + "Constant", + "Device", + "Managed", + "Pinned", + "Shared", + "Texture", + "Unified" + ], + "Fortran::common::CUDASubprogramAttrs": [ + "Host", + "Device", + "HostDevice", + "Global", + "Grid_Global" + ], + "Fortran::common::ImportKind": [ + "Default", + "Only", + "None", + "All" + ], + "Fortran::common::OmpDependenceKind": [ + "In", + "Out", + "Inout", + "Inoutset", + "Mutexinoutset", + "Depobj" + ], + "Fortran::common::OmpMemoryOrderType": [ + "Acq_Rel", + "Acquire", + "Relaxed", + "Release", + "Seq_Cst" + ], + "Fortran::common::OpenACCDeviceType": [ + "Star", + "Default", + "Nvidia", + "Radeon", + "Host", + "Multicore", + "None" + ], + "Fortran::parser::AccDataModifier::Modifier": [ + "ReadOnly", + "Zero" + ], + "Fortran::parser::AccessSpec::Kind": [ + "Public", + "Private" + ], + "Fortran::parser::BindEntity::Kind": [ + "Object", + "Common" + ], + "Fortran::parser::CompilerDirective::VectorLength::Kind": [ + "Auto", + "Fixed", + "Scalable" + ], + "Fortran::parser::ConnectSpec::CharExpr::Kind": [ + "Access", + "Action", + "Asynchronous", + "Blank", + "Decimal", + "Delim", + "Encoding", + "Form", + "Pad", + "Position", + "Round", + "Sign", + "Carriagecontrol", + "Convert", + "Dispose" + ], + "Fortran::parser::DefinedOperator::IntrinsicOperator": [ + "Power", + "Multiply", + "Divide", + "Add", + "Subtract", + "Concat", + "LT", + "LE", + "EQ", + "NE", + "GE", + "GT", + "NOT", + "AND", + "OR", + "EQV", + "NEQV" + ], + "Fortran::parser::ImplicitStmt::ImplicitNoneNameSpec": [ + "External", + "Type" + ], + "Fortran::parser::InquireSpec::CharVar::Kind": [ + "Access", + "Action", + "Asynchronous", + "Blank", + "Decimal", + "Delim", + "Direct", + "Encoding", + "Form", + "Formatted", + "Iomsg", + "Name", + "Pad", + "Position", + "Read", + "Readwrite", + "Round", + "Sequential", + "Sign", + "Stream", + "Status", + "Unformatted", + "Write", + "Carriagecontrol", + "Convert", + "Dispose" + ], + "Fortran::parser::InquireSpec::IntVar::Kind": [ + "Iostat", + "Nextrec", + "Number", + "Pos", + "Recl", + "Size" + ], + "Fortran::parser::InquireSpec::LogVar::Kind": [ + "Exist", + "Named", + "Opened", + "Pending" + ], + "Fortran::parser::IntentSpec::Intent": [ + "In", + "Out", + "InOut" + ], + "Fortran::parser::IoControlSpec::CharExpr::Kind": [ + "Advance", + "Blank", + "Decimal", + "Delim", + "Pad", + "Round", + "Sign" + ], + "Fortran::parser::ReductionOperator::Operator": [ + "Plus", + "Multiply", + "Max", + "Min", + "Iand", + "Ior", + "Ieor", + "And", + "Or", + "Eqv", + "Neqv" + ], + "Fortran::parser::OmpAccessGroup::Value": [ + "Cgroup" + ], + "Fortran::parser::OmpAdjustArgsClause::OmpAdjustOp::Value": [ + "Nothing", + "Need_Device_Ptr" + ], + "Fortran::parser::OmpAlwaysModifier::Value": [ + "Always" + ], + "Fortran::parser::OmpAtClause::ActionTime": [ + "Compilation", + "Execution" + ], + "Fortran::parser::OmpAttachModifier::Value": [ + "Always", + "Never", + "Auto" + ], + "Fortran::parser::OmpAutomapModifier::Value": [ + "Automap" + ], + "Fortran::parser::OmpBindClause::Binding": [ + "Parallel", + "Teams", + "Thread" + ], + "Fortran::parser::OmpChunkModifier::Value": [ + "Simd" + ], + "Fortran::parser::OmpCloseModifier::Value": [ + "Close" + ], + "Fortran::parser::OmpDefaultClause::DataSharingAttribute": [ + "Private", + "Firstprivate", + "Shared", + "None" + ], + "Fortran::parser::OmpDefaultmapClause::ImplicitBehavior": [ + "Alloc", + "To", + "From", + "Tofrom", + "Firstprivate", + "None", + "Default", + "Present" + ], + "Fortran::parser::OmpDeleteModifier::Value": [ + "Delete" + ], + "Fortran::parser::OmpDependenceType::Value": [ + "Sink", + "Source" + ], + "Fortran::parser::OmpDeviceModifier::Value": [ + "Ancestor", + "Device_Num" + ], + "Fortran::parser::OmpDeviceTypeClause::DeviceTypeDescription": [ + "Any", + "Host", + "Nohost" + ], + "Fortran::parser::OmpDirectiveSpecification::Flag": [ + "DeprecatedSyntax", + "CrossesLabelDo" + ], + "Fortran::parser::OmpExpectation::Value": [ + "Present" + ], + "Fortran::parser::OmpInteropType::Value": [ + "Target", + "Targetsync" + ], + "Fortran::parser::OmpLastprivateModifier::Value": [ + "Conditional" + ], + "Fortran::parser::OmpLinearModifier::Value": [ + "Ref", + "Uval", + "Val" + ], + "Fortran::parser::OmpMapType::Value": [ + "Alloc", + "Delete", + "From", + "Release", + "Storage", + "To", + "Tofrom" + ], + "Fortran::parser::OmpMapTypeModifier::Value": [ + "Always", + "Close", + "Present", + "Ompx_Hold" + ], + "Fortran::parser::OmpObject::Invalid::Kind": [ + "BlankCommonBlock" + ], + "Fortran::parser::OmpOrderClause::Ordering": [ + "Concurrent" + ], + "Fortran::parser::OmpOrderingModifier::Value": [ + "Monotonic", + "Nonmonotonic", + "Simd" + ], + "Fortran::parser::OmpOrderModifier::Value": [ + "Reproducible", + "Unconstrained" + ], + "Fortran::parser::OmpPrescriptiveness::Value": [ + "Strict" + ], + "Fortran::parser::OmpPresentModifier::Value": [ + "Present" + ], + "Fortran::parser::OmpProcBindClause::AffinityPolicy": [ + "Close", + "Master", + "Spread", + "Primary" + ], + "Fortran::parser::OmpReductionModifier::Value": [ + "Default", + "Inscan", + "Task" + ], + "Fortran::parser::OmpRefModifier::Value": [ + "Ref_Ptee", + "Ref_Ptr", + "Ref_Ptr_Ptee" + ], + "Fortran::parser::OmpScheduleClause::Kind": [ + "Static", + "Dynamic", + "Guided", + "Auto", + "Runtime" + ], + "Fortran::parser::OmpSelfModifier::Value": [ + "Self" + ], + "Fortran::parser::OmpSeverityClause::SevLevel": [ + "Fatal", + "Warning" + ], + "Fortran::parser::OmpThreadsetClause::ThreadsetPolicy": [ + "Omp_Pool", + "Omp_Team" + ], + "Fortran::parser::OmpTraitSelectorName::Value": [ + "Arch", + "Atomic_Default_Mem_Order", + "Condition", + "Device_Num", + "Extension", + "Isa", + "Kind", + "Requires", + "Simd", + "Uid", + "Vendor" + ], + "Fortran::parser::OmpTraitSetSelectorName::Value": [ + "Construct", + "Device", + "Implementation", + "Target_Device", + "User" + ], + "Fortran::parser::OmpVariableCategory::Value": [ + "Aggregate", + "All", + "Allocatable", + "Pointer", + "Scalar" + ], + "Fortran::parser::OmpxHoldModifier::Value": [ + "Ompx_Hold" + ], + "Fortran::parser::ProcedureStmt::Kind": [ + "ModuleProcedure", + "Procedure" + ], + "Fortran::parser::SavedEntity::Kind": [ + "Entity", + "Common" + ], + "Fortran::parser::StopStmt::Kind": [ + "Stop", + "ErrorStop" + ], + "Fortran::parser::UseStmt::ModuleNature": [ + "Intrinsic", + "Non_Intrinsic" + ] + } +} diff --git a/FortranParser/resources-test/fortran/parser/expr/not.expected.f90 b/FortranParser/resources-test/fortran/parser/expr/not.expected.f90 index 93745dae..956bcbd8 100644 --- a/FortranParser/resources-test/fortran/parser/expr/not.expected.f90 +++ b/FortranParser/resources-test/fortran/parser/expr/not.expected.f90 @@ -1,3 +1,3 @@ PROGRAM NOT - LOGICAL :: a = .not. .true. + LOGICAL :: a = .NOT. .TRUE. END PROGRAM NOT \ No newline at end of file diff --git a/FortranParser/resources-test/fortran/parser/expr/substring.expected.f90 b/FortranParser/resources-test/fortran/parser/expr/substring.expected.f90 new file mode 100644 index 00000000..7812ac0c --- /dev/null +++ b/FortranParser/resources-test/fortran/parser/expr/substring.expected.f90 @@ -0,0 +1,6 @@ +PROGRAM SUBSTRING + CHARACTER(LEN=8) :: s_cha, s_chb, v_cha, v_chb + DIMENSION :: s_cha(10), s_chb(10), v_cha(10), v_chb(10) + + v_cha(1:10)(1:8) = v_cha(1:10)(1:4) // v_chb(1:10)(5:8) +END PROGRAM SUBSTRING \ No newline at end of file diff --git a/FortranParser/resources-test/fortran/parser/expr/substring.f90 b/FortranParser/resources-test/fortran/parser/expr/substring.f90 new file mode 100644 index 00000000..0c7d8216 --- /dev/null +++ b/FortranParser/resources-test/fortran/parser/expr/substring.f90 @@ -0,0 +1,6 @@ +program substring + CHARACTER(LEN = 8) S_CHA, S_CHB, V_CHA, V_CHB + DIMENSION S_CHA(10), S_CHB(10), V_CHA(10), V_CHB(10) + + V_CHA(1:10)(1:8) = V_CHA(1:10)(1:4) // V_CHB(1:10)(5:8) +end program substring \ No newline at end of file diff --git a/FortranParser/resources-test/fortran/parser/expr/substring.json b/FortranParser/resources-test/fortran/parser/expr/substring.json new file mode 100644 index 00000000..7afb2561 --- /dev/null +++ b/FortranParser/resources-test/fortran/parser/expr/substring.json @@ -0,0 +1,1082 @@ +{ + "fileExtension": "f90", + "nodes": [ + { + "id": "0x55fc4bcd1f00-Program", + "ProgramUnit": [ + "0x55fc4bd06f00-ProgramUnit" + ] + }, + { + "id": "0x55fc4bd06f00-ProgramUnit", + "variantKey": "MainProgram", + "MainProgram": "0x55fc4bd01b20-MainProgram" + }, + { + "id": "0x55fc4bd01b20-MainProgram", + "Statement": "0x55fc4bd01c68-Statement", + "SpecificationPart": "0x55fc4bd01bc0-SpecificationPart", + "ExecutionPart": "0x55fc4bd01ba8-ExecutionPart", + "Statement": "0x55fc4bd01b20-Statement" + }, + { + "id": "0x55fc4bd01c68-Statement", + "statement": "0x55fc4bd01c78-ProgramStmt", + "source": "program SUBSTRING" + }, + { + "id": "0x55fc4bd01c78-ProgramStmt", + "Name": "0x55fc4bd01c78-Name" + }, + { + "id": "0x55fc4bd01c78-Name", + "source": "SUBSTRING" + }, + { + "id": "0x55fc4bd01bc0-SpecificationPart", + "ImplicitPart": "0x55fc4bd01bd8-ImplicitPart", + "DeclarationConstruct": [ + "0x55fc4bcdf110-DeclarationConstruct", + "0x55fc4bd12040-DeclarationConstruct" + ] + }, + { + "id": "0x55fc4bd01bd8-ImplicitPart" + }, + { + "id": "0x55fc4bcdf110-DeclarationConstruct", + "variantKey": "SpecificationConstruct", + "SpecificationConstruct": "0x55fc4bcdf110-SpecificationConstruct" + }, + { + "id": "0x55fc4bcdf110-SpecificationConstruct", + "variantKey": "Statement", + "Statement": "0x55fc4bcdf110-Statement" + }, + { + "id": "0x55fc4bcdf110-Statement", + "statement": "0x55fc4bd10f10-TypeDeclarationStmt", + "source": "character(len = 8) s_cha, s_chb, v_cha, v_chb" + }, + { + "id": "0x55fc4bd10f10-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x55fc4bd10f40-DeclarationTypeSpec", + "EntityDecl": [ + "0x55fc4bd113e0-EntityDecl", + "0x55fc4bd11110-EntityDecl", + "0x55fc4bd11200-EntityDecl", + "0x55fc4bd112f0-EntityDecl" + ] + }, + { + "id": "0x55fc4bd10f40-DeclarationTypeSpec", + "variantKey": "IntrinsicTypeSpec", + "IntrinsicTypeSpec": "0x55fc4bd10f40-IntrinsicTypeSpec" + }, + { + "id": "0x55fc4bd10f40-IntrinsicTypeSpec", + "variantKey": "Character", + "Character": "0x55fc4bd10f40-Character" + }, + { + "id": "0x55fc4bd10f40-Character", + "CharSelector": "0x55fc4bd10f40-CharSelector" + }, + { + "id": "0x55fc4bd10f40-CharSelector", + "variantKey": "LengthSelector", + "LengthSelector": "0x55fc4bd10f40-LengthSelector" + }, + { + "id": "0x55fc4bd10f40-LengthSelector", + "variantKey": "TypeParamValue", + "TypeParamValue": "0x55fc4bd10f40-TypeParamValue" + }, + { + "id": "0x55fc4bd10f40-TypeParamValue", + "variantKey": "Expr", + "Expr": "0x55fc4bc71790-Expr" + }, + { + "id": "0x55fc4bc71790-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fc4bc717b0-LiteralConstant" + }, + { + "id": "0x55fc4bc717b0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55fc4bc717b0-IntLiteralConstant" + }, + { + "id": "0x55fc4bc717b0-IntLiteralConstant", + "CharBlock": "8" + }, + { + "id": "0x55fc4bd113e0-EntityDecl", + "Name": "0x55fc4bd11498-Name" + }, + { + "id": "0x55fc4bd11498-Name", + "source": "s_cha" + }, + { + "id": "0x55fc4bd11110-EntityDecl", + "Name": "0x55fc4bd111c8-Name" + }, + { + "id": "0x55fc4bd111c8-Name", + "source": "s_chb" + }, + { + "id": "0x55fc4bd11200-EntityDecl", + "Name": "0x55fc4bd112b8-Name" + }, + { + "id": "0x55fc4bd112b8-Name", + "source": "v_cha" + }, + { + "id": "0x55fc4bd112f0-EntityDecl", + "Name": "0x55fc4bd113a8-Name" + }, + { + "id": "0x55fc4bd113a8-Name", + "source": "v_chb" + }, + { + "id": "0x55fc4bd12040-DeclarationConstruct", + "variantKey": "SpecificationConstruct", + "SpecificationConstruct": "0x55fc4bd12040-SpecificationConstruct" + }, + { + "id": "0x55fc4bd12040-SpecificationConstruct", + "variantKey": "Statement", + "Statement": "0x55fc4bd12040-Statement" + }, + { + "id": "0x55fc4bd12040-Statement", + "statement": "0x55fc4bd12050-OtherSpecificationStmt", + "source": "dimension s_cha(10), s_chb(10), v_cha(10), v_chb(10)" + }, + { + "id": "0x55fc4bd12050-OtherSpecificationStmt", + "variantKey": "DimensionStmt", + "DimensionStmt": "0x55fc4bd13a90-DimensionStmt" + }, + { + "id": "0x55fc4bd13a90-DimensionStmt", + "Declaration": [ + "0x55fc4bd11e30-Declaration", + "0x55fc4bcdeda0-Declaration", + "0x55fc4bd11a70-Declaration", + "0x55fc4bd11dd0-Declaration" + ] + }, + { + "id": "0x55fc4bd11e30-Declaration", + "Name": "0x55fc4bd11e60-Name", + "ArraySpec": "0x55fc4bd11e30-ArraySpec" + }, + { + "id": "0x55fc4bd11e60-Name", + "source": "s_cha" + }, + { + "id": "0x55fc4bd11e30-ArraySpec", + "variantKey": "ExplicitShapeSpec", + "ExplicitShapeSpec": [ + "0x55fc4bd06d40-ExplicitShapeSpec" + ] + }, + { + "id": "0x55fc4bd06d40-ExplicitShapeSpec", + "upper_bound": "0x55fc4bd06d40-SpecificationExpr" + }, + { + "id": "0x55fc4bd06d40-SpecificationExpr", + "Expr": "0x55fc4bd115a0-Expr" + }, + { + "id": "0x55fc4bd115a0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fc4bd115c0-LiteralConstant" + }, + { + "id": "0x55fc4bd115c0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55fc4bd115c0-IntLiteralConstant" + }, + { + "id": "0x55fc4bd115c0-IntLiteralConstant", + "CharBlock": "10" + }, + { + "id": "0x55fc4bcdeda0-Declaration", + "Name": "0x55fc4bcdedd0-Name", + "ArraySpec": "0x55fc4bcdeda0-ArraySpec" + }, + { + "id": "0x55fc4bcdedd0-Name", + "source": "s_chb" + }, + { + "id": "0x55fc4bcdeda0-ArraySpec", + "variantKey": "ExplicitShapeSpec", + "ExplicitShapeSpec": [ + "0x55fc4bd06d70-ExplicitShapeSpec" + ] + }, + { + "id": "0x55fc4bd06d70-ExplicitShapeSpec", + "upper_bound": "0x55fc4bd06d70-SpecificationExpr" + }, + { + "id": "0x55fc4bd06d70-SpecificationExpr", + "Expr": "0x55fc4bd11680-Expr" + }, + { + "id": "0x55fc4bd11680-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fc4bd116a0-LiteralConstant" + }, + { + "id": "0x55fc4bd116a0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55fc4bd116a0-IntLiteralConstant" + }, + { + "id": "0x55fc4bd116a0-IntLiteralConstant", + "CharBlock": "10" + }, + { + "id": "0x55fc4bd11a70-Declaration", + "Name": "0x55fc4bd11aa0-Name", + "ArraySpec": "0x55fc4bd11a70-ArraySpec" + }, + { + "id": "0x55fc4bd11aa0-Name", + "source": "v_cha" + }, + { + "id": "0x55fc4bd11a70-ArraySpec", + "variantKey": "ExplicitShapeSpec", + "ExplicitShapeSpec": [ + "0x55fc4bd06da0-ExplicitShapeSpec" + ] + }, + { + "id": "0x55fc4bd06da0-ExplicitShapeSpec", + "upper_bound": "0x55fc4bd06da0-SpecificationExpr" + }, + { + "id": "0x55fc4bd06da0-SpecificationExpr", + "Expr": "0x55fc4bd11980-Expr" + }, + { + "id": "0x55fc4bd11980-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fc4bd119a0-LiteralConstant" + }, + { + "id": "0x55fc4bd119a0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55fc4bd119a0-IntLiteralConstant" + }, + { + "id": "0x55fc4bd119a0-IntLiteralConstant", + "CharBlock": "10" + }, + { + "id": "0x55fc4bd11dd0-Declaration", + "Name": "0x55fc4bd11e00-Name", + "ArraySpec": "0x55fc4bd11dd0-ArraySpec" + }, + { + "id": "0x55fc4bd11e00-Name", + "source": "v_chb" + }, + { + "id": "0x55fc4bd11dd0-ArraySpec", + "variantKey": "ExplicitShapeSpec", + "ExplicitShapeSpec": [ + "0x55fc4bd06df0-ExplicitShapeSpec" + ] + }, + { + "id": "0x55fc4bd06df0-ExplicitShapeSpec", + "upper_bound": "0x55fc4bd06df0-SpecificationExpr" + }, + { + "id": "0x55fc4bd06df0-SpecificationExpr", + "Expr": "0x55fc4bd11ce0-Expr" + }, + { + "id": "0x55fc4bd11ce0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fc4bd11d00-LiteralConstant" + }, + { + "id": "0x55fc4bd11d00-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55fc4bd11d00-IntLiteralConstant" + }, + { + "id": "0x55fc4bd11d00-IntLiteralConstant", + "CharBlock": "10" + }, + { + "id": "0x55fc4bd01ba8-ExecutionPart", + "ExecutionPartConstruct": [ + "0x55fc4bcfeaa0-ExecutionPartConstruct" + ] + }, + { + "id": "0x55fc4bd01ba8-ExecutionPartConstruct" + }, + { + "id": "0x55fc4bcfeaa0-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55fc4bcfeaa0-ExecutableConstruct" + }, + { + "id": "0x55fc4bcfeaa0-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55fc4bcfeaa0-Statement" + }, + { + "id": "0x55fc4bcfeaa0-Statement", + "statement": "0x55fc4bcfeab0-ActionStmt", + "source": "v_cha(1:10)(1:8) = v_cha(1:10)(1:4) // v_chb(1:10)(5:8)" + }, + { + "id": "0x55fc4bcfeab0-ActionStmt", + "variantKey": "AssignmentStmt", + "AssignmentStmt": "0x55fc4bcdfce0-AssignmentStmt" + }, + { + "id": "0x55fc4bcdfce0-AssignmentStmt", + "Variable": "0x55fc4bcdfdc0-Variable", + "Expr": "0x55fc4bcdfcf0-Expr" + }, + { + "id": "0x55fc4bcdfdc0-Variable", + "variantKey": "Designator", + "Designator": "0x55fc4bd122f0-Designator" + }, + { + "id": "0x55fc4bd122f0-Designator", + "variantKey": "Substring", + "Substring": "0x55fc4bd12300-Substring" + }, + { + "id": "0x55fc4bd12300-Substring", + "DataRef": "0x55fc4bd12320-DataRef", + "SubstringRange": "0x55fc4bd12300-SubstringRange" + }, + { + "id": "0x55fc4bd12320-DataRef", + "variantKey": "ArrayElement", + "ArrayElement": "0x55fc4bd14b40-ArrayElement" + }, + { + "id": "0x55fc4bd14b40-ArrayElement", + "base": "0x55fc4bd14b40-DataRef", + "subscripts": [ + "0x55fc4bceac80-SectionSubscript" + ] + }, + { + "id": "0x55fc4bd14b40-DataRef", + "variantKey": "Name", + "Name": "0x55fc4bd14b40-Name" + }, + { + "id": "0x55fc4bd14b40-Name", + "source": "v_cha" + }, + { + "id": "0x55fc4bceac80-SectionSubscript", + "variantKey": "SubscriptTriplet", + "SubscriptTriplet": "0x55fc4bceac80-SubscriptTriplet" + }, + { + "id": "0x55fc4bceac80-SubscriptTriplet", + "start": "0x55fc4bd12760-Expr", + "end": "0x55fc4bcfcbb0-Expr" + }, + { + "id": "0x55fc4bd12760-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fc4bd12780-LiteralConstant" + }, + { + "id": "0x55fc4bd12780-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55fc4bd12780-IntLiteralConstant" + }, + { + "id": "0x55fc4bd12780-IntLiteralConstant", + "CharBlock": "1" + }, + { + "id": "0x55fc4bcfcbb0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fc4bcfcbd0-LiteralConstant" + }, + { + "id": "0x55fc4bcfcbd0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55fc4bcfcbd0-IntLiteralConstant" + }, + { + "id": "0x55fc4bcfcbd0-IntLiteralConstant", + "CharBlock": "10" + }, + { + "id": "0x55fc4bd12300-SubstringRange", + "lower": "0x55fc4bcfc770-Expr", + "upper": "0x55fc4bd12210-Expr" + }, + { + "id": "0x55fc4bcfc770-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fc4bcfc790-LiteralConstant" + }, + { + "id": "0x55fc4bcfc790-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55fc4bcfc790-IntLiteralConstant" + }, + { + "id": "0x55fc4bcfc790-IntLiteralConstant", + "CharBlock": "1" + }, + { + "id": "0x55fc4bd12210-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fc4bd12230-LiteralConstant" + }, + { + "id": "0x55fc4bd12230-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55fc4bd12230-IntLiteralConstant" + }, + { + "id": "0x55fc4bd12230-IntLiteralConstant", + "CharBlock": "8" + }, + { + "id": "0x55fc4bcdfcf0-Expr", + "variantKey": "Concat", + "Concat": "0x55fc4bcdfd10-Concat" + }, + { + "id": "0x55fc4bcdfd10-Concat", + "left": "0x55fc4bcfe9b0-Expr", + "right": "0x55fc4bcfe8d0-Expr", + "op": "CONCAT" + }, + { + "id": "0x55fc4bcfe9b0-Expr", + "variantKey": "Designator", + "Designator": "0x55fc4bcdf160-Designator" + }, + { + "id": "0x55fc4bcdf160-Designator", + "variantKey": "Substring", + "Substring": "0x55fc4bcdf170-Substring" + }, + { + "id": "0x55fc4bcdf170-Substring", + "DataRef": "0x55fc4bcdf190-DataRef", + "SubstringRange": "0x55fc4bcdf170-SubstringRange" + }, + { + "id": "0x55fc4bcdf190-DataRef", + "variantKey": "ArrayElement", + "ArrayElement": "0x55fc4bd14a80-ArrayElement" + }, + { + "id": "0x55fc4bd14a80-ArrayElement", + "base": "0x55fc4bd14a80-DataRef", + "subscripts": [ + "0x55fc4bd0e650-SectionSubscript" + ] + }, + { + "id": "0x55fc4bd14a80-DataRef", + "variantKey": "Name", + "Name": "0x55fc4bd14a80-Name" + }, + { + "id": "0x55fc4bd14a80-Name", + "source": "v_cha" + }, + { + "id": "0x55fc4bd0e650-SectionSubscript", + "variantKey": "SubscriptTriplet", + "SubscriptTriplet": "0x55fc4bd0e650-SubscriptTriplet" + }, + { + "id": "0x55fc4bd0e650-SubscriptTriplet", + "start": "0x55fc4bd0e300-Expr", + "end": "0x55fc4bd12c20-Expr" + }, + { + "id": "0x55fc4bd0e300-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fc4bd0e320-LiteralConstant" + }, + { + "id": "0x55fc4bd0e320-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55fc4bd0e320-IntLiteralConstant" + }, + { + "id": "0x55fc4bd0e320-IntLiteralConstant", + "CharBlock": "1" + }, + { + "id": "0x55fc4bd12c20-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fc4bd12c40-LiteralConstant" + }, + { + "id": "0x55fc4bd12c40-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55fc4bd12c40-IntLiteralConstant" + }, + { + "id": "0x55fc4bd12c40-IntLiteralConstant", + "CharBlock": "10" + }, + { + "id": "0x55fc4bcdf170-SubstringRange", + "lower": "0x55fc4bd10c80-Expr", + "upper": "0x55fc4bcfceb0-Expr" + }, + { + "id": "0x55fc4bd10c80-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fc4bd10ca0-LiteralConstant" + }, + { + "id": "0x55fc4bd10ca0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55fc4bd10ca0-IntLiteralConstant" + }, + { + "id": "0x55fc4bd10ca0-IntLiteralConstant", + "CharBlock": "1" + }, + { + "id": "0x55fc4bcfceb0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fc4bcfced0-LiteralConstant" + }, + { + "id": "0x55fc4bcfced0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55fc4bcfced0-IntLiteralConstant" + }, + { + "id": "0x55fc4bcfced0-IntLiteralConstant", + "CharBlock": "4" + }, + { + "id": "0x55fc4bcfe8d0-Expr", + "variantKey": "Designator", + "Designator": "0x55fc4bd10dd0-Designator" + }, + { + "id": "0x55fc4bd10dd0-Designator", + "variantKey": "Substring", + "Substring": "0x55fc4bd10de0-Substring" + }, + { + "id": "0x55fc4bd10de0-Substring", + "DataRef": "0x55fc4bd10e00-DataRef", + "SubstringRange": "0x55fc4bd10de0-SubstringRange" + }, + { + "id": "0x55fc4bd10e00-DataRef", + "variantKey": "ArrayElement", + "ArrayElement": "0x55fc4bd143a0-ArrayElement" + }, + { + "id": "0x55fc4bd143a0-ArrayElement", + "base": "0x55fc4bd143a0-DataRef", + "subscripts": [ + "0x55fc4bd157b0-SectionSubscript" + ] + }, + { + "id": "0x55fc4bd143a0-DataRef", + "variantKey": "Name", + "Name": "0x55fc4bd143a0-Name" + }, + { + "id": "0x55fc4bd143a0-Name", + "source": "v_chb" + }, + { + "id": "0x55fc4bd157b0-SectionSubscript", + "variantKey": "SubscriptTriplet", + "SubscriptTriplet": "0x55fc4bd157b0-SubscriptTriplet" + }, + { + "id": "0x55fc4bd157b0-SubscriptTriplet", + "start": "0x55fc4bcfe110-Expr", + "end": "0x55fc4bcfe410-Expr" + }, + { + "id": "0x55fc4bcfe110-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fc4bcfe130-LiteralConstant" + }, + { + "id": "0x55fc4bcfe130-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55fc4bcfe130-IntLiteralConstant" + }, + { + "id": "0x55fc4bcfe130-IntLiteralConstant", + "CharBlock": "1" + }, + { + "id": "0x55fc4bcfe410-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fc4bcfe430-LiteralConstant" + }, + { + "id": "0x55fc4bcfe430-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55fc4bcfe430-IntLiteralConstant" + }, + { + "id": "0x55fc4bcfe430-IntLiteralConstant", + "CharBlock": "10" + }, + { + "id": "0x55fc4bd10de0-SubstringRange", + "lower": "0x55fc4bcfd960-Expr", + "upper": "0x55fc4bcfdc60-Expr" + }, + { + "id": "0x55fc4bcfd960-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fc4bcfd980-LiteralConstant" + }, + { + "id": "0x55fc4bcfd980-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55fc4bcfd980-IntLiteralConstant" + }, + { + "id": "0x55fc4bcfd980-IntLiteralConstant", + "CharBlock": "5" + }, + { + "id": "0x55fc4bcfdc60-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fc4bcfdc80-LiteralConstant" + }, + { + "id": "0x55fc4bcfdc80-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55fc4bcfdc80-IntLiteralConstant" + }, + { + "id": "0x55fc4bcfdc80-IntLiteralConstant", + "CharBlock": "8" + }, + { + "id": "0x55fc4bd01b20-Statement", + "statement": "0x55fc4bd01b30-EndProgramStmt", + "source": "end program SUBSTRING" + }, + { + "id": "0x55fc4bd01b30-EndProgramStmt", + "Name": "0x55fc4bd01b30-Name" + }, + { + "id": "0x55fc4bd01b30-Name", + "source": "SUBSTRING" + } + ], + "comments": [], + "enums": { + "Fortran::common::CUDADataAttr": [ + "Constant", + "Device", + "Managed", + "Pinned", + "Shared", + "Texture", + "Unified" + ], + "Fortran::common::CUDASubprogramAttrs": [ + "Host", + "Device", + "HostDevice", + "Global", + "Grid_Global" + ], + "Fortran::common::ImportKind": [ + "Default", + "Only", + "None", + "All" + ], + "Fortran::common::OmpDependenceKind": [ + "In", + "Out", + "Inout", + "Inoutset", + "Mutexinoutset", + "Depobj" + ], + "Fortran::common::OmpMemoryOrderType": [ + "Acq_Rel", + "Acquire", + "Relaxed", + "Release", + "Seq_Cst" + ], + "Fortran::common::OpenACCDeviceType": [ + "Star", + "Default", + "Nvidia", + "Radeon", + "Host", + "Multicore", + "None" + ], + "Fortran::parser::AccDataModifier::Modifier": [ + "ReadOnly", + "Zero" + ], + "Fortran::parser::AccessSpec::Kind": [ + "Public", + "Private" + ], + "Fortran::parser::BindEntity::Kind": [ + "Object", + "Common" + ], + "Fortran::parser::CompilerDirective::VectorLength::Kind": [ + "Auto", + "Fixed", + "Scalable" + ], + "Fortran::parser::ConnectSpec::CharExpr::Kind": [ + "Access", + "Action", + "Asynchronous", + "Blank", + "Decimal", + "Delim", + "Encoding", + "Form", + "Pad", + "Position", + "Round", + "Sign", + "Carriagecontrol", + "Convert", + "Dispose" + ], + "Fortran::parser::DefinedOperator::IntrinsicOperator": [ + "Power", + "Multiply", + "Divide", + "Add", + "Subtract", + "Concat", + "LT", + "LE", + "EQ", + "NE", + "GE", + "GT", + "NOT", + "AND", + "OR", + "EQV", + "NEQV" + ], + "Fortran::parser::ImplicitStmt::ImplicitNoneNameSpec": [ + "External", + "Type" + ], + "Fortran::parser::InquireSpec::CharVar::Kind": [ + "Access", + "Action", + "Asynchronous", + "Blank", + "Decimal", + "Delim", + "Direct", + "Encoding", + "Form", + "Formatted", + "Iomsg", + "Name", + "Pad", + "Position", + "Read", + "Readwrite", + "Round", + "Sequential", + "Sign", + "Stream", + "Status", + "Unformatted", + "Write", + "Carriagecontrol", + "Convert", + "Dispose" + ], + "Fortran::parser::InquireSpec::IntVar::Kind": [ + "Iostat", + "Nextrec", + "Number", + "Pos", + "Recl", + "Size" + ], + "Fortran::parser::InquireSpec::LogVar::Kind": [ + "Exist", + "Named", + "Opened", + "Pending" + ], + "Fortran::parser::IntentSpec::Intent": [ + "In", + "Out", + "InOut" + ], + "Fortran::parser::IoControlSpec::CharExpr::Kind": [ + "Advance", + "Blank", + "Decimal", + "Delim", + "Pad", + "Round", + "Sign" + ], + "Fortran::parser::ReductionOperator::Operator": [ + "Plus", + "Multiply", + "Max", + "Min", + "Iand", + "Ior", + "Ieor", + "And", + "Or", + "Eqv", + "Neqv" + ], + "Fortran::parser::OmpAccessGroup::Value": [ + "Cgroup" + ], + "Fortran::parser::OmpAdjustArgsClause::OmpAdjustOp::Value": [ + "Nothing", + "Need_Device_Ptr" + ], + "Fortran::parser::OmpAlwaysModifier::Value": [ + "Always" + ], + "Fortran::parser::OmpAtClause::ActionTime": [ + "Compilation", + "Execution" + ], + "Fortran::parser::OmpAttachModifier::Value": [ + "Always", + "Never", + "Auto" + ], + "Fortran::parser::OmpAutomapModifier::Value": [ + "Automap" + ], + "Fortran::parser::OmpBindClause::Binding": [ + "Parallel", + "Teams", + "Thread" + ], + "Fortran::parser::OmpChunkModifier::Value": [ + "Simd" + ], + "Fortran::parser::OmpCloseModifier::Value": [ + "Close" + ], + "Fortran::parser::OmpDefaultClause::DataSharingAttribute": [ + "Private", + "Firstprivate", + "Shared", + "None" + ], + "Fortran::parser::OmpDefaultmapClause::ImplicitBehavior": [ + "Alloc", + "To", + "From", + "Tofrom", + "Firstprivate", + "None", + "Default", + "Present" + ], + "Fortran::parser::OmpDeleteModifier::Value": [ + "Delete" + ], + "Fortran::parser::OmpDependenceType::Value": [ + "Sink", + "Source" + ], + "Fortran::parser::OmpDeviceModifier::Value": [ + "Ancestor", + "Device_Num" + ], + "Fortran::parser::OmpDeviceTypeClause::DeviceTypeDescription": [ + "Any", + "Host", + "Nohost" + ], + "Fortran::parser::OmpDirectiveSpecification::Flag": [ + "DeprecatedSyntax", + "CrossesLabelDo" + ], + "Fortran::parser::OmpExpectation::Value": [ + "Present" + ], + "Fortran::parser::OmpInteropType::Value": [ + "Target", + "Targetsync" + ], + "Fortran::parser::OmpLastprivateModifier::Value": [ + "Conditional" + ], + "Fortran::parser::OmpLinearModifier::Value": [ + "Ref", + "Uval", + "Val" + ], + "Fortran::parser::OmpMapType::Value": [ + "Alloc", + "Delete", + "From", + "Release", + "Storage", + "To", + "Tofrom" + ], + "Fortran::parser::OmpMapTypeModifier::Value": [ + "Always", + "Close", + "Present", + "Ompx_Hold" + ], + "Fortran::parser::OmpObject::Invalid::Kind": [ + "BlankCommonBlock" + ], + "Fortran::parser::OmpOrderClause::Ordering": [ + "Concurrent" + ], + "Fortran::parser::OmpOrderingModifier::Value": [ + "Monotonic", + "Nonmonotonic", + "Simd" + ], + "Fortran::parser::OmpOrderModifier::Value": [ + "Reproducible", + "Unconstrained" + ], + "Fortran::parser::OmpPrescriptiveness::Value": [ + "Strict" + ], + "Fortran::parser::OmpPresentModifier::Value": [ + "Present" + ], + "Fortran::parser::OmpProcBindClause::AffinityPolicy": [ + "Close", + "Master", + "Spread", + "Primary" + ], + "Fortran::parser::OmpReductionModifier::Value": [ + "Default", + "Inscan", + "Task" + ], + "Fortran::parser::OmpRefModifier::Value": [ + "Ref_Ptee", + "Ref_Ptr", + "Ref_Ptr_Ptee" + ], + "Fortran::parser::OmpScheduleClause::Kind": [ + "Static", + "Dynamic", + "Guided", + "Auto", + "Runtime" + ], + "Fortran::parser::OmpSelfModifier::Value": [ + "Self" + ], + "Fortran::parser::OmpSeverityClause::SevLevel": [ + "Fatal", + "Warning" + ], + "Fortran::parser::OmpThreadsetClause::ThreadsetPolicy": [ + "Omp_Pool", + "Omp_Team" + ], + "Fortran::parser::OmpTraitSelectorName::Value": [ + "Arch", + "Atomic_Default_Mem_Order", + "Condition", + "Device_Num", + "Extension", + "Isa", + "Kind", + "Requires", + "Simd", + "Uid", + "Vendor" + ], + "Fortran::parser::OmpTraitSetSelectorName::Value": [ + "Construct", + "Device", + "Implementation", + "Target_Device", + "User" + ], + "Fortran::parser::OmpVariableCategory::Value": [ + "Aggregate", + "All", + "Allocatable", + "Pointer", + "Scalar" + ], + "Fortran::parser::OmpxHoldModifier::Value": [ + "Ompx_Hold" + ], + "Fortran::parser::ProcedureStmt::Kind": [ + "ModuleProcedure", + "Procedure" + ], + "Fortran::parser::SavedEntity::Kind": [ + "Entity", + "Common" + ], + "Fortran::parser::StopStmt::Kind": [ + "Stop", + "ErrorStop" + ], + "Fortran::parser::UseStmt::ModuleNature": [ + "Intrinsic", + "Non_Intrinsic" + ] + } +} diff --git a/FortranParser/resources-test/fortran/parser/fujitsu/0000/0000_0002.expected.f90 b/FortranParser/resources-test/fortran/parser/fujitsu/0000/0000_0002.expected.f90 index 3b6aa0c8..e8cbc034 100644 --- a/FortranParser/resources-test/fortran/parser/fujitsu/0000/0000_0002.expected.f90 +++ b/FortranParser/resources-test/fortran/parser/fujitsu/0000/0000_0002.expected.f90 @@ -2,7 +2,7 @@ REAL*4 :: b1, b2 LOGICAL :: ok -ok = .true. +ok = .TRUE. b1 = 1.1 a1 = 1 @@ -10,7 +10,7 @@ b2 = a1 IF ((a2 - b2) /= 0) THEN - ok = .false. + ok = .FALSE. PRINT *, "TEST1-NG =>", a2 - b2 END IF @@ -20,7 +20,7 @@ b2 = a1 IF ((a2 - b2) /= 0) THEN - ok = .false. + ok = .FALSE. PRINT *, "TEST2-NG =>", a2 - b2 END IF diff --git a/FortranParser/resources-test/fortran/parser/fujitsu/0000/0000_0003.expected.f90 b/FortranParser/resources-test/fortran/parser/fujitsu/0000/0000_0003.expected.f90 index b921f889..4ade56d1 100644 --- a/FortranParser/resources-test/fortran/parser/fujitsu/0000/0000_0003.expected.f90 +++ b/FortranParser/resources-test/fortran/parser/fujitsu/0000/0000_0003.expected.f90 @@ -2,7 +2,7 @@ REAL*4 :: b1, b2 LOGICAL :: ok -ok = .true. +ok = .TRUE. b1 = 127.1 a1 = 127 @@ -10,7 +10,7 @@ b2 = a1 IF ((a2 - b2) /= 0) THEN - ok = .false. + ok = .FALSE. PRINT *, "TEST1-NG =>", a2 - b2 END IF @@ -20,7 +20,7 @@ b2 = a1 IF ((a2 - b2) /= 0) THEN - ok = .false. + ok = .FALSE. PRINT *, "TEST2-NG =>", a2 - b2 END IF diff --git a/FortranParser/resources-test/fortran/parser/fujitsu/0000/0000_0004.expected.f90 b/FortranParser/resources-test/fortran/parser/fujitsu/0000/0000_0004.expected.f90 index 8b0ff590..241af1a8 100644 --- a/FortranParser/resources-test/fortran/parser/fujitsu/0000/0000_0004.expected.f90 +++ b/FortranParser/resources-test/fortran/parser/fujitsu/0000/0000_0004.expected.f90 @@ -2,7 +2,7 @@ REAL*8 :: b1, b2 LOGICAL :: ok -ok = .true. +ok = .TRUE. b1 = 1.1 a1 = 1 @@ -10,7 +10,7 @@ b2 = a1 IF ((a2 - b2) /= 0) THEN - ok = .false. + ok = .FALSE. PRINT *, "TEST1-NG =>", a2 - b2 END IF @@ -20,7 +20,7 @@ b2 = a1 IF ((a2 - b2) /= 0) THEN - ok = .false. + ok = .FALSE. PRINT *, "TEST2-NG =>", a2 - b2 END IF diff --git a/FortranParser/resources-test/fortran/parser/fujitsu/0000/0000_0007.expected.f90 b/FortranParser/resources-test/fortran/parser/fujitsu/0000/0000_0007.expected.f90 index ae02dc2d..649b4a12 100644 --- a/FortranParser/resources-test/fortran/parser/fujitsu/0000/0000_0007.expected.f90 +++ b/FortranParser/resources-test/fortran/parser/fujitsu/0000/0000_0007.expected.f90 @@ -2,7 +2,7 @@ REAL*4 :: b1, b2 LOGICAL :: ok -ok = .true. +ok = .TRUE. a1 = 3267_2 b1 = 3267.1e0 @@ -10,7 +10,7 @@ b2 = a1 IF ((a2 - b2) /= 0) THEN - ok = .false. + ok = .FALSE. PRINT *, "TEST1-NG =>", a2 - b2 END IF @@ -20,7 +20,7 @@ b2 = a1 IF ((a2 - b2) /= 0) THEN - ok = .false. + ok = .FALSE. PRINT *, "TEST1-NG =>", a2 - b2 END IF diff --git a/FortranParser/resources-test/fortran/parser/fujitsu/0000/0000_0019.expected.f90 b/FortranParser/resources-test/fortran/parser/fujitsu/0000/0000_0019.expected.f90 index aaabaefc..bf2e14d7 100644 --- a/FortranParser/resources-test/fortran/parser/fujitsu/0000/0000_0019.expected.f90 +++ b/FortranParser/resources-test/fortran/parser/fujitsu/0000/0000_0019.expected.f90 @@ -2,7 +2,7 @@ REAL*8 :: b1, b2 LOGICAL :: ok -ok = .true. +ok = .TRUE. a1 = 2147483647_8 b1 = 2147483647.1d0 @@ -10,7 +10,7 @@ b2 = a1 IF ((a2 - b2) /= 0) THEN - ok = .false. + ok = .FALSE. PRINT *, "TEST1-NG =>", a2 - b2 END IF @@ -20,7 +20,7 @@ b2 = a1 IF ((a2 - b2) /= 0) THEN - ok = .false. + ok = .FALSE. PRINT *, "TEST2-NG =>", a2 - b2 END IF diff --git a/FortranParser/resources-test/fortran/parser/fujitsu/0000/0000_0033.expected.f90 b/FortranParser/resources-test/fortran/parser/fujitsu/0000/0000_0033.expected.f90 index 97d19048..9d186cc3 100644 --- a/FortranParser/resources-test/fortran/parser/fujitsu/0000/0000_0033.expected.f90 +++ b/FortranParser/resources-test/fortran/parser/fujitsu/0000/0000_0033.expected.f90 @@ -1,6 +1,6 @@ COMMON /com/ ok LOGICAL(1) :: ok -ok = .true. +ok = .TRUE. CALL test1() CALL test2() @@ -20,7 +20,7 @@ SUBROUTINE test1() PARAMETER (m = 19, d = 3, ans = 1) IF (mod(m, d) /= ans) THEN - ok = .false. + ok = .FALSE. PRINT *, "TEST1-NG =>", mod(m, d) END IF END SUBROUTINE test1 @@ -32,7 +32,7 @@ SUBROUTINE test2() PARAMETER (m = 19, d = 3, ans = 1) IF (mod(m, d) /= ans) THEN - ok = .false. + ok = .FALSE. PRINT *, "TEST2-NG =>", mod(m, d) END IF END SUBROUTINE test2 @@ -44,7 +44,7 @@ SUBROUTINE test3() PARAMETER (m = 19, d = 3, ans = 1) IF (mod(m, d) /= ans) THEN - ok = .false. + ok = .FALSE. PRINT *, "TEST3-NG =>", mod(m, d) END IF END SUBROUTINE test3 \ No newline at end of file diff --git a/FortranParser/resources-test/fortran/parser/fujitsu/0001/0001_0000.expected.f b/FortranParser/resources-test/fortran/parser/fujitsu/0001/0001_0000.expected.f new file mode 100644 index 00000000..4795b657 --- /dev/null +++ b/FortranParser/resources-test/fortran/parser/fujitsu/0001/0001_0000.expected.f @@ -0,0 +1,18 @@ + INTEGERa(1000) + + a=0 + a=a+1 + + DO10i=1,1000 + IF(a(i)/=1)THEN + WRITE(6,*)"NG" + WRITE(6,*)"ELEMENT NUMBER = A(",i,")" + GOTO20 + ENDIF + 10 CONTINUE + + WRITE(6,*)"OK" + + 20 CONTINUE + STOP + END diff --git a/FortranParser/resources-test/fortran/parser/fujitsu/0001/0001_0000.f b/FortranParser/resources-test/fortran/parser/fujitsu/0001/0001_0000.f new file mode 100644 index 00000000..22277564 --- /dev/null +++ b/FortranParser/resources-test/fortran/parser/fujitsu/0001/0001_0000.f @@ -0,0 +1,18 @@ + INTEGER A(1000) + + A = 0 + A = A + 1 + + DO 10 I=1,1000 + IF(A(I).NE.1) THEN + WRITE(6,*) 'NG' + WRITE(6,*) 'ELEMENT NUMBER = A(',I,')' + GO TO 20 + ENDIF + 10 CONTINUE + + WRITE(6,*) 'OK' + + 20 CONTINUE + STOP + END diff --git a/FortranParser/resources-test/fortran/parser/fujitsu/0001/0001_0000.json b/FortranParser/resources-test/fortran/parser/fujitsu/0001/0001_0000.json new file mode 100644 index 00000000..fd12dd0b --- /dev/null +++ b/FortranParser/resources-test/fortran/parser/fujitsu/0001/0001_0000.json @@ -0,0 +1,1221 @@ +{ + "fileExtension": "f", + "nodes": [ + { + "id": "0x55b98bfbff00-Program", + "ProgramUnit": [ + "0x55b98bffc140-ProgramUnit" + ] + }, + { + "id": "0x55b98bffc140-ProgramUnit", + "variantKey": "MainProgram", + "MainProgram": "0x55b98bffcc70-MainProgram" + }, + { + "id": "0x55b98bffcc70-MainProgram", + "SpecificationPart": "0x55b98bffcd10-SpecificationPart", + "ExecutionPart": "0x55b98bffccf8-ExecutionPart", + "Statement": "0x55b98bffcc70-Statement" + }, + { + "id": "0x55b98bffcd10-SpecificationPart", + "ImplicitPart": "0x55b98bffcd28-ImplicitPart", + "DeclarationConstruct": [ + "0x55b98bfcd110-DeclarationConstruct" + ] + }, + { + "id": "0x55b98bffcd28-ImplicitPart" + }, + { + "id": "0x55b98bfcd110-DeclarationConstruct", + "variantKey": "SpecificationConstruct", + "SpecificationConstruct": "0x55b98bfcd110-SpecificationConstruct" + }, + { + "id": "0x55b98bfcd110-SpecificationConstruct", + "variantKey": "Statement", + "Statement": "0x55b98bfcd110-Statement" + }, + { + "id": "0x55b98bfcd110-Statement", + "statement": "0x55b98bffcae0-TypeDeclarationStmt", + "source": "integera(1000)" + }, + { + "id": "0x55b98bffcae0-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x55b98bffcb10-DeclarationTypeSpec", + "EntityDecl": [ + "0x55b98bfebe20-EntityDecl" + ] + }, + { + "id": "0x55b98bffcb10-DeclarationTypeSpec", + "variantKey": "IntrinsicTypeSpec", + "IntrinsicTypeSpec": "0x55b98bffcb10-IntrinsicTypeSpec" + }, + { + "id": "0x55b98bffcb10-IntrinsicTypeSpec", + "variantKey": "IntegerTypeSpec", + "IntegerTypeSpec": "0x55b98bffcb10-IntegerTypeSpec" + }, + { + "id": "0x55b98bffcb10-IntegerTypeSpec" + }, + { + "id": "0x55b98bfebe20-EntityDecl", + "Name": "0x55b98bfebed8-Name", + "ArraySpec": "0x55b98bfebea0-ArraySpec" + }, + { + "id": "0x55b98bfebed8-Name", + "source": "a" + }, + { + "id": "0x55b98bfebea0-ArraySpec", + "variantKey": "ExplicitShapeSpec", + "ExplicitShapeSpec": [ + "0x55b98bffc0e0-ExplicitShapeSpec" + ] + }, + { + "id": "0x55b98bffc0e0-ExplicitShapeSpec", + "upper_bound": "0x55b98bffc0e0-SpecificationExpr" + }, + { + "id": "0x55b98bffc0e0-SpecificationExpr", + "Expr": "0x55b98bf5f790-Expr" + }, + { + "id": "0x55b98bf5f790-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55b98bf5f7b0-LiteralConstant" + }, + { + "id": "0x55b98bf5f7b0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55b98bf5f7b0-IntLiteralConstant" + }, + { + "id": "0x55b98bf5f7b0-IntLiteralConstant", + "CharBlock": "1000" + }, + { + "id": "0x55b98bffccf8-ExecutionPart", + "ExecutionPartConstruct": [ + "0x55b98bfebbe0-ExecutionPartConstruct", + "0x55b98bfea8f0-ExecutionPartConstruct", + "0x55b98bfead00-ExecutionPartConstruct", + "0x55b98bfefb30-ExecutionPartConstruct", + "0x55b98bfebb80-ExecutionPartConstruct", + "0x55b98bfec0d0-ExecutionPartConstruct" + ] + }, + { + "id": "0x55b98bffccf8-ExecutionPartConstruct" + }, + { + "id": "0x55b98bfebbe0-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55b98bfebbe0-ExecutableConstruct" + }, + { + "id": "0x55b98bfebbe0-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55b98bfebbe0-Statement" + }, + { + "id": "0x55b98bfebbe0-Statement", + "statement": "0x55b98bfebbf0-ActionStmt", + "source": "a=0" + }, + { + "id": "0x55b98bfebbf0-ActionStmt", + "variantKey": "AssignmentStmt", + "AssignmentStmt": "0x55b98bfeb9f0-AssignmentStmt" + }, + { + "id": "0x55b98bfeb9f0-AssignmentStmt", + "Variable": "0x55b98bfebad0-Variable", + "Expr": "0x55b98bfeba00-Expr" + }, + { + "id": "0x55b98bfebad0-Variable", + "variantKey": "Designator", + "Designator": "0x55b98bfcd160-Designator" + }, + { + "id": "0x55b98bfcd160-Designator", + "variantKey": "DataRef", + "DataRef": "0x55b98bfcd170-DataRef" + }, + { + "id": "0x55b98bfcd170-DataRef", + "variantKey": "Name", + "Name": "0x55b98bfcd170-Name" + }, + { + "id": "0x55b98bfcd170-Name", + "source": "a" + }, + { + "id": "0x55b98bfeba00-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55b98bfeba20-LiteralConstant" + }, + { + "id": "0x55b98bfeba20-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55b98bfeba20-IntLiteralConstant" + }, + { + "id": "0x55b98bfeba20-IntLiteralConstant", + "CharBlock": "0" + }, + { + "id": "0x55b98bfea8f0-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55b98bfea8f0-ExecutableConstruct" + }, + { + "id": "0x55b98bfea8f0-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55b98bfea8f0-Statement" + }, + { + "id": "0x55b98bfea8f0-Statement", + "statement": "0x55b98bfea900-ActionStmt", + "source": "a=a+1" + }, + { + "id": "0x55b98bfea900-ActionStmt", + "variantKey": "AssignmentStmt", + "AssignmentStmt": "0x55b98bff65d0-AssignmentStmt" + }, + { + "id": "0x55b98bff65d0-AssignmentStmt", + "Variable": "0x55b98bff66b0-Variable", + "Expr": "0x55b98bff65e0-Expr" + }, + { + "id": "0x55b98bff66b0-Variable", + "variantKey": "Designator", + "Designator": "0x55b98bfbe4d0-Designator" + }, + { + "id": "0x55b98bfbe4d0-Designator", + "variantKey": "DataRef", + "DataRef": "0x55b98bfbe4e0-DataRef" + }, + { + "id": "0x55b98bfbe4e0-DataRef", + "variantKey": "Name", + "Name": "0x55b98bfbe4e0-Name" + }, + { + "id": "0x55b98bfbe4e0-Name", + "source": "a" + }, + { + "id": "0x55b98bff65e0-Expr", + "variantKey": "Add", + "Add": "0x55b98bff6600-Add" + }, + { + "id": "0x55b98bff6600-Add", + "left": "0x55b98bff6480-Expr", + "right": "0x55b98bff63a0-Expr", + "op": "ADD" + }, + { + "id": "0x55b98bff6480-Expr", + "variantKey": "Designator", + "Designator": "0x55b98bfeb360-Designator" + }, + { + "id": "0x55b98bfeb360-Designator", + "variantKey": "DataRef", + "DataRef": "0x55b98bfeb370-DataRef" + }, + { + "id": "0x55b98bfeb370-DataRef", + "variantKey": "Name", + "Name": "0x55b98bfeb370-Name" + }, + { + "id": "0x55b98bfeb370-Name", + "source": "a" + }, + { + "id": "0x55b98bff63a0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55b98bff63c0-LiteralConstant" + }, + { + "id": "0x55b98bff63c0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55b98bff63c0-IntLiteralConstant" + }, + { + "id": "0x55b98bff63c0-IntLiteralConstant", + "CharBlock": "1" + }, + { + "id": "0x55b98bfead00-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55b98bfead00-ExecutableConstruct" + }, + { + "id": "0x55b98bfead00-ExecutableConstruct", + "variantKey": "DoConstruct", + "DoConstruct": "0x55b98bff9290-DoConstruct" + }, + { + "id": "0x55b98bff9290-DoConstruct", + "Statement": "0x55b98bff92e8-Statement", + "ExecutionPartConstruct": [ + "0x55b98bfeb2a0-ExecutionPartConstruct", + "0x55b98bfeb520-ExecutionPartConstruct" + ], + "Statement": "0x55b98bff9290-Statement" + }, + { + "id": "0x55b98bff92e8-Statement", + "statement": "0x55b98bff92f8-NonLabelDoStmt", + "source": "do10i=1,1000" + }, + { + "id": "0x55b98bff92f8-NonLabelDoStmt", + "LoopControl": "0x55b98bff92f8-LoopControl" + }, + { + "id": "0x55b98bff92f8-LoopControl", + "variantKey": "LoopBounds", + "LoopBounds": "0x55b98bff92f8-LoopBounds" + }, + { + "id": "0x55b98bff92f8-LoopBounds", + "var": "0x55b98bff92f8-Name", + "lower": "0x55b98bfea940-Expr", + "upper": "0x55b98bfeaa20-Expr" + }, + { + "id": "0x55b98bff92f8-Name", + "source": "i" + }, + { + "id": "0x55b98bfea940-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55b98bfea960-LiteralConstant" + }, + { + "id": "0x55b98bfea960-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55b98bfea960-IntLiteralConstant" + }, + { + "id": "0x55b98bfea960-IntLiteralConstant", + "CharBlock": "1" + }, + { + "id": "0x55b98bfeaa20-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55b98bfeaa40-LiteralConstant" + }, + { + "id": "0x55b98bfeaa40-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55b98bfeaa40-IntLiteralConstant" + }, + { + "id": "0x55b98bfeaa40-IntLiteralConstant", + "CharBlock": "1000" + }, + { + "id": "0x55b98bff92d0-ExecutionPartConstruct" + }, + { + "id": "0x55b98bfeb2a0-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55b98bfeb2a0-ExecutableConstruct" + }, + { + "id": "0x55b98bfeb2a0-ExecutableConstruct", + "variantKey": "IfConstruct", + "IfConstruct": "0x55b98bf95780-IfConstruct" + }, + { + "id": "0x55b98bf95780-IfConstruct", + "Statement": "0x55b98bf95850-Statement", + "ExecutionPartConstruct": [ + "0x55b98bfeb850-ExecutionPartConstruct", + "0x55b98bfef7b0-ExecutionPartConstruct", + "0x55b98bfccda0-ExecutionPartConstruct" + ], + "Statement": "0x55b98bf95780-Statement" + }, + { + "id": "0x55b98bf95850-Statement", + "statement": "0x55b98bf95860-IfThenStmt", + "source": "if(a(i).ne.1)then" + }, + { + "id": "0x55b98bf95860-IfThenStmt", + "Expr": "0x55b98bfec5a0-Expr" + }, + { + "id": "0x55b98bfec5a0-Expr", + "variantKey": "NE", + "NE": "0x55b98bfec5c0-NE" + }, + { + "id": "0x55b98bfec5c0-NE", + "left": "0x55b98bfeab80-Expr", + "right": "0x55b98bfec4c0-Expr", + "op": "NE" + }, + { + "id": "0x55b98bfeab80-Expr", + "variantKey": "Designator", + "Designator": "0x55b98c024330-Designator" + }, + { + "id": "0x55b98c024330-Designator", + "variantKey": "DataRef", + "DataRef": "0x55b98c024340-DataRef" + }, + { + "id": "0x55b98c024340-DataRef", + "variantKey": "ArrayElement", + "ArrayElement": "0x55b98c018390-ArrayElement" + }, + { + "id": "0x55b98c018390-ArrayElement", + "base": "0x55b98c018390-DataRef", + "subscripts": [ + "0x55b98bff51f0-SectionSubscript" + ] + }, + { + "id": "0x55b98c018390-DataRef", + "variantKey": "Name", + "Name": "0x55b98c018390-Name" + }, + { + "id": "0x55b98c018390-Name", + "source": "a" + }, + { + "id": "0x55b98bff51f0-SectionSubscript", + "variantKey": "Expr", + "Expr": "0x55b98c020ee0-Expr" + }, + { + "id": "0x55b98c020ee0-Expr", + "variantKey": "Designator", + "Designator": "0x55b98bfec680-Designator" + }, + { + "id": "0x55b98bfec680-Designator", + "variantKey": "DataRef", + "DataRef": "0x55b98bfec690-DataRef" + }, + { + "id": "0x55b98bfec690-DataRef", + "variantKey": "Name", + "Name": "0x55b98bfec690-Name" + }, + { + "id": "0x55b98bfec690-Name", + "source": "i" + }, + { + "id": "0x55b98bfec4c0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55b98bfec4e0-LiteralConstant" + }, + { + "id": "0x55b98bfec4e0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55b98bfec4e0-IntLiteralConstant" + }, + { + "id": "0x55b98bfec4e0-IntLiteralConstant", + "CharBlock": "1" + }, + { + "id": "0x55b98bf95838-ExecutionPartConstruct" + }, + { + "id": "0x55b98bfeb850-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55b98bfeb850-ExecutableConstruct" + }, + { + "id": "0x55b98bfeb850-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55b98bfeb850-Statement" + }, + { + "id": "0x55b98bfeb850-Statement", + "statement": "0x55b98bfeb860-ActionStmt", + "source": "write(6,*)'NG'" + }, + { + "id": "0x55b98bfeb860-ActionStmt", + "variantKey": "WriteStmt", + "WriteStmt": "0x55b98bfef090-WriteStmt" + }, + { + "id": "0x55b98bfef090-WriteStmt", + "iounit": "0x55b98bfef090-IoUnit", + "format": "0x55b98bfef0c0-Format", + "controls": [], + "items": [ + "0x55b98bfeefb0-OutputItem" + ] + }, + { + "id": "0x55b98bfef090-IoUnit", + "variantKey": "Expr", + "Expr": "0x55b98bfeeec0-Expr" + }, + { + "id": "0x55b98bfeeec0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55b98bfeeee0-LiteralConstant" + }, + { + "id": "0x55b98bfeeee0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55b98bfeeee0-IntLiteralConstant" + }, + { + "id": "0x55b98bfeeee0-IntLiteralConstant", + "CharBlock": "6" + }, + { + "id": "0x55b98bfef0c0-Format", + "variantKey": "Star", + "Star": "0x55b98bfef0c0-Star" + }, + { + "id": "0x55b98bfef0c0-Star" + }, + { + "id": "0x55b98bfeefb0-OutputItem", + "variantKey": "Expr", + "Expr": "0x55b98bfeefb0-Expr" + }, + { + "id": "0x55b98bfeefb0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55b98bfeefd0-LiteralConstant" + }, + { + "id": "0x55b98bfeefd0-LiteralConstant", + "variantKey": "CharLiteralConstant", + "CharLiteralConstant": "0x55b98bfeefd0-CharLiteralConstant" + }, + { + "id": "0x55b98bfeefd0-CharLiteralConstant", + "string": "NG" + }, + { + "id": "0x55b98bfef7b0-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55b98bfef7b0-ExecutableConstruct" + }, + { + "id": "0x55b98bfef7b0-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55b98bfef7b0-Statement" + }, + { + "id": "0x55b98bfef7b0-Statement", + "statement": "0x55b98bfef7c0-ActionStmt", + "source": "write(6,*)'ELEMENT NUMBER = A(',i,')'" + }, + { + "id": "0x55b98bfef7c0-ActionStmt", + "variantKey": "WriteStmt", + "WriteStmt": "0x55b98bfef5f0-WriteStmt" + }, + { + "id": "0x55b98bfef5f0-WriteStmt", + "iounit": "0x55b98bfef5f0-IoUnit", + "format": "0x55b98bfef620-Format", + "controls": [], + "items": [ + "0x55b98bfef510-OutputItem", + "0x55b98bfef2d0-OutputItem", + "0x55b98bfef420-OutputItem" + ] + }, + { + "id": "0x55b98bfef5f0-IoUnit", + "variantKey": "Expr", + "Expr": "0x55b98bfef1e0-Expr" + }, + { + "id": "0x55b98bfef1e0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55b98bfef200-LiteralConstant" + }, + { + "id": "0x55b98bfef200-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55b98bfef200-IntLiteralConstant" + }, + { + "id": "0x55b98bfef200-IntLiteralConstant", + "CharBlock": "6" + }, + { + "id": "0x55b98bfef620-Format", + "variantKey": "Star", + "Star": "0x55b98bfef620-Star" + }, + { + "id": "0x55b98bfef620-Star" + }, + { + "id": "0x55b98bfef510-OutputItem", + "variantKey": "Expr", + "Expr": "0x55b98bfef510-Expr" + }, + { + "id": "0x55b98bfef510-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55b98bfef530-LiteralConstant" + }, + { + "id": "0x55b98bfef530-LiteralConstant", + "variantKey": "CharLiteralConstant", + "CharLiteralConstant": "0x55b98bfef530-CharLiteralConstant" + }, + { + "id": "0x55b98bfef530-CharLiteralConstant", + "string": "ELEMENT NUMBER = A(" + }, + { + "id": "0x55b98bfef2d0-OutputItem", + "variantKey": "Expr", + "Expr": "0x55b98bfef2d0-Expr" + }, + { + "id": "0x55b98bfef2d0-Expr", + "variantKey": "Designator", + "Designator": "0x55b98bfed260-Designator" + }, + { + "id": "0x55b98bfed260-Designator", + "variantKey": "DataRef", + "DataRef": "0x55b98bfed270-DataRef" + }, + { + "id": "0x55b98bfed270-DataRef", + "variantKey": "Name", + "Name": "0x55b98bfed270-Name" + }, + { + "id": "0x55b98bfed270-Name", + "source": "i" + }, + { + "id": "0x55b98bfef420-OutputItem", + "variantKey": "Expr", + "Expr": "0x55b98bfef420-Expr" + }, + { + "id": "0x55b98bfef420-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55b98bfef440-LiteralConstant" + }, + { + "id": "0x55b98bfef440-LiteralConstant", + "variantKey": "CharLiteralConstant", + "CharLiteralConstant": "0x55b98bfef440-CharLiteralConstant" + }, + { + "id": "0x55b98bfef440-CharLiteralConstant", + "string": ")" + }, + { + "id": "0x55b98bfccda0-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55b98bfccda0-ExecutableConstruct" + }, + { + "id": "0x55b98bfccda0-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55b98bfccda0-Statement" + }, + { + "id": "0x55b98bfccda0-Statement", + "statement": "0x55b98bfccdb0-ActionStmt", + "source": "goto20" + }, + { + "id": "0x55b98bfccdb0-ActionStmt", + "variantKey": "GotoStmt", + "GotoStmt": "0x55b98bffc340-GotoStmt" + }, + { + "id": "0x55b98bffc340-GotoStmt", + "uint64_t": "20" + }, + { + "id": "0x55b98bf95780-Statement", + "statement": "0x55b98bf95790-EndIfStmt", + "source": "endif" + }, + { + "id": "0x55b98bf95790-EndIfStmt" + }, + { + "id": "0x55b98bfeb520-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55b98bfeb520-ExecutableConstruct" + }, + { + "id": "0x55b98bfeb520-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55b98bfeb520-Statement" + }, + { + "id": "0x55b98bfeb520-Statement", + "statement": "0x55b98bfeb530-ActionStmt", + "label": "10", + "source": "10continue" + }, + { + "id": "0x55b98bfeb530-ActionStmt", + "variantKey": "ContinueStmt", + "ContinueStmt": "0x55b98bfeb530-ContinueStmt" + }, + { + "id": "0x55b98bfeb530-ContinueStmt" + }, + { + "id": "0x55b98bff9290-Statement", + "statement": "0x55b98bff92a0-EndDoStmt", + "source": "" + }, + { + "id": "0x55b98bff92a0-EndDoStmt" + }, + { + "id": "0x55b98bfefb30-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55b98bfefb30-ExecutableConstruct" + }, + { + "id": "0x55b98bfefb30-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55b98bfefb30-Statement" + }, + { + "id": "0x55b98bfefb30-Statement", + "statement": "0x55b98bfefb40-ActionStmt", + "source": "write(6,*)'OK'" + }, + { + "id": "0x55b98bfefb40-ActionStmt", + "variantKey": "WriteStmt", + "WriteStmt": "0x55b98bfef9d0-WriteStmt" + }, + { + "id": "0x55b98bfef9d0-WriteStmt", + "iounit": "0x55b98bfef9d0-IoUnit", + "format": "0x55b98bfefa00-Format", + "controls": [], + "items": [ + "0x55b98bfef8f0-OutputItem" + ] + }, + { + "id": "0x55b98bfef9d0-IoUnit", + "variantKey": "Expr", + "Expr": "0x55b98bfef800-Expr" + }, + { + "id": "0x55b98bfef800-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55b98bfef820-LiteralConstant" + }, + { + "id": "0x55b98bfef820-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55b98bfef820-IntLiteralConstant" + }, + { + "id": "0x55b98bfef820-IntLiteralConstant", + "CharBlock": "6" + }, + { + "id": "0x55b98bfefa00-Format", + "variantKey": "Star", + "Star": "0x55b98bfefa00-Star" + }, + { + "id": "0x55b98bfefa00-Star" + }, + { + "id": "0x55b98bfef8f0-OutputItem", + "variantKey": "Expr", + "Expr": "0x55b98bfef8f0-Expr" + }, + { + "id": "0x55b98bfef8f0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55b98bfef910-LiteralConstant" + }, + { + "id": "0x55b98bfef910-LiteralConstant", + "variantKey": "CharLiteralConstant", + "CharLiteralConstant": "0x55b98bfef910-CharLiteralConstant" + }, + { + "id": "0x55b98bfef910-CharLiteralConstant", + "string": "OK" + }, + { + "id": "0x55b98bfebb80-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55b98bfebb80-ExecutableConstruct" + }, + { + "id": "0x55b98bfebb80-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55b98bfebb80-Statement" + }, + { + "id": "0x55b98bfebb80-Statement", + "statement": "0x55b98bfebb90-ActionStmt", + "label": "20", + "source": "20continue" + }, + { + "id": "0x55b98bfebb90-ActionStmt", + "variantKey": "ContinueStmt", + "ContinueStmt": "0x55b98bfebb90-ContinueStmt" + }, + { + "id": "0x55b98bfebb90-ContinueStmt" + }, + { + "id": "0x55b98bfec0d0-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55b98bfec0d0-ExecutableConstruct" + }, + { + "id": "0x55b98bfec0d0-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55b98bfec0d0-Statement" + }, + { + "id": "0x55b98bfec0d0-Statement", + "statement": "0x55b98bfec0e0-ActionStmt", + "source": "stop" + }, + { + "id": "0x55b98bfec0e0-ActionStmt", + "variantKey": "StopStmt", + "StopStmt": "0x55b98bfefb80-StopStmt" + }, + { + "id": "0x55b98bfefb80-StopStmt", + "kind": "0x55b98bfefc68-Kind = Stop" + }, + { + "id": "0x55b98bfefc68-Kind = Stop", + "disambiguation": "Fortran::parser::StopStmt::Kind", + "value": "Stop" + }, + { + "id": "0x55b98bffcc70-Statement", + "statement": "0x55b98bffcc80-EndProgramStmt", + "source": "end" + }, + { + "id": "0x55b98bffcc80-EndProgramStmt" + } + ], + "comments": [], + "enums": { + "Fortran::common::CUDADataAttr": [ + "Constant", + "Device", + "Managed", + "Pinned", + "Shared", + "Texture", + "Unified" + ], + "Fortran::common::CUDASubprogramAttrs": [ + "Host", + "Device", + "HostDevice", + "Global", + "Grid_Global" + ], + "Fortran::common::ImportKind": [ + "Default", + "Only", + "None", + "All" + ], + "Fortran::common::OmpDependenceKind": [ + "In", + "Out", + "Inout", + "Inoutset", + "Mutexinoutset", + "Depobj" + ], + "Fortran::common::OmpMemoryOrderType": [ + "Acq_Rel", + "Acquire", + "Relaxed", + "Release", + "Seq_Cst" + ], + "Fortran::common::OpenACCDeviceType": [ + "Star", + "Default", + "Nvidia", + "Radeon", + "Host", + "Multicore", + "None" + ], + "Fortran::parser::AccDataModifier::Modifier": [ + "ReadOnly", + "Zero" + ], + "Fortran::parser::AccessSpec::Kind": [ + "Public", + "Private" + ], + "Fortran::parser::BindEntity::Kind": [ + "Object", + "Common" + ], + "Fortran::parser::CompilerDirective::VectorLength::Kind": [ + "Auto", + "Fixed", + "Scalable" + ], + "Fortran::parser::ConnectSpec::CharExpr::Kind": [ + "Access", + "Action", + "Asynchronous", + "Blank", + "Decimal", + "Delim", + "Encoding", + "Form", + "Pad", + "Position", + "Round", + "Sign", + "Carriagecontrol", + "Convert", + "Dispose" + ], + "Fortran::parser::DefinedOperator::IntrinsicOperator": [ + "Power", + "Multiply", + "Divide", + "Add", + "Subtract", + "Concat", + "LT", + "LE", + "EQ", + "NE", + "GE", + "GT", + "NOT", + "AND", + "OR", + "EQV", + "NEQV" + ], + "Fortran::parser::ImplicitStmt::ImplicitNoneNameSpec": [ + "External", + "Type" + ], + "Fortran::parser::InquireSpec::CharVar::Kind": [ + "Access", + "Action", + "Asynchronous", + "Blank", + "Decimal", + "Delim", + "Direct", + "Encoding", + "Form", + "Formatted", + "Iomsg", + "Name", + "Pad", + "Position", + "Read", + "Readwrite", + "Round", + "Sequential", + "Sign", + "Stream", + "Status", + "Unformatted", + "Write", + "Carriagecontrol", + "Convert", + "Dispose" + ], + "Fortran::parser::InquireSpec::IntVar::Kind": [ + "Iostat", + "Nextrec", + "Number", + "Pos", + "Recl", + "Size" + ], + "Fortran::parser::InquireSpec::LogVar::Kind": [ + "Exist", + "Named", + "Opened", + "Pending" + ], + "Fortran::parser::IntentSpec::Intent": [ + "In", + "Out", + "InOut" + ], + "Fortran::parser::IoControlSpec::CharExpr::Kind": [ + "Advance", + "Blank", + "Decimal", + "Delim", + "Pad", + "Round", + "Sign" + ], + "Fortran::parser::ReductionOperator::Operator": [ + "Plus", + "Multiply", + "Max", + "Min", + "Iand", + "Ior", + "Ieor", + "And", + "Or", + "Eqv", + "Neqv" + ], + "Fortran::parser::OmpAccessGroup::Value": [ + "Cgroup" + ], + "Fortran::parser::OmpAdjustArgsClause::OmpAdjustOp::Value": [ + "Nothing", + "Need_Device_Ptr" + ], + "Fortran::parser::OmpAlwaysModifier::Value": [ + "Always" + ], + "Fortran::parser::OmpAtClause::ActionTime": [ + "Compilation", + "Execution" + ], + "Fortran::parser::OmpAttachModifier::Value": [ + "Always", + "Never", + "Auto" + ], + "Fortran::parser::OmpAutomapModifier::Value": [ + "Automap" + ], + "Fortran::parser::OmpBindClause::Binding": [ + "Parallel", + "Teams", + "Thread" + ], + "Fortran::parser::OmpChunkModifier::Value": [ + "Simd" + ], + "Fortran::parser::OmpCloseModifier::Value": [ + "Close" + ], + "Fortran::parser::OmpDefaultClause::DataSharingAttribute": [ + "Private", + "Firstprivate", + "Shared", + "None" + ], + "Fortran::parser::OmpDefaultmapClause::ImplicitBehavior": [ + "Alloc", + "To", + "From", + "Tofrom", + "Firstprivate", + "None", + "Default", + "Present" + ], + "Fortran::parser::OmpDeleteModifier::Value": [ + "Delete" + ], + "Fortran::parser::OmpDependenceType::Value": [ + "Sink", + "Source" + ], + "Fortran::parser::OmpDeviceModifier::Value": [ + "Ancestor", + "Device_Num" + ], + "Fortran::parser::OmpDeviceTypeClause::DeviceTypeDescription": [ + "Any", + "Host", + "Nohost" + ], + "Fortran::parser::OmpDirectiveSpecification::Flag": [ + "DeprecatedSyntax", + "CrossesLabelDo" + ], + "Fortran::parser::OmpExpectation::Value": [ + "Present" + ], + "Fortran::parser::OmpInteropType::Value": [ + "Target", + "Targetsync" + ], + "Fortran::parser::OmpLastprivateModifier::Value": [ + "Conditional" + ], + "Fortran::parser::OmpLinearModifier::Value": [ + "Ref", + "Uval", + "Val" + ], + "Fortran::parser::OmpMapType::Value": [ + "Alloc", + "Delete", + "From", + "Release", + "Storage", + "To", + "Tofrom" + ], + "Fortran::parser::OmpMapTypeModifier::Value": [ + "Always", + "Close", + "Present", + "Ompx_Hold" + ], + "Fortran::parser::OmpObject::Invalid::Kind": [ + "BlankCommonBlock" + ], + "Fortran::parser::OmpOrderClause::Ordering": [ + "Concurrent" + ], + "Fortran::parser::OmpOrderingModifier::Value": [ + "Monotonic", + "Nonmonotonic", + "Simd" + ], + "Fortran::parser::OmpOrderModifier::Value": [ + "Reproducible", + "Unconstrained" + ], + "Fortran::parser::OmpPrescriptiveness::Value": [ + "Strict" + ], + "Fortran::parser::OmpPresentModifier::Value": [ + "Present" + ], + "Fortran::parser::OmpProcBindClause::AffinityPolicy": [ + "Close", + "Master", + "Spread", + "Primary" + ], + "Fortran::parser::OmpReductionModifier::Value": [ + "Default", + "Inscan", + "Task" + ], + "Fortran::parser::OmpRefModifier::Value": [ + "Ref_Ptee", + "Ref_Ptr", + "Ref_Ptr_Ptee" + ], + "Fortran::parser::OmpScheduleClause::Kind": [ + "Static", + "Dynamic", + "Guided", + "Auto", + "Runtime" + ], + "Fortran::parser::OmpSelfModifier::Value": [ + "Self" + ], + "Fortran::parser::OmpSeverityClause::SevLevel": [ + "Fatal", + "Warning" + ], + "Fortran::parser::OmpThreadsetClause::ThreadsetPolicy": [ + "Omp_Pool", + "Omp_Team" + ], + "Fortran::parser::OmpTraitSelectorName::Value": [ + "Arch", + "Atomic_Default_Mem_Order", + "Condition", + "Device_Num", + "Extension", + "Isa", + "Kind", + "Requires", + "Simd", + "Uid", + "Vendor" + ], + "Fortran::parser::OmpTraitSetSelectorName::Value": [ + "Construct", + "Device", + "Implementation", + "Target_Device", + "User" + ], + "Fortran::parser::OmpVariableCategory::Value": [ + "Aggregate", + "All", + "Allocatable", + "Pointer", + "Scalar" + ], + "Fortran::parser::OmpxHoldModifier::Value": [ + "Ompx_Hold" + ], + "Fortran::parser::ProcedureStmt::Kind": [ + "ModuleProcedure", + "Procedure" + ], + "Fortran::parser::SavedEntity::Kind": [ + "Entity", + "Common" + ], + "Fortran::parser::StopStmt::Kind": [ + "Stop", + "ErrorStop" + ], + "Fortran::parser::UseStmt::ModuleNature": [ + "Intrinsic", + "Non_Intrinsic" + ] + } +} diff --git a/FortranParser/resources-test/fortran/parser/fujitsu/0001/0001_0007.expected.f b/FortranParser/resources-test/fortran/parser/fujitsu/0001/0001_0007.expected.f new file mode 100644 index 00000000..39682a43 --- /dev/null +++ b/FortranParser/resources-test/fortran/parser/fujitsu/0001/0001_0007.expected.f @@ -0,0 +1,50 @@ + INTEGERa(1000),b(1000),c(1000),code + DATAa/1000*0/,b/1000*0/,c/1000*0/ +C + code=0 + CALLsub1(a,b,c,1000,code) +C + IF(code==0)WRITE(6,*)"OK" +C + STOP + END +C + SUBROUTINEsub1(a,b,c,n,code) + INTEGERa(n),b(n),c(n),code +C + a(1:n)=b(1:n)+1 + b(1:n)=b(1:n)+1 + c(1:n)=c(1:n)+1 +C + DO10i=1,1000 + IF(a(i)/=1)THEN + WRITE(6,*)"NG" + WRITE(6,*)"ELEMENT NUMBER = A(",i,")" + code=1 + GOTO20 + ENDIF + 10 CONTINUE +C + 20 CONTINUE + DO30i=1,1000 + IF(b(i)/=1)THEN + WRITE(6,*)"NG" + WRITE(6,*)"ELEMENT NUMBER = B(",i,")" + code=1 + GOTO40 + ENDIF + 30 CONTINUE +C + 40 CONTINUE + DO50i=1,1000 + IF(c(i)/=1)THEN + WRITE(6,*)"NG" + WRITE(6,*)"ELEMENT NUMBER = C(",i,")" + code=1 + GOTO60 + ENDIF + 50 CONTINUE +C + 60 CONTINUE + RETURN + END \ No newline at end of file diff --git a/FortranParser/resources-test/fortran/parser/fujitsu/0001/0001_0007.f b/FortranParser/resources-test/fortran/parser/fujitsu/0001/0001_0007.f new file mode 100644 index 00000000..9fc2caf0 --- /dev/null +++ b/FortranParser/resources-test/fortran/parser/fujitsu/0001/0001_0007.f @@ -0,0 +1,50 @@ + INTEGER A(1000),B(1000),C(1000),CODE + DATA A/1000*0/,B/1000*0/,C/1000*0/ +C + CODE = 0 + CALL SUB1(A,B,C,1000,CODE) +C + IF(CODE.EQ.0) WRITE(6,*) 'OK' +C + STOP + END +C + SUBROUTINE SUB1(A,B,C,N,CODE) + INTEGER A(N),B(N),C(N),CODE +C + A(1:N) = B(1:N) + 1 + B(1:N) = B(1:N) + 1 + C(1:N) = C(1:N) + 1 +C + DO 10 I=1,1000 + IF(A(I).NE.1) THEN + WRITE(6,*) 'NG' + WRITE(6,*) 'ELEMENT NUMBER = A(',I,')' + CODE = 1 + GO TO 20 + ENDIF + 10 CONTINUE +C + 20 CONTINUE + DO 30 I=1,1000 + IF(B(I).NE.1) THEN + WRITE(6,*) 'NG' + WRITE(6,*) 'ELEMENT NUMBER = B(',I,')' + CODE = 1 + GO TO 40 + ENDIF + 30 CONTINUE +C + 40 CONTINUE + DO 50 I=1,1000 + IF(C(I).NE.1) THEN + WRITE(6,*) 'NG' + WRITE(6,*) 'ELEMENT NUMBER = C(',I,')' + CODE = 1 + GO TO 60 + ENDIF + 50 CONTINUE +C + 60 CONTINUE + RETURN + END diff --git a/FortranParser/resources-test/fortran/parser/fujitsu/0001/0001_0007.json b/FortranParser/resources-test/fortran/parser/fujitsu/0001/0001_0007.json new file mode 100644 index 00000000..4e4535be --- /dev/null +++ b/FortranParser/resources-test/fortran/parser/fujitsu/0001/0001_0007.json @@ -0,0 +1,3725 @@ +{ + "fileExtension": "f", + "nodes": [ + { + "id": "0x55e99eca5f00-Program", + "ProgramUnit": [ + "0x55e99ece20a0-ProgramUnit", + "0x55e99ece1f10-ProgramUnit" + ] + }, + { + "id": "0x55e99ece20a0-ProgramUnit", + "variantKey": "MainProgram", + "MainProgram": "0x55e99ece2cd0-MainProgram" + }, + { + "id": "0x55e99ece2cd0-MainProgram", + "SpecificationPart": "0x55e99ece2d70-SpecificationPart", + "ExecutionPart": "0x55e99ece2d58-ExecutionPart", + "Statement": "0x55e99ece2cd0-Statement" + }, + { + "id": "0x55e99ece2d70-SpecificationPart", + "ImplicitPart": "0x55e99ece2d88-ImplicitPart", + "DeclarationConstruct": [ + "0x55e99ecd2010-DeclarationConstruct", + "0x55e99ecd3aa0-DeclarationConstruct" + ] + }, + { + "id": "0x55e99ece2d88-ImplicitPart" + }, + { + "id": "0x55e99ecd2010-DeclarationConstruct", + "variantKey": "SpecificationConstruct", + "SpecificationConstruct": "0x55e99ecd2010-SpecificationConstruct" + }, + { + "id": "0x55e99ecd2010-SpecificationConstruct", + "variantKey": "Statement", + "Statement": "0x55e99ecd2010-Statement" + }, + { + "id": "0x55e99ecd2010-Statement", + "statement": "0x55e99ece2b40-TypeDeclarationStmt", + "source": "integera(1000),b(1000),c(1000),code" + }, + { + "id": "0x55e99ece2b40-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x55e99ece2b70-DeclarationTypeSpec", + "EntityDecl": [ + "0x55e99ecd1e40-EntityDecl", + "0x55e99ecd2620-EntityDecl", + "0x55e99ece27b0-EntityDecl", + "0x55e99ecd1d50-EntityDecl" + ] + }, + { + "id": "0x55e99ece2b70-DeclarationTypeSpec", + "variantKey": "IntrinsicTypeSpec", + "IntrinsicTypeSpec": "0x55e99ece2b70-IntrinsicTypeSpec" + }, + { + "id": "0x55e99ece2b70-IntrinsicTypeSpec", + "variantKey": "IntegerTypeSpec", + "IntegerTypeSpec": "0x55e99ece2b70-IntegerTypeSpec" + }, + { + "id": "0x55e99ece2b70-IntegerTypeSpec" + }, + { + "id": "0x55e99ecd1e40-EntityDecl", + "Name": "0x55e99ecd1ef8-Name", + "ArraySpec": "0x55e99ecd1ec0-ArraySpec" + }, + { + "id": "0x55e99ecd1ef8-Name", + "source": "a" + }, + { + "id": "0x55e99ecd1ec0-ArraySpec", + "variantKey": "ExplicitShapeSpec", + "ExplicitShapeSpec": [ + "0x55e99ece4ba0-ExplicitShapeSpec" + ] + }, + { + "id": "0x55e99ece4ba0-ExplicitShapeSpec", + "upper_bound": "0x55e99ece4ba0-SpecificationExpr" + }, + { + "id": "0x55e99ece4ba0-SpecificationExpr", + "Expr": "0x55e99ec45790-Expr" + }, + { + "id": "0x55e99ec45790-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55e99ec457b0-LiteralConstant" + }, + { + "id": "0x55e99ec457b0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55e99ec457b0-IntLiteralConstant" + }, + { + "id": "0x55e99ec457b0-IntLiteralConstant", + "CharBlock": "1000" + }, + { + "id": "0x55e99ecd2620-EntityDecl", + "Name": "0x55e99ecd26d8-Name", + "ArraySpec": "0x55e99ecd26a0-ArraySpec" + }, + { + "id": "0x55e99ecd26d8-Name", + "source": "b" + }, + { + "id": "0x55e99ecd26a0-ArraySpec", + "variantKey": "ExplicitShapeSpec", + "ExplicitShapeSpec": [ + "0x55e99ece4bd0-ExplicitShapeSpec" + ] + }, + { + "id": "0x55e99ece4bd0-ExplicitShapeSpec", + "upper_bound": "0x55e99ece4bd0-SpecificationExpr" + }, + { + "id": "0x55e99ece4bd0-SpecificationExpr", + "Expr": "0x55e99ec5b1d0-Expr" + }, + { + "id": "0x55e99ec5b1d0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55e99ec5b1f0-LiteralConstant" + }, + { + "id": "0x55e99ec5b1f0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55e99ec5b1f0-IntLiteralConstant" + }, + { + "id": "0x55e99ec5b1f0-IntLiteralConstant", + "CharBlock": "1000" + }, + { + "id": "0x55e99ece27b0-EntityDecl", + "Name": "0x55e99ece2868-Name", + "ArraySpec": "0x55e99ece2830-ArraySpec" + }, + { + "id": "0x55e99ece2868-Name", + "source": "c" + }, + { + "id": "0x55e99ece2830-ArraySpec", + "variantKey": "ExplicitShapeSpec", + "ExplicitShapeSpec": [ + "0x55e99ece4c00-ExplicitShapeSpec" + ] + }, + { + "id": "0x55e99ece4c00-ExplicitShapeSpec", + "upper_bound": "0x55e99ece4c00-SpecificationExpr" + }, + { + "id": "0x55e99ece4c00-SpecificationExpr", + "Expr": "0x55e99ece26c0-Expr" + }, + { + "id": "0x55e99ece26c0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55e99ece26e0-LiteralConstant" + }, + { + "id": "0x55e99ece26e0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55e99ece26e0-IntLiteralConstant" + }, + { + "id": "0x55e99ece26e0-IntLiteralConstant", + "CharBlock": "1000" + }, + { + "id": "0x55e99ecd1d50-EntityDecl", + "Name": "0x55e99ecd1e08-Name" + }, + { + "id": "0x55e99ecd1e08-Name", + "source": "code" + }, + { + "id": "0x55e99ecd3aa0-DeclarationConstruct", + "variantKey": "Statement", + "Statement": "0x55e99ecd3aa0-Statement" + }, + { + "id": "0x55e99ecd3aa0-Statement", + "statement": "0x55e99ece4af0-DataStmt", + "source": "dataa/1000*0/,b/1000*0/,c/1000*0/" + }, + { + "id": "0x55e99ece4af0-DataStmt", + "DataStmtSet": [ + "0x55e99ece2ac0-DataStmtSet", + "0x55e99ecdc1e0-DataStmtSet", + "0x55e99ece9b30-DataStmtSet" + ] + }, + { + "id": "0x55e99ece2ac0-DataStmtSet", + "DataStmtObject": [ + "0x55e99ecd30b0-DataStmtObject" + ], + "DataStmtValue": [ + "0x55e99ecd2170-DataStmtValue" + ] + }, + { + "id": "0x55e99ecd30b0-DataStmtObject", + "variantKey": "Variable", + "Variable": "0x55e99ece4c40-Variable" + }, + { + "id": "0x55e99ece4c40-Variable", + "variantKey": "Designator", + "Designator": "0x55e99eca44d0-Designator" + }, + { + "id": "0x55e99eca44d0-Designator", + "variantKey": "DataRef", + "DataRef": "0x55e99eca44e0-DataRef" + }, + { + "id": "0x55e99eca44e0-DataRef", + "variantKey": "Name", + "Name": "0x55e99eca44e0-Name" + }, + { + "id": "0x55e99eca44e0-Name", + "source": "a" + }, + { + "id": "0x55e99ecd2170-DataStmtValue", + "DataStmtRepeat": "0x55e99ecd2248-DataStmtRepeat", + "DataStmtConstant": "0x55e99ecd2178-DataStmtConstant" + }, + { + "id": "0x55e99ecd2248-DataStmtRepeat", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55e99ecd2248-IntLiteralConstant" + }, + { + "id": "0x55e99ecd2248-IntLiteralConstant", + "CharBlock": "1000" + }, + { + "id": "0x55e99ecd2178-DataStmtConstant", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55e99ecd2198-LiteralConstant" + }, + { + "id": "0x55e99ecd2198-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55e99ecd2198-IntLiteralConstant" + }, + { + "id": "0x55e99ecd2198-IntLiteralConstant", + "CharBlock": "0" + }, + { + "id": "0x55e99ecdc1e0-DataStmtSet", + "DataStmtObject": [ + "0x55e99ecd2840-DataStmtObject" + ], + "DataStmtValue": [ + "0x55e99ecd2960-DataStmtValue" + ] + }, + { + "id": "0x55e99ecd2840-DataStmtObject", + "variantKey": "Variable", + "Variable": "0x55e99ece4d50-Variable" + }, + { + "id": "0x55e99ece4d50-Variable", + "variantKey": "Designator", + "Designator": "0x55e99ecd2300-Designator" + }, + { + "id": "0x55e99ecd2300-Designator", + "variantKey": "DataRef", + "DataRef": "0x55e99ecd2310-DataRef" + }, + { + "id": "0x55e99ecd2310-DataRef", + "variantKey": "Name", + "Name": "0x55e99ecd2310-Name" + }, + { + "id": "0x55e99ecd2310-Name", + "source": "b" + }, + { + "id": "0x55e99ecd2960-DataStmtValue", + "DataStmtRepeat": "0x55e99ecd2a38-DataStmtRepeat", + "DataStmtConstant": "0x55e99ecd2968-DataStmtConstant" + }, + { + "id": "0x55e99ecd2a38-DataStmtRepeat", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55e99ecd2a38-IntLiteralConstant" + }, + { + "id": "0x55e99ecd2a38-IntLiteralConstant", + "CharBlock": "1000" + }, + { + "id": "0x55e99ecd2968-DataStmtConstant", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55e99ecd2988-LiteralConstant" + }, + { + "id": "0x55e99ecd2988-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55e99ecd2988-IntLiteralConstant" + }, + { + "id": "0x55e99ecd2988-IntLiteralConstant", + "CharBlock": "0" + }, + { + "id": "0x55e99ece9b30-DataStmtSet", + "DataStmtObject": [ + "0x55e99ecd28d0-DataStmtObject" + ], + "DataStmtValue": [ + "0x55e99ecd35a0-DataStmtValue" + ] + }, + { + "id": "0x55e99ecd28d0-DataStmtObject", + "variantKey": "Variable", + "Variable": "0x55e99ece4d80-Variable" + }, + { + "id": "0x55e99ece4d80-Variable", + "variantKey": "Designator", + "Designator": "0x55e99ecd2d10-Designator" + }, + { + "id": "0x55e99ecd2d10-Designator", + "variantKey": "DataRef", + "DataRef": "0x55e99ecd2d20-DataRef" + }, + { + "id": "0x55e99ecd2d20-DataRef", + "variantKey": "Name", + "Name": "0x55e99ecd2d20-Name" + }, + { + "id": "0x55e99ecd2d20-Name", + "source": "c" + }, + { + "id": "0x55e99ecd35a0-DataStmtValue", + "DataStmtRepeat": "0x55e99ecd3678-DataStmtRepeat", + "DataStmtConstant": "0x55e99ecd35a8-DataStmtConstant" + }, + { + "id": "0x55e99ecd3678-DataStmtRepeat", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55e99ecd3678-IntLiteralConstant" + }, + { + "id": "0x55e99ecd3678-IntLiteralConstant", + "CharBlock": "1000" + }, + { + "id": "0x55e99ecd35a8-DataStmtConstant", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55e99ecd35c8-LiteralConstant" + }, + { + "id": "0x55e99ecd35c8-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55e99ecd35c8-IntLiteralConstant" + }, + { + "id": "0x55e99ecd35c8-IntLiteralConstant", + "CharBlock": "0" + }, + { + "id": "0x55e99ece2d58-ExecutionPart", + "ExecutionPartConstruct": [ + "0x55e99ecd2df0-ExecutionPartConstruct", + "0x55e99ecd54a0-ExecutionPartConstruct", + "0x55e99ecd4150-ExecutionPartConstruct", + "0x55e99ecd49d0-ExecutionPartConstruct" + ] + }, + { + "id": "0x55e99ece2d58-ExecutionPartConstruct" + }, + { + "id": "0x55e99ecd2df0-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55e99ecd2df0-ExecutableConstruct" + }, + { + "id": "0x55e99ecd2df0-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55e99ecd2df0-Statement" + }, + { + "id": "0x55e99ecd2df0-Statement", + "statement": "0x55e99ecd2e00-ActionStmt", + "source": "code=0" + }, + { + "id": "0x55e99ecd2e00-ActionStmt", + "variantKey": "AssignmentStmt", + "AssignmentStmt": "0x55e99ecb3cf0-AssignmentStmt" + }, + { + "id": "0x55e99ecb3cf0-AssignmentStmt", + "Variable": "0x55e99ecb3dd0-Variable", + "Expr": "0x55e99ecb3d00-Expr" + }, + { + "id": "0x55e99ecb3dd0-Variable", + "variantKey": "Designator", + "Designator": "0x55e99ecb3100-Designator" + }, + { + "id": "0x55e99ecb3100-Designator", + "variantKey": "DataRef", + "DataRef": "0x55e99ecb3110-DataRef" + }, + { + "id": "0x55e99ecb3110-DataRef", + "variantKey": "Name", + "Name": "0x55e99ecb3110-Name" + }, + { + "id": "0x55e99ecb3110-Name", + "source": "code" + }, + { + "id": "0x55e99ecb3d00-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55e99ecb3d20-LiteralConstant" + }, + { + "id": "0x55e99ecb3d20-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55e99ecb3d20-IntLiteralConstant" + }, + { + "id": "0x55e99ecb3d20-IntLiteralConstant", + "CharBlock": "0" + }, + { + "id": "0x55e99ecd54a0-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55e99ecd54a0-ExecutableConstruct" + }, + { + "id": "0x55e99ecd54a0-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55e99ecd54a0-Statement" + }, + { + "id": "0x55e99ecd54a0-Statement", + "statement": "0x55e99ecd54b0-ActionStmt", + "source": "callsub1(a,b,c,1000,code)" + }, + { + "id": "0x55e99ecd54b0-ActionStmt", + "variantKey": "CallStmt", + "CallStmt": "0x55e99ecdce70-CallStmt" + }, + { + "id": "0x55e99ecdce70-CallStmt", + "call": "0x55e99ecdce70-Call" + }, + { + "id": "0x55e99ecdce70-Call", + "ProcedureDesignator": "0x55e99ecdce88-ProcedureDesignator", + "ActualArgSpec": [ + "0x55e99ecd4f50-ActualArgSpec", + "0x55e99ecd4e40-ActualArgSpec", + "0x55e99ecd4d30-ActualArgSpec", + "0x55e99ecd4c20-ActualArgSpec", + "0x55e99ecd4b10-ActualArgSpec" + ] + }, + { + "id": "0x55e99ecdce88-ProcedureDesignator", + "variantKey": "Name", + "Name": "0x55e99ecdce88-Name" + }, + { + "id": "0x55e99ecdce88-Name", + "source": "sub1" + }, + { + "id": "0x55e99ecd4f50-ActualArgSpec", + "ActualArg": "0x55e99ecd4f50-ActualArg" + }, + { + "id": "0x55e99ecd4f50-ActualArg", + "variantKey": "Expr", + "Expr": "0x55e99ecd48e0-Expr" + }, + { + "id": "0x55e99ecd48e0-Expr", + "variantKey": "Designator", + "Designator": "0x55e99ecd38f0-Designator" + }, + { + "id": "0x55e99ecd38f0-Designator", + "variantKey": "DataRef", + "DataRef": "0x55e99ecd3900-DataRef" + }, + { + "id": "0x55e99ecd3900-DataRef", + "variantKey": "Name", + "Name": "0x55e99ecd3900-Name" + }, + { + "id": "0x55e99ecd3900-Name", + "source": "a" + }, + { + "id": "0x55e99ecd4e40-ActualArgSpec", + "ActualArg": "0x55e99ecd4e40-ActualArg" + }, + { + "id": "0x55e99ecd4e40-ActualArg", + "variantKey": "Expr", + "Expr": "0x55e99ecd3c90-Expr" + }, + { + "id": "0x55e99ecd3c90-Expr", + "variantKey": "Designator", + "Designator": "0x55e99ecb2d90-Designator" + }, + { + "id": "0x55e99ecb2d90-Designator", + "variantKey": "DataRef", + "DataRef": "0x55e99ecb2da0-DataRef" + }, + { + "id": "0x55e99ecb2da0-DataRef", + "variantKey": "Name", + "Name": "0x55e99ecb2da0-Name" + }, + { + "id": "0x55e99ecb2da0-Name", + "source": "b" + }, + { + "id": "0x55e99ecd4d30-ActualArgSpec", + "ActualArg": "0x55e99ecd4d30-ActualArg" + }, + { + "id": "0x55e99ecd4d30-ActualArg", + "variantKey": "Expr", + "Expr": "0x55e99ecd4330-Expr" + }, + { + "id": "0x55e99ecd4330-Expr", + "variantKey": "Designator", + "Designator": "0x55e99ecd2b60-Designator" + }, + { + "id": "0x55e99ecd2b60-Designator", + "variantKey": "DataRef", + "DataRef": "0x55e99ecd2b70-DataRef" + }, + { + "id": "0x55e99ecd2b70-DataRef", + "variantKey": "Name", + "Name": "0x55e99ecd2b70-Name" + }, + { + "id": "0x55e99ecd2b70-Name", + "source": "c" + }, + { + "id": "0x55e99ecd4c20-ActualArgSpec", + "ActualArg": "0x55e99ecd4c20-ActualArg" + }, + { + "id": "0x55e99ecd4c20-ActualArg", + "variantKey": "Expr", + "Expr": "0x55e99ecd3130-Expr" + }, + { + "id": "0x55e99ecd3130-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55e99ecd3150-LiteralConstant" + }, + { + "id": "0x55e99ecd3150-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55e99ecd3150-IntLiteralConstant" + }, + { + "id": "0x55e99ecd3150-IntLiteralConstant", + "CharBlock": "1000" + }, + { + "id": "0x55e99ecd4b10-ActualArgSpec", + "ActualArg": "0x55e99ecd4b10-ActualArg" + }, + { + "id": "0x55e99ecd4b10-ActualArg", + "variantKey": "Expr", + "Expr": "0x55e99ecd46a0-Expr" + }, + { + "id": "0x55e99ecd46a0-Expr", + "variantKey": "Designator", + "Designator": "0x55e99ecd52f0-Designator" + }, + { + "id": "0x55e99ecd52f0-Designator", + "variantKey": "DataRef", + "DataRef": "0x55e99ecd5300-DataRef" + }, + { + "id": "0x55e99ecd5300-DataRef", + "variantKey": "Name", + "Name": "0x55e99ecd5300-Name" + }, + { + "id": "0x55e99ecd5300-Name", + "source": "code" + }, + { + "id": "0x55e99ecd4150-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55e99ecd4150-ExecutableConstruct" + }, + { + "id": "0x55e99ecd4150-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55e99ecd4150-Statement" + }, + { + "id": "0x55e99ecd4150-Statement", + "statement": "0x55e99ecd4160-ActionStmt", + "source": "if(code.eq.0)write(6,*)'OK'" + }, + { + "id": "0x55e99ecd4160-ActionStmt", + "variantKey": "IfStmt", + "IfStmt": "0x55e99ece4dd0-IfStmt" + }, + { + "id": "0x55e99ece4dd0-IfStmt", + "Expr": "0x55e99ecd55d0-Expr", + "UnlabeledStatement": "0x55e99ece4dd0-UnlabeledStatement" + }, + { + "id": "0x55e99ecd55d0-Expr", + "variantKey": "EQ", + "EQ": "0x55e99ecd55f0-EQ" + }, + { + "id": "0x55e99ecd55f0-EQ", + "left": "0x55e99ecd54f0-Expr", + "right": "0x55e99ecd56b0-Expr", + "op": "EQ" + }, + { + "id": "0x55e99ecd54f0-Expr", + "variantKey": "Designator", + "Designator": "0x55e99ecd4410-Designator" + }, + { + "id": "0x55e99ecd4410-Designator", + "variantKey": "DataRef", + "DataRef": "0x55e99ecd4420-DataRef" + }, + { + "id": "0x55e99ecd4420-DataRef", + "variantKey": "Name", + "Name": "0x55e99ecd4420-Name" + }, + { + "id": "0x55e99ecd4420-Name", + "source": "code" + }, + { + "id": "0x55e99ecd56b0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55e99ecd56d0-LiteralConstant" + }, + { + "id": "0x55e99ecd56d0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55e99ecd56d0-IntLiteralConstant" + }, + { + "id": "0x55e99ecd56d0-IntLiteralConstant", + "CharBlock": "0" + }, + { + "id": "0x55e99ece4dd0-UnlabeledStatement", + "statement": "0x55e99ece4de0-ActionStmt", + "source": "write(6,*)'OK'" + }, + { + "id": "0x55e99ece4de0-ActionStmt", + "variantKey": "WriteStmt", + "WriteStmt": "0x55e99ecd6cd0-WriteStmt" + }, + { + "id": "0x55e99ecd6cd0-WriteStmt", + "iounit": "0x55e99ecd6cd0-IoUnit", + "format": "0x55e99ecd6d00-Format", + "controls": [], + "items": [ + "0x55e99ecd6b80-OutputItem" + ] + }, + { + "id": "0x55e99ecd6cd0-IoUnit", + "variantKey": "Expr", + "Expr": "0x55e99ecd58a0-Expr" + }, + { + "id": "0x55e99ecd58a0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55e99ecd58c0-LiteralConstant" + }, + { + "id": "0x55e99ecd58c0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55e99ecd58c0-IntLiteralConstant" + }, + { + "id": "0x55e99ecd58c0-IntLiteralConstant", + "CharBlock": "6" + }, + { + "id": "0x55e99ecd6d00-Format", + "variantKey": "Star", + "Star": "0x55e99ecd6d00-Star" + }, + { + "id": "0x55e99ecd6d00-Star" + }, + { + "id": "0x55e99ecd6b80-OutputItem", + "variantKey": "Expr", + "Expr": "0x55e99ecd6b80-Expr" + }, + { + "id": "0x55e99ecd6b80-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55e99ecd6ba0-LiteralConstant" + }, + { + "id": "0x55e99ecd6ba0-LiteralConstant", + "variantKey": "CharLiteralConstant", + "CharLiteralConstant": "0x55e99ecd6ba0-CharLiteralConstant" + }, + { + "id": "0x55e99ecd6ba0-CharLiteralConstant", + "string": "OK" + }, + { + "id": "0x55e99ecd49d0-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55e99ecd49d0-ExecutableConstruct" + }, + { + "id": "0x55e99ecd49d0-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55e99ecd49d0-Statement" + }, + { + "id": "0x55e99ecd49d0-Statement", + "statement": "0x55e99ecd49e0-ActionStmt", + "source": "stop" + }, + { + "id": "0x55e99ecd49e0-ActionStmt", + "variantKey": "StopStmt", + "StopStmt": "0x55e99ecd6f00-StopStmt" + }, + { + "id": "0x55e99ecd6f00-StopStmt", + "kind": "0x55e99ecd6fe8-Kind = Stop" + }, + { + "id": "0x55e99ecd6fe8-Kind = Stop", + "disambiguation": "Fortran::parser::StopStmt::Kind", + "value": "Stop" + }, + { + "id": "0x55e99ece2cd0-Statement", + "statement": "0x55e99ece2ce0-EndProgramStmt", + "source": "end" + }, + { + "id": "0x55e99ece2ce0-EndProgramStmt" + }, + { + "id": "0x55e99ece1f10-ProgramUnit", + "variantKey": "SubroutineSubprogram", + "SubroutineSubprogram": "0x55e99eceddf0-SubroutineSubprogram" + }, + { + "id": "0x55e99eceddf0-SubroutineSubprogram", + "Statement": "0x55e99ecedf38-Statement", + "SpecificationPart": "0x55e99ecede90-SpecificationPart", + "ExecutionPart": "0x55e99ecede78-ExecutionPart", + "Statement": "0x55e99eceddf0-Statement" + }, + { + "id": "0x55e99ecedf38-Statement", + "statement": "0x55e99ecedf48-SubroutineStmt", + "source": "subroutinesub1(a,b,c,n,code)" + }, + { + "id": "0x55e99ecedf48-SubroutineStmt", + "Name": "0x55e99ecedf80-Name", + "DummyArg": [ + "0x55e99ece4c80-DummyArg", + "0x55e99ece2310-DummyArg", + "0x55e99ece3f90-DummyArg", + "0x55e99ece4050-DummyArg", + "0x55e99ece4450-DummyArg" + ] + }, + { + "id": "0x55e99ecedf80-Name", + "source": "sub1" + }, + { + "id": "0x55e99ece4c80-DummyArg", + "variantKey": "Name", + "Name": "0x55e99ece4c80-Name" + }, + { + "id": "0x55e99ece4c80-Name", + "source": "a" + }, + { + "id": "0x55e99ece2310-DummyArg", + "variantKey": "Name", + "Name": "0x55e99ece2310-Name" + }, + { + "id": "0x55e99ece2310-Name", + "source": "b" + }, + { + "id": "0x55e99ece3f90-DummyArg", + "variantKey": "Name", + "Name": "0x55e99ece3f90-Name" + }, + { + "id": "0x55e99ece3f90-Name", + "source": "c" + }, + { + "id": "0x55e99ece4050-DummyArg", + "variantKey": "Name", + "Name": "0x55e99ece4050-Name" + }, + { + "id": "0x55e99ece4050-Name", + "source": "n" + }, + { + "id": "0x55e99ece4450-DummyArg", + "variantKey": "Name", + "Name": "0x55e99ece4450-Name" + }, + { + "id": "0x55e99ece4450-Name", + "source": "code" + }, + { + "id": "0x55e99ecede90-SpecificationPart", + "ImplicitPart": "0x55e99ecedea8-ImplicitPart", + "DeclarationConstruct": [ + "0x55e99ecd98a0-DeclarationConstruct" + ] + }, + { + "id": "0x55e99ecedea8-ImplicitPart" + }, + { + "id": "0x55e99ecd98a0-DeclarationConstruct", + "variantKey": "SpecificationConstruct", + "SpecificationConstruct": "0x55e99ecd98a0-SpecificationConstruct" + }, + { + "id": "0x55e99ecd98a0-SpecificationConstruct", + "variantKey": "Statement", + "Statement": "0x55e99ecd98a0-Statement" + }, + { + "id": "0x55e99ecd98a0-Statement", + "statement": "0x55e99ecd7240-TypeDeclarationStmt", + "source": "integera(n),b(n),c(n),code" + }, + { + "id": "0x55e99ecd7240-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x55e99ecd7270-DeclarationTypeSpec", + "EntityDecl": [ + "0x55e99ecd97b0-EntityDecl", + "0x55e99ecd4790-EntityDecl", + "0x55e99ecd73e0-EntityDecl", + "0x55e99ecd74d0-EntityDecl" + ] + }, + { + "id": "0x55e99ecd7270-DeclarationTypeSpec", + "variantKey": "IntrinsicTypeSpec", + "IntrinsicTypeSpec": "0x55e99ecd7270-IntrinsicTypeSpec" + }, + { + "id": "0x55e99ecd7270-IntrinsicTypeSpec", + "variantKey": "IntegerTypeSpec", + "IntegerTypeSpec": "0x55e99ecd7270-IntegerTypeSpec" + }, + { + "id": "0x55e99ecd7270-IntegerTypeSpec" + }, + { + "id": "0x55e99ecd97b0-EntityDecl", + "Name": "0x55e99ecd9868-Name", + "ArraySpec": "0x55e99ecd9830-ArraySpec" + }, + { + "id": "0x55e99ecd9868-Name", + "source": "a" + }, + { + "id": "0x55e99ecd9830-ArraySpec", + "variantKey": "ExplicitShapeSpec", + "ExplicitShapeSpec": [ + "0x55e99ece16f0-ExplicitShapeSpec" + ] + }, + { + "id": "0x55e99ece16f0-ExplicitShapeSpec", + "upper_bound": "0x55e99ece16f0-SpecificationExpr" + }, + { + "id": "0x55e99ece16f0-SpecificationExpr", + "Expr": "0x55e99ecd7be0-Expr" + }, + { + "id": "0x55e99ecd7be0-Expr", + "variantKey": "Designator", + "Designator": "0x55e99ecd53c0-Designator" + }, + { + "id": "0x55e99ecd53c0-Designator", + "variantKey": "DataRef", + "DataRef": "0x55e99ecd53d0-DataRef" + }, + { + "id": "0x55e99ecd53d0-DataRef", + "variantKey": "Name", + "Name": "0x55e99ecd53d0-Name" + }, + { + "id": "0x55e99ecd53d0-Name", + "source": "n" + }, + { + "id": "0x55e99ecd4790-EntityDecl", + "Name": "0x55e99ecd4848-Name", + "ArraySpec": "0x55e99ecd4810-ArraySpec" + }, + { + "id": "0x55e99ecd4848-Name", + "source": "b" + }, + { + "id": "0x55e99ecd4810-ArraySpec", + "variantKey": "ExplicitShapeSpec", + "ExplicitShapeSpec": [ + "0x55e99ece18e0-ExplicitShapeSpec" + ] + }, + { + "id": "0x55e99ece18e0-ExplicitShapeSpec", + "upper_bound": "0x55e99ece18e0-SpecificationExpr" + }, + { + "id": "0x55e99ece18e0-SpecificationExpr", + "Expr": "0x55e99ec5b0b0-Expr" + }, + { + "id": "0x55e99ec5b0b0-Expr", + "variantKey": "Designator", + "Designator": "0x55e99ecd2a90-Designator" + }, + { + "id": "0x55e99ecd2a90-Designator", + "variantKey": "DataRef", + "DataRef": "0x55e99ecd2aa0-DataRef" + }, + { + "id": "0x55e99ecd2aa0-DataRef", + "variantKey": "Name", + "Name": "0x55e99ecd2aa0-Name" + }, + { + "id": "0x55e99ecd2aa0-Name", + "source": "n" + }, + { + "id": "0x55e99ecd73e0-EntityDecl", + "Name": "0x55e99ecd7498-Name", + "ArraySpec": "0x55e99ecd7460-ArraySpec" + }, + { + "id": "0x55e99ecd7498-Name", + "source": "c" + }, + { + "id": "0x55e99ecd7460-ArraySpec", + "variantKey": "ExplicitShapeSpec", + "ExplicitShapeSpec": [ + "0x55e99ece1990-ExplicitShapeSpec" + ] + }, + { + "id": "0x55e99ece1990-ExplicitShapeSpec", + "upper_bound": "0x55e99ece1990-SpecificationExpr" + }, + { + "id": "0x55e99ece1990-SpecificationExpr", + "Expr": "0x55e99ecd7090-Expr" + }, + { + "id": "0x55e99ecd7090-Expr", + "variantKey": "Designator", + "Designator": "0x55e99ecb3160-Designator" + }, + { + "id": "0x55e99ecb3160-Designator", + "variantKey": "DataRef", + "DataRef": "0x55e99ecb3170-DataRef" + }, + { + "id": "0x55e99ecb3170-DataRef", + "variantKey": "Name", + "Name": "0x55e99ecb3170-Name" + }, + { + "id": "0x55e99ecb3170-Name", + "source": "n" + }, + { + "id": "0x55e99ecd74d0-EntityDecl", + "Name": "0x55e99ecd7588-Name" + }, + { + "id": "0x55e99ecd7588-Name", + "source": "code" + }, + { + "id": "0x55e99ecede78-ExecutionPart", + "ExecutionPartConstruct": [ + "0x55e99ecda460-ExecutionPartConstruct", + "0x55e99ecdac90-ExecutionPartConstruct", + "0x55e99ecdb4c0-ExecutionPartConstruct", + "0x55e99ecdb180-ExecutionPartConstruct", + "0x55e99ecdb240-ExecutionPartConstruct", + "0x55e99ecd7fb0-ExecutionPartConstruct", + "0x55e99ecd9150-ExecutionPartConstruct", + "0x55e99ecd81d0-ExecutionPartConstruct", + "0x55e99ecd2fa0-ExecutionPartConstruct", + "0x55e99ecd3280-ExecutionPartConstruct" + ] + }, + { + "id": "0x55e99ecede78-ExecutionPartConstruct" + }, + { + "id": "0x55e99ecda460-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55e99ecda460-ExecutableConstruct" + }, + { + "id": "0x55e99ecda460-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55e99ecda460-Statement" + }, + { + "id": "0x55e99ecda460-Statement", + "statement": "0x55e99ecda470-ActionStmt", + "source": "a(1:n)=b(1:n)+1" + }, + { + "id": "0x55e99ecda470-ActionStmt", + "variantKey": "AssignmentStmt", + "AssignmentStmt": "0x55e99ecd5790-AssignmentStmt" + }, + { + "id": "0x55e99ecd5790-AssignmentStmt", + "Variable": "0x55e99ecd5870-Variable", + "Expr": "0x55e99ecd57a0-Expr" + }, + { + "id": "0x55e99ecd5870-Variable", + "variantKey": "Designator", + "Designator": "0x55e99ecd22a0-Designator" + }, + { + "id": "0x55e99ecd22a0-Designator", + "variantKey": "DataRef", + "DataRef": "0x55e99ecd22b0-DataRef" + }, + { + "id": "0x55e99ecd22b0-DataRef", + "variantKey": "ArrayElement", + "ArrayElement": "0x55e99ece4d10-ArrayElement" + }, + { + "id": "0x55e99ece4d10-ArrayElement", + "base": "0x55e99ece4d10-DataRef", + "subscripts": [ + "0x55e99ecdcc50-SectionSubscript" + ] + }, + { + "id": "0x55e99ece4d10-DataRef", + "variantKey": "Name", + "Name": "0x55e99ece4d10-Name" + }, + { + "id": "0x55e99ece4d10-Name", + "source": "a" + }, + { + "id": "0x55e99ecdcc50-SectionSubscript", + "variantKey": "SubscriptTriplet", + "SubscriptTriplet": "0x55e99ecdcc50-SubscriptTriplet" + }, + { + "id": "0x55e99ecdcc50-SubscriptTriplet", + "start": "0x55e99ecda230-Expr", + "end": "0x55e99ecda310-Expr" + }, + { + "id": "0x55e99ecda230-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55e99ecda250-LiteralConstant" + }, + { + "id": "0x55e99ecda250-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55e99ecda250-IntLiteralConstant" + }, + { + "id": "0x55e99ecda250-IntLiteralConstant", + "CharBlock": "1" + }, + { + "id": "0x55e99ecda310-Expr", + "variantKey": "Designator", + "Designator": "0x55e99ecd8d20-Designator" + }, + { + "id": "0x55e99ecd8d20-Designator", + "variantKey": "DataRef", + "DataRef": "0x55e99ecd8d30-DataRef" + }, + { + "id": "0x55e99ecd8d30-DataRef", + "variantKey": "Name", + "Name": "0x55e99ecd8d30-Name" + }, + { + "id": "0x55e99ecd8d30-Name", + "source": "n" + }, + { + "id": "0x55e99ecd57a0-Expr", + "variantKey": "Add", + "Add": "0x55e99ecd57c0-Add" + }, + { + "id": "0x55e99ecd57c0-Add", + "left": "0x55e99ecd98f0-Expr", + "right": "0x55e99ecd8a40-Expr", + "op": "ADD" + }, + { + "id": "0x55e99ecd98f0-Expr", + "variantKey": "Designator", + "Designator": "0x55e99ecd36d0-Designator" + }, + { + "id": "0x55e99ecd36d0-Designator", + "variantKey": "DataRef", + "DataRef": "0x55e99ecd36e0-DataRef" + }, + { + "id": "0x55e99ecd36e0-DataRef", + "variantKey": "ArrayElement", + "ArrayElement": "0x55e99ece4cd0-ArrayElement" + }, + { + "id": "0x55e99ece4cd0-ArrayElement", + "base": "0x55e99ece4cd0-DataRef", + "subscripts": [ + "0x55e99ece2a30-SectionSubscript" + ] + }, + { + "id": "0x55e99ece4cd0-DataRef", + "variantKey": "Name", + "Name": "0x55e99ece4cd0-Name" + }, + { + "id": "0x55e99ece4cd0-Name", + "source": "b" + }, + { + "id": "0x55e99ece2a30-SectionSubscript", + "variantKey": "SubscriptTriplet", + "SubscriptTriplet": "0x55e99ece2a30-SubscriptTriplet" + }, + { + "id": "0x55e99ece2a30-SubscriptTriplet", + "start": "0x55e99ecda030-Expr", + "end": "0x55e99ecd8b80-Expr" + }, + { + "id": "0x55e99ecda030-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55e99ecda050-LiteralConstant" + }, + { + "id": "0x55e99ecda050-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55e99ecda050-IntLiteralConstant" + }, + { + "id": "0x55e99ecda050-IntLiteralConstant", + "CharBlock": "1" + }, + { + "id": "0x55e99ecd8b80-Expr", + "variantKey": "Designator", + "Designator": "0x55e99ece2890-Designator" + }, + { + "id": "0x55e99ece2890-Designator", + "variantKey": "DataRef", + "DataRef": "0x55e99ece28a0-DataRef" + }, + { + "id": "0x55e99ece28a0-DataRef", + "variantKey": "Name", + "Name": "0x55e99ece28a0-Name" + }, + { + "id": "0x55e99ece28a0-Name", + "source": "n" + }, + { + "id": "0x55e99ecd8a40-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55e99ecd8a60-LiteralConstant" + }, + { + "id": "0x55e99ecd8a60-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55e99ecd8a60-IntLiteralConstant" + }, + { + "id": "0x55e99ecd8a60-IntLiteralConstant", + "CharBlock": "1" + }, + { + "id": "0x55e99ecdac90-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55e99ecdac90-ExecutableConstruct" + }, + { + "id": "0x55e99ecdac90-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55e99ecdac90-Statement" + }, + { + "id": "0x55e99ecdac90-Statement", + "statement": "0x55e99ecdaca0-ActionStmt", + "source": "b(1:n)=b(1:n)+1" + }, + { + "id": "0x55e99ecdaca0-ActionStmt", + "variantKey": "AssignmentStmt", + "AssignmentStmt": "0x55e99ecda670-AssignmentStmt" + }, + { + "id": "0x55e99ecda670-AssignmentStmt", + "Variable": "0x55e99ecda750-Variable", + "Expr": "0x55e99ecda680-Expr" + }, + { + "id": "0x55e99ecda750-Variable", + "variantKey": "Designator", + "Designator": "0x55e99ecd3f90-Designator" + }, + { + "id": "0x55e99ecd3f90-Designator", + "variantKey": "DataRef", + "DataRef": "0x55e99ecd3fa0-DataRef" + }, + { + "id": "0x55e99ecd3fa0-DataRef", + "variantKey": "ArrayElement", + "ArrayElement": "0x55e99ece2050-ArrayElement" + }, + { + "id": "0x55e99ece2050-ArrayElement", + "base": "0x55e99ece2050-DataRef", + "subscripts": [ + "0x55e99ecdcfd0-SectionSubscript" + ] + }, + { + "id": "0x55e99ece2050-DataRef", + "variantKey": "Name", + "Name": "0x55e99ece2050-Name" + }, + { + "id": "0x55e99ece2050-Name", + "source": "b" + }, + { + "id": "0x55e99ecdcfd0-SectionSubscript", + "variantKey": "SubscriptTriplet", + "SubscriptTriplet": "0x55e99ecdcfd0-SubscriptTriplet" + }, + { + "id": "0x55e99ecdcfd0-SubscriptTriplet", + "start": "0x55e99ecda4b0-Expr", + "end": "0x55e99ecda590-Expr" + }, + { + "id": "0x55e99ecda4b0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55e99ecda4d0-LiteralConstant" + }, + { + "id": "0x55e99ecda4d0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55e99ecda4d0-IntLiteralConstant" + }, + { + "id": "0x55e99ecda4d0-IntLiteralConstant", + "CharBlock": "1" + }, + { + "id": "0x55e99ecda590-Expr", + "variantKey": "Designator", + "Designator": "0x55e99ec5b320-Designator" + }, + { + "id": "0x55e99ec5b320-Designator", + "variantKey": "DataRef", + "DataRef": "0x55e99ec5b330-DataRef" + }, + { + "id": "0x55e99ec5b330-DataRef", + "variantKey": "Name", + "Name": "0x55e99ec5b330-Name" + }, + { + "id": "0x55e99ec5b330-Name", + "source": "n" + }, + { + "id": "0x55e99ecda680-Expr", + "variantKey": "Add", + "Add": "0x55e99ecda6a0-Add" + }, + { + "id": "0x55e99ecda6a0-Add", + "left": "0x55e99ecdab40-Expr", + "right": "0x55e99ecdaa60-Expr", + "op": "ADD" + }, + { + "id": "0x55e99ecdab40-Expr", + "variantKey": "Designator", + "Designator": "0x55e99ecda9a0-Designator" + }, + { + "id": "0x55e99ecda9a0-Designator", + "variantKey": "DataRef", + "DataRef": "0x55e99ecda9b0-DataRef" + }, + { + "id": "0x55e99ecda9b0-DataRef", + "variantKey": "ArrayElement", + "ArrayElement": "0x55e99ece2100-ArrayElement" + }, + { + "id": "0x55e99ece2100-ArrayElement", + "base": "0x55e99ece2100-DataRef", + "subscripts": [ + "0x55e99ecdce30-SectionSubscript" + ] + }, + { + "id": "0x55e99ece2100-DataRef", + "variantKey": "Name", + "Name": "0x55e99ece2100-Name" + }, + { + "id": "0x55e99ece2100-Name", + "source": "b" + }, + { + "id": "0x55e99ecdce30-SectionSubscript", + "variantKey": "SubscriptTriplet", + "SubscriptTriplet": "0x55e99ecdce30-SubscriptTriplet" + }, + { + "id": "0x55e99ecdce30-SubscriptTriplet", + "start": "0x55e99ecda780-Expr", + "end": "0x55e99ecda860-Expr" + }, + { + "id": "0x55e99ecda780-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55e99ecda7a0-LiteralConstant" + }, + { + "id": "0x55e99ecda7a0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55e99ecda7a0-IntLiteralConstant" + }, + { + "id": "0x55e99ecda7a0-IntLiteralConstant", + "CharBlock": "1" + }, + { + "id": "0x55e99ecda860-Expr", + "variantKey": "Designator", + "Designator": "0x55e99ecd8cc0-Designator" + }, + { + "id": "0x55e99ecd8cc0-Designator", + "variantKey": "DataRef", + "DataRef": "0x55e99ecd8cd0-DataRef" + }, + { + "id": "0x55e99ecd8cd0-DataRef", + "variantKey": "Name", + "Name": "0x55e99ecd8cd0-Name" + }, + { + "id": "0x55e99ecd8cd0-Name", + "source": "n" + }, + { + "id": "0x55e99ecdaa60-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55e99ecdaa80-LiteralConstant" + }, + { + "id": "0x55e99ecdaa80-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55e99ecdaa80-IntLiteralConstant" + }, + { + "id": "0x55e99ecdaa80-IntLiteralConstant", + "CharBlock": "1" + }, + { + "id": "0x55e99ecdb4c0-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55e99ecdb4c0-ExecutableConstruct" + }, + { + "id": "0x55e99ecdb4c0-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55e99ecdb4c0-Statement" + }, + { + "id": "0x55e99ecdb4c0-Statement", + "statement": "0x55e99ecdb4d0-ActionStmt", + "source": "c(1:n)=c(1:n)+1" + }, + { + "id": "0x55e99ecdb4d0-ActionStmt", + "variantKey": "AssignmentStmt", + "AssignmentStmt": "0x55e99ecdaea0-AssignmentStmt" + }, + { + "id": "0x55e99ecdaea0-AssignmentStmt", + "Variable": "0x55e99ecdaf80-Variable", + "Expr": "0x55e99ecdaeb0-Expr" + }, + { + "id": "0x55e99ecdaf80-Variable", + "variantKey": "Designator", + "Designator": "0x55e99ecdaa00-Designator" + }, + { + "id": "0x55e99ecdaa00-Designator", + "variantKey": "DataRef", + "DataRef": "0x55e99ecdaa10-DataRef" + }, + { + "id": "0x55e99ecdaa10-DataRef", + "variantKey": "ArrayElement", + "ArrayElement": "0x55e99ece20c0-ArrayElement" + }, + { + "id": "0x55e99ece20c0-ArrayElement", + "base": "0x55e99ece20c0-DataRef", + "subscripts": [ + "0x55e99ecd45d0-SectionSubscript" + ] + }, + { + "id": "0x55e99ece20c0-DataRef", + "variantKey": "Name", + "Name": "0x55e99ece20c0-Name" + }, + { + "id": "0x55e99ece20c0-Name", + "source": "c" + }, + { + "id": "0x55e99ecd45d0-SectionSubscript", + "variantKey": "SubscriptTriplet", + "SubscriptTriplet": "0x55e99ecd45d0-SubscriptTriplet" + }, + { + "id": "0x55e99ecd45d0-SubscriptTriplet", + "start": "0x55e99ecdace0-Expr", + "end": "0x55e99ecdadc0-Expr" + }, + { + "id": "0x55e99ecdace0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55e99ecdad00-LiteralConstant" + }, + { + "id": "0x55e99ecdad00-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55e99ecdad00-IntLiteralConstant" + }, + { + "id": "0x55e99ecdad00-IntLiteralConstant", + "CharBlock": "1" + }, + { + "id": "0x55e99ecdadc0-Expr", + "variantKey": "Designator", + "Designator": "0x55e99ecd8c60-Designator" + }, + { + "id": "0x55e99ecd8c60-Designator", + "variantKey": "DataRef", + "DataRef": "0x55e99ecd8c70-DataRef" + }, + { + "id": "0x55e99ecd8c70-DataRef", + "variantKey": "Name", + "Name": "0x55e99ecd8c70-Name" + }, + { + "id": "0x55e99ecd8c70-Name", + "source": "n" + }, + { + "id": "0x55e99ecdaeb0-Expr", + "variantKey": "Add", + "Add": "0x55e99ecdaed0-Add" + }, + { + "id": "0x55e99ecdaed0-Add", + "left": "0x55e99ecdb370-Expr", + "right": "0x55e99ecdb290-Expr", + "op": "ADD" + }, + { + "id": "0x55e99ecdb370-Expr", + "variantKey": "Designator", + "Designator": "0x55e99ecdb1d0-Designator" + }, + { + "id": "0x55e99ecdb1d0-Designator", + "variantKey": "DataRef", + "DataRef": "0x55e99ecdb1e0-DataRef" + }, + { + "id": "0x55e99ecdb1e0-DataRef", + "variantKey": "ArrayElement", + "ArrayElement": "0x55e99ece2140-ArrayElement" + }, + { + "id": "0x55e99ece2140-ArrayElement", + "base": "0x55e99ece2140-DataRef", + "subscripts": [ + "0x55e99ece2900-SectionSubscript" + ] + }, + { + "id": "0x55e99ece2140-DataRef", + "variantKey": "Name", + "Name": "0x55e99ece2140-Name" + }, + { + "id": "0x55e99ece2140-Name", + "source": "c" + }, + { + "id": "0x55e99ece2900-SectionSubscript", + "variantKey": "SubscriptTriplet", + "SubscriptTriplet": "0x55e99ece2900-SubscriptTriplet" + }, + { + "id": "0x55e99ece2900-SubscriptTriplet", + "start": "0x55e99ecdafb0-Expr", + "end": "0x55e99ecdb090-Expr" + }, + { + "id": "0x55e99ecdafb0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55e99ecdafd0-LiteralConstant" + }, + { + "id": "0x55e99ecdafd0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55e99ecdafd0-IntLiteralConstant" + }, + { + "id": "0x55e99ecdafd0-IntLiteralConstant", + "CharBlock": "1" + }, + { + "id": "0x55e99ecdb090-Expr", + "variantKey": "Designator", + "Designator": "0x55e99ecda170-Designator" + }, + { + "id": "0x55e99ecda170-Designator", + "variantKey": "DataRef", + "DataRef": "0x55e99ecda180-DataRef" + }, + { + "id": "0x55e99ecda180-DataRef", + "variantKey": "Name", + "Name": "0x55e99ecda180-Name" + }, + { + "id": "0x55e99ecda180-Name", + "source": "n" + }, + { + "id": "0x55e99ecdb290-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55e99ecdb2b0-LiteralConstant" + }, + { + "id": "0x55e99ecdb2b0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55e99ecdb2b0-IntLiteralConstant" + }, + { + "id": "0x55e99ecdb2b0-IntLiteralConstant", + "CharBlock": "1" + }, + { + "id": "0x55e99ecdb180-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55e99ecdb180-ExecutableConstruct" + }, + { + "id": "0x55e99ecdb180-ExecutableConstruct", + "variantKey": "DoConstruct", + "DoConstruct": "0x55e99eced0d0-DoConstruct" + }, + { + "id": "0x55e99eced0d0-DoConstruct", + "Statement": "0x55e99eced128-Statement", + "ExecutionPartConstruct": [ + "0x55e99ecd3d80-ExecutionPartConstruct", + "0x55e99ecd8500-ExecutionPartConstruct" + ], + "Statement": "0x55e99eced0d0-Statement" + }, + { + "id": "0x55e99eced128-Statement", + "statement": "0x55e99eced138-NonLabelDoStmt", + "source": "do10i=1,1000" + }, + { + "id": "0x55e99eced138-NonLabelDoStmt", + "LoopControl": "0x55e99eced138-LoopControl" + }, + { + "id": "0x55e99eced138-LoopControl", + "variantKey": "LoopBounds", + "LoopBounds": "0x55e99eced138-LoopBounds" + }, + { + "id": "0x55e99eced138-LoopBounds", + "var": "0x55e99eced138-Name", + "lower": "0x55e99ecdb510-Expr", + "upper": "0x55e99ecdb5f0-Expr" + }, + { + "id": "0x55e99eced138-Name", + "source": "i" + }, + { + "id": "0x55e99ecdb510-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55e99ecdb530-LiteralConstant" + }, + { + "id": "0x55e99ecdb530-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55e99ecdb530-IntLiteralConstant" + }, + { + "id": "0x55e99ecdb530-IntLiteralConstant", + "CharBlock": "1" + }, + { + "id": "0x55e99ecdb5f0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55e99ecdb610-LiteralConstant" + }, + { + "id": "0x55e99ecdb610-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55e99ecdb610-IntLiteralConstant" + }, + { + "id": "0x55e99ecdb610-IntLiteralConstant", + "CharBlock": "1000" + }, + { + "id": "0x55e99eced110-ExecutionPartConstruct" + }, + { + "id": "0x55e99ecd3d80-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55e99ecd3d80-ExecutableConstruct" + }, + { + "id": "0x55e99ecd3d80-ExecutableConstruct", + "variantKey": "IfConstruct", + "IfConstruct": "0x55e99ec7b780-IfConstruct" + }, + { + "id": "0x55e99ec7b780-IfConstruct", + "Statement": "0x55e99ec7b850-Statement", + "ExecutionPartConstruct": [ + "0x55e99ecd8b30-ExecutionPartConstruct", + "0x55e99ecd82e0-ExecutionPartConstruct", + "0x55e99ecd39d0-ExecutionPartConstruct", + "0x55e99ecda950-ExecutionPartConstruct" + ], + "Statement": "0x55e99ec7b780-Statement" + }, + { + "id": "0x55e99ec7b850-Statement", + "statement": "0x55e99ec7b860-IfThenStmt", + "source": "if(a(i).ne.1)then" + }, + { + "id": "0x55e99ec7b860-IfThenStmt", + "Expr": "0x55e99ecdba80-Expr" + }, + { + "id": "0x55e99ecdba80-Expr", + "variantKey": "NE", + "NE": "0x55e99ecdbaa0-NE" + }, + { + "id": "0x55e99ecdbaa0-NE", + "left": "0x55e99ecdb6d0-Expr", + "right": "0x55e99ecdb9a0-Expr", + "op": "NE" + }, + { + "id": "0x55e99ecdb6d0-Expr", + "variantKey": "Designator", + "Designator": "0x55e99ed128c0-Designator" + }, + { + "id": "0x55e99ed128c0-Designator", + "variantKey": "DataRef", + "DataRef": "0x55e99ed128d0-DataRef" + }, + { + "id": "0x55e99ed128d0-DataRef", + "variantKey": "ArrayElement", + "ArrayElement": "0x55e99ece1a50-ArrayElement" + }, + { + "id": "0x55e99ece1a50-ArrayElement", + "base": "0x55e99ece1a50-DataRef", + "subscripts": [ + "0x55e99ece6140-SectionSubscript" + ] + }, + { + "id": "0x55e99ece1a50-DataRef", + "variantKey": "Name", + "Name": "0x55e99ece1a50-Name" + }, + { + "id": "0x55e99ece1a50-Name", + "source": "a" + }, + { + "id": "0x55e99ece6140-SectionSubscript", + "variantKey": "Expr", + "Expr": "0x55e99ed8d3c0-Expr" + }, + { + "id": "0x55e99ed8d3c0-Expr", + "variantKey": "Designator", + "Designator": "0x55e99ecda1d0-Designator" + }, + { + "id": "0x55e99ecda1d0-Designator", + "variantKey": "DataRef", + "DataRef": "0x55e99ecda1e0-DataRef" + }, + { + "id": "0x55e99ecda1e0-DataRef", + "variantKey": "Name", + "Name": "0x55e99ecda1e0-Name" + }, + { + "id": "0x55e99ecda1e0-Name", + "source": "i" + }, + { + "id": "0x55e99ecdb9a0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55e99ecdb9c0-LiteralConstant" + }, + { + "id": "0x55e99ecdb9c0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55e99ecdb9c0-IntLiteralConstant" + }, + { + "id": "0x55e99ecdb9c0-IntLiteralConstant", + "CharBlock": "1" + }, + { + "id": "0x55e99ec7b838-ExecutionPartConstruct" + }, + { + "id": "0x55e99ecd8b30-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55e99ecd8b30-ExecutableConstruct" + }, + { + "id": "0x55e99ecd8b30-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55e99ecd8b30-Statement" + }, + { + "id": "0x55e99ecd8b30-Statement", + "statement": "0x55e99ecd8b40-ActionStmt", + "source": "write(6,*)'NG'" + }, + { + "id": "0x55e99ecd8b40-ActionStmt", + "variantKey": "WriteStmt", + "WriteStmt": "0x55e99ece9f50-WriteStmt" + }, + { + "id": "0x55e99ece9f50-WriteStmt", + "iounit": "0x55e99ece9f50-IoUnit", + "format": "0x55e99ece9f80-Format", + "controls": [], + "items": [ + "0x55e99ece9e70-OutputItem" + ] + }, + { + "id": "0x55e99ece9f50-IoUnit", + "variantKey": "Expr", + "Expr": "0x55e99ece9d80-Expr" + }, + { + "id": "0x55e99ece9d80-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55e99ece9da0-LiteralConstant" + }, + { + "id": "0x55e99ece9da0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55e99ece9da0-IntLiteralConstant" + }, + { + "id": "0x55e99ece9da0-IntLiteralConstant", + "CharBlock": "6" + }, + { + "id": "0x55e99ece9f80-Format", + "variantKey": "Star", + "Star": "0x55e99ece9f80-Star" + }, + { + "id": "0x55e99ece9f80-Star" + }, + { + "id": "0x55e99ece9e70-OutputItem", + "variantKey": "Expr", + "Expr": "0x55e99ece9e70-Expr" + }, + { + "id": "0x55e99ece9e70-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55e99ece9e90-LiteralConstant" + }, + { + "id": "0x55e99ece9e90-LiteralConstant", + "variantKey": "CharLiteralConstant", + "CharLiteralConstant": "0x55e99ece9e90-CharLiteralConstant" + }, + { + "id": "0x55e99ece9e90-CharLiteralConstant", + "string": "NG" + }, + { + "id": "0x55e99ecd82e0-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55e99ecd82e0-ExecutableConstruct" + }, + { + "id": "0x55e99ecd82e0-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55e99ecd82e0-Statement" + }, + { + "id": "0x55e99ecd82e0-Statement", + "statement": "0x55e99ecd82f0-ActionStmt", + "source": "write(6,*)'ELEMENT NUMBER = A(',i,')'" + }, + { + "id": "0x55e99ecd82f0-ActionStmt", + "variantKey": "WriteStmt", + "WriteStmt": "0x55e99ecea450-WriteStmt" + }, + { + "id": "0x55e99ecea450-WriteStmt", + "iounit": "0x55e99ecea450-IoUnit", + "format": "0x55e99ecea480-Format", + "controls": [], + "items": [ + "0x55e99ecea370-OutputItem", + "0x55e99ecea190-OutputItem", + "0x55e99ecea280-OutputItem" + ] + }, + { + "id": "0x55e99ecea450-IoUnit", + "variantKey": "Expr", + "Expr": "0x55e99ecea0a0-Expr" + }, + { + "id": "0x55e99ecea0a0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55e99ecea0c0-LiteralConstant" + }, + { + "id": "0x55e99ecea0c0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55e99ecea0c0-IntLiteralConstant" + }, + { + "id": "0x55e99ecea0c0-IntLiteralConstant", + "CharBlock": "6" + }, + { + "id": "0x55e99ecea480-Format", + "variantKey": "Star", + "Star": "0x55e99ecea480-Star" + }, + { + "id": "0x55e99ecea480-Star" + }, + { + "id": "0x55e99ecea370-OutputItem", + "variantKey": "Expr", + "Expr": "0x55e99ecea370-Expr" + }, + { + "id": "0x55e99ecea370-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55e99ecea390-LiteralConstant" + }, + { + "id": "0x55e99ecea390-LiteralConstant", + "variantKey": "CharLiteralConstant", + "CharLiteralConstant": "0x55e99ecea390-CharLiteralConstant" + }, + { + "id": "0x55e99ecea390-CharLiteralConstant", + "string": "ELEMENT NUMBER = A(" + }, + { + "id": "0x55e99ecea190-OutputItem", + "variantKey": "Expr", + "Expr": "0x55e99ecea190-Expr" + }, + { + "id": "0x55e99ecea190-Expr", + "variantKey": "Designator", + "Designator": "0x55e99ecda3f0-Designator" + }, + { + "id": "0x55e99ecda3f0-Designator", + "variantKey": "DataRef", + "DataRef": "0x55e99ecda400-DataRef" + }, + { + "id": "0x55e99ecda400-DataRef", + "variantKey": "Name", + "Name": "0x55e99ecda400-Name" + }, + { + "id": "0x55e99ecda400-Name", + "source": "i" + }, + { + "id": "0x55e99ecea280-OutputItem", + "variantKey": "Expr", + "Expr": "0x55e99ecea280-Expr" + }, + { + "id": "0x55e99ecea280-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55e99ecea2a0-LiteralConstant" + }, + { + "id": "0x55e99ecea2a0-LiteralConstant", + "variantKey": "CharLiteralConstant", + "CharLiteralConstant": "0x55e99ecea2a0-CharLiteralConstant" + }, + { + "id": "0x55e99ecea2a0-CharLiteralConstant", + "string": ")" + }, + { + "id": "0x55e99ecd39d0-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55e99ecd39d0-ExecutableConstruct" + }, + { + "id": "0x55e99ecd39d0-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55e99ecd39d0-Statement" + }, + { + "id": "0x55e99ecd39d0-Statement", + "statement": "0x55e99ecd39e0-ActionStmt", + "source": "code=1" + }, + { + "id": "0x55e99ecd39e0-ActionStmt", + "variantKey": "AssignmentStmt", + "AssignmentStmt": "0x55e99ecdb7b0-AssignmentStmt" + }, + { + "id": "0x55e99ecdb7b0-AssignmentStmt", + "Variable": "0x55e99ecdb890-Variable", + "Expr": "0x55e99ecdb7c0-Expr" + }, + { + "id": "0x55e99ecdb890-Variable", + "variantKey": "Designator", + "Designator": "0x55e99ecda110-Designator" + }, + { + "id": "0x55e99ecda110-Designator", + "variantKey": "DataRef", + "DataRef": "0x55e99ecda120-DataRef" + }, + { + "id": "0x55e99ecda120-DataRef", + "variantKey": "Name", + "Name": "0x55e99ecda120-Name" + }, + { + "id": "0x55e99ecda120-Name", + "source": "code" + }, + { + "id": "0x55e99ecdb7c0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55e99ecdb7e0-LiteralConstant" + }, + { + "id": "0x55e99ecdb7e0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55e99ecdb7e0-IntLiteralConstant" + }, + { + "id": "0x55e99ecdb7e0-IntLiteralConstant", + "CharBlock": "1" + }, + { + "id": "0x55e99ecda950-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55e99ecda950-ExecutableConstruct" + }, + { + "id": "0x55e99ecda950-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55e99ecda950-Statement" + }, + { + "id": "0x55e99ecda950-Statement", + "statement": "0x55e99ecda960-ActionStmt", + "source": "goto20" + }, + { + "id": "0x55e99ecda960-ActionStmt", + "variantKey": "GotoStmt", + "GotoStmt": "0x55e99ece2180-GotoStmt" + }, + { + "id": "0x55e99ece2180-GotoStmt", + "uint64_t": "20" + }, + { + "id": "0x55e99ec7b780-Statement", + "statement": "0x55e99ec7b790-EndIfStmt", + "source": "endif" + }, + { + "id": "0x55e99ec7b790-EndIfStmt" + }, + { + "id": "0x55e99ecd8500-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55e99ecd8500-ExecutableConstruct" + }, + { + "id": "0x55e99ecd8500-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55e99ecd8500-Statement" + }, + { + "id": "0x55e99ecd8500-Statement", + "statement": "0x55e99ecd8510-ActionStmt", + "label": "10", + "source": "10continue" + }, + { + "id": "0x55e99ecd8510-ActionStmt", + "variantKey": "ContinueStmt", + "ContinueStmt": "0x55e99ecd8510-ContinueStmt" + }, + { + "id": "0x55e99ecd8510-ContinueStmt" + }, + { + "id": "0x55e99eced0d0-Statement", + "statement": "0x55e99eced0e0-EndDoStmt", + "source": "" + }, + { + "id": "0x55e99eced0e0-EndDoStmt" + }, + { + "id": "0x55e99ecdb240-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55e99ecdb240-ExecutableConstruct" + }, + { + "id": "0x55e99ecdb240-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55e99ecdb240-Statement" + }, + { + "id": "0x55e99ecdb240-Statement", + "statement": "0x55e99ecdb250-ActionStmt", + "label": "20", + "source": "20continue" + }, + { + "id": "0x55e99ecdb250-ActionStmt", + "variantKey": "ContinueStmt", + "ContinueStmt": "0x55e99ecdb250-ContinueStmt" + }, + { + "id": "0x55e99ecdb250-ContinueStmt" + }, + { + "id": "0x55e99ecd7fb0-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55e99ecd7fb0-ExecutableConstruct" + }, + { + "id": "0x55e99ecd7fb0-ExecutableConstruct", + "variantKey": "DoConstruct", + "DoConstruct": "0x55e99eced1f0-DoConstruct" + }, + { + "id": "0x55e99eced1f0-DoConstruct", + "Statement": "0x55e99eced248-Statement", + "ExecutionPartConstruct": [ + "0x55e99ecd9e20-ExecutionPartConstruct", + "0x55e99ecd8830-ExecutionPartConstruct" + ], + "Statement": "0x55e99eced1f0-Statement" + }, + { + "id": "0x55e99eced248-Statement", + "statement": "0x55e99eced258-NonLabelDoStmt", + "source": "do30i=1,1000" + }, + { + "id": "0x55e99eced258-NonLabelDoStmt", + "LoopControl": "0x55e99eced258-LoopControl" + }, + { + "id": "0x55e99eced258-LoopControl", + "variantKey": "LoopBounds", + "LoopBounds": "0x55e99eced258-LoopBounds" + }, + { + "id": "0x55e99eced258-LoopBounds", + "var": "0x55e99eced258-Name", + "lower": "0x55e99ecea5a0-Expr", + "upper": "0x55e99ecea680-Expr" + }, + { + "id": "0x55e99eced258-Name", + "source": "i" + }, + { + "id": "0x55e99ecea5a0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55e99ecea5c0-LiteralConstant" + }, + { + "id": "0x55e99ecea5c0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55e99ecea5c0-IntLiteralConstant" + }, + { + "id": "0x55e99ecea5c0-IntLiteralConstant", + "CharBlock": "1" + }, + { + "id": "0x55e99ecea680-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55e99ecea6a0-LiteralConstant" + }, + { + "id": "0x55e99ecea6a0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55e99ecea6a0-IntLiteralConstant" + }, + { + "id": "0x55e99ecea6a0-IntLiteralConstant", + "CharBlock": "1000" + }, + { + "id": "0x55e99eced230-ExecutionPartConstruct" + }, + { + "id": "0x55e99ecd9e20-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55e99ecd9e20-ExecutableConstruct" + }, + { + "id": "0x55e99ecd9e20-ExecutableConstruct", + "variantKey": "IfConstruct", + "IfConstruct": "0x55e99eceb520-IfConstruct" + }, + { + "id": "0x55e99eceb520-IfConstruct", + "Statement": "0x55e99eceb5f0-Statement", + "ExecutionPartConstruct": [ + "0x55e99ecd8720-ExecutionPartConstruct", + "0x55e99ecd9590-ExecutionPartConstruct", + "0x55e99ecd8610-ExecutionPartConstruct", + "0x55e99ecd75c0-ExecutionPartConstruct" + ], + "Statement": "0x55e99eceb520-Statement" + }, + { + "id": "0x55e99eceb5f0-Statement", + "statement": "0x55e99eceb600-IfThenStmt", + "source": "if(b(i).ne.1)then" + }, + { + "id": "0x55e99eceb600-IfThenStmt", + "Expr": "0x55e99eceab10-Expr" + }, + { + "id": "0x55e99eceab10-Expr", + "variantKey": "NE", + "NE": "0x55e99eceab30-NE" + }, + { + "id": "0x55e99eceab30-NE", + "left": "0x55e99ecea760-Expr", + "right": "0x55e99eceaa30-Expr", + "op": "NE" + }, + { + "id": "0x55e99ecea760-Expr", + "variantKey": "Designator", + "Designator": "0x55e99ed11f20-Designator" + }, + { + "id": "0x55e99ed11f20-Designator", + "variantKey": "DataRef", + "DataRef": "0x55e99ed11f30-DataRef" + }, + { + "id": "0x55e99ed11f30-DataRef", + "variantKey": "ArrayElement", + "ArrayElement": "0x55e99ecdbd10-ArrayElement" + }, + { + "id": "0x55e99ecdbd10-ArrayElement", + "base": "0x55e99ecdbd10-DataRef", + "subscripts": [ + "0x55e99ed02fc0-SectionSubscript" + ] + }, + { + "id": "0x55e99ecdbd10-DataRef", + "variantKey": "Name", + "Name": "0x55e99ecdbd10-Name" + }, + { + "id": "0x55e99ecdbd10-Name", + "source": "b" + }, + { + "id": "0x55e99ed02fc0-SectionSubscript", + "variantKey": "Expr", + "Expr": "0x55e99ecdb8c0-Expr" + }, + { + "id": "0x55e99ecdb8c0-Expr", + "variantKey": "Designator", + "Designator": "0x55e99ecd4220-Designator" + }, + { + "id": "0x55e99ecd4220-Designator", + "variantKey": "DataRef", + "DataRef": "0x55e99ecd4230-DataRef" + }, + { + "id": "0x55e99ecd4230-DataRef", + "variantKey": "Name", + "Name": "0x55e99ecd4230-Name" + }, + { + "id": "0x55e99ecd4230-Name", + "source": "i" + }, + { + "id": "0x55e99eceaa30-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55e99eceaa50-LiteralConstant" + }, + { + "id": "0x55e99eceaa50-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55e99eceaa50-IntLiteralConstant" + }, + { + "id": "0x55e99eceaa50-IntLiteralConstant", + "CharBlock": "1" + }, + { + "id": "0x55e99eceb5d8-ExecutionPartConstruct" + }, + { + "id": "0x55e99ecd8720-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55e99ecd8720-ExecutableConstruct" + }, + { + "id": "0x55e99ecd8720-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55e99ecd8720-Statement" + }, + { + "id": "0x55e99ecd8720-Statement", + "statement": "0x55e99ecd8730-ActionStmt", + "source": "write(6,*)'NG'" + }, + { + "id": "0x55e99ecd8730-ActionStmt", + "variantKey": "WriteStmt", + "WriteStmt": "0x55e99eceaed0-WriteStmt" + }, + { + "id": "0x55e99eceaed0-WriteStmt", + "iounit": "0x55e99eceaed0-IoUnit", + "format": "0x55e99eceaf00-Format", + "controls": [], + "items": [ + "0x55e99eceadf0-OutputItem" + ] + }, + { + "id": "0x55e99eceaed0-IoUnit", + "variantKey": "Expr", + "Expr": "0x55e99ecead00-Expr" + }, + { + "id": "0x55e99ecead00-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55e99ecead20-LiteralConstant" + }, + { + "id": "0x55e99ecead20-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55e99ecead20-IntLiteralConstant" + }, + { + "id": "0x55e99ecead20-IntLiteralConstant", + "CharBlock": "6" + }, + { + "id": "0x55e99eceaf00-Format", + "variantKey": "Star", + "Star": "0x55e99eceaf00-Star" + }, + { + "id": "0x55e99eceaf00-Star" + }, + { + "id": "0x55e99eceadf0-OutputItem", + "variantKey": "Expr", + "Expr": "0x55e99eceadf0-Expr" + }, + { + "id": "0x55e99eceadf0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55e99eceae10-LiteralConstant" + }, + { + "id": "0x55e99eceae10-LiteralConstant", + "variantKey": "CharLiteralConstant", + "CharLiteralConstant": "0x55e99eceae10-CharLiteralConstant" + }, + { + "id": "0x55e99eceae10-CharLiteralConstant", + "string": "NG" + }, + { + "id": "0x55e99ecd9590-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55e99ecd9590-ExecutableConstruct" + }, + { + "id": "0x55e99ecd9590-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55e99ecd9590-Statement" + }, + { + "id": "0x55e99ecd9590-Statement", + "statement": "0x55e99ecd95a0-ActionStmt", + "source": "write(6,*)'ELEMENT NUMBER = B(',i,')'" + }, + { + "id": "0x55e99ecd95a0-ActionStmt", + "variantKey": "WriteStmt", + "WriteStmt": "0x55e99eceb3d0-WriteStmt" + }, + { + "id": "0x55e99eceb3d0-WriteStmt", + "iounit": "0x55e99eceb3d0-IoUnit", + "format": "0x55e99eceb400-Format", + "controls": [], + "items": [ + "0x55e99eceb2f0-OutputItem", + "0x55e99eceb110-OutputItem", + "0x55e99eceb200-OutputItem" + ] + }, + { + "id": "0x55e99eceb3d0-IoUnit", + "variantKey": "Expr", + "Expr": "0x55e99eceb020-Expr" + }, + { + "id": "0x55e99eceb020-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55e99eceb040-LiteralConstant" + }, + { + "id": "0x55e99eceb040-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55e99eceb040-IntLiteralConstant" + }, + { + "id": "0x55e99eceb040-IntLiteralConstant", + "CharBlock": "6" + }, + { + "id": "0x55e99eceb400-Format", + "variantKey": "Star", + "Star": "0x55e99eceb400-Star" + }, + { + "id": "0x55e99eceb400-Star" + }, + { + "id": "0x55e99eceb2f0-OutputItem", + "variantKey": "Expr", + "Expr": "0x55e99eceb2f0-Expr" + }, + { + "id": "0x55e99eceb2f0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55e99eceb310-LiteralConstant" + }, + { + "id": "0x55e99eceb310-LiteralConstant", + "variantKey": "CharLiteralConstant", + "CharLiteralConstant": "0x55e99eceb310-CharLiteralConstant" + }, + { + "id": "0x55e99eceb310-CharLiteralConstant", + "string": "ELEMENT NUMBER = B(" + }, + { + "id": "0x55e99eceb110-OutputItem", + "variantKey": "Expr", + "Expr": "0x55e99eceb110-Expr" + }, + { + "id": "0x55e99eceb110-Expr", + "variantKey": "Designator", + "Designator": "0x55e99ecd80b0-Designator" + }, + { + "id": "0x55e99ecd80b0-Designator", + "variantKey": "DataRef", + "DataRef": "0x55e99ecd80c0-DataRef" + }, + { + "id": "0x55e99ecd80c0-DataRef", + "variantKey": "Name", + "Name": "0x55e99ecd80c0-Name" + }, + { + "id": "0x55e99ecd80c0-Name", + "source": "i" + }, + { + "id": "0x55e99eceb200-OutputItem", + "variantKey": "Expr", + "Expr": "0x55e99eceb200-Expr" + }, + { + "id": "0x55e99eceb200-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55e99eceb220-LiteralConstant" + }, + { + "id": "0x55e99eceb220-LiteralConstant", + "variantKey": "CharLiteralConstant", + "CharLiteralConstant": "0x55e99eceb220-CharLiteralConstant" + }, + { + "id": "0x55e99eceb220-CharLiteralConstant", + "string": ")" + }, + { + "id": "0x55e99ecd8610-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55e99ecd8610-ExecutableConstruct" + }, + { + "id": "0x55e99ecd8610-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55e99ecd8610-Statement" + }, + { + "id": "0x55e99ecd8610-Statement", + "statement": "0x55e99ecd8620-ActionStmt", + "source": "code=1" + }, + { + "id": "0x55e99ecd8620-ActionStmt", + "variantKey": "AssignmentStmt", + "AssignmentStmt": "0x55e99ecea840-AssignmentStmt" + }, + { + "id": "0x55e99ecea840-AssignmentStmt", + "Variable": "0x55e99ecea920-Variable", + "Expr": "0x55e99ecea850-Expr" + }, + { + "id": "0x55e99ecea920-Variable", + "variantKey": "Designator", + "Designator": "0x55e99ecdac20-Designator" + }, + { + "id": "0x55e99ecdac20-Designator", + "variantKey": "DataRef", + "DataRef": "0x55e99ecdac30-DataRef" + }, + { + "id": "0x55e99ecdac30-DataRef", + "variantKey": "Name", + "Name": "0x55e99ecdac30-Name" + }, + { + "id": "0x55e99ecdac30-Name", + "source": "code" + }, + { + "id": "0x55e99ecea850-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55e99ecea870-LiteralConstant" + }, + { + "id": "0x55e99ecea870-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55e99ecea870-IntLiteralConstant" + }, + { + "id": "0x55e99ecea870-IntLiteralConstant", + "CharBlock": "1" + }, + { + "id": "0x55e99ecd75c0-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55e99ecd75c0-ExecutableConstruct" + }, + { + "id": "0x55e99ecd75c0-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55e99ecd75c0-Statement" + }, + { + "id": "0x55e99ecd75c0-Statement", + "statement": "0x55e99ecd75d0-ActionStmt", + "source": "goto40" + }, + { + "id": "0x55e99ecd75d0-ActionStmt", + "variantKey": "GotoStmt", + "GotoStmt": "0x55e99ece4b40-GotoStmt" + }, + { + "id": "0x55e99ece4b40-GotoStmt", + "uint64_t": "40" + }, + { + "id": "0x55e99eceb520-Statement", + "statement": "0x55e99eceb530-EndIfStmt", + "source": "endif" + }, + { + "id": "0x55e99eceb530-EndIfStmt" + }, + { + "id": "0x55e99ecd8830-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55e99ecd8830-ExecutableConstruct" + }, + { + "id": "0x55e99ecd8830-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55e99ecd8830-Statement" + }, + { + "id": "0x55e99ecd8830-Statement", + "statement": "0x55e99ecd8840-ActionStmt", + "label": "30", + "source": "30continue" + }, + { + "id": "0x55e99ecd8840-ActionStmt", + "variantKey": "ContinueStmt", + "ContinueStmt": "0x55e99ecd8840-ContinueStmt" + }, + { + "id": "0x55e99ecd8840-ContinueStmt" + }, + { + "id": "0x55e99eced1f0-Statement", + "statement": "0x55e99eced200-EndDoStmt", + "source": "" + }, + { + "id": "0x55e99eced200-EndDoStmt" + }, + { + "id": "0x55e99ecd9150-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55e99ecd9150-ExecutableConstruct" + }, + { + "id": "0x55e99ecd9150-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55e99ecd9150-Statement" + }, + { + "id": "0x55e99ecd9150-Statement", + "statement": "0x55e99ecd9160-ActionStmt", + "label": "40", + "source": "40continue" + }, + { + "id": "0x55e99ecd9160-ActionStmt", + "variantKey": "ContinueStmt", + "ContinueStmt": "0x55e99ecd9160-ContinueStmt" + }, + { + "id": "0x55e99ecd9160-ContinueStmt" + }, + { + "id": "0x55e99ecd81d0-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55e99ecd81d0-ExecutableConstruct" + }, + { + "id": "0x55e99ecd81d0-ExecutableConstruct", + "variantKey": "DoConstruct", + "DoConstruct": "0x55e99eced310-DoConstruct" + }, + { + "id": "0x55e99eced310-DoConstruct", + "Statement": "0x55e99eced368-Statement", + "ExecutionPartConstruct": [ + "0x55e99ecd9f30-ExecutionPartConstruct", + "0x55e99ecd8d90-ExecutionPartConstruct" + ], + "Statement": "0x55e99eced310-Statement" + }, + { + "id": "0x55e99eced368-Statement", + "statement": "0x55e99eced378-NonLabelDoStmt", + "source": "do50i=1,1000" + }, + { + "id": "0x55e99eced378-NonLabelDoStmt", + "LoopControl": "0x55e99eced378-LoopControl" + }, + { + "id": "0x55e99eced378-LoopControl", + "variantKey": "LoopBounds", + "LoopBounds": "0x55e99eced378-LoopBounds" + }, + { + "id": "0x55e99eced378-LoopBounds", + "var": "0x55e99eced378-Name", + "lower": "0x55e99eceb640-Expr", + "upper": "0x55e99eceb720-Expr" + }, + { + "id": "0x55e99eced378-Name", + "source": "i" + }, + { + "id": "0x55e99eceb640-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55e99eceb660-LiteralConstant" + }, + { + "id": "0x55e99eceb660-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55e99eceb660-IntLiteralConstant" + }, + { + "id": "0x55e99eceb660-IntLiteralConstant", + "CharBlock": "1" + }, + { + "id": "0x55e99eceb720-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55e99eceb740-LiteralConstant" + }, + { + "id": "0x55e99eceb740-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55e99eceb740-IntLiteralConstant" + }, + { + "id": "0x55e99eceb740-IntLiteralConstant", + "CharBlock": "1000" + }, + { + "id": "0x55e99eced350-ExecutionPartConstruct" + }, + { + "id": "0x55e99ecd9f30-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55e99ecd9f30-ExecutableConstruct" + }, + { + "id": "0x55e99ecd9f30-ExecutableConstruct", + "variantKey": "IfConstruct", + "IfConstruct": "0x55e99ecec5c0-IfConstruct" + }, + { + "id": "0x55e99ecec5c0-IfConstruct", + "Statement": "0x55e99ecec690-Statement", + "ExecutionPartConstruct": [ + "0x55e99ecd78c0-ExecutionPartConstruct", + "0x55e99ecd3220-ExecutionPartConstruct", + "0x55e99ecd96a0-ExecutionPartConstruct", + "0x55e99ecdb460-ExecutionPartConstruct" + ], + "Statement": "0x55e99ecec5c0-Statement" + }, + { + "id": "0x55e99ecec690-Statement", + "statement": "0x55e99ecec6a0-IfThenStmt", + "source": "if(c(i).ne.1)then" + }, + { + "id": "0x55e99ecec6a0-IfThenStmt", + "Expr": "0x55e99ecebbb0-Expr" + }, + { + "id": "0x55e99ecebbb0-Expr", + "variantKey": "NE", + "NE": "0x55e99ecebbd0-NE" + }, + { + "id": "0x55e99ecebbd0-NE", + "left": "0x55e99eceb800-Expr", + "right": "0x55e99ecebad0-Expr", + "op": "NE" + }, + { + "id": "0x55e99eceb800-Expr", + "variantKey": "Designator", + "Designator": "0x55e99ed13260-Designator" + }, + { + "id": "0x55e99ed13260-Designator", + "variantKey": "DataRef", + "DataRef": "0x55e99ed13270-DataRef" + }, + { + "id": "0x55e99ed13270-DataRef", + "variantKey": "ArrayElement", + "ArrayElement": "0x55e99ecd7870-ArrayElement" + }, + { + "id": "0x55e99ecd7870-ArrayElement", + "base": "0x55e99ecd7870-DataRef", + "subscripts": [ + "0x55e99ecfaa40-SectionSubscript" + ] + }, + { + "id": "0x55e99ecd7870-DataRef", + "variantKey": "Name", + "Name": "0x55e99ecd7870-Name" + }, + { + "id": "0x55e99ecd7870-Name", + "source": "c" + }, + { + "id": "0x55e99ecfaa40-SectionSubscript", + "variantKey": "Expr", + "Expr": "0x55e99ecea950-Expr" + }, + { + "id": "0x55e99ecea950-Expr", + "variantKey": "Designator", + "Designator": "0x55e99ecd3500-Designator" + }, + { + "id": "0x55e99ecd3500-Designator", + "variantKey": "DataRef", + "DataRef": "0x55e99ecd3510-DataRef" + }, + { + "id": "0x55e99ecd3510-DataRef", + "variantKey": "Name", + "Name": "0x55e99ecd3510-Name" + }, + { + "id": "0x55e99ecd3510-Name", + "source": "i" + }, + { + "id": "0x55e99ecebad0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55e99ecebaf0-LiteralConstant" + }, + { + "id": "0x55e99ecebaf0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55e99ecebaf0-IntLiteralConstant" + }, + { + "id": "0x55e99ecebaf0-IntLiteralConstant", + "CharBlock": "1" + }, + { + "id": "0x55e99ecec678-ExecutionPartConstruct" + }, + { + "id": "0x55e99ecd78c0-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55e99ecd78c0-ExecutableConstruct" + }, + { + "id": "0x55e99ecd78c0-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55e99ecd78c0-Statement" + }, + { + "id": "0x55e99ecd78c0-Statement", + "statement": "0x55e99ecd78d0-ActionStmt", + "source": "write(6,*)'NG'" + }, + { + "id": "0x55e99ecd78d0-ActionStmt", + "variantKey": "WriteStmt", + "WriteStmt": "0x55e99ecebf70-WriteStmt" + }, + { + "id": "0x55e99ecebf70-WriteStmt", + "iounit": "0x55e99ecebf70-IoUnit", + "format": "0x55e99ecebfa0-Format", + "controls": [], + "items": [ + "0x55e99ecebe90-OutputItem" + ] + }, + { + "id": "0x55e99ecebf70-IoUnit", + "variantKey": "Expr", + "Expr": "0x55e99ecebda0-Expr" + }, + { + "id": "0x55e99ecebda0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55e99ecebdc0-LiteralConstant" + }, + { + "id": "0x55e99ecebdc0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55e99ecebdc0-IntLiteralConstant" + }, + { + "id": "0x55e99ecebdc0-IntLiteralConstant", + "CharBlock": "6" + }, + { + "id": "0x55e99ecebfa0-Format", + "variantKey": "Star", + "Star": "0x55e99ecebfa0-Star" + }, + { + "id": "0x55e99ecebfa0-Star" + }, + { + "id": "0x55e99ecebe90-OutputItem", + "variantKey": "Expr", + "Expr": "0x55e99ecebe90-Expr" + }, + { + "id": "0x55e99ecebe90-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55e99ecebeb0-LiteralConstant" + }, + { + "id": "0x55e99ecebeb0-LiteralConstant", + "variantKey": "CharLiteralConstant", + "CharLiteralConstant": "0x55e99ecebeb0-CharLiteralConstant" + }, + { + "id": "0x55e99ecebeb0-CharLiteralConstant", + "string": "NG" + }, + { + "id": "0x55e99ecd3220-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55e99ecd3220-ExecutableConstruct" + }, + { + "id": "0x55e99ecd3220-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55e99ecd3220-Statement" + }, + { + "id": "0x55e99ecd3220-Statement", + "statement": "0x55e99ecd3230-ActionStmt", + "source": "write(6,*)'ELEMENT NUMBER = C(',i,')'" + }, + { + "id": "0x55e99ecd3230-ActionStmt", + "variantKey": "WriteStmt", + "WriteStmt": "0x55e99ecec470-WriteStmt" + }, + { + "id": "0x55e99ecec470-WriteStmt", + "iounit": "0x55e99ecec470-IoUnit", + "format": "0x55e99ecec4a0-Format", + "controls": [], + "items": [ + "0x55e99ecec390-OutputItem", + "0x55e99ecec1b0-OutputItem", + "0x55e99ecec2a0-OutputItem" + ] + }, + { + "id": "0x55e99ecec470-IoUnit", + "variantKey": "Expr", + "Expr": "0x55e99ecec0c0-Expr" + }, + { + "id": "0x55e99ecec0c0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55e99ecec0e0-LiteralConstant" + }, + { + "id": "0x55e99ecec0e0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55e99ecec0e0-IntLiteralConstant" + }, + { + "id": "0x55e99ecec0e0-IntLiteralConstant", + "CharBlock": "6" + }, + { + "id": "0x55e99ecec4a0-Format", + "variantKey": "Star", + "Star": "0x55e99ecec4a0-Star" + }, + { + "id": "0x55e99ecec4a0-Star" + }, + { + "id": "0x55e99ecec390-OutputItem", + "variantKey": "Expr", + "Expr": "0x55e99ecec390-Expr" + }, + { + "id": "0x55e99ecec390-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55e99ecec3b0-LiteralConstant" + }, + { + "id": "0x55e99ecec3b0-LiteralConstant", + "variantKey": "CharLiteralConstant", + "CharLiteralConstant": "0x55e99ecec3b0-CharLiteralConstant" + }, + { + "id": "0x55e99ecec3b0-CharLiteralConstant", + "string": "ELEMENT NUMBER = C(" + }, + { + "id": "0x55e99ecec1b0-OutputItem", + "variantKey": "Expr", + "Expr": "0x55e99ecec1b0-Expr" + }, + { + "id": "0x55e99ecec1b0-Expr", + "variantKey": "Designator", + "Designator": "0x55e99ecd9030-Designator" + }, + { + "id": "0x55e99ecd9030-Designator", + "variantKey": "DataRef", + "DataRef": "0x55e99ecd9040-DataRef" + }, + { + "id": "0x55e99ecd9040-DataRef", + "variantKey": "Name", + "Name": "0x55e99ecd9040-Name" + }, + { + "id": "0x55e99ecd9040-Name", + "source": "i" + }, + { + "id": "0x55e99ecec2a0-OutputItem", + "variantKey": "Expr", + "Expr": "0x55e99ecec2a0-Expr" + }, + { + "id": "0x55e99ecec2a0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55e99ecec2c0-LiteralConstant" + }, + { + "id": "0x55e99ecec2c0-LiteralConstant", + "variantKey": "CharLiteralConstant", + "CharLiteralConstant": "0x55e99ecec2c0-CharLiteralConstant" + }, + { + "id": "0x55e99ecec2c0-CharLiteralConstant", + "string": ")" + }, + { + "id": "0x55e99ecd96a0-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55e99ecd96a0-ExecutableConstruct" + }, + { + "id": "0x55e99ecd96a0-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55e99ecd96a0-Statement" + }, + { + "id": "0x55e99ecd96a0-Statement", + "statement": "0x55e99ecd96b0-ActionStmt", + "source": "code=1" + }, + { + "id": "0x55e99ecd96b0-ActionStmt", + "variantKey": "AssignmentStmt", + "AssignmentStmt": "0x55e99eceb8e0-AssignmentStmt" + }, + { + "id": "0x55e99eceb8e0-AssignmentStmt", + "Variable": "0x55e99eceb9c0-Variable", + "Expr": "0x55e99eceb8f0-Expr" + }, + { + "id": "0x55e99eceb9c0-Variable", + "variantKey": "Designator", + "Designator": "0x55e99ecd9470-Designator" + }, + { + "id": "0x55e99ecd9470-Designator", + "variantKey": "DataRef", + "DataRef": "0x55e99ecd9480-DataRef" + }, + { + "id": "0x55e99ecd9480-DataRef", + "variantKey": "Name", + "Name": "0x55e99ecd9480-Name" + }, + { + "id": "0x55e99ecd9480-Name", + "source": "code" + }, + { + "id": "0x55e99eceb8f0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55e99eceb910-LiteralConstant" + }, + { + "id": "0x55e99eceb910-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55e99eceb910-IntLiteralConstant" + }, + { + "id": "0x55e99eceb910-IntLiteralConstant", + "CharBlock": "1" + }, + { + "id": "0x55e99ecdb460-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55e99ecdb460-ExecutableConstruct" + }, + { + "id": "0x55e99ecdb460-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55e99ecdb460-Statement" + }, + { + "id": "0x55e99ecdb460-Statement", + "statement": "0x55e99ecdb470-ActionStmt", + "source": "goto60" + }, + { + "id": "0x55e99ecdb470-ActionStmt", + "variantKey": "GotoStmt", + "GotoStmt": "0x55e99ece1810-GotoStmt" + }, + { + "id": "0x55e99ece1810-GotoStmt", + "uint64_t": "60" + }, + { + "id": "0x55e99ecec5c0-Statement", + "statement": "0x55e99ecec5d0-EndIfStmt", + "source": "endif" + }, + { + "id": "0x55e99ecec5d0-EndIfStmt" + }, + { + "id": "0x55e99ecd8d90-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55e99ecd8d90-ExecutableConstruct" + }, + { + "id": "0x55e99ecd8d90-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55e99ecd8d90-Statement" + }, + { + "id": "0x55e99ecd8d90-Statement", + "statement": "0x55e99ecd8da0-ActionStmt", + "label": "50", + "source": "50continue" + }, + { + "id": "0x55e99ecd8da0-ActionStmt", + "variantKey": "ContinueStmt", + "ContinueStmt": "0x55e99ecd8da0-ContinueStmt" + }, + { + "id": "0x55e99ecd8da0-ContinueStmt" + }, + { + "id": "0x55e99eced310-Statement", + "statement": "0x55e99eced320-EndDoStmt", + "source": "" + }, + { + "id": "0x55e99eced320-EndDoStmt" + }, + { + "id": "0x55e99ecd2fa0-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55e99ecd2fa0-ExecutableConstruct" + }, + { + "id": "0x55e99ecd2fa0-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55e99ecd2fa0-Statement" + }, + { + "id": "0x55e99ecd2fa0-Statement", + "statement": "0x55e99ecd2fb0-ActionStmt", + "label": "60", + "source": "60continue" + }, + { + "id": "0x55e99ecd2fb0-ActionStmt", + "variantKey": "ContinueStmt", + "ContinueStmt": "0x55e99ecd2fb0-ContinueStmt" + }, + { + "id": "0x55e99ecd2fb0-ContinueStmt" + }, + { + "id": "0x55e99ecd3280-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55e99ecd3280-ExecutableConstruct" + }, + { + "id": "0x55e99ecd3280-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55e99ecd3280-Statement" + }, + { + "id": "0x55e99ecd3280-Statement", + "statement": "0x55e99ecd3290-ActionStmt", + "source": "return" + }, + { + "id": "0x55e99ecd3290-ActionStmt", + "variantKey": "ReturnStmt", + "ReturnStmt": "0x55e99ece4e00-ReturnStmt" + }, + { + "id": "0x55e99ece4e00-ReturnStmt" + }, + { + "id": "0x55e99eceddf0-Statement", + "statement": "0x55e99ecede00-EndSubroutineStmt", + "source": "end" + }, + { + "id": "0x55e99ecede00-EndSubroutineStmt" + } + ], + "comments": [ + { + "text": "", + "stmtId": "0x55e99ecd2df0-Statement", + "trailing": false + }, + { + "text": "", + "stmtId": "0x55e99ecd4150-Statement", + "trailing": false + }, + { + "text": "", + "stmtId": "0x55e99ecd49d0-Statement", + "trailing": false + }, + { + "text": "", + "stmtId": "0x55e99ecedf38-Statement", + "trailing": false + }, + { + "text": "", + "stmtId": "0x55e99ecda460-Statement", + "trailing": false + }, + { + "text": "", + "stmtId": "0x55e99eced128-Statement", + "trailing": false + }, + { + "text": "", + "stmtId": "0x55e99ecdb240-Statement", + "trailing": false + }, + { + "text": "", + "stmtId": "0x55e99ecd9150-Statement", + "trailing": false + }, + { + "text": "", + "stmtId": "0x55e99ecd2fa0-Statement", + "trailing": false + } + ], + "enums": { + "Fortran::common::CUDADataAttr": [ + "Constant", + "Device", + "Managed", + "Pinned", + "Shared", + "Texture", + "Unified" + ], + "Fortran::common::CUDASubprogramAttrs": [ + "Host", + "Device", + "HostDevice", + "Global", + "Grid_Global" + ], + "Fortran::common::ImportKind": [ + "Default", + "Only", + "None", + "All" + ], + "Fortran::common::OmpDependenceKind": [ + "In", + "Out", + "Inout", + "Inoutset", + "Mutexinoutset", + "Depobj" + ], + "Fortran::common::OmpMemoryOrderType": [ + "Acq_Rel", + "Acquire", + "Relaxed", + "Release", + "Seq_Cst" + ], + "Fortran::common::OpenACCDeviceType": [ + "Star", + "Default", + "Nvidia", + "Radeon", + "Host", + "Multicore", + "None" + ], + "Fortran::parser::AccDataModifier::Modifier": [ + "ReadOnly", + "Zero" + ], + "Fortran::parser::AccessSpec::Kind": [ + "Public", + "Private" + ], + "Fortran::parser::BindEntity::Kind": [ + "Object", + "Common" + ], + "Fortran::parser::CompilerDirective::VectorLength::Kind": [ + "Auto", + "Fixed", + "Scalable" + ], + "Fortran::parser::ConnectSpec::CharExpr::Kind": [ + "Access", + "Action", + "Asynchronous", + "Blank", + "Decimal", + "Delim", + "Encoding", + "Form", + "Pad", + "Position", + "Round", + "Sign", + "Carriagecontrol", + "Convert", + "Dispose" + ], + "Fortran::parser::DefinedOperator::IntrinsicOperator": [ + "Power", + "Multiply", + "Divide", + "Add", + "Subtract", + "Concat", + "LT", + "LE", + "EQ", + "NE", + "GE", + "GT", + "NOT", + "AND", + "OR", + "EQV", + "NEQV" + ], + "Fortran::parser::ImplicitStmt::ImplicitNoneNameSpec": [ + "External", + "Type" + ], + "Fortran::parser::InquireSpec::CharVar::Kind": [ + "Access", + "Action", + "Asynchronous", + "Blank", + "Decimal", + "Delim", + "Direct", + "Encoding", + "Form", + "Formatted", + "Iomsg", + "Name", + "Pad", + "Position", + "Read", + "Readwrite", + "Round", + "Sequential", + "Sign", + "Stream", + "Status", + "Unformatted", + "Write", + "Carriagecontrol", + "Convert", + "Dispose" + ], + "Fortran::parser::InquireSpec::IntVar::Kind": [ + "Iostat", + "Nextrec", + "Number", + "Pos", + "Recl", + "Size" + ], + "Fortran::parser::InquireSpec::LogVar::Kind": [ + "Exist", + "Named", + "Opened", + "Pending" + ], + "Fortran::parser::IntentSpec::Intent": [ + "In", + "Out", + "InOut" + ], + "Fortran::parser::IoControlSpec::CharExpr::Kind": [ + "Advance", + "Blank", + "Decimal", + "Delim", + "Pad", + "Round", + "Sign" + ], + "Fortran::parser::ReductionOperator::Operator": [ + "Plus", + "Multiply", + "Max", + "Min", + "Iand", + "Ior", + "Ieor", + "And", + "Or", + "Eqv", + "Neqv" + ], + "Fortran::parser::OmpAccessGroup::Value": [ + "Cgroup" + ], + "Fortran::parser::OmpAdjustArgsClause::OmpAdjustOp::Value": [ + "Nothing", + "Need_Device_Ptr" + ], + "Fortran::parser::OmpAlwaysModifier::Value": [ + "Always" + ], + "Fortran::parser::OmpAtClause::ActionTime": [ + "Compilation", + "Execution" + ], + "Fortran::parser::OmpAttachModifier::Value": [ + "Always", + "Never", + "Auto" + ], + "Fortran::parser::OmpAutomapModifier::Value": [ + "Automap" + ], + "Fortran::parser::OmpBindClause::Binding": [ + "Parallel", + "Teams", + "Thread" + ], + "Fortran::parser::OmpChunkModifier::Value": [ + "Simd" + ], + "Fortran::parser::OmpCloseModifier::Value": [ + "Close" + ], + "Fortran::parser::OmpDefaultClause::DataSharingAttribute": [ + "Private", + "Firstprivate", + "Shared", + "None" + ], + "Fortran::parser::OmpDefaultmapClause::ImplicitBehavior": [ + "Alloc", + "To", + "From", + "Tofrom", + "Firstprivate", + "None", + "Default", + "Present" + ], + "Fortran::parser::OmpDeleteModifier::Value": [ + "Delete" + ], + "Fortran::parser::OmpDependenceType::Value": [ + "Sink", + "Source" + ], + "Fortran::parser::OmpDeviceModifier::Value": [ + "Ancestor", + "Device_Num" + ], + "Fortran::parser::OmpDeviceTypeClause::DeviceTypeDescription": [ + "Any", + "Host", + "Nohost" + ], + "Fortran::parser::OmpDirectiveSpecification::Flag": [ + "DeprecatedSyntax", + "CrossesLabelDo" + ], + "Fortran::parser::OmpExpectation::Value": [ + "Present" + ], + "Fortran::parser::OmpInteropType::Value": [ + "Target", + "Targetsync" + ], + "Fortran::parser::OmpLastprivateModifier::Value": [ + "Conditional" + ], + "Fortran::parser::OmpLinearModifier::Value": [ + "Ref", + "Uval", + "Val" + ], + "Fortran::parser::OmpMapType::Value": [ + "Alloc", + "Delete", + "From", + "Release", + "Storage", + "To", + "Tofrom" + ], + "Fortran::parser::OmpMapTypeModifier::Value": [ + "Always", + "Close", + "Present", + "Ompx_Hold" + ], + "Fortran::parser::OmpObject::Invalid::Kind": [ + "BlankCommonBlock" + ], + "Fortran::parser::OmpOrderClause::Ordering": [ + "Concurrent" + ], + "Fortran::parser::OmpOrderingModifier::Value": [ + "Monotonic", + "Nonmonotonic", + "Simd" + ], + "Fortran::parser::OmpOrderModifier::Value": [ + "Reproducible", + "Unconstrained" + ], + "Fortran::parser::OmpPrescriptiveness::Value": [ + "Strict" + ], + "Fortran::parser::OmpPresentModifier::Value": [ + "Present" + ], + "Fortran::parser::OmpProcBindClause::AffinityPolicy": [ + "Close", + "Master", + "Spread", + "Primary" + ], + "Fortran::parser::OmpReductionModifier::Value": [ + "Default", + "Inscan", + "Task" + ], + "Fortran::parser::OmpRefModifier::Value": [ + "Ref_Ptee", + "Ref_Ptr", + "Ref_Ptr_Ptee" + ], + "Fortran::parser::OmpScheduleClause::Kind": [ + "Static", + "Dynamic", + "Guided", + "Auto", + "Runtime" + ], + "Fortran::parser::OmpSelfModifier::Value": [ + "Self" + ], + "Fortran::parser::OmpSeverityClause::SevLevel": [ + "Fatal", + "Warning" + ], + "Fortran::parser::OmpThreadsetClause::ThreadsetPolicy": [ + "Omp_Pool", + "Omp_Team" + ], + "Fortran::parser::OmpTraitSelectorName::Value": [ + "Arch", + "Atomic_Default_Mem_Order", + "Condition", + "Device_Num", + "Extension", + "Isa", + "Kind", + "Requires", + "Simd", + "Uid", + "Vendor" + ], + "Fortran::parser::OmpTraitSetSelectorName::Value": [ + "Construct", + "Device", + "Implementation", + "Target_Device", + "User" + ], + "Fortran::parser::OmpVariableCategory::Value": [ + "Aggregate", + "All", + "Allocatable", + "Pointer", + "Scalar" + ], + "Fortran::parser::OmpxHoldModifier::Value": [ + "Ompx_Hold" + ], + "Fortran::parser::ProcedureStmt::Kind": [ + "ModuleProcedure", + "Procedure" + ], + "Fortran::parser::SavedEntity::Kind": [ + "Entity", + "Common" + ], + "Fortran::parser::StopStmt::Kind": [ + "Stop", + "ErrorStop" + ], + "Fortran::parser::UseStmt::ModuleNature": [ + "Intrinsic", + "Non_Intrinsic" + ] + } +} diff --git a/FortranParser/resources-test/fortran/parser/fujitsu/0001/0001_0011.expected.f b/FortranParser/resources-test/fortran/parser/fujitsu/0001/0001_0011.expected.f new file mode 100644 index 00000000..bb804ebf --- /dev/null +++ b/FortranParser/resources-test/fortran/parser/fujitsu/0001/0001_0011.expected.f @@ -0,0 +1,47 @@ + INTEGERa(1000),b(1000),c(1000),d(1000),e(1000),f(1000),code + DATAa/1000*1/,b/1000*2/,c/1000*3/,d/1000*4/,e/1000*5/,f/1000*6/ +C + code=0 + CALLsub1(a+b,c+d,e+f,code) +C + IF(code==0)WRITE(6,*)"OK" +C + STOP + END +C +C + SUBROUTINEsub1(a,b,c,code) + INTEGERa(1000),b(1000),c(1000),code +C + DO10i=1,1000 + IF(a(i)/=3)THEN + WRITE(6,*)"NG" + WRITE(6,*)"ELEMENT NUMBER = A(",i,")" + code=1 + GOTO20 + ENDIF + 10 CONTINUE +C + 20 CONTINUE + DO30i=1,1000 + IF(b(i)/=7)THEN + WRITE(6,*)"NG" + WRITE(6,*)"ELEMENT NUMBER = B(",i,")" + code=1 + GOTO40 + ENDIF + 30 CONTINUE +C + 40 CONTINUE + DO50i=1,1000 + IF(c(i)/=11)THEN + WRITE(6,*)"NG" + WRITE(6,*)"ELEMENT NUMBER = C(",i,")" + code=1 + GOTO60 + ENDIF + 50 CONTINUE +C + 60 CONTINUE + RETURN + END diff --git a/FortranParser/resources-test/fortran/parser/fujitsu/0001/0001_0011.f b/FortranParser/resources-test/fortran/parser/fujitsu/0001/0001_0011.f new file mode 100644 index 00000000..26bafd10 --- /dev/null +++ b/FortranParser/resources-test/fortran/parser/fujitsu/0001/0001_0011.f @@ -0,0 +1,47 @@ + INTEGER A(1000),B(1000),C(1000),D(1000),E(1000),F(1000),CODE + DATA A/1000*1/,B/1000*2/,C/1000*3/,D/1000*4/,E/1000*5/,F/1000*6/ +C + CODE = 0 + CALL SUB1(A+B,C+D,E+F,CODE) +C + IF(CODE.EQ.0) WRITE(6,*) 'OK' +C + STOP + END +C +C + SUBROUTINE SUB1(A,B,C,CODE) + INTEGER A(1000),B(1000),C(1000),CODE +C + DO 10 I=1,1000 + IF(A(I).NE.3) THEN + WRITE(6,*) 'NG' + WRITE(6,*) 'ELEMENT NUMBER = A(',I,')' + CODE = 1 + GO TO 20 + ENDIF + 10 CONTINUE +C + 20 CONTINUE + DO 30 I=1,1000 + IF(B(I).NE.7) THEN + WRITE(6,*) 'NG' + WRITE(6,*) 'ELEMENT NUMBER = B(',I,')' + CODE = 1 + GO TO 40 + ENDIF + 30 CONTINUE +C + 40 CONTINUE + DO 50 I=1,1000 + IF(C(I).NE.11) THEN + WRITE(6,*) 'NG' + WRITE(6,*) 'ELEMENT NUMBER = C(',I,')' + CODE = 1 + GO TO 60 + ENDIF + 50 CONTINUE +C + 60 CONTINUE + RETURN + END diff --git a/FortranParser/resources-test/fortran/parser/fujitsu/0001/0001_0011.json b/FortranParser/resources-test/fortran/parser/fujitsu/0001/0001_0011.json new file mode 100644 index 00000000..bb151a6b --- /dev/null +++ b/FortranParser/resources-test/fortran/parser/fujitsu/0001/0001_0011.json @@ -0,0 +1,3472 @@ +{ + "fileExtension": "f", + "nodes": [ + { + "id": "0x560429337f00-Program", + "ProgramUnit": [ + "0x5604293732b0-ProgramUnit", + "0x560429372560-ProgramUnit" + ] + }, + { + "id": "0x5604293732b0-ProgramUnit", + "variantKey": "MainProgram", + "MainProgram": "0x560429374cc0-MainProgram" + }, + { + "id": "0x560429374cc0-MainProgram", + "SpecificationPart": "0x560429374d60-SpecificationPart", + "ExecutionPart": "0x560429374d48-ExecutionPart", + "Statement": "0x560429374cc0-Statement" + }, + { + "id": "0x560429374d60-SpecificationPart", + "ImplicitPart": "0x560429374d78-ImplicitPart", + "DeclarationConstruct": [ + "0x560429364cb0-DeclarationConstruct", + "0x560429366810-DeclarationConstruct" + ] + }, + { + "id": "0x560429374d78-ImplicitPart" + }, + { + "id": "0x560429364cb0-DeclarationConstruct", + "variantKey": "SpecificationConstruct", + "SpecificationConstruct": "0x560429364cb0-SpecificationConstruct" + }, + { + "id": "0x560429364cb0-SpecificationConstruct", + "variantKey": "Statement", + "Statement": "0x560429364cb0-Statement" + }, + { + "id": "0x560429364cb0-Statement", + "statement": "0x560429374b30-TypeDeclarationStmt", + "source": "integera(1000),b(1000),c(1000),d(1000),e(1000),f(1000),code" + }, + { + "id": "0x560429374b30-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x560429374b60-DeclarationTypeSpec", + "EntityDecl": [ + "0x560429364550-EntityDecl", + "0x560429363c50-EntityDecl", + "0x5604293747a0-EntityDecl", + "0x5604293635b0-EntityDecl", + "0x5604293638c0-EntityDecl", + "0x560429364370-EntityDecl", + "0x560429364460-EntityDecl" + ] + }, + { + "id": "0x560429374b60-DeclarationTypeSpec", + "variantKey": "IntrinsicTypeSpec", + "IntrinsicTypeSpec": "0x560429374b60-IntrinsicTypeSpec" + }, + { + "id": "0x560429374b60-IntrinsicTypeSpec", + "variantKey": "IntegerTypeSpec", + "IntegerTypeSpec": "0x560429374b60-IntegerTypeSpec" + }, + { + "id": "0x560429374b60-IntegerTypeSpec" + }, + { + "id": "0x560429364550-EntityDecl", + "Name": "0x560429364608-Name", + "ArraySpec": "0x5604293645d0-ArraySpec" + }, + { + "id": "0x560429364608-Name", + "source": "a" + }, + { + "id": "0x5604293645d0-ArraySpec", + "variantKey": "ExplicitShapeSpec", + "ExplicitShapeSpec": [ + "0x5604293761c0-ExplicitShapeSpec" + ] + }, + { + "id": "0x5604293761c0-ExplicitShapeSpec", + "upper_bound": "0x5604293761c0-SpecificationExpr" + }, + { + "id": "0x5604293761c0-SpecificationExpr", + "Expr": "0x5604292d7790-Expr" + }, + { + "id": "0x5604292d7790-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x5604292d77b0-LiteralConstant" + }, + { + "id": "0x5604292d77b0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x5604292d77b0-IntLiteralConstant" + }, + { + "id": "0x5604292d77b0-IntLiteralConstant", + "CharBlock": "1000" + }, + { + "id": "0x560429363c50-EntityDecl", + "Name": "0x560429363d08-Name", + "ArraySpec": "0x560429363cd0-ArraySpec" + }, + { + "id": "0x560429363d08-Name", + "source": "b" + }, + { + "id": "0x560429363cd0-ArraySpec", + "variantKey": "ExplicitShapeSpec", + "ExplicitShapeSpec": [ + "0x5604293761f0-ExplicitShapeSpec" + ] + }, + { + "id": "0x5604293761f0-ExplicitShapeSpec", + "upper_bound": "0x5604293761f0-SpecificationExpr" + }, + { + "id": "0x5604293761f0-SpecificationExpr", + "Expr": "0x5604292ed1d0-Expr" + }, + { + "id": "0x5604292ed1d0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x5604292ed1f0-LiteralConstant" + }, + { + "id": "0x5604292ed1f0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x5604292ed1f0-IntLiteralConstant" + }, + { + "id": "0x5604292ed1f0-IntLiteralConstant", + "CharBlock": "1000" + }, + { + "id": "0x5604293747a0-EntityDecl", + "Name": "0x560429374858-Name", + "ArraySpec": "0x560429374820-ArraySpec" + }, + { + "id": "0x560429374858-Name", + "source": "c" + }, + { + "id": "0x560429374820-ArraySpec", + "variantKey": "ExplicitShapeSpec", + "ExplicitShapeSpec": [ + "0x560429376220-ExplicitShapeSpec" + ] + }, + { + "id": "0x560429376220-ExplicitShapeSpec", + "upper_bound": "0x560429376220-SpecificationExpr" + }, + { + "id": "0x560429376220-SpecificationExpr", + "Expr": "0x5604293746b0-Expr" + }, + { + "id": "0x5604293746b0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x5604293746d0-LiteralConstant" + }, + { + "id": "0x5604293746d0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x5604293746d0-IntLiteralConstant" + }, + { + "id": "0x5604293746d0-IntLiteralConstant", + "CharBlock": "1000" + }, + { + "id": "0x5604293635b0-EntityDecl", + "Name": "0x560429363668-Name", + "ArraySpec": "0x560429363630-ArraySpec" + }, + { + "id": "0x560429363668-Name", + "source": "d" + }, + { + "id": "0x560429363630-ArraySpec", + "variantKey": "ExplicitShapeSpec", + "ExplicitShapeSpec": [ + "0x560429376270-ExplicitShapeSpec" + ] + }, + { + "id": "0x560429376270-ExplicitShapeSpec", + "upper_bound": "0x560429376270-SpecificationExpr" + }, + { + "id": "0x560429376270-SpecificationExpr", + "Expr": "0x5604293634c0-Expr" + }, + { + "id": "0x5604293634c0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x5604293634e0-LiteralConstant" + }, + { + "id": "0x5604293634e0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x5604293634e0-IntLiteralConstant" + }, + { + "id": "0x5604293634e0-IntLiteralConstant", + "CharBlock": "1000" + }, + { + "id": "0x5604293638c0-EntityDecl", + "Name": "0x560429363978-Name", + "ArraySpec": "0x560429363940-ArraySpec" + }, + { + "id": "0x560429363978-Name", + "source": "e" + }, + { + "id": "0x560429363940-ArraySpec", + "variantKey": "ExplicitShapeSpec", + "ExplicitShapeSpec": [ + "0x560429376380-ExplicitShapeSpec" + ] + }, + { + "id": "0x560429376380-ExplicitShapeSpec", + "upper_bound": "0x560429376380-SpecificationExpr" + }, + { + "id": "0x560429376380-SpecificationExpr", + "Expr": "0x560429363f80-Expr" + }, + { + "id": "0x560429363f80-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x560429363fa0-LiteralConstant" + }, + { + "id": "0x560429363fa0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x560429363fa0-IntLiteralConstant" + }, + { + "id": "0x560429363fa0-IntLiteralConstant", + "CharBlock": "1000" + }, + { + "id": "0x560429364370-EntityDecl", + "Name": "0x560429364428-Name", + "ArraySpec": "0x5604293643f0-ArraySpec" + }, + { + "id": "0x560429364428-Name", + "source": "f" + }, + { + "id": "0x5604293643f0-ArraySpec", + "variantKey": "ExplicitShapeSpec", + "ExplicitShapeSpec": [ + "0x5604293763b0-ExplicitShapeSpec" + ] + }, + { + "id": "0x5604293763b0-ExplicitShapeSpec", + "upper_bound": "0x5604293763b0-SpecificationExpr" + }, + { + "id": "0x5604293763b0-SpecificationExpr", + "Expr": "0x560429364280-Expr" + }, + { + "id": "0x560429364280-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x5604293642a0-LiteralConstant" + }, + { + "id": "0x5604293642a0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x5604293642a0-IntLiteralConstant" + }, + { + "id": "0x5604293642a0-IntLiteralConstant", + "CharBlock": "1000" + }, + { + "id": "0x560429364460-EntityDecl", + "Name": "0x560429364518-Name" + }, + { + "id": "0x560429364518-Name", + "source": "code" + }, + { + "id": "0x560429366810-DeclarationConstruct", + "variantKey": "Statement", + "Statement": "0x560429366810-Statement" + }, + { + "id": "0x560429366810-Statement", + "statement": "0x560429376110-DataStmt", + "source": "dataa/1000*1/,b/1000*2/,c/1000*3/,d/1000*4/,e/1000*5/,f/1000*6/" + }, + { + "id": "0x560429376110-DataStmt", + "DataStmtSet": [ + "0x56042936ee30-DataStmtSet", + "0x56042936e1e0-DataStmtSet", + "0x56042937bb20-DataStmtSet", + "0x560429374ab0-DataStmtSet", + "0x56042936ec50-DataStmtSet", + "0x56042936efd0-DataStmtSet" + ] + }, + { + "id": "0x56042936ee30-DataStmtSet", + "DataStmtObject": [ + "0x5604293646e0-DataStmtObject" + ], + "DataStmtValue": [ + "0x560429364e10-DataStmtValue" + ] + }, + { + "id": "0x5604293646e0-DataStmtObject", + "variantKey": "Variable", + "Variable": "0x5604293763f0-Variable" + }, + { + "id": "0x5604293763f0-Variable", + "variantKey": "Designator", + "Designator": "0x560429344d90-Designator" + }, + { + "id": "0x560429344d90-Designator", + "variantKey": "DataRef", + "DataRef": "0x560429344da0-DataRef" + }, + { + "id": "0x560429344da0-DataRef", + "variantKey": "Name", + "Name": "0x560429344da0-Name" + }, + { + "id": "0x560429344da0-Name", + "source": "a" + }, + { + "id": "0x560429364e10-DataStmtValue", + "DataStmtRepeat": "0x560429364ee8-DataStmtRepeat", + "DataStmtConstant": "0x560429364e18-DataStmtConstant" + }, + { + "id": "0x560429364ee8-DataStmtRepeat", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x560429364ee8-IntLiteralConstant" + }, + { + "id": "0x560429364ee8-IntLiteralConstant", + "CharBlock": "1000" + }, + { + "id": "0x560429364e18-DataStmtConstant", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x560429364e38-LiteralConstant" + }, + { + "id": "0x560429364e38-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x560429364e38-IntLiteralConstant" + }, + { + "id": "0x560429364e38-IntLiteralConstant", + "CharBlock": "1" + }, + { + "id": "0x56042936e1e0-DataStmtSet", + "DataStmtObject": [ + "0x560429363e70-DataStmtObject" + ], + "DataStmtValue": [ + "0x560429364f50-DataStmtValue" + ] + }, + { + "id": "0x560429363e70-DataStmtObject", + "variantKey": "Variable", + "Variable": "0x5604293736a0-Variable" + }, + { + "id": "0x5604293736a0-Variable", + "variantKey": "Designator", + "Designator": "0x560429364060-Designator" + }, + { + "id": "0x560429364060-Designator", + "variantKey": "DataRef", + "DataRef": "0x560429364070-DataRef" + }, + { + "id": "0x560429364070-DataRef", + "variantKey": "Name", + "Name": "0x560429364070-Name" + }, + { + "id": "0x560429364070-Name", + "source": "b" + }, + { + "id": "0x560429364f50-DataStmtValue", + "DataStmtRepeat": "0x560429365028-DataStmtRepeat", + "DataStmtConstant": "0x560429364f58-DataStmtConstant" + }, + { + "id": "0x560429365028-DataStmtRepeat", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x560429365028-IntLiteralConstant" + }, + { + "id": "0x560429365028-IntLiteralConstant", + "CharBlock": "1000" + }, + { + "id": "0x560429364f58-DataStmtConstant", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x560429364f78-LiteralConstant" + }, + { + "id": "0x560429364f78-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x560429364f78-IntLiteralConstant" + }, + { + "id": "0x560429364f78-IntLiteralConstant", + "CharBlock": "2" + }, + { + "id": "0x56042937bb20-DataStmtSet", + "DataStmtObject": [ + "0x560429363f00-DataStmtObject" + ], + "DataStmtValue": [ + "0x560429365210-DataStmtValue" + ] + }, + { + "id": "0x560429363f00-DataStmtObject", + "variantKey": "Variable", + "Variable": "0x560429372cf0-Variable" + }, + { + "id": "0x560429372cf0-Variable", + "variantKey": "Designator", + "Designator": "0x560429365140-Designator" + }, + { + "id": "0x560429365140-Designator", + "variantKey": "DataRef", + "DataRef": "0x560429365150-DataRef" + }, + { + "id": "0x560429365150-DataRef", + "variantKey": "Name", + "Name": "0x560429365150-Name" + }, + { + "id": "0x560429365150-Name", + "source": "c" + }, + { + "id": "0x560429365210-DataStmtValue", + "DataStmtRepeat": "0x5604293652e8-DataStmtRepeat", + "DataStmtConstant": "0x560429365218-DataStmtConstant" + }, + { + "id": "0x5604293652e8-DataStmtRepeat", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x5604293652e8-IntLiteralConstant" + }, + { + "id": "0x5604293652e8-IntLiteralConstant", + "CharBlock": "1000" + }, + { + "id": "0x560429365218-DataStmtConstant", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x560429365238-LiteralConstant" + }, + { + "id": "0x560429365238-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x560429365238-IntLiteralConstant" + }, + { + "id": "0x560429365238-IntLiteralConstant", + "CharBlock": "3" + }, + { + "id": "0x560429374ab0-DataStmtSet", + "DataStmtObject": [ + "0x5604292ed0c0-DataStmtObject" + ], + "DataStmtValue": [ + "0x560429365690-DataStmtValue" + ] + }, + { + "id": "0x5604292ed0c0-DataStmtObject", + "variantKey": "Variable", + "Variable": "0x560429372ee0-Variable" + }, + { + "id": "0x560429372ee0-Variable", + "variantKey": "Designator", + "Designator": "0x560429365400-Designator" + }, + { + "id": "0x560429365400-Designator", + "variantKey": "DataRef", + "DataRef": "0x560429365410-DataRef" + }, + { + "id": "0x560429365410-DataRef", + "variantKey": "Name", + "Name": "0x560429365410-Name" + }, + { + "id": "0x560429365410-Name", + "source": "d" + }, + { + "id": "0x560429365690-DataStmtValue", + "DataStmtRepeat": "0x560429365768-DataStmtRepeat", + "DataStmtConstant": "0x560429365698-DataStmtConstant" + }, + { + "id": "0x560429365768-DataStmtRepeat", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x560429365768-IntLiteralConstant" + }, + { + "id": "0x560429365768-IntLiteralConstant", + "CharBlock": "1000" + }, + { + "id": "0x560429365698-DataStmtConstant", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x5604293656b8-LiteralConstant" + }, + { + "id": "0x5604293656b8-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x5604293656b8-IntLiteralConstant" + }, + { + "id": "0x5604293656b8-IntLiteralConstant", + "CharBlock": "4" + }, + { + "id": "0x56042936ec50-DataStmtSet", + "DataStmtObject": [ + "0x560429364890-DataStmtObject" + ], + "DataStmtValue": [ + "0x560429365cd0-DataStmtValue" + ] + }, + { + "id": "0x560429364890-DataStmtObject", + "variantKey": "Variable", + "Variable": "0x560429372f90-Variable" + }, + { + "id": "0x560429372f90-Variable", + "variantKey": "Designator", + "Designator": "0x560429365a40-Designator" + }, + { + "id": "0x560429365a40-Designator", + "variantKey": "DataRef", + "DataRef": "0x560429365a50-DataRef" + }, + { + "id": "0x560429365a50-DataRef", + "variantKey": "Name", + "Name": "0x560429365a50-Name" + }, + { + "id": "0x560429365a50-Name", + "source": "e" + }, + { + "id": "0x560429365cd0-DataStmtValue", + "DataStmtRepeat": "0x560429365da8-DataStmtRepeat", + "DataStmtConstant": "0x560429365cd8-DataStmtConstant" + }, + { + "id": "0x560429365da8-DataStmtRepeat", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x560429365da8-IntLiteralConstant" + }, + { + "id": "0x560429365da8-IntLiteralConstant", + "CharBlock": "1000" + }, + { + "id": "0x560429365cd8-DataStmtConstant", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x560429365cf8-LiteralConstant" + }, + { + "id": "0x560429365cf8-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x560429365cf8-IntLiteralConstant" + }, + { + "id": "0x560429365cf8-IntLiteralConstant", + "CharBlock": "5" + }, + { + "id": "0x56042936efd0-DataStmtSet", + "DataStmtObject": [ + "0x560429364800-DataStmtObject" + ], + "DataStmtValue": [ + "0x560429366310-DataStmtValue" + ] + }, + { + "id": "0x560429364800-DataStmtObject", + "variantKey": "Variable", + "Variable": "0x5604293730a0-Variable" + }, + { + "id": "0x5604293730a0-Variable", + "variantKey": "Designator", + "Designator": "0x560429366080-Designator" + }, + { + "id": "0x560429366080-Designator", + "variantKey": "DataRef", + "DataRef": "0x560429366090-DataRef" + }, + { + "id": "0x560429366090-DataRef", + "variantKey": "Name", + "Name": "0x560429366090-Name" + }, + { + "id": "0x560429366090-Name", + "source": "f" + }, + { + "id": "0x560429366310-DataStmtValue", + "DataStmtRepeat": "0x5604293663e8-DataStmtRepeat", + "DataStmtConstant": "0x560429366318-DataStmtConstant" + }, + { + "id": "0x5604293663e8-DataStmtRepeat", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x5604293663e8-IntLiteralConstant" + }, + { + "id": "0x5604293663e8-IntLiteralConstant", + "CharBlock": "1000" + }, + { + "id": "0x560429366318-DataStmtConstant", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x560429366338-LiteralConstant" + }, + { + "id": "0x560429366338-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x560429366338-IntLiteralConstant" + }, + { + "id": "0x560429366338-IntLiteralConstant", + "CharBlock": "6" + }, + { + "id": "0x560429374d48-ExecutionPart", + "ExecutionPartConstruct": [ + "0x560429366160-ExecutionPartConstruct", + "0x560429368750-ExecutionPartConstruct", + "0x560429365b20-ExecutionPartConstruct", + "0x560429366740-ExecutionPartConstruct" + ] + }, + { + "id": "0x560429374d48-ExecutionPartConstruct" + }, + { + "id": "0x560429366160-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x560429366160-ExecutableConstruct" + }, + { + "id": "0x560429366160-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x560429366160-Statement" + }, + { + "id": "0x560429366160-Statement", + "statement": "0x560429366170-ActionStmt", + "source": "code=0" + }, + { + "id": "0x560429366170-ActionStmt", + "variantKey": "AssignmentStmt", + "AssignmentStmt": "0x560429345cf0-AssignmentStmt" + }, + { + "id": "0x560429345cf0-AssignmentStmt", + "Variable": "0x560429345dd0-Variable", + "Expr": "0x560429345d00-Expr" + }, + { + "id": "0x560429345dd0-Variable", + "variantKey": "Designator", + "Designator": "0x5604293657c0-Designator" + }, + { + "id": "0x5604293657c0-Designator", + "variantKey": "DataRef", + "DataRef": "0x5604293657d0-DataRef" + }, + { + "id": "0x5604293657d0-DataRef", + "variantKey": "Name", + "Name": "0x5604293657d0-Name" + }, + { + "id": "0x5604293657d0-Name", + "source": "code" + }, + { + "id": "0x560429345d00-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x560429345d20-LiteralConstant" + }, + { + "id": "0x560429345d20-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x560429345d20-IntLiteralConstant" + }, + { + "id": "0x560429345d20-IntLiteralConstant", + "CharBlock": "0" + }, + { + "id": "0x560429368750-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x560429368750-ExecutableConstruct" + }, + { + "id": "0x560429368750-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x560429368750-Statement" + }, + { + "id": "0x560429368750-Statement", + "statement": "0x560429368760-ActionStmt", + "source": "callsub1(a+b,c+d,e+f,code)" + }, + { + "id": "0x560429368760-ActionStmt", + "variantKey": "CallStmt", + "CallStmt": "0x56042936ee70-CallStmt" + }, + { + "id": "0x56042936ee70-CallStmt", + "call": "0x56042936ee70-Call" + }, + { + "id": "0x56042936ee70-Call", + "ProcedureDesignator": "0x56042936ee88-ProcedureDesignator", + "ActualArgSpec": [ + "0x560429368340-ActualArgSpec", + "0x560429368230-ActualArgSpec", + "0x560429368040-ActualArgSpec", + "0x560429367e50-ActualArgSpec" + ] + }, + { + "id": "0x56042936ee88-ProcedureDesignator", + "variantKey": "Name", + "Name": "0x56042936ee88-Name" + }, + { + "id": "0x56042936ee88-Name", + "source": "sub1" + }, + { + "id": "0x560429368340-ActualArgSpec", + "ActualArg": "0x560429368340-ActualArg" + }, + { + "id": "0x560429368340-ActualArg", + "variantKey": "Expr", + "Expr": "0x560429366d00-Expr" + }, + { + "id": "0x560429366d00-Expr", + "variantKey": "Add", + "Add": "0x560429366d20-Add" + }, + { + "id": "0x560429366d20-Add", + "left": "0x560429366bb0-Expr", + "right": "0x560429366a20-Expr", + "op": "ADD" + }, + { + "id": "0x560429366bb0-Expr", + "variantKey": "Designator", + "Designator": "0x5604293364d0-Designator" + }, + { + "id": "0x5604293364d0-Designator", + "variantKey": "DataRef", + "DataRef": "0x5604293364e0-DataRef" + }, + { + "id": "0x5604293364e0-DataRef", + "variantKey": "Name", + "Name": "0x5604293364e0-Name" + }, + { + "id": "0x5604293364e0-Name", + "source": "a" + }, + { + "id": "0x560429366a20-Expr", + "variantKey": "Designator", + "Designator": "0x560429367b00-Designator" + }, + { + "id": "0x560429367b00-Designator", + "variantKey": "DataRef", + "DataRef": "0x560429367b10-DataRef" + }, + { + "id": "0x560429367b10-DataRef", + "variantKey": "Name", + "Name": "0x560429367b10-Name" + }, + { + "id": "0x560429367b10-Name", + "source": "b" + }, + { + "id": "0x560429368230-ActualArgSpec", + "ActualArg": "0x560429368230-ActualArg" + }, + { + "id": "0x560429368230-ActualArg", + "variantKey": "Expr", + "Expr": "0x560429366940-Expr" + }, + { + "id": "0x560429366940-Expr", + "variantKey": "Add", + "Add": "0x560429366960-Add" + }, + { + "id": "0x560429366960-Add", + "left": "0x560429366860-Expr", + "right": "0x5604293673f0-Expr", + "op": "ADD" + }, + { + "id": "0x560429366860-Expr", + "variantKey": "Designator", + "Designator": "0x560429365ed0-Designator" + }, + { + "id": "0x560429365ed0-Designator", + "variantKey": "DataRef", + "DataRef": "0x560429365ee0-DataRef" + }, + { + "id": "0x560429365ee0-DataRef", + "variantKey": "Name", + "Name": "0x560429365ee0-Name" + }, + { + "id": "0x560429365ee0-Name", + "source": "c" + }, + { + "id": "0x5604293673f0-Expr", + "variantKey": "Designator", + "Designator": "0x5604293651a0-Designator" + }, + { + "id": "0x5604293651a0-Designator", + "variantKey": "DataRef", + "DataRef": "0x5604293651b0-DataRef" + }, + { + "id": "0x5604293651b0-DataRef", + "variantKey": "Name", + "Name": "0x5604293651b0-Name" + }, + { + "id": "0x5604293651b0-Name", + "source": "d" + }, + { + "id": "0x560429368040-ActualArgSpec", + "ActualArg": "0x560429368040-ActualArg" + }, + { + "id": "0x560429368040-ActualArg", + "variantKey": "Expr", + "Expr": "0x560429366de0-Expr" + }, + { + "id": "0x560429366de0-Expr", + "variantKey": "Add", + "Add": "0x560429366e00-Add" + }, + { + "id": "0x560429366e00-Add", + "left": "0x5604293675c0-Expr", + "right": "0x560429367bd0-Expr", + "op": "ADD" + }, + { + "id": "0x5604293675c0-Expr", + "variantKey": "Designator", + "Designator": "0x5604292ed320-Designator" + }, + { + "id": "0x5604292ed320-Designator", + "variantKey": "DataRef", + "DataRef": "0x5604292ed330-DataRef" + }, + { + "id": "0x5604292ed330-DataRef", + "variantKey": "Name", + "Name": "0x5604292ed330-Name" + }, + { + "id": "0x5604292ed330-Name", + "source": "e" + }, + { + "id": "0x560429367bd0-Expr", + "variantKey": "Designator", + "Designator": "0x5604293654d0-Designator" + }, + { + "id": "0x5604293654d0-Designator", + "variantKey": "DataRef", + "DataRef": "0x5604293654e0-DataRef" + }, + { + "id": "0x5604293654e0-DataRef", + "variantKey": "Name", + "Name": "0x5604293654e0-Name" + }, + { + "id": "0x5604293654e0-Name", + "source": "f" + }, + { + "id": "0x560429367e50-ActualArgSpec", + "ActualArg": "0x560429367e50-ActualArg" + }, + { + "id": "0x560429367e50-ActualArg", + "variantKey": "Expr", + "Expr": "0x560429368590-Expr" + }, + { + "id": "0x560429368590-Expr", + "variantKey": "Designator", + "Designator": "0x560429366ec0-Designator" + }, + { + "id": "0x560429366ec0-Designator", + "variantKey": "DataRef", + "DataRef": "0x560429366ed0-DataRef" + }, + { + "id": "0x560429366ed0-DataRef", + "variantKey": "Name", + "Name": "0x560429366ed0-Name" + }, + { + "id": "0x560429366ed0-Name", + "source": "code" + }, + { + "id": "0x560429365b20-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x560429365b20-ExecutableConstruct" + }, + { + "id": "0x560429365b20-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x560429365b20-Statement" + }, + { + "id": "0x560429365b20-Statement", + "statement": "0x560429365b30-ActionStmt", + "source": "if(code.eq.0)write(6,*)'OK'" + }, + { + "id": "0x560429365b30-ActionStmt", + "variantKey": "IfStmt", + "IfStmt": "0x560429373230-IfStmt" + }, + { + "id": "0x560429373230-IfStmt", + "Expr": "0x560429368880-Expr", + "UnlabeledStatement": "0x560429373230-UnlabeledStatement" + }, + { + "id": "0x560429368880-Expr", + "variantKey": "EQ", + "EQ": "0x5604293688a0-EQ" + }, + { + "id": "0x5604293688a0-EQ", + "left": "0x5604293687a0-Expr", + "right": "0x560429368960-Expr", + "op": "EQ" + }, + { + "id": "0x5604293687a0-Expr", + "variantKey": "Designator", + "Designator": "0x5604293650e0-Designator" + }, + { + "id": "0x5604293650e0-Designator", + "variantKey": "DataRef", + "DataRef": "0x5604293650f0-DataRef" + }, + { + "id": "0x5604293650f0-DataRef", + "variantKey": "Name", + "Name": "0x5604293650f0-Name" + }, + { + "id": "0x5604293650f0-Name", + "source": "code" + }, + { + "id": "0x560429368960-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x560429368980-LiteralConstant" + }, + { + "id": "0x560429368980-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x560429368980-IntLiteralConstant" + }, + { + "id": "0x560429368980-IntLiteralConstant", + "CharBlock": "0" + }, + { + "id": "0x560429373230-UnlabeledStatement", + "statement": "0x560429373240-ActionStmt", + "source": "write(6,*)'OK'" + }, + { + "id": "0x560429373240-ActionStmt", + "variantKey": "WriteStmt", + "WriteStmt": "0x560429369570-WriteStmt" + }, + { + "id": "0x560429369570-WriteStmt", + "iounit": "0x560429369570-IoUnit", + "format": "0x5604293695a0-Format", + "controls": [], + "items": [ + "0x560429369420-OutputItem" + ] + }, + { + "id": "0x560429369570-IoUnit", + "variantKey": "Expr", + "Expr": "0x560429368b50-Expr" + }, + { + "id": "0x560429368b50-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x560429368b70-LiteralConstant" + }, + { + "id": "0x560429368b70-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x560429368b70-IntLiteralConstant" + }, + { + "id": "0x560429368b70-IntLiteralConstant", + "CharBlock": "6" + }, + { + "id": "0x5604293695a0-Format", + "variantKey": "Star", + "Star": "0x5604293695a0-Star" + }, + { + "id": "0x5604293695a0-Star" + }, + { + "id": "0x560429369420-OutputItem", + "variantKey": "Expr", + "Expr": "0x560429369420-Expr" + }, + { + "id": "0x560429369420-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x560429369440-LiteralConstant" + }, + { + "id": "0x560429369440-LiteralConstant", + "variantKey": "CharLiteralConstant", + "CharLiteralConstant": "0x560429369440-CharLiteralConstant" + }, + { + "id": "0x560429369440-CharLiteralConstant", + "string": "OK" + }, + { + "id": "0x560429366740-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x560429366740-ExecutableConstruct" + }, + { + "id": "0x560429366740-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x560429366740-Statement" + }, + { + "id": "0x560429366740-Statement", + "statement": "0x560429366750-ActionStmt", + "source": "stop" + }, + { + "id": "0x560429366750-ActionStmt", + "variantKey": "StopStmt", + "StopStmt": "0x5604293697a0-StopStmt" + }, + { + "id": "0x5604293697a0-StopStmt", + "kind": "0x560429369888-Kind = Stop" + }, + { + "id": "0x560429369888-Kind = Stop", + "disambiguation": "Fortran::parser::StopStmt::Kind", + "value": "Stop" + }, + { + "id": "0x560429374cc0-Statement", + "statement": "0x560429374cd0-EndProgramStmt", + "source": "end" + }, + { + "id": "0x560429374cd0-EndProgramStmt" + }, + { + "id": "0x560429372560-ProgramUnit", + "variantKey": "SubroutineSubprogram", + "SubroutineSubprogram": "0x56042937ea00-SubroutineSubprogram" + }, + { + "id": "0x56042937ea00-SubroutineSubprogram", + "Statement": "0x56042937eb48-Statement", + "SpecificationPart": "0x56042937eaa0-SpecificationPart", + "ExecutionPart": "0x56042937ea88-ExecutionPart", + "Statement": "0x56042937ea00-Statement" + }, + { + "id": "0x56042937eb48-Statement", + "statement": "0x56042937eb58-SubroutineStmt", + "source": "subroutinesub1(a,b,c,code)" + }, + { + "id": "0x56042937eb58-SubroutineStmt", + "Name": "0x56042937eb90-Name", + "DummyArg": [ + "0x560429375a70-DummyArg", + "0x560429373920-DummyArg", + "0x560429374000-DummyArg", + "0x5604293740c0-DummyArg" + ] + }, + { + "id": "0x56042937eb90-Name", + "source": "sub1" + }, + { + "id": "0x560429375a70-DummyArg", + "variantKey": "Name", + "Name": "0x560429375a70-Name" + }, + { + "id": "0x560429375a70-Name", + "source": "a" + }, + { + "id": "0x560429373920-DummyArg", + "variantKey": "Name", + "Name": "0x560429373920-Name" + }, + { + "id": "0x560429373920-Name", + "source": "b" + }, + { + "id": "0x560429374000-DummyArg", + "variantKey": "Name", + "Name": "0x560429374000-Name" + }, + { + "id": "0x560429374000-Name", + "source": "c" + }, + { + "id": "0x5604293740c0-DummyArg", + "variantKey": "Name", + "Name": "0x5604293740c0-Name" + }, + { + "id": "0x5604293740c0-Name", + "source": "code" + }, + { + "id": "0x56042937eaa0-SpecificationPart", + "ImplicitPart": "0x56042937eab8-ImplicitPart", + "DeclarationConstruct": [ + "0x5604293658a0-DeclarationConstruct" + ] + }, + { + "id": "0x56042937eab8-ImplicitPart" + }, + { + "id": "0x5604293658a0-DeclarationConstruct", + "variantKey": "SpecificationConstruct", + "SpecificationConstruct": "0x5604293658a0-SpecificationConstruct" + }, + { + "id": "0x5604293658a0-SpecificationConstruct", + "variantKey": "Statement", + "Statement": "0x5604293658a0-Statement" + }, + { + "id": "0x5604293658a0-Statement", + "statement": "0x560429366f20-TypeDeclarationStmt", + "source": "integera(1000),b(1000),c(1000),code" + }, + { + "id": "0x560429366f20-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x560429366f50-DeclarationTypeSpec", + "EntityDecl": [ + "0x560429369a30-EntityDecl", + "0x5604293676b0-EntityDecl", + "0x560429369ce0-EntityDecl", + "0x560429369940-EntityDecl" + ] + }, + { + "id": "0x560429366f50-DeclarationTypeSpec", + "variantKey": "IntrinsicTypeSpec", + "IntrinsicTypeSpec": "0x560429366f50-IntrinsicTypeSpec" + }, + { + "id": "0x560429366f50-IntrinsicTypeSpec", + "variantKey": "IntegerTypeSpec", + "IntegerTypeSpec": "0x560429366f50-IntegerTypeSpec" + }, + { + "id": "0x560429366f50-IntegerTypeSpec" + }, + { + "id": "0x560429369a30-EntityDecl", + "Name": "0x560429369ae8-Name", + "ArraySpec": "0x560429369ab0-ArraySpec" + }, + { + "id": "0x560429369ae8-Name", + "source": "a" + }, + { + "id": "0x560429369ab0-ArraySpec", + "variantKey": "ExplicitShapeSpec", + "ExplicitShapeSpec": [ + "0x560429373520-ExplicitShapeSpec" + ] + }, + { + "id": "0x560429373520-ExplicitShapeSpec", + "upper_bound": "0x560429373520-SpecificationExpr" + }, + { + "id": "0x560429373520-SpecificationExpr", + "Expr": "0x56042936a400-Expr" + }, + { + "id": "0x56042936a400-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x56042936a420-LiteralConstant" + }, + { + "id": "0x56042936a420-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x56042936a420-IntLiteralConstant" + }, + { + "id": "0x56042936a420-IntLiteralConstant", + "CharBlock": "1000" + }, + { + "id": "0x5604293676b0-EntityDecl", + "Name": "0x560429367768-Name", + "ArraySpec": "0x560429367730-ArraySpec" + }, + { + "id": "0x560429367768-Name", + "source": "b" + }, + { + "id": "0x560429367730-ArraySpec", + "variantKey": "ExplicitShapeSpec", + "ExplicitShapeSpec": [ + "0x560429372c50-ExplicitShapeSpec" + ] + }, + { + "id": "0x560429372c50-ExplicitShapeSpec", + "upper_bound": "0x560429372c50-SpecificationExpr" + }, + { + "id": "0x560429372c50-SpecificationExpr", + "Expr": "0x560429367140-Expr" + }, + { + "id": "0x560429367140-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x560429367160-LiteralConstant" + }, + { + "id": "0x560429367160-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x560429367160-IntLiteralConstant" + }, + { + "id": "0x560429367160-IntLiteralConstant", + "CharBlock": "1000" + }, + { + "id": "0x560429369ce0-EntityDecl", + "Name": "0x560429369d98-Name", + "ArraySpec": "0x560429369d60-ArraySpec" + }, + { + "id": "0x560429369d98-Name", + "source": "c" + }, + { + "id": "0x560429369d60-ArraySpec", + "variantKey": "ExplicitShapeSpec", + "ExplicitShapeSpec": [ + "0x560429372020-ExplicitShapeSpec" + ] + }, + { + "id": "0x560429372020-ExplicitShapeSpec", + "upper_bound": "0x560429372020-SpecificationExpr" + }, + { + "id": "0x560429372020-SpecificationExpr", + "Expr": "0x560429369bf0-Expr" + }, + { + "id": "0x560429369bf0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x560429369c10-LiteralConstant" + }, + { + "id": "0x560429369c10-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x560429369c10-IntLiteralConstant" + }, + { + "id": "0x560429369c10-IntLiteralConstant", + "CharBlock": "1000" + }, + { + "id": "0x560429369940-EntityDecl", + "Name": "0x5604293699f8-Name" + }, + { + "id": "0x5604293699f8-Name", + "source": "code" + }, + { + "id": "0x56042937ea88-ExecutionPart", + "ExecutionPartConstruct": [ + "0x560429366450-ExecutionPartConstruct", + "0x560429367d10-ExecutionPartConstruct", + "0x56042936d2a0-ExecutionPartConstruct", + "0x56042936d9c0-ExecutionPartConstruct", + "0x560429369fd0-ExecutionPartConstruct", + "0x560429364b40-ExecutionPartConstruct", + "0x56042937d180-ExecutionPartConstruct" + ] + }, + { + "id": "0x56042937ea88-ExecutionPartConstruct" + }, + { + "id": "0x560429366450-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x560429366450-ExecutableConstruct" + }, + { + "id": "0x560429366450-ExecutableConstruct", + "variantKey": "DoConstruct", + "DoConstruct": "0x560429370ca0-DoConstruct" + }, + { + "id": "0x560429370ca0-DoConstruct", + "Statement": "0x560429370cf8-Statement", + "ExecutionPartConstruct": [ + "0x560429365350-ExecutionPartConstruct", + "0x560429368680-ExecutionPartConstruct" + ], + "Statement": "0x560429370ca0-Statement" + }, + { + "id": "0x560429370cf8-Statement", + "statement": "0x560429370d08-NonLabelDoStmt", + "source": "do10i=1,1000" + }, + { + "id": "0x560429370d08-NonLabelDoStmt", + "LoopControl": "0x560429370d08-LoopControl" + }, + { + "id": "0x560429370d08-LoopControl", + "variantKey": "LoopBounds", + "LoopBounds": "0x560429370d08-LoopBounds" + }, + { + "id": "0x560429370d08-LoopBounds", + "var": "0x560429370d08-Name", + "lower": "0x56042936bfc0-Expr", + "upper": "0x56042936c0a0-Expr" + }, + { + "id": "0x560429370d08-Name", + "source": "i" + }, + { + "id": "0x56042936bfc0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x56042936bfe0-LiteralConstant" + }, + { + "id": "0x56042936bfe0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x56042936bfe0-IntLiteralConstant" + }, + { + "id": "0x56042936bfe0-IntLiteralConstant", + "CharBlock": "1" + }, + { + "id": "0x56042936c0a0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x56042936c0c0-LiteralConstant" + }, + { + "id": "0x56042936c0c0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x56042936c0c0-IntLiteralConstant" + }, + { + "id": "0x56042936c0c0-IntLiteralConstant", + "CharBlock": "1000" + }, + { + "id": "0x560429370ce0-ExecutionPartConstruct" + }, + { + "id": "0x560429365350-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x560429365350-ExecutableConstruct" + }, + { + "id": "0x560429365350-ExecutableConstruct", + "variantKey": "IfConstruct", + "IfConstruct": "0x56042930d780-IfConstruct" + }, + { + "id": "0x56042930d780-IfConstruct", + "Statement": "0x56042930d850-Statement", + "ExecutionPartConstruct": [ + "0x560429345110-ExecutionPartConstruct", + "0x560429366670-ExecutionPartConstruct", + "0x560429345170-ExecutionPartConstruct", + "0x5604293674e0-ExecutionPartConstruct" + ], + "Statement": "0x56042930d780-Statement" + }, + { + "id": "0x56042930d850-Statement", + "statement": "0x56042930d860-IfThenStmt", + "source": "if(a(i).ne.3)then" + }, + { + "id": "0x56042930d860-IfThenStmt", + "Expr": "0x56042936b420-Expr" + }, + { + "id": "0x56042936b420-Expr", + "variantKey": "NE", + "NE": "0x56042936b440-NE" + }, + { + "id": "0x56042936b440-NE", + "left": "0x56042936c180-Expr", + "right": "0x56042936b340-Expr", + "op": "NE" + }, + { + "id": "0x56042936c180-Expr", + "variantKey": "Designator", + "Designator": "0x5604293a31c0-Designator" + }, + { + "id": "0x5604293a31c0-Designator", + "variantKey": "DataRef", + "DataRef": "0x5604293a31d0-DataRef" + }, + { + "id": "0x5604293a31d0-DataRef", + "variantKey": "ArrayElement", + "ArrayElement": "0x560429372ea0-ArrayElement" + }, + { + "id": "0x560429372ea0-ArrayElement", + "base": "0x560429372ea0-DataRef", + "subscripts": [ + "0x560429378030-SectionSubscript" + ] + }, + { + "id": "0x560429372ea0-DataRef", + "variantKey": "Name", + "Name": "0x560429372ea0-Name" + }, + { + "id": "0x560429372ea0-Name", + "source": "a" + }, + { + "id": "0x560429378030-SectionSubscript", + "variantKey": "Expr", + "Expr": "0x56042941e230-Expr" + }, + { + "id": "0x56042941e230-Expr", + "variantKey": "Designator", + "Designator": "0x560429364630-Designator" + }, + { + "id": "0x560429364630-Designator", + "variantKey": "DataRef", + "DataRef": "0x560429364640-DataRef" + }, + { + "id": "0x560429364640-DataRef", + "variantKey": "Name", + "Name": "0x560429364640-Name" + }, + { + "id": "0x560429364640-Name", + "source": "i" + }, + { + "id": "0x56042936b340-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x56042936b360-LiteralConstant" + }, + { + "id": "0x56042936b360-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x56042936b360-IntLiteralConstant" + }, + { + "id": "0x56042936b360-IntLiteralConstant", + "CharBlock": "3" + }, + { + "id": "0x56042930d838-ExecutionPartConstruct" + }, + { + "id": "0x560429345110-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x560429345110-ExecutableConstruct" + }, + { + "id": "0x560429345110-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x560429345110-Statement" + }, + { + "id": "0x560429345110-Statement", + "statement": "0x560429345120-ActionStmt", + "source": "write(6,*)'NG'" + }, + { + "id": "0x560429345120-ActionStmt", + "variantKey": "WriteStmt", + "WriteStmt": "0x56042936ca20-WriteStmt" + }, + { + "id": "0x56042936ca20-WriteStmt", + "iounit": "0x56042936ca20-IoUnit", + "format": "0x56042936ca50-Format", + "controls": [], + "items": [ + "0x56042936c940-OutputItem" + ] + }, + { + "id": "0x56042936ca20-IoUnit", + "variantKey": "Expr", + "Expr": "0x56042936c850-Expr" + }, + { + "id": "0x56042936c850-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x56042936c870-LiteralConstant" + }, + { + "id": "0x56042936c870-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x56042936c870-IntLiteralConstant" + }, + { + "id": "0x56042936c870-IntLiteralConstant", + "CharBlock": "6" + }, + { + "id": "0x56042936ca50-Format", + "variantKey": "Star", + "Star": "0x56042936ca50-Star" + }, + { + "id": "0x56042936ca50-Star" + }, + { + "id": "0x56042936c940-OutputItem", + "variantKey": "Expr", + "Expr": "0x56042936c940-Expr" + }, + { + "id": "0x56042936c940-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x56042936c960-LiteralConstant" + }, + { + "id": "0x56042936c960-LiteralConstant", + "variantKey": "CharLiteralConstant", + "CharLiteralConstant": "0x56042936c960-CharLiteralConstant" + }, + { + "id": "0x56042936c960-CharLiteralConstant", + "string": "NG" + }, + { + "id": "0x560429366670-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x560429366670-ExecutableConstruct" + }, + { + "id": "0x560429366670-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x560429366670-Statement" + }, + { + "id": "0x560429366670-Statement", + "statement": "0x560429366680-ActionStmt", + "source": "write(6,*)'ELEMENT NUMBER = A(',i,')'" + }, + { + "id": "0x560429366680-ActionStmt", + "variantKey": "WriteStmt", + "WriteStmt": "0x56042936cf20-WriteStmt" + }, + { + "id": "0x56042936cf20-WriteStmt", + "iounit": "0x56042936cf20-IoUnit", + "format": "0x56042936cf50-Format", + "controls": [], + "items": [ + "0x56042936ce40-OutputItem", + "0x56042936cc60-OutputItem", + "0x56042936cd50-OutputItem" + ] + }, + { + "id": "0x56042936cf20-IoUnit", + "variantKey": "Expr", + "Expr": "0x56042936cb70-Expr" + }, + { + "id": "0x56042936cb70-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x56042936cb90-LiteralConstant" + }, + { + "id": "0x56042936cb90-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x56042936cb90-IntLiteralConstant" + }, + { + "id": "0x56042936cb90-IntLiteralConstant", + "CharBlock": "6" + }, + { + "id": "0x56042936cf50-Format", + "variantKey": "Star", + "Star": "0x56042936cf50-Star" + }, + { + "id": "0x56042936cf50-Star" + }, + { + "id": "0x56042936ce40-OutputItem", + "variantKey": "Expr", + "Expr": "0x56042936ce40-Expr" + }, + { + "id": "0x56042936ce40-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x56042936ce60-LiteralConstant" + }, + { + "id": "0x56042936ce60-LiteralConstant", + "variantKey": "CharLiteralConstant", + "CharLiteralConstant": "0x56042936ce60-CharLiteralConstant" + }, + { + "id": "0x56042936ce60-CharLiteralConstant", + "string": "ELEMENT NUMBER = A(" + }, + { + "id": "0x56042936cc60-OutputItem", + "variantKey": "Expr", + "Expr": "0x56042936cc60-Expr" + }, + { + "id": "0x56042936cc60-Expr", + "variantKey": "Designator", + "Designator": "0x560429363690-Designator" + }, + { + "id": "0x560429363690-Designator", + "variantKey": "DataRef", + "DataRef": "0x5604293636a0-DataRef" + }, + { + "id": "0x5604293636a0-DataRef", + "variantKey": "Name", + "Name": "0x5604293636a0-Name" + }, + { + "id": "0x5604293636a0-Name", + "source": "i" + }, + { + "id": "0x56042936cd50-OutputItem", + "variantKey": "Expr", + "Expr": "0x56042936cd50-Expr" + }, + { + "id": "0x56042936cd50-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x56042936cd70-LiteralConstant" + }, + { + "id": "0x56042936cd70-LiteralConstant", + "variantKey": "CharLiteralConstant", + "CharLiteralConstant": "0x56042936cd70-CharLiteralConstant" + }, + { + "id": "0x56042936cd70-CharLiteralConstant", + "string": ")" + }, + { + "id": "0x560429345170-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x560429345170-ExecutableConstruct" + }, + { + "id": "0x560429345170-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x560429345170-Statement" + }, + { + "id": "0x560429345170-Statement", + "statement": "0x560429345180-ActionStmt", + "source": "code=1" + }, + { + "id": "0x560429345180-ActionStmt", + "variantKey": "AssignmentStmt", + "AssignmentStmt": "0x560429368a40-AssignmentStmt" + }, + { + "id": "0x560429368a40-AssignmentStmt", + "Variable": "0x560429368b20-Variable", + "Expr": "0x560429368a50-Expr" + }, + { + "id": "0x560429368b20-Variable", + "variantKey": "Designator", + "Designator": "0x5604293653a0-Designator" + }, + { + "id": "0x5604293653a0-Designator", + "variantKey": "DataRef", + "DataRef": "0x5604293653b0-DataRef" + }, + { + "id": "0x5604293653b0-DataRef", + "variantKey": "Name", + "Name": "0x5604293653b0-Name" + }, + { + "id": "0x5604293653b0-Name", + "source": "code" + }, + { + "id": "0x560429368a50-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x560429368a70-LiteralConstant" + }, + { + "id": "0x560429368a70-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x560429368a70-IntLiteralConstant" + }, + { + "id": "0x560429368a70-IntLiteralConstant", + "CharBlock": "1" + }, + { + "id": "0x5604293674e0-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x5604293674e0-ExecutableConstruct" + }, + { + "id": "0x5604293674e0-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x5604293674e0-Statement" + }, + { + "id": "0x5604293674e0-Statement", + "statement": "0x5604293674f0-ActionStmt", + "source": "goto20" + }, + { + "id": "0x5604293674f0-ActionStmt", + "variantKey": "GotoStmt", + "GotoStmt": "0x560429373790-GotoStmt" + }, + { + "id": "0x560429373790-GotoStmt", + "uint64_t": "20" + }, + { + "id": "0x56042930d780-Statement", + "statement": "0x56042930d790-EndIfStmt", + "source": "endif" + }, + { + "id": "0x56042930d790-EndIfStmt" + }, + { + "id": "0x560429368680-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x560429368680-ExecutableConstruct" + }, + { + "id": "0x560429368680-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x560429368680-Statement" + }, + { + "id": "0x560429368680-Statement", + "statement": "0x560429368690-ActionStmt", + "label": "10", + "source": "10continue" + }, + { + "id": "0x560429368690-ActionStmt", + "variantKey": "ContinueStmt", + "ContinueStmt": "0x560429368690-ContinueStmt" + }, + { + "id": "0x560429368690-ContinueStmt" + }, + { + "id": "0x560429370ca0-Statement", + "statement": "0x560429370cb0-EndDoStmt", + "source": "" + }, + { + "id": "0x560429370cb0-EndDoStmt" + }, + { + "id": "0x560429367d10-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x560429367d10-ExecutableConstruct" + }, + { + "id": "0x560429367d10-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x560429367d10-Statement" + }, + { + "id": "0x560429367d10-Statement", + "statement": "0x560429367d20-ActionStmt", + "label": "20", + "source": "20continue" + }, + { + "id": "0x560429367d20-ActionStmt", + "variantKey": "ContinueStmt", + "ContinueStmt": "0x560429367d20-ContinueStmt" + }, + { + "id": "0x560429367d20-ContinueStmt" + }, + { + "id": "0x56042936d2a0-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x56042936d2a0-ExecutableConstruct" + }, + { + "id": "0x56042936d2a0-ExecutableConstruct", + "variantKey": "DoConstruct", + "DoConstruct": "0x560429370dc0-DoConstruct" + }, + { + "id": "0x560429370dc0-DoConstruct", + "Statement": "0x560429370e18-Statement", + "ExecutionPartConstruct": [ + "0x56042936d550-ExecutionPartConstruct", + "0x56042936a7d0-ExecutionPartConstruct" + ], + "Statement": "0x560429370dc0-Statement" + }, + { + "id": "0x560429370e18-Statement", + "statement": "0x560429370e28-NonLabelDoStmt", + "source": "do30i=1,1000" + }, + { + "id": "0x560429370e28-NonLabelDoStmt", + "LoopControl": "0x560429370e28-LoopControl" + }, + { + "id": "0x560429370e28-LoopControl", + "variantKey": "LoopBounds", + "LoopBounds": "0x560429370e28-LoopBounds" + }, + { + "id": "0x560429370e28-LoopBounds", + "var": "0x560429370e28-Name", + "lower": "0x56042936d070-Expr", + "upper": "0x56042936d150-Expr" + }, + { + "id": "0x560429370e28-Name", + "source": "i" + }, + { + "id": "0x56042936d070-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x56042936d090-LiteralConstant" + }, + { + "id": "0x56042936d090-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x56042936d090-IntLiteralConstant" + }, + { + "id": "0x56042936d090-IntLiteralConstant", + "CharBlock": "1" + }, + { + "id": "0x56042936d150-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x56042936d170-LiteralConstant" + }, + { + "id": "0x56042936d170-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x56042936d170-IntLiteralConstant" + }, + { + "id": "0x56042936d170-IntLiteralConstant", + "CharBlock": "1000" + }, + { + "id": "0x560429370e00-ExecutionPartConstruct" + }, + { + "id": "0x56042936d550-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x56042936d550-ExecutableConstruct" + }, + { + "id": "0x56042936d550-ExecutableConstruct", + "variantKey": "IfConstruct", + "IfConstruct": "0x56042937bfb0-IfConstruct" + }, + { + "id": "0x56042937bfb0-IfConstruct", + "Statement": "0x56042937c080-Statement", + "ExecutionPartConstruct": [ + "0x560429369b20-ExecutionPartConstruct", + "0x560429367370-ExecutionPartConstruct", + "0x56042936d240-ExecutionPartConstruct", + "0x5604293678f0-ExecutionPartConstruct" + ], + "Statement": "0x56042937bfb0-Statement" + }, + { + "id": "0x56042937c080-Statement", + "statement": "0x56042937c090-IfThenStmt", + "source": "if(b(i).ne.7)then" + }, + { + "id": "0x56042937c090-IfThenStmt", + "Expr": "0x56042936d760-Expr" + }, + { + "id": "0x56042936d760-Expr", + "variantKey": "NE", + "NE": "0x56042936d780-NE" + }, + { + "id": "0x56042936d780-NE", + "left": "0x56042936d2f0-Expr", + "right": "0x56042936d680-Expr", + "op": "NE" + }, + { + "id": "0x56042936d2f0-Expr", + "variantKey": "Designator", + "Designator": "0x5604293a2820-Designator" + }, + { + "id": "0x5604293a2820-Designator", + "variantKey": "DataRef", + "DataRef": "0x5604293a2830-DataRef" + }, + { + "id": "0x5604293a2830-DataRef", + "variantKey": "ArrayElement", + "ArrayElement": "0x560429371810-ArrayElement" + }, + { + "id": "0x560429371810-ArrayElement", + "base": "0x560429371810-DataRef", + "subscripts": [ + "0x560429397c80-SectionSubscript" + ] + }, + { + "id": "0x560429371810-DataRef", + "variantKey": "Name", + "Name": "0x560429371810-Name" + }, + { + "id": "0x560429371810-Name", + "source": "b" + }, + { + "id": "0x560429397c80-SectionSubscript", + "variantKey": "Expr", + "Expr": "0x56042936b260-Expr" + }, + { + "id": "0x56042936b260-Expr", + "variantKey": "Designator", + "Designator": "0x56042936d840-Designator" + }, + { + "id": "0x56042936d840-Designator", + "variantKey": "DataRef", + "DataRef": "0x56042936d850-DataRef" + }, + { + "id": "0x56042936d850-DataRef", + "variantKey": "Name", + "Name": "0x56042936d850-Name" + }, + { + "id": "0x56042936d850-Name", + "source": "i" + }, + { + "id": "0x56042936d680-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x56042936d6a0-LiteralConstant" + }, + { + "id": "0x56042936d6a0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x56042936d6a0-IntLiteralConstant" + }, + { + "id": "0x56042936d6a0-IntLiteralConstant", + "CharBlock": "7" + }, + { + "id": "0x56042937c068-ExecutionPartConstruct" + }, + { + "id": "0x560429369b20-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x560429369b20-ExecutableConstruct" + }, + { + "id": "0x560429369b20-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x560429369b20-Statement" + }, + { + "id": "0x560429369b20-Statement", + "statement": "0x560429369b30-ActionStmt", + "source": "write(6,*)'NG'" + }, + { + "id": "0x560429369b30-ActionStmt", + "variantKey": "WriteStmt", + "WriteStmt": "0x56042936dcb0-WriteStmt" + }, + { + "id": "0x56042936dcb0-WriteStmt", + "iounit": "0x56042936dcb0-IoUnit", + "format": "0x56042936dce0-Format", + "controls": [], + "items": [ + "0x56042936dbd0-OutputItem" + ] + }, + { + "id": "0x56042936dcb0-IoUnit", + "variantKey": "Expr", + "Expr": "0x56042936dae0-Expr" + }, + { + "id": "0x56042936dae0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x56042936db00-LiteralConstant" + }, + { + "id": "0x56042936db00-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x56042936db00-IntLiteralConstant" + }, + { + "id": "0x56042936db00-IntLiteralConstant", + "CharBlock": "6" + }, + { + "id": "0x56042936dce0-Format", + "variantKey": "Star", + "Star": "0x56042936dce0-Star" + }, + { + "id": "0x56042936dce0-Star" + }, + { + "id": "0x56042936dbd0-OutputItem", + "variantKey": "Expr", + "Expr": "0x56042936dbd0-Expr" + }, + { + "id": "0x56042936dbd0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x56042936dbf0-LiteralConstant" + }, + { + "id": "0x56042936dbf0-LiteralConstant", + "variantKey": "CharLiteralConstant", + "CharLiteralConstant": "0x56042936dbf0-CharLiteralConstant" + }, + { + "id": "0x56042936dbf0-CharLiteralConstant", + "string": "NG" + }, + { + "id": "0x560429367370-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x560429367370-ExecutableConstruct" + }, + { + "id": "0x560429367370-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x560429367370-Statement" + }, + { + "id": "0x560429367370-Statement", + "statement": "0x560429367380-ActionStmt", + "source": "write(6,*)'ELEMENT NUMBER = B(',i,')'" + }, + { + "id": "0x560429367380-ActionStmt", + "variantKey": "WriteStmt", + "WriteStmt": "0x56042937be60-WriteStmt" + }, + { + "id": "0x56042937be60-WriteStmt", + "iounit": "0x56042937be60-IoUnit", + "format": "0x56042937be90-Format", + "controls": [], + "items": [ + "0x56042937bd80-OutputItem", + "0x56042936def0-OutputItem", + "0x56042936e040-OutputItem" + ] + }, + { + "id": "0x56042937be60-IoUnit", + "variantKey": "Expr", + "Expr": "0x56042936de00-Expr" + }, + { + "id": "0x56042936de00-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x56042936de20-LiteralConstant" + }, + { + "id": "0x56042936de20-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x56042936de20-IntLiteralConstant" + }, + { + "id": "0x56042936de20-IntLiteralConstant", + "CharBlock": "6" + }, + { + "id": "0x56042937be90-Format", + "variantKey": "Star", + "Star": "0x56042937be90-Star" + }, + { + "id": "0x56042937be90-Star" + }, + { + "id": "0x56042937bd80-OutputItem", + "variantKey": "Expr", + "Expr": "0x56042937bd80-Expr" + }, + { + "id": "0x56042937bd80-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x56042937bda0-LiteralConstant" + }, + { + "id": "0x56042937bda0-LiteralConstant", + "variantKey": "CharLiteralConstant", + "CharLiteralConstant": "0x56042937bda0-CharLiteralConstant" + }, + { + "id": "0x56042937bda0-CharLiteralConstant", + "string": "ELEMENT NUMBER = B(" + }, + { + "id": "0x56042936def0-OutputItem", + "variantKey": "Expr", + "Expr": "0x56042936def0-Expr" + }, + { + "id": "0x56042936def0-Expr", + "variantKey": "Designator", + "Designator": "0x56042936da10-Designator" + }, + { + "id": "0x56042936da10-Designator", + "variantKey": "DataRef", + "DataRef": "0x56042936da20-DataRef" + }, + { + "id": "0x56042936da20-DataRef", + "variantKey": "Name", + "Name": "0x56042936da20-Name" + }, + { + "id": "0x56042936da20-Name", + "source": "i" + }, + { + "id": "0x56042936e040-OutputItem", + "variantKey": "Expr", + "Expr": "0x56042936e040-Expr" + }, + { + "id": "0x56042936e040-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x56042936e060-LiteralConstant" + }, + { + "id": "0x56042936e060-LiteralConstant", + "variantKey": "CharLiteralConstant", + "CharLiteralConstant": "0x56042936e060-CharLiteralConstant" + }, + { + "id": "0x56042936e060-CharLiteralConstant", + "string": ")" + }, + { + "id": "0x56042936d240-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x56042936d240-ExecutableConstruct" + }, + { + "id": "0x56042936d240-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x56042936d240-Statement" + }, + { + "id": "0x56042936d240-Statement", + "statement": "0x56042936d250-ActionStmt", + "source": "code=1" + }, + { + "id": "0x56042936d250-ActionStmt", + "variantKey": "AssignmentStmt", + "AssignmentStmt": "0x56042936d430-AssignmentStmt" + }, + { + "id": "0x56042936d430-AssignmentStmt", + "Variable": "0x56042936d510-Variable", + "Expr": "0x56042936d440-Expr" + }, + { + "id": "0x56042936d510-Variable", + "variantKey": "Designator", + "Designator": "0x560429365080-Designator" + }, + { + "id": "0x560429365080-Designator", + "variantKey": "DataRef", + "DataRef": "0x560429365090-DataRef" + }, + { + "id": "0x560429365090-DataRef", + "variantKey": "Name", + "Name": "0x560429365090-Name" + }, + { + "id": "0x560429365090-Name", + "source": "code" + }, + { + "id": "0x56042936d440-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x56042936d460-LiteralConstant" + }, + { + "id": "0x56042936d460-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x56042936d460-IntLiteralConstant" + }, + { + "id": "0x56042936d460-IntLiteralConstant", + "CharBlock": "1" + }, + { + "id": "0x5604293678f0-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x5604293678f0-ExecutableConstruct" + }, + { + "id": "0x5604293678f0-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x5604293678f0-Statement" + }, + { + "id": "0x5604293678f0-Statement", + "statement": "0x560429367900-ActionStmt", + "source": "goto40" + }, + { + "id": "0x560429367900-ActionStmt", + "variantKey": "GotoStmt", + "GotoStmt": "0x560429376160-GotoStmt" + }, + { + "id": "0x560429376160-GotoStmt", + "uint64_t": "40" + }, + { + "id": "0x56042937bfb0-Statement", + "statement": "0x56042937bfc0-EndIfStmt", + "source": "endif" + }, + { + "id": "0x56042937bfc0-EndIfStmt" + }, + { + "id": "0x56042936a7d0-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x56042936a7d0-ExecutableConstruct" + }, + { + "id": "0x56042936a7d0-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x56042936a7d0-Statement" + }, + { + "id": "0x56042936a7d0-Statement", + "statement": "0x56042936a7e0-ActionStmt", + "label": "30", + "source": "30continue" + }, + { + "id": "0x56042936a7e0-ActionStmt", + "variantKey": "ContinueStmt", + "ContinueStmt": "0x56042936a7e0-ContinueStmt" + }, + { + "id": "0x56042936a7e0-ContinueStmt" + }, + { + "id": "0x560429370dc0-Statement", + "statement": "0x560429370dd0-EndDoStmt", + "source": "" + }, + { + "id": "0x560429370dd0-EndDoStmt" + }, + { + "id": "0x56042936d9c0-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x56042936d9c0-ExecutableConstruct" + }, + { + "id": "0x56042936d9c0-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x56042936d9c0-Statement" + }, + { + "id": "0x56042936d9c0-Statement", + "statement": "0x56042936d9d0-ActionStmt", + "label": "40", + "source": "40continue" + }, + { + "id": "0x56042936d9d0-ActionStmt", + "variantKey": "ContinueStmt", + "ContinueStmt": "0x56042936d9d0-ContinueStmt" + }, + { + "id": "0x56042936d9d0-ContinueStmt" + }, + { + "id": "0x560429369fd0-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x560429369fd0-ExecutableConstruct" + }, + { + "id": "0x560429369fd0-ExecutableConstruct", + "variantKey": "DoConstruct", + "DoConstruct": "0x560429370ee0-DoConstruct" + }, + { + "id": "0x560429370ee0-DoConstruct", + "Statement": "0x560429370f38-Statement", + "ExecutionPartConstruct": [ + "0x56042936bdb0-ExecutionPartConstruct", + "0x560429363b10-ExecutionPartConstruct" + ], + "Statement": "0x560429370ee0-Statement" + }, + { + "id": "0x560429370f38-Statement", + "statement": "0x560429370f48-NonLabelDoStmt", + "source": "do50i=1,1000" + }, + { + "id": "0x560429370f48-NonLabelDoStmt", + "LoopControl": "0x560429370f48-LoopControl" + }, + { + "id": "0x560429370f48-LoopControl", + "variantKey": "LoopBounds", + "LoopBounds": "0x560429370f48-LoopBounds" + }, + { + "id": "0x560429370f48-LoopBounds", + "var": "0x560429370f48-Name", + "lower": "0x56042937c0d0-Expr", + "upper": "0x56042937c1b0-Expr" + }, + { + "id": "0x560429370f48-Name", + "source": "i" + }, + { + "id": "0x56042937c0d0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x56042937c0f0-LiteralConstant" + }, + { + "id": "0x56042937c0f0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x56042937c0f0-IntLiteralConstant" + }, + { + "id": "0x56042937c0f0-IntLiteralConstant", + "CharBlock": "1" + }, + { + "id": "0x56042937c1b0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x56042937c1d0-LiteralConstant" + }, + { + "id": "0x56042937c1d0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x56042937c1d0-IntLiteralConstant" + }, + { + "id": "0x56042937c1d0-IntLiteralConstant", + "CharBlock": "1000" + }, + { + "id": "0x560429370f20-ExecutionPartConstruct" + }, + { + "id": "0x56042936bdb0-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x56042936bdb0-ExecutableConstruct" + }, + { + "id": "0x56042936bdb0-ExecutableConstruct", + "variantKey": "IfConstruct", + "IfConstruct": "0x56042937d050-IfConstruct" + }, + { + "id": "0x56042937d050-IfConstruct", + "Statement": "0x56042937d120-Statement", + "ExecutionPartConstruct": [ + "0x56042936a9f0-ExecutionPartConstruct", + "0x560429363b70-ExecutionPartConstruct", + "0x56042936bca0-ExecutionPartConstruct", + "0x560429365e10-ExecutionPartConstruct" + ], + "Statement": "0x56042937d050-Statement" + }, + { + "id": "0x56042937d120-Statement", + "statement": "0x56042937d130-IfThenStmt", + "source": "if(c(i).ne.11)then" + }, + { + "id": "0x56042937d130-IfThenStmt", + "Expr": "0x56042937c640-Expr" + }, + { + "id": "0x56042937c640-Expr", + "variantKey": "NE", + "NE": "0x56042937c660-NE" + }, + { + "id": "0x56042937c660-NE", + "left": "0x56042937c290-Expr", + "right": "0x56042937c560-Expr", + "op": "NE" + }, + { + "id": "0x56042937c290-Expr", + "variantKey": "Designator", + "Designator": "0x5604293a3b60-Designator" + }, + { + "id": "0x5604293a3b60-Designator", + "variantKey": "DataRef", + "DataRef": "0x5604293a3b70-DataRef" + }, + { + "id": "0x5604293a3b70-DataRef", + "variantKey": "ArrayElement", + "ArrayElement": "0x5604293732d0-ArrayElement" + }, + { + "id": "0x5604293732d0-ArrayElement", + "base": "0x5604293732d0-DataRef", + "subscripts": [ + "0x5604293938c0-SectionSubscript" + ] + }, + { + "id": "0x5604293732d0-DataRef", + "variantKey": "Name", + "Name": "0x5604293732d0-Name" + }, + { + "id": "0x5604293732d0-Name", + "source": "c" + }, + { + "id": "0x5604293938c0-SectionSubscript", + "variantKey": "Expr", + "Expr": "0x56042936d5a0-Expr" + }, + { + "id": "0x56042936d5a0-Expr", + "variantKey": "Designator", + "Designator": "0x56042936ad10-Designator" + }, + { + "id": "0x56042936ad10-Designator", + "variantKey": "DataRef", + "DataRef": "0x56042936ad20-DataRef" + }, + { + "id": "0x56042936ad20-DataRef", + "variantKey": "Name", + "Name": "0x56042936ad20-Name" + }, + { + "id": "0x56042936ad20-Name", + "source": "i" + }, + { + "id": "0x56042937c560-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x56042937c580-LiteralConstant" + }, + { + "id": "0x56042937c580-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x56042937c580-IntLiteralConstant" + }, + { + "id": "0x56042937c580-IntLiteralConstant", + "CharBlock": "11" + }, + { + "id": "0x56042937d108-ExecutionPartConstruct" + }, + { + "id": "0x56042936a9f0-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x56042936a9f0-ExecutableConstruct" + }, + { + "id": "0x56042936a9f0-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x56042936a9f0-Statement" + }, + { + "id": "0x56042936a9f0-Statement", + "statement": "0x56042936aa00-ActionStmt", + "source": "write(6,*)'NG'" + }, + { + "id": "0x56042936aa00-ActionStmt", + "variantKey": "WriteStmt", + "WriteStmt": "0x56042937ca00-WriteStmt" + }, + { + "id": "0x56042937ca00-WriteStmt", + "iounit": "0x56042937ca00-IoUnit", + "format": "0x56042937ca30-Format", + "controls": [], + "items": [ + "0x56042937c920-OutputItem" + ] + }, + { + "id": "0x56042937ca00-IoUnit", + "variantKey": "Expr", + "Expr": "0x56042937c830-Expr" + }, + { + "id": "0x56042937c830-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x56042937c850-LiteralConstant" + }, + { + "id": "0x56042937c850-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x56042937c850-IntLiteralConstant" + }, + { + "id": "0x56042937c850-IntLiteralConstant", + "CharBlock": "6" + }, + { + "id": "0x56042937ca30-Format", + "variantKey": "Star", + "Star": "0x56042937ca30-Star" + }, + { + "id": "0x56042937ca30-Star" + }, + { + "id": "0x56042937c920-OutputItem", + "variantKey": "Expr", + "Expr": "0x56042937c920-Expr" + }, + { + "id": "0x56042937c920-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x56042937c940-LiteralConstant" + }, + { + "id": "0x56042937c940-LiteralConstant", + "variantKey": "CharLiteralConstant", + "CharLiteralConstant": "0x56042937c940-CharLiteralConstant" + }, + { + "id": "0x56042937c940-CharLiteralConstant", + "string": "NG" + }, + { + "id": "0x560429363b70-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x560429363b70-ExecutableConstruct" + }, + { + "id": "0x560429363b70-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x560429363b70-Statement" + }, + { + "id": "0x560429363b70-Statement", + "statement": "0x560429363b80-ActionStmt", + "source": "write(6,*)'ELEMENT NUMBER = C(',i,')'" + }, + { + "id": "0x560429363b80-ActionStmt", + "variantKey": "WriteStmt", + "WriteStmt": "0x56042937cf00-WriteStmt" + }, + { + "id": "0x56042937cf00-WriteStmt", + "iounit": "0x56042937cf00-IoUnit", + "format": "0x56042937cf30-Format", + "controls": [], + "items": [ + "0x56042937ce20-OutputItem", + "0x56042937cc40-OutputItem", + "0x56042937cd30-OutputItem" + ] + }, + { + "id": "0x56042937cf00-IoUnit", + "variantKey": "Expr", + "Expr": "0x56042937cb50-Expr" + }, + { + "id": "0x56042937cb50-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x56042937cb70-LiteralConstant" + }, + { + "id": "0x56042937cb70-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x56042937cb70-IntLiteralConstant" + }, + { + "id": "0x56042937cb70-IntLiteralConstant", + "CharBlock": "6" + }, + { + "id": "0x56042937cf30-Format", + "variantKey": "Star", + "Star": "0x56042937cf30-Star" + }, + { + "id": "0x56042937cf30-Star" + }, + { + "id": "0x56042937ce20-OutputItem", + "variantKey": "Expr", + "Expr": "0x56042937ce20-Expr" + }, + { + "id": "0x56042937ce20-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x56042937ce40-LiteralConstant" + }, + { + "id": "0x56042937ce40-LiteralConstant", + "variantKey": "CharLiteralConstant", + "CharLiteralConstant": "0x56042937ce40-CharLiteralConstant" + }, + { + "id": "0x56042937ce40-CharLiteralConstant", + "string": "ELEMENT NUMBER = C(" + }, + { + "id": "0x56042937cc40-OutputItem", + "variantKey": "Expr", + "Expr": "0x56042937cc40-Expr" + }, + { + "id": "0x56042937cc40-Expr", + "variantKey": "Designator", + "Designator": "0x56042936ba70-Designator" + }, + { + "id": "0x56042936ba70-Designator", + "variantKey": "DataRef", + "DataRef": "0x56042936ba80-DataRef" + }, + { + "id": "0x56042936ba80-DataRef", + "variantKey": "Name", + "Name": "0x56042936ba80-Name" + }, + { + "id": "0x56042936ba80-Name", + "source": "i" + }, + { + "id": "0x56042937cd30-OutputItem", + "variantKey": "Expr", + "Expr": "0x56042937cd30-Expr" + }, + { + "id": "0x56042937cd30-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x56042937cd50-LiteralConstant" + }, + { + "id": "0x56042937cd50-LiteralConstant", + "variantKey": "CharLiteralConstant", + "CharLiteralConstant": "0x56042937cd50-CharLiteralConstant" + }, + { + "id": "0x56042937cd50-CharLiteralConstant", + "string": ")" + }, + { + "id": "0x56042936bca0-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x56042936bca0-ExecutableConstruct" + }, + { + "id": "0x56042936bca0-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x56042936bca0-Statement" + }, + { + "id": "0x56042936bca0-Statement", + "statement": "0x56042936bcb0-ActionStmt", + "source": "code=1" + }, + { + "id": "0x56042936bcb0-ActionStmt", + "variantKey": "AssignmentStmt", + "AssignmentStmt": "0x56042937c370-AssignmentStmt" + }, + { + "id": "0x56042937c370-AssignmentStmt", + "Variable": "0x56042937c450-Variable", + "Expr": "0x56042937c380-Expr" + }, + { + "id": "0x56042937c450-Variable", + "variantKey": "Designator", + "Designator": "0x56042936d3d0-Designator" + }, + { + "id": "0x56042936d3d0-Designator", + "variantKey": "DataRef", + "DataRef": "0x56042936d3e0-DataRef" + }, + { + "id": "0x56042936d3e0-DataRef", + "variantKey": "Name", + "Name": "0x56042936d3e0-Name" + }, + { + "id": "0x56042936d3e0-Name", + "source": "code" + }, + { + "id": "0x56042937c380-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x56042937c3a0-LiteralConstant" + }, + { + "id": "0x56042937c3a0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x56042937c3a0-IntLiteralConstant" + }, + { + "id": "0x56042937c3a0-IntLiteralConstant", + "CharBlock": "1" + }, + { + "id": "0x560429365e10-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x560429365e10-ExecutableConstruct" + }, + { + "id": "0x560429365e10-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x560429365e10-Statement" + }, + { + "id": "0x560429365e10-Statement", + "statement": "0x560429365e20-ActionStmt", + "source": "goto60" + }, + { + "id": "0x560429365e20-ActionStmt", + "variantKey": "GotoStmt", + "GotoStmt": "0x560429372e20-GotoStmt" + }, + { + "id": "0x560429372e20-GotoStmt", + "uint64_t": "60" + }, + { + "id": "0x56042937d050-Statement", + "statement": "0x56042937d060-EndIfStmt", + "source": "endif" + }, + { + "id": "0x56042937d060-EndIfStmt" + }, + { + "id": "0x560429363b10-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x560429363b10-ExecutableConstruct" + }, + { + "id": "0x560429363b10-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x560429363b10-Statement" + }, + { + "id": "0x560429363b10-Statement", + "statement": "0x560429363b20-ActionStmt", + "label": "50", + "source": "50continue" + }, + { + "id": "0x560429363b20-ActionStmt", + "variantKey": "ContinueStmt", + "ContinueStmt": "0x560429363b20-ContinueStmt" + }, + { + "id": "0x560429363b20-ContinueStmt" + }, + { + "id": "0x560429370ee0-Statement", + "statement": "0x560429370ef0-EndDoStmt", + "source": "" + }, + { + "id": "0x560429370ef0-EndDoStmt" + }, + { + "id": "0x560429364b40-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x560429364b40-ExecutableConstruct" + }, + { + "id": "0x560429364b40-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x560429364b40-Statement" + }, + { + "id": "0x560429364b40-Statement", + "statement": "0x560429364b50-ActionStmt", + "label": "60", + "source": "60continue" + }, + { + "id": "0x560429364b50-ActionStmt", + "variantKey": "ContinueStmt", + "ContinueStmt": "0x560429364b50-ContinueStmt" + }, + { + "id": "0x560429364b50-ContinueStmt" + }, + { + "id": "0x56042937d180-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x56042937d180-ExecutableConstruct" + }, + { + "id": "0x56042937d180-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x56042937d180-Statement" + }, + { + "id": "0x56042937d180-Statement", + "statement": "0x56042937d190-ActionStmt", + "source": "return" + }, + { + "id": "0x56042937d190-ActionStmt", + "variantKey": "ReturnStmt", + "ReturnStmt": "0x560429376420-ReturnStmt" + }, + { + "id": "0x560429376420-ReturnStmt" + }, + { + "id": "0x56042937ea00-Statement", + "statement": "0x56042937ea10-EndSubroutineStmt", + "source": "end" + }, + { + "id": "0x56042937ea10-EndSubroutineStmt" + } + ], + "comments": [ + { + "text": "", + "stmtId": "0x560429366160-Statement", + "trailing": false + }, + { + "text": "", + "stmtId": "0x560429365b20-Statement", + "trailing": false + }, + { + "text": "", + "stmtId": "0x560429366740-Statement", + "trailing": false + }, + { + "text": "", + "stmtId": "0x56042937eb48-Statement", + "trailing": false + }, + { + "text": "", + "stmtId": "0x56042937eb48-Statement", + "trailing": false + }, + { + "text": "", + "stmtId": "0x560429370cf8-Statement", + "trailing": false + }, + { + "text": "", + "stmtId": "0x560429367d10-Statement", + "trailing": false + }, + { + "text": "", + "stmtId": "0x56042936d9c0-Statement", + "trailing": false + }, + { + "text": "", + "stmtId": "0x560429364b40-Statement", + "trailing": false + } + ], + "enums": { + "Fortran::common::CUDADataAttr": [ + "Constant", + "Device", + "Managed", + "Pinned", + "Shared", + "Texture", + "Unified" + ], + "Fortran::common::CUDASubprogramAttrs": [ + "Host", + "Device", + "HostDevice", + "Global", + "Grid_Global" + ], + "Fortran::common::ImportKind": [ + "Default", + "Only", + "None", + "All" + ], + "Fortran::common::OmpDependenceKind": [ + "In", + "Out", + "Inout", + "Inoutset", + "Mutexinoutset", + "Depobj" + ], + "Fortran::common::OmpMemoryOrderType": [ + "Acq_Rel", + "Acquire", + "Relaxed", + "Release", + "Seq_Cst" + ], + "Fortran::common::OpenACCDeviceType": [ + "Star", + "Default", + "Nvidia", + "Radeon", + "Host", + "Multicore", + "None" + ], + "Fortran::parser::AccDataModifier::Modifier": [ + "ReadOnly", + "Zero" + ], + "Fortran::parser::AccessSpec::Kind": [ + "Public", + "Private" + ], + "Fortran::parser::BindEntity::Kind": [ + "Object", + "Common" + ], + "Fortran::parser::CompilerDirective::VectorLength::Kind": [ + "Auto", + "Fixed", + "Scalable" + ], + "Fortran::parser::ConnectSpec::CharExpr::Kind": [ + "Access", + "Action", + "Asynchronous", + "Blank", + "Decimal", + "Delim", + "Encoding", + "Form", + "Pad", + "Position", + "Round", + "Sign", + "Carriagecontrol", + "Convert", + "Dispose" + ], + "Fortran::parser::DefinedOperator::IntrinsicOperator": [ + "Power", + "Multiply", + "Divide", + "Add", + "Subtract", + "Concat", + "LT", + "LE", + "EQ", + "NE", + "GE", + "GT", + "NOT", + "AND", + "OR", + "EQV", + "NEQV" + ], + "Fortran::parser::ImplicitStmt::ImplicitNoneNameSpec": [ + "External", + "Type" + ], + "Fortran::parser::InquireSpec::CharVar::Kind": [ + "Access", + "Action", + "Asynchronous", + "Blank", + "Decimal", + "Delim", + "Direct", + "Encoding", + "Form", + "Formatted", + "Iomsg", + "Name", + "Pad", + "Position", + "Read", + "Readwrite", + "Round", + "Sequential", + "Sign", + "Stream", + "Status", + "Unformatted", + "Write", + "Carriagecontrol", + "Convert", + "Dispose" + ], + "Fortran::parser::InquireSpec::IntVar::Kind": [ + "Iostat", + "Nextrec", + "Number", + "Pos", + "Recl", + "Size" + ], + "Fortran::parser::InquireSpec::LogVar::Kind": [ + "Exist", + "Named", + "Opened", + "Pending" + ], + "Fortran::parser::IntentSpec::Intent": [ + "In", + "Out", + "InOut" + ], + "Fortran::parser::IoControlSpec::CharExpr::Kind": [ + "Advance", + "Blank", + "Decimal", + "Delim", + "Pad", + "Round", + "Sign" + ], + "Fortran::parser::ReductionOperator::Operator": [ + "Plus", + "Multiply", + "Max", + "Min", + "Iand", + "Ior", + "Ieor", + "And", + "Or", + "Eqv", + "Neqv" + ], + "Fortran::parser::OmpAccessGroup::Value": [ + "Cgroup" + ], + "Fortran::parser::OmpAdjustArgsClause::OmpAdjustOp::Value": [ + "Nothing", + "Need_Device_Ptr" + ], + "Fortran::parser::OmpAlwaysModifier::Value": [ + "Always" + ], + "Fortran::parser::OmpAtClause::ActionTime": [ + "Compilation", + "Execution" + ], + "Fortran::parser::OmpAttachModifier::Value": [ + "Always", + "Never", + "Auto" + ], + "Fortran::parser::OmpAutomapModifier::Value": [ + "Automap" + ], + "Fortran::parser::OmpBindClause::Binding": [ + "Parallel", + "Teams", + "Thread" + ], + "Fortran::parser::OmpChunkModifier::Value": [ + "Simd" + ], + "Fortran::parser::OmpCloseModifier::Value": [ + "Close" + ], + "Fortran::parser::OmpDefaultClause::DataSharingAttribute": [ + "Private", + "Firstprivate", + "Shared", + "None" + ], + "Fortran::parser::OmpDefaultmapClause::ImplicitBehavior": [ + "Alloc", + "To", + "From", + "Tofrom", + "Firstprivate", + "None", + "Default", + "Present" + ], + "Fortran::parser::OmpDeleteModifier::Value": [ + "Delete" + ], + "Fortran::parser::OmpDependenceType::Value": [ + "Sink", + "Source" + ], + "Fortran::parser::OmpDeviceModifier::Value": [ + "Ancestor", + "Device_Num" + ], + "Fortran::parser::OmpDeviceTypeClause::DeviceTypeDescription": [ + "Any", + "Host", + "Nohost" + ], + "Fortran::parser::OmpDirectiveSpecification::Flag": [ + "DeprecatedSyntax", + "CrossesLabelDo" + ], + "Fortran::parser::OmpExpectation::Value": [ + "Present" + ], + "Fortran::parser::OmpInteropType::Value": [ + "Target", + "Targetsync" + ], + "Fortran::parser::OmpLastprivateModifier::Value": [ + "Conditional" + ], + "Fortran::parser::OmpLinearModifier::Value": [ + "Ref", + "Uval", + "Val" + ], + "Fortran::parser::OmpMapType::Value": [ + "Alloc", + "Delete", + "From", + "Release", + "Storage", + "To", + "Tofrom" + ], + "Fortran::parser::OmpMapTypeModifier::Value": [ + "Always", + "Close", + "Present", + "Ompx_Hold" + ], + "Fortran::parser::OmpObject::Invalid::Kind": [ + "BlankCommonBlock" + ], + "Fortran::parser::OmpOrderClause::Ordering": [ + "Concurrent" + ], + "Fortran::parser::OmpOrderingModifier::Value": [ + "Monotonic", + "Nonmonotonic", + "Simd" + ], + "Fortran::parser::OmpOrderModifier::Value": [ + "Reproducible", + "Unconstrained" + ], + "Fortran::parser::OmpPrescriptiveness::Value": [ + "Strict" + ], + "Fortran::parser::OmpPresentModifier::Value": [ + "Present" + ], + "Fortran::parser::OmpProcBindClause::AffinityPolicy": [ + "Close", + "Master", + "Spread", + "Primary" + ], + "Fortran::parser::OmpReductionModifier::Value": [ + "Default", + "Inscan", + "Task" + ], + "Fortran::parser::OmpRefModifier::Value": [ + "Ref_Ptee", + "Ref_Ptr", + "Ref_Ptr_Ptee" + ], + "Fortran::parser::OmpScheduleClause::Kind": [ + "Static", + "Dynamic", + "Guided", + "Auto", + "Runtime" + ], + "Fortran::parser::OmpSelfModifier::Value": [ + "Self" + ], + "Fortran::parser::OmpSeverityClause::SevLevel": [ + "Fatal", + "Warning" + ], + "Fortran::parser::OmpThreadsetClause::ThreadsetPolicy": [ + "Omp_Pool", + "Omp_Team" + ], + "Fortran::parser::OmpTraitSelectorName::Value": [ + "Arch", + "Atomic_Default_Mem_Order", + "Condition", + "Device_Num", + "Extension", + "Isa", + "Kind", + "Requires", + "Simd", + "Uid", + "Vendor" + ], + "Fortran::parser::OmpTraitSetSelectorName::Value": [ + "Construct", + "Device", + "Implementation", + "Target_Device", + "User" + ], + "Fortran::parser::OmpVariableCategory::Value": [ + "Aggregate", + "All", + "Allocatable", + "Pointer", + "Scalar" + ], + "Fortran::parser::OmpxHoldModifier::Value": [ + "Ompx_Hold" + ], + "Fortran::parser::ProcedureStmt::Kind": [ + "ModuleProcedure", + "Procedure" + ], + "Fortran::parser::SavedEntity::Kind": [ + "Entity", + "Common" + ], + "Fortran::parser::StopStmt::Kind": [ + "Stop", + "ErrorStop" + ], + "Fortran::parser::UseStmt::ModuleNature": [ + "Intrinsic", + "Non_Intrinsic" + ] + } +} diff --git a/FortranParser/resources-test/fortran/parser/fujitsu/0001/0001_0032.expected.f b/FortranParser/resources-test/fortran/parser/fujitsu/0001/0001_0032.expected.f new file mode 100644 index 00000000..6f29cc5b --- /dev/null +++ b/FortranParser/resources-test/fortran/parser/fujitsu/0001/0001_0032.expected.f @@ -0,0 +1,74 @@ + INTEGER*4error,i + COMPLEX*8s_a,s_b,v_a,v_b,s_dvt + DIMENSIONs_a(10),s_b(10),v_a(10),v_b(10),s_dvt(10) + DATAs_a,s_b/10*(1.0,2.0),10*(2.0,1.0)/ + DATAv_a,v_b/10*(1.0,2.0),10*(2.0,1.0)/ + DATAerror/0/ +C + DO10i=1,5,1 + s_dvt(i)=s_a(i)+s_b(i) + 10 CONTINUE + DO20i=1,5,1 + s_a(i+1)=s_dvt(i) + 20 CONTINUE + DO30i=1,5,1 + s_dvt(i)=s_b(i)+s_a(i) + 30 CONTINUE + DO40i=1,5,1 + s_b(i+1)=s_dvt(i) + 40 CONTINUE +C + v_a(2:6)=v_a(1:5)+v_b(1:5) + v_b(2:6)=v_b(1:5)+v_a(1:5) + CALLsub1(error,v_a,v_b,v_a+v_b) + CALLsub2(error,v_a,v_b,v_a-v_b) +C + DO50i=1,10,1 + IF(v_a(i)/=s_a(i))THEN + error=error+1 + ENDIF + IF(v_b(i)/=s_b(i))THEN + error=error+1 + ENDIF + 50 CONTINUE + IF(error==0)THEN + WRITE(6,*)"OK" + ELSE + WRITE(6,*)"NG" + WRITE(6,*)"ERROR=",error + WRITE(6,*)s_a + WRITE(6,*)v_a + WRITE(6,*)s_b + WRITE(6,*)v_b + ENDIF +C + STOP + END +C + SUBROUTINEsub1(error,a,b,c) + INTEGER*4error + COMPLEX*8a,b,c + DIMENSIONa(10),b(10),c(10) +C + DO60i=1,10,1 + IF(c(i)/=a(i)+b(i))THEN + error=error+1 + ENDIF + 60 CONTINUE +C + RETURN + END +C + SUBROUTINEsub2(error,a,b,c) + INTEGER*4error + COMPLEX*8a,b,c + DIMENSIONa(10),b(10),c(10) +C + DO70i=1,10,1 + IF(c(i)/=a(i)-b(i))THEN + error=error+1 + ENDIF + 70 CONTINUE +C + RETURN + END diff --git a/FortranParser/resources-test/fortran/parser/fujitsu/0001/0001_0032.f b/FortranParser/resources-test/fortran/parser/fujitsu/0001/0001_0032.f new file mode 100644 index 00000000..138aff8e --- /dev/null +++ b/FortranParser/resources-test/fortran/parser/fujitsu/0001/0001_0032.f @@ -0,0 +1,74 @@ + INTEGER*4 ERROR,I + COMPLEX*8 S_A,S_B,V_A,V_B,S_DVT + DIMENSION S_A(10),S_B(10),V_A(10),V_B(10),S_DVT(10) + DATA S_A,S_B/10*(1.0,2.0),10*(2.0,1.0)/ + DATA V_A,V_B/10*(1.0,2.0),10*(2.0,1.0)/ + DATA ERROR/0/ +C + DO 10 I=1,5,1 + S_DVT(I)=S_A(I)+S_B(I) + 10 CONTINUE + DO 20 I=1,5,1 + S_A(I+1)=S_DVT(I) + 20 CONTINUE + DO 30 I=1,5,1 + S_DVT(I)=S_B(I)+S_A(I) + 30 CONTINUE + DO 40 I=1,5,1 + S_B(I+1)=S_DVT(I) + 40 CONTINUE +C + V_A(2:6)=V_A(1:5)+V_B(1:5) + V_B(2:6)=V_B(1:5)+V_A(1:5) + CALL SUB1(ERROR,V_A,V_B,V_A+V_B) + CALL SUB2(ERROR,V_A,V_B,V_A-V_B) +C + DO 50 I=1,10,1 + IF(V_A(I) .NE. S_A(I)) THEN + ERROR=ERROR+1 + ENDIF + IF(V_B(I) .NE. S_B(I)) THEN + ERROR=ERROR+1 + ENDIF + 50 CONTINUE + IF(ERROR .EQ. 0) THEN + WRITE(6,*) 'OK' + ELSE + WRITE(6,*) 'NG' + WRITE(6,*) 'ERROR=',ERROR + WRITE(6,*) S_A + WRITE(6,*) V_A + WRITE(6,*) S_B + WRITE(6,*) V_B + ENDIF +C + STOP + END +C + SUBROUTINE SUB1(ERROR,A,B,C) + INTEGER*4 ERROR + COMPLEX*8 A,B,C + DIMENSION A(10),B(10),C(10) +C + DO 60 I=1,10,1 + IF(C(I) .NE. A(I)+B(I)) THEN + ERROR=ERROR+1 + ENDIF + 60 CONTINUE +C + RETURN + END SUBROUTINE SUB1 +C + SUBROUTINE SUB2(ERROR,A,B,C) + INTEGER*4 ERROR + COMPLEX*8 A,B,C + DIMENSION A(10),B(10),C(10) +C + DO 70 I=1,10,1 + IF(C(I) .NE. A(I)-B(I)) THEN + ERROR=ERROR+1 + ENDIF + 70 CONTINUE +C + RETURN + END SUBROUTINE SUB2 diff --git a/FortranParser/resources-test/fortran/parser/fujitsu/0001/0001_0032.json b/FortranParser/resources-test/fortran/parser/fujitsu/0001/0001_0032.json new file mode 100644 index 00000000..e5e9bb5a --- /dev/null +++ b/FortranParser/resources-test/fortran/parser/fujitsu/0001/0001_0032.json @@ -0,0 +1,6365 @@ +{ + "fileExtension": "f", + "nodes": [ + { + "id": "0x55fb7c1c6f00-Program", + "ProgramUnit": [ + "0x55fb7c202e90-ProgramUnit", + "0x55fb7c203410-ProgramUnit", + "0x55fb7c2022f0-ProgramUnit" + ] + }, + { + "id": "0x55fb7c202e90-ProgramUnit", + "variantKey": "MainProgram", + "MainProgram": "0x55fb7c203fe0-MainProgram" + }, + { + "id": "0x55fb7c203fe0-MainProgram", + "SpecificationPart": "0x55fb7c204080-SpecificationPart", + "ExecutionPart": "0x55fb7c204068-ExecutionPart", + "Statement": "0x55fb7c203fe0-Statement" + }, + { + "id": "0x55fb7c204080-SpecificationPart", + "ImplicitPart": "0x55fb7c204098-ImplicitPart", + "DeclarationConstruct": [ + "0x55fb7c1d3da0-DeclarationConstruct", + "0x55fb7c1d4110-DeclarationConstruct", + "0x55fb7c1f4050-DeclarationConstruct", + "0x55fb7c1f5140-DeclarationConstruct", + "0x55fb7c1f54e0-DeclarationConstruct", + "0x55fb7c1f5480-DeclarationConstruct" + ] + }, + { + "id": "0x55fb7c204098-ImplicitPart" + }, + { + "id": "0x55fb7c1d3da0-DeclarationConstruct", + "variantKey": "SpecificationConstruct", + "SpecificationConstruct": "0x55fb7c1d3da0-SpecificationConstruct" + }, + { + "id": "0x55fb7c1d3da0-SpecificationConstruct", + "variantKey": "Statement", + "Statement": "0x55fb7c1d3da0-Statement" + }, + { + "id": "0x55fb7c1d3da0-Statement", + "statement": "0x55fb7c203e50-TypeDeclarationStmt", + "source": "integer*4error,i" + }, + { + "id": "0x55fb7c203e50-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x55fb7c203e80-DeclarationTypeSpec", + "EntityDecl": [ + "0x55fb7c17c1e0-EntityDecl", + "0x55fb7c1f3680-EntityDecl" + ] + }, + { + "id": "0x55fb7c203e80-DeclarationTypeSpec", + "variantKey": "IntrinsicTypeSpec", + "IntrinsicTypeSpec": "0x55fb7c203e80-IntrinsicTypeSpec" + }, + { + "id": "0x55fb7c203e80-IntrinsicTypeSpec", + "variantKey": "IntegerTypeSpec", + "IntegerTypeSpec": "0x55fb7c203e80-IntegerTypeSpec" + }, + { + "id": "0x55fb7c203e80-IntegerTypeSpec", + "KindSelector": "0x55fb7c203e80-KindSelector" + }, + { + "id": "0x55fb7c203e80-KindSelector", + "variantKey": "StarSize", + "StarSize": "0x55fb7c203e80-StarSize" + }, + { + "id": "0x55fb7c203e80-StarSize", + "uint64_t": "4" + }, + { + "id": "0x55fb7c17c1e0-EntityDecl", + "Name": "0x55fb7c17c298-Name" + }, + { + "id": "0x55fb7c17c298-Name", + "source": "error" + }, + { + "id": "0x55fb7c1f3680-EntityDecl", + "Name": "0x55fb7c1f3738-Name" + }, + { + "id": "0x55fb7c1f3738-Name", + "source": "i" + }, + { + "id": "0x55fb7c1d4110-DeclarationConstruct", + "variantKey": "SpecificationConstruct", + "SpecificationConstruct": "0x55fb7c1d4110-SpecificationConstruct" + }, + { + "id": "0x55fb7c1d4110-SpecificationConstruct", + "variantKey": "Statement", + "Statement": "0x55fb7c1d4110-Statement" + }, + { + "id": "0x55fb7c1d4110-Statement", + "statement": "0x55fb7c1f43b0-TypeDeclarationStmt", + "source": "complex*8s_a,s_b,v_a,v_b,s_dvt" + }, + { + "id": "0x55fb7c1f43b0-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x55fb7c1f43e0-DeclarationTypeSpec", + "EntityDecl": [ + "0x55fb7c1f2f40-EntityDecl", + "0x55fb7c1f3810-EntityDecl", + "0x55fb7c1fd3b0-EntityDecl", + "0x55fb7c1fd4a0-EntityDecl", + "0x55fb7c1fd590-EntityDecl" + ] + }, + { + "id": "0x55fb7c1f43e0-DeclarationTypeSpec", + "variantKey": "IntrinsicTypeSpec", + "IntrinsicTypeSpec": "0x55fb7c1f43e0-IntrinsicTypeSpec" + }, + { + "id": "0x55fb7c1f43e0-IntrinsicTypeSpec", + "variantKey": "Complex", + "Complex": "0x55fb7c1f43e0-Complex" + }, + { + "id": "0x55fb7c1f43e0-Complex", + "KindSelector": "0x55fb7c1f43e0-KindSelector" + }, + { + "id": "0x55fb7c1f43e0-KindSelector", + "variantKey": "StarSize", + "StarSize": "0x55fb7c1f43e0-StarSize" + }, + { + "id": "0x55fb7c1f43e0-StarSize", + "uint64_t": "8" + }, + { + "id": "0x55fb7c1f2f40-EntityDecl", + "Name": "0x55fb7c1f2ff8-Name" + }, + { + "id": "0x55fb7c1f2ff8-Name", + "source": "s_a" + }, + { + "id": "0x55fb7c1f3810-EntityDecl", + "Name": "0x55fb7c1f38c8-Name" + }, + { + "id": "0x55fb7c1f38c8-Name", + "source": "s_b" + }, + { + "id": "0x55fb7c1fd3b0-EntityDecl", + "Name": "0x55fb7c1fd468-Name" + }, + { + "id": "0x55fb7c1fd468-Name", + "source": "v_a" + }, + { + "id": "0x55fb7c1fd4a0-EntityDecl", + "Name": "0x55fb7c1fd558-Name" + }, + { + "id": "0x55fb7c1fd558-Name", + "source": "v_b" + }, + { + "id": "0x55fb7c1fd590-EntityDecl", + "Name": "0x55fb7c1fd648-Name" + }, + { + "id": "0x55fb7c1fd648-Name", + "source": "s_dvt" + }, + { + "id": "0x55fb7c1f4050-DeclarationConstruct", + "variantKey": "SpecificationConstruct", + "SpecificationConstruct": "0x55fb7c1f4050-SpecificationConstruct" + }, + { + "id": "0x55fb7c1f4050-SpecificationConstruct", + "variantKey": "Statement", + "Statement": "0x55fb7c1f4050-Statement" + }, + { + "id": "0x55fb7c1f4050-Statement", + "statement": "0x55fb7c1f4060-OtherSpecificationStmt", + "source": "dimensions_a(10),s_b(10),v_a(10),v_b(10),s_dvt(10)" + }, + { + "id": "0x55fb7c1f4060-OtherSpecificationStmt", + "variantKey": "DimensionStmt", + "DimensionStmt": "0x55fb7c2061c0-DimensionStmt" + }, + { + "id": "0x55fb7c2061c0-DimensionStmt", + "Declaration": [ + "0x55fb7c1f3de0-Declaration", + "0x55fb7c1f3200-Declaration", + "0x55fb7c1f45a0-Declaration", + "0x55fb7c1f4900-Declaration", + "0x55fb7c1f3d80-Declaration" + ] + }, + { + "id": "0x55fb7c1f3de0-Declaration", + "Name": "0x55fb7c1f3e10-Name", + "ArraySpec": "0x55fb7c1f3de0-ArraySpec" + }, + { + "id": "0x55fb7c1f3e10-Name", + "source": "s_a" + }, + { + "id": "0x55fb7c1f3de0-ArraySpec", + "variantKey": "ExplicitShapeSpec", + "ExplicitShapeSpec": [ + "0x55fb7c2060b0-ExplicitShapeSpec" + ] + }, + { + "id": "0x55fb7c2060b0-ExplicitShapeSpec", + "upper_bound": "0x55fb7c2060b0-SpecificationExpr" + }, + { + "id": "0x55fb7c2060b0-SpecificationExpr", + "Expr": "0x55fb7c166790-Expr" + }, + { + "id": "0x55fb7c166790-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fb7c1667b0-LiteralConstant" + }, + { + "id": "0x55fb7c1667b0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55fb7c1667b0-IntLiteralConstant" + }, + { + "id": "0x55fb7c1667b0-IntLiteralConstant", + "CharBlock": "10" + }, + { + "id": "0x55fb7c1f3200-Declaration", + "Name": "0x55fb7c1f3230-Name", + "ArraySpec": "0x55fb7c1f3200-ArraySpec" + }, + { + "id": "0x55fb7c1f3230-Name", + "source": "s_b" + }, + { + "id": "0x55fb7c1f3200-ArraySpec", + "variantKey": "ExplicitShapeSpec", + "ExplicitShapeSpec": [ + "0x55fb7c2060e0-ExplicitShapeSpec" + ] + }, + { + "id": "0x55fb7c2060e0-ExplicitShapeSpec", + "upper_bound": "0x55fb7c2060e0-SpecificationExpr" + }, + { + "id": "0x55fb7c2060e0-SpecificationExpr", + "Expr": "0x55fb7c1f3110-Expr" + }, + { + "id": "0x55fb7c1f3110-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fb7c1f3130-LiteralConstant" + }, + { + "id": "0x55fb7c1f3130-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55fb7c1f3130-IntLiteralConstant" + }, + { + "id": "0x55fb7c1f3130-IntLiteralConstant", + "CharBlock": "10" + }, + { + "id": "0x55fb7c1f45a0-Declaration", + "Name": "0x55fb7c1f45d0-Name", + "ArraySpec": "0x55fb7c1f45a0-ArraySpec" + }, + { + "id": "0x55fb7c1f45d0-Name", + "source": "v_a" + }, + { + "id": "0x55fb7c1f45a0-ArraySpec", + "variantKey": "ExplicitShapeSpec", + "ExplicitShapeSpec": [ + "0x55fb7c206110-ExplicitShapeSpec" + ] + }, + { + "id": "0x55fb7c206110-ExplicitShapeSpec", + "upper_bound": "0x55fb7c206110-SpecificationExpr" + }, + { + "id": "0x55fb7c206110-SpecificationExpr", + "Expr": "0x55fb7c1f44b0-Expr" + }, + { + "id": "0x55fb7c1f44b0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fb7c1f44d0-LiteralConstant" + }, + { + "id": "0x55fb7c1f44d0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55fb7c1f44d0-IntLiteralConstant" + }, + { + "id": "0x55fb7c1f44d0-IntLiteralConstant", + "CharBlock": "10" + }, + { + "id": "0x55fb7c1f4900-Declaration", + "Name": "0x55fb7c1f4930-Name", + "ArraySpec": "0x55fb7c1f4900-ArraySpec" + }, + { + "id": "0x55fb7c1f4930-Name", + "source": "v_b" + }, + { + "id": "0x55fb7c1f4900-ArraySpec", + "variantKey": "ExplicitShapeSpec", + "ExplicitShapeSpec": [ + "0x55fb7c206160-ExplicitShapeSpec" + ] + }, + { + "id": "0x55fb7c206160-ExplicitShapeSpec", + "upper_bound": "0x55fb7c206160-SpecificationExpr" + }, + { + "id": "0x55fb7c206160-SpecificationExpr", + "Expr": "0x55fb7c1f4810-Expr" + }, + { + "id": "0x55fb7c1f4810-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fb7c1f4830-LiteralConstant" + }, + { + "id": "0x55fb7c1f4830-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55fb7c1f4830-IntLiteralConstant" + }, + { + "id": "0x55fb7c1f4830-IntLiteralConstant", + "CharBlock": "10" + }, + { + "id": "0x55fb7c1f3d80-Declaration", + "Name": "0x55fb7c1f3db0-Name", + "ArraySpec": "0x55fb7c1f3d80-ArraySpec" + }, + { + "id": "0x55fb7c1f3db0-Name", + "source": "s_dvt" + }, + { + "id": "0x55fb7c1f3d80-ArraySpec", + "variantKey": "ExplicitShapeSpec", + "ExplicitShapeSpec": [ + "0x55fb7c206270-ExplicitShapeSpec" + ] + }, + { + "id": "0x55fb7c206270-ExplicitShapeSpec", + "upper_bound": "0x55fb7c206270-SpecificationExpr" + }, + { + "id": "0x55fb7c206270-SpecificationExpr", + "Expr": "0x55fb7c1f3c90-Expr" + }, + { + "id": "0x55fb7c1f3c90-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fb7c1f3cb0-LiteralConstant" + }, + { + "id": "0x55fb7c1f3cb0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55fb7c1f3cb0-IntLiteralConstant" + }, + { + "id": "0x55fb7c1f3cb0-IntLiteralConstant", + "CharBlock": "10" + }, + { + "id": "0x55fb7c1f5140-DeclarationConstruct", + "variantKey": "Statement", + "Statement": "0x55fb7c1f5140-Statement" + }, + { + "id": "0x55fb7c1f5140-Statement", + "statement": "0x55fb7c206130-DataStmt", + "source": "datas_a,s_b/10*(1.0,2.0),10*(2.0,1.0)/" + }, + { + "id": "0x55fb7c206130-DataStmt", + "DataStmtSet": [ + "0x55fb7c1fd1e0-DataStmtSet" + ] + }, + { + "id": "0x55fb7c1fd1e0-DataStmtSet", + "DataStmtObject": [ + "0x55fb7c1f3a30-DataStmtObject", + "0x55fb7c1f3450-DataStmtObject" + ], + "DataStmtValue": [ + "0x55fb7c1f4d20-DataStmtValue", + "0x55fb7c1f4be0-DataStmtValue" + ] + }, + { + "id": "0x55fb7c1f3a30-DataStmtObject", + "variantKey": "Variable", + "Variable": "0x55fb7c206290-Variable" + }, + { + "id": "0x55fb7c206290-Variable", + "variantKey": "Designator", + "Designator": "0x55fb7c1d4160-Designator" + }, + { + "id": "0x55fb7c1d4160-Designator", + "variantKey": "DataRef", + "DataRef": "0x55fb7c1d4170-DataRef" + }, + { + "id": "0x55fb7c1d4170-DataRef", + "variantKey": "Name", + "Name": "0x55fb7c1d4170-Name" + }, + { + "id": "0x55fb7c1d4170-Name", + "source": "s_a" + }, + { + "id": "0x55fb7c1f3450-DataStmtObject", + "variantKey": "Variable", + "Variable": "0x55fb7c2062e0-Variable" + }, + { + "id": "0x55fb7c2062e0-Variable", + "variantKey": "Designator", + "Designator": "0x55fb7c1f45f0-Designator" + }, + { + "id": "0x55fb7c1f45f0-Designator", + "variantKey": "DataRef", + "DataRef": "0x55fb7c1f4600-DataRef" + }, + { + "id": "0x55fb7c1f4600-DataRef", + "variantKey": "Name", + "Name": "0x55fb7c1f4600-Name" + }, + { + "id": "0x55fb7c1f4600-Name", + "source": "s_b" + }, + { + "id": "0x55fb7c1f4d20-DataStmtValue", + "DataStmtRepeat": "0x55fb7c1f4df8-DataStmtRepeat", + "DataStmtConstant": "0x55fb7c1f4d28-DataStmtConstant" + }, + { + "id": "0x55fb7c1f4df8-DataStmtRepeat", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55fb7c1f4df8-IntLiteralConstant" + }, + { + "id": "0x55fb7c1f4df8-IntLiteralConstant", + "CharBlock": "10" + }, + { + "id": "0x55fb7c1f4d28-DataStmtConstant", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fb7c1f4d48-LiteralConstant" + }, + { + "id": "0x55fb7c1f4d48-LiteralConstant", + "variantKey": "ComplexLiteralConstant", + "ComplexLiteralConstant": "0x55fb7c1f4d48-ComplexLiteralConstant" + }, + { + "id": "0x55fb7c1f4d48-ComplexLiteralConstant", + "real": "0x55fb7c1f4d98-ComplexPart", + "imaginary": "0x55fb7c1f4d48-ComplexPart" + }, + { + "id": "0x55fb7c1f4d98-ComplexPart", + "variantKey": "SignedRealLiteralConstant", + "SignedRealLiteralConstant": "0x55fb7c1f4d98-SignedRealLiteralConstant" + }, + { + "id": "0x55fb7c1f4d98-SignedRealLiteralConstant", + "RealLiteralConstant": "0x55fb7c1f4d98-RealLiteralConstant" + }, + { + "id": "0x55fb7c1f4d98-RealLiteralConstant", + "real": "0x55fb7c1f4d98-Real" + }, + { + "id": "0x55fb7c1f4d98-Real", + "source": "1.0" + }, + { + "id": "0x55fb7c1f4d48-ComplexPart", + "variantKey": "SignedRealLiteralConstant", + "SignedRealLiteralConstant": "0x55fb7c1f4d48-SignedRealLiteralConstant" + }, + { + "id": "0x55fb7c1f4d48-SignedRealLiteralConstant", + "RealLiteralConstant": "0x55fb7c1f4d48-RealLiteralConstant" + }, + { + "id": "0x55fb7c1f4d48-RealLiteralConstant", + "real": "0x55fb7c1f4d48-Real" + }, + { + "id": "0x55fb7c1f4d48-Real", + "source": "2.0" + }, + { + "id": "0x55fb7c1f4be0-DataStmtValue", + "DataStmtRepeat": "0x55fb7c1f4cb8-DataStmtRepeat", + "DataStmtConstant": "0x55fb7c1f4be8-DataStmtConstant" + }, + { + "id": "0x55fb7c1f4cb8-DataStmtRepeat", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55fb7c1f4cb8-IntLiteralConstant" + }, + { + "id": "0x55fb7c1f4cb8-IntLiteralConstant", + "CharBlock": "10" + }, + { + "id": "0x55fb7c1f4be8-DataStmtConstant", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fb7c1f4c08-LiteralConstant" + }, + { + "id": "0x55fb7c1f4c08-LiteralConstant", + "variantKey": "ComplexLiteralConstant", + "ComplexLiteralConstant": "0x55fb7c1f4c08-ComplexLiteralConstant" + }, + { + "id": "0x55fb7c1f4c08-ComplexLiteralConstant", + "real": "0x55fb7c1f4c58-ComplexPart", + "imaginary": "0x55fb7c1f4c08-ComplexPart" + }, + { + "id": "0x55fb7c1f4c58-ComplexPart", + "variantKey": "SignedRealLiteralConstant", + "SignedRealLiteralConstant": "0x55fb7c1f4c58-SignedRealLiteralConstant" + }, + { + "id": "0x55fb7c1f4c58-SignedRealLiteralConstant", + "RealLiteralConstant": "0x55fb7c1f4c58-RealLiteralConstant" + }, + { + "id": "0x55fb7c1f4c58-RealLiteralConstant", + "real": "0x55fb7c1f4c58-Real" + }, + { + "id": "0x55fb7c1f4c58-Real", + "source": "2.0" + }, + { + "id": "0x55fb7c1f4c08-ComplexPart", + "variantKey": "SignedRealLiteralConstant", + "SignedRealLiteralConstant": "0x55fb7c1f4c08-SignedRealLiteralConstant" + }, + { + "id": "0x55fb7c1f4c08-SignedRealLiteralConstant", + "RealLiteralConstant": "0x55fb7c1f4c08-RealLiteralConstant" + }, + { + "id": "0x55fb7c1f4c08-RealLiteralConstant", + "real": "0x55fb7c1f4c08-Real" + }, + { + "id": "0x55fb7c1f4c08-Real", + "source": "1.0" + }, + { + "id": "0x55fb7c1f54e0-DeclarationConstruct", + "variantKey": "Statement", + "Statement": "0x55fb7c1f54e0-Statement" + }, + { + "id": "0x55fb7c1f54e0-Statement", + "statement": "0x55fb7c206050-DataStmt", + "source": "datav_a,v_b/10*(1.0,2.0),10*(2.0,1.0)/" + }, + { + "id": "0x55fb7c206050-DataStmt", + "DataStmtSet": [ + "0x55fb7c1fdc00-DataStmtSet" + ] + }, + { + "id": "0x55fb7c1fdc00-DataStmtSet", + "DataStmtObject": [ + "0x55fb7c17c0c0-DataStmtObject", + "0x55fb7c1f3ac0-DataStmtObject" + ], + "DataStmtValue": [ + "0x55fb7c1f52e0-DataStmtValue", + "0x55fb7c1f51a0-DataStmtValue" + ] + }, + { + "id": "0x55fb7c17c0c0-DataStmtObject", + "variantKey": "Variable", + "Variable": "0x55fb7c203590-Variable" + }, + { + "id": "0x55fb7c203590-Variable", + "variantKey": "Designator", + "Designator": "0x55fb7c1f4a50-Designator" + }, + { + "id": "0x55fb7c1f4a50-Designator", + "variantKey": "DataRef", + "DataRef": "0x55fb7c1f4a60-DataRef" + }, + { + "id": "0x55fb7c1f4a60-DataRef", + "variantKey": "Name", + "Name": "0x55fb7c1f4a60-Name" + }, + { + "id": "0x55fb7c1f4a60-Name", + "source": "v_a" + }, + { + "id": "0x55fb7c1f3ac0-DataStmtObject", + "variantKey": "Variable", + "Variable": "0x55fb7c202be0-Variable" + }, + { + "id": "0x55fb7c202be0-Variable", + "variantKey": "Designator", + "Designator": "0x55fb7c1f4b70-Designator" + }, + { + "id": "0x55fb7c1f4b70-Designator", + "variantKey": "DataRef", + "DataRef": "0x55fb7c1f4b80-DataRef" + }, + { + "id": "0x55fb7c1f4b80-DataRef", + "variantKey": "Name", + "Name": "0x55fb7c1f4b80-Name" + }, + { + "id": "0x55fb7c1f4b80-Name", + "source": "v_b" + }, + { + "id": "0x55fb7c1f52e0-DataStmtValue", + "DataStmtRepeat": "0x55fb7c1f53b8-DataStmtRepeat", + "DataStmtConstant": "0x55fb7c1f52e8-DataStmtConstant" + }, + { + "id": "0x55fb7c1f53b8-DataStmtRepeat", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55fb7c1f53b8-IntLiteralConstant" + }, + { + "id": "0x55fb7c1f53b8-IntLiteralConstant", + "CharBlock": "10" + }, + { + "id": "0x55fb7c1f52e8-DataStmtConstant", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fb7c1f5308-LiteralConstant" + }, + { + "id": "0x55fb7c1f5308-LiteralConstant", + "variantKey": "ComplexLiteralConstant", + "ComplexLiteralConstant": "0x55fb7c1f5308-ComplexLiteralConstant" + }, + { + "id": "0x55fb7c1f5308-ComplexLiteralConstant", + "real": "0x55fb7c1f5358-ComplexPart", + "imaginary": "0x55fb7c1f5308-ComplexPart" + }, + { + "id": "0x55fb7c1f5358-ComplexPart", + "variantKey": "SignedRealLiteralConstant", + "SignedRealLiteralConstant": "0x55fb7c1f5358-SignedRealLiteralConstant" + }, + { + "id": "0x55fb7c1f5358-SignedRealLiteralConstant", + "RealLiteralConstant": "0x55fb7c1f5358-RealLiteralConstant" + }, + { + "id": "0x55fb7c1f5358-RealLiteralConstant", + "real": "0x55fb7c1f5358-Real" + }, + { + "id": "0x55fb7c1f5358-Real", + "source": "1.0" + }, + { + "id": "0x55fb7c1f5308-ComplexPart", + "variantKey": "SignedRealLiteralConstant", + "SignedRealLiteralConstant": "0x55fb7c1f5308-SignedRealLiteralConstant" + }, + { + "id": "0x55fb7c1f5308-SignedRealLiteralConstant", + "RealLiteralConstant": "0x55fb7c1f5308-RealLiteralConstant" + }, + { + "id": "0x55fb7c1f5308-RealLiteralConstant", + "real": "0x55fb7c1f5308-Real" + }, + { + "id": "0x55fb7c1f5308-Real", + "source": "2.0" + }, + { + "id": "0x55fb7c1f51a0-DataStmtValue", + "DataStmtRepeat": "0x55fb7c1f5278-DataStmtRepeat", + "DataStmtConstant": "0x55fb7c1f51a8-DataStmtConstant" + }, + { + "id": "0x55fb7c1f5278-DataStmtRepeat", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55fb7c1f5278-IntLiteralConstant" + }, + { + "id": "0x55fb7c1f5278-IntLiteralConstant", + "CharBlock": "10" + }, + { + "id": "0x55fb7c1f51a8-DataStmtConstant", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fb7c1f51c8-LiteralConstant" + }, + { + "id": "0x55fb7c1f51c8-LiteralConstant", + "variantKey": "ComplexLiteralConstant", + "ComplexLiteralConstant": "0x55fb7c1f51c8-ComplexLiteralConstant" + }, + { + "id": "0x55fb7c1f51c8-ComplexLiteralConstant", + "real": "0x55fb7c1f5218-ComplexPart", + "imaginary": "0x55fb7c1f51c8-ComplexPart" + }, + { + "id": "0x55fb7c1f5218-ComplexPart", + "variantKey": "SignedRealLiteralConstant", + "SignedRealLiteralConstant": "0x55fb7c1f5218-SignedRealLiteralConstant" + }, + { + "id": "0x55fb7c1f5218-SignedRealLiteralConstant", + "RealLiteralConstant": "0x55fb7c1f5218-RealLiteralConstant" + }, + { + "id": "0x55fb7c1f5218-RealLiteralConstant", + "real": "0x55fb7c1f5218-Real" + }, + { + "id": "0x55fb7c1f5218-Real", + "source": "2.0" + }, + { + "id": "0x55fb7c1f51c8-ComplexPart", + "variantKey": "SignedRealLiteralConstant", + "SignedRealLiteralConstant": "0x55fb7c1f51c8-SignedRealLiteralConstant" + }, + { + "id": "0x55fb7c1f51c8-SignedRealLiteralConstant", + "RealLiteralConstant": "0x55fb7c1f51c8-RealLiteralConstant" + }, + { + "id": "0x55fb7c1f51c8-RealLiteralConstant", + "real": "0x55fb7c1f51c8-Real" + }, + { + "id": "0x55fb7c1f51c8-Real", + "source": "1.0" + }, + { + "id": "0x55fb7c1f5480-DeclarationConstruct", + "variantKey": "Statement", + "Statement": "0x55fb7c1f5480-Statement" + }, + { + "id": "0x55fb7c1f5480-Statement", + "statement": "0x55fb7c206000-DataStmt", + "source": "dataerror/0/" + }, + { + "id": "0x55fb7c206000-DataStmt", + "DataStmtSet": [ + "0x55fb7c20ae40-DataStmtSet" + ] + }, + { + "id": "0x55fb7c20ae40-DataStmtSet", + "DataStmtObject": [ + "0x55fb7c1f35f0-DataStmtObject" + ], + "DataStmtValue": [ + "0x55fb7c1f5540-DataStmtValue" + ] + }, + { + "id": "0x55fb7c1f35f0-DataStmtObject", + "variantKey": "Variable", + "Variable": "0x55fb7c202dd0-Variable" + }, + { + "id": "0x55fb7c202dd0-Variable", + "variantKey": "Designator", + "Designator": "0x55fb7c1c54d0-Designator" + }, + { + "id": "0x55fb7c1c54d0-Designator", + "variantKey": "DataRef", + "DataRef": "0x55fb7c1c54e0-DataRef" + }, + { + "id": "0x55fb7c1c54e0-DataRef", + "variantKey": "Name", + "Name": "0x55fb7c1c54e0-Name" + }, + { + "id": "0x55fb7c1c54e0-Name", + "source": "error" + }, + { + "id": "0x55fb7c1f5540-DataStmtValue", + "DataStmtConstant": "0x55fb7c1f5548-DataStmtConstant" + }, + { + "id": "0x55fb7c1f5548-DataStmtConstant", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fb7c1f5568-LiteralConstant" + }, + { + "id": "0x55fb7c1f5568-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55fb7c1f5568-IntLiteralConstant" + }, + { + "id": "0x55fb7c1f5568-IntLiteralConstant", + "CharBlock": "0" + }, + { + "id": "0x55fb7c204068-ExecutionPart", + "ExecutionPartConstruct": [ + "0x55fb7c1f5420-ExecutionPartConstruct", + "0x55fb7c1f72b0-ExecutionPartConstruct", + "0x55fb7c1f7d30-ExecutionPartConstruct", + "0x55fb7c1f8e00-ExecutionPartConstruct", + "0x55fb7c1fa550-ExecutionPartConstruct", + "0x55fb7c1faee0-ExecutionPartConstruct", + "0x55fb7c1fbe40-ExecutionPartConstruct", + "0x55fb7c1fcac0-ExecutionPartConstruct", + "0x55fb7c1fc4a0-ExecutionPartConstruct", + "0x55fb7c210170-ExecutionPartConstruct", + "0x55fb7c20f250-ExecutionPartConstruct" + ] + }, + { + "id": "0x55fb7c204068-ExecutionPartConstruct" + }, + { + "id": "0x55fb7c1f5420-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55fb7c1f5420-ExecutableConstruct" + }, + { + "id": "0x55fb7c1f5420-ExecutableConstruct", + "variantKey": "DoConstruct", + "DoConstruct": "0x55fb7c20bd40-DoConstruct" + }, + { + "id": "0x55fb7c20bd40-DoConstruct", + "Statement": "0x55fb7c20bd98-Statement", + "ExecutionPartConstruct": [ + "0x55fb7c1f7380-ExecutionPartConstruct", + "0x55fb7c1f5d60-ExecutionPartConstruct" + ], + "Statement": "0x55fb7c20bd40-Statement" + }, + { + "id": "0x55fb7c20bd98-Statement", + "statement": "0x55fb7c20bda8-NonLabelDoStmt", + "source": "do10i=1,5,1" + }, + { + "id": "0x55fb7c20bda8-NonLabelDoStmt", + "LoopControl": "0x55fb7c20bda8-LoopControl" + }, + { + "id": "0x55fb7c20bda8-LoopControl", + "variantKey": "LoopBounds", + "LoopBounds": "0x55fb7c20bda8-LoopBounds" + }, + { + "id": "0x55fb7c20bda8-LoopBounds", + "var": "0x55fb7c20bda8-Name", + "lower": "0x55fb7c1f60e0-Expr", + "upper": "0x55fb7c1f61c0-Expr", + "step": "0x55fb7c1f5670-Expr" + }, + { + "id": "0x55fb7c20bda8-Name", + "source": "i" + }, + { + "id": "0x55fb7c1f60e0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fb7c1f6100-LiteralConstant" + }, + { + "id": "0x55fb7c1f6100-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55fb7c1f6100-IntLiteralConstant" + }, + { + "id": "0x55fb7c1f6100-IntLiteralConstant", + "CharBlock": "1" + }, + { + "id": "0x55fb7c1f61c0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fb7c1f61e0-LiteralConstant" + }, + { + "id": "0x55fb7c1f61e0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55fb7c1f61e0-IntLiteralConstant" + }, + { + "id": "0x55fb7c1f61e0-IntLiteralConstant", + "CharBlock": "5" + }, + { + "id": "0x55fb7c1f5670-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fb7c1f5690-LiteralConstant" + }, + { + "id": "0x55fb7c1f5690-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55fb7c1f5690-IntLiteralConstant" + }, + { + "id": "0x55fb7c1f5690-IntLiteralConstant", + "CharBlock": "1" + }, + { + "id": "0x55fb7c20bd80-ExecutionPartConstruct" + }, + { + "id": "0x55fb7c1f7380-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55fb7c1f7380-ExecutableConstruct" + }, + { + "id": "0x55fb7c1f7380-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55fb7c1f7380-Statement" + }, + { + "id": "0x55fb7c1f7380-Statement", + "statement": "0x55fb7c1f7390-ActionStmt", + "source": "s_dvt(i)=s_a(i)+s_b(i)" + }, + { + "id": "0x55fb7c1f7390-ActionStmt", + "variantKey": "AssignmentStmt", + "AssignmentStmt": "0x55fb7c1f7190-AssignmentStmt" + }, + { + "id": "0x55fb7c1f7190-AssignmentStmt", + "Variable": "0x55fb7c1f7270-Variable", + "Expr": "0x55fb7c1f71a0-Expr" + }, + { + "id": "0x55fb7c1f7270-Variable", + "variantKey": "Designator", + "Designator": "0x55fb7c21d3f0-Designator" + }, + { + "id": "0x55fb7c21d3f0-Designator", + "variantKey": "DataRef", + "DataRef": "0x55fb7c21d400-DataRef" + }, + { + "id": "0x55fb7c21d400-DataRef", + "variantKey": "ArrayElement", + "ArrayElement": "0x55fb7c216d30-ArrayElement" + }, + { + "id": "0x55fb7c216d30-ArrayElement", + "base": "0x55fb7c216d30-DataRef", + "subscripts": [ + "0x55fb7c21a790-SectionSubscript" + ] + }, + { + "id": "0x55fb7c216d30-DataRef", + "variantKey": "Name", + "Name": "0x55fb7c216d30-Name" + }, + { + "id": "0x55fb7c216d30-Name", + "source": "s_dvt" + }, + { + "id": "0x55fb7c21a790-SectionSubscript", + "variantKey": "Expr", + "Expr": "0x55fb7c2387b0-Expr" + }, + { + "id": "0x55fb7c2387b0-Expr", + "variantKey": "Designator", + "Designator": "0x55fb7c1f4ab0-Designator" + }, + { + "id": "0x55fb7c1f4ab0-Designator", + "variantKey": "DataRef", + "DataRef": "0x55fb7c1f4ac0-DataRef" + }, + { + "id": "0x55fb7c1f4ac0-DataRef", + "variantKey": "Name", + "Name": "0x55fb7c1f4ac0-Name" + }, + { + "id": "0x55fb7c1f4ac0-Name", + "source": "i" + }, + { + "id": "0x55fb7c1f71a0-Expr", + "variantKey": "Add", + "Add": "0x55fb7c1f71c0-Add" + }, + { + "id": "0x55fb7c1f71c0-Add", + "left": "0x55fb7c1f7040-Expr", + "right": "0x55fb7c1f6f60-Expr", + "op": "ADD" + }, + { + "id": "0x55fb7c1f7040-Expr", + "variantKey": "Designator", + "Designator": "0x55fb7c23bc00-Designator" + }, + { + "id": "0x55fb7c23bc00-Designator", + "variantKey": "DataRef", + "DataRef": "0x55fb7c23bc10-DataRef" + }, + { + "id": "0x55fb7c23bc10-DataRef", + "variantKey": "ArrayElement", + "ArrayElement": "0x55fb7c1f2e00-ArrayElement" + }, + { + "id": "0x55fb7c1f2e00-ArrayElement", + "base": "0x55fb7c1f2e00-DataRef", + "subscripts": [ + "0x55fb7c206700-SectionSubscript" + ] + }, + { + "id": "0x55fb7c1f2e00-DataRef", + "variantKey": "Name", + "Name": "0x55fb7c1f2e00-Name" + }, + { + "id": "0x55fb7c1f2e00-Name", + "source": "s_a" + }, + { + "id": "0x55fb7c206700-SectionSubscript", + "variantKey": "Expr", + "Expr": "0x55fb7c1f5750-Expr" + }, + { + "id": "0x55fb7c1f5750-Expr", + "variantKey": "Designator", + "Designator": "0x55fb7c1f4e50-Designator" + }, + { + "id": "0x55fb7c1f4e50-Designator", + "variantKey": "DataRef", + "DataRef": "0x55fb7c1f4e60-DataRef" + }, + { + "id": "0x55fb7c1f4e60-DataRef", + "variantKey": "Name", + "Name": "0x55fb7c1f4e60-Name" + }, + { + "id": "0x55fb7c1f4e60-Name", + "source": "i" + }, + { + "id": "0x55fb7c1f6f60-Expr", + "variantKey": "Designator", + "Designator": "0x55fb7c23b260-Designator" + }, + { + "id": "0x55fb7c23b260-Designator", + "variantKey": "DataRef", + "DataRef": "0x55fb7c23b270-DataRef" + }, + { + "id": "0x55fb7c23b270-DataRef", + "variantKey": "ArrayElement", + "ArrayElement": "0x55fb7c2389b0-ArrayElement" + }, + { + "id": "0x55fb7c2389b0-ArrayElement", + "base": "0x55fb7c2389b0-DataRef", + "subscripts": [ + "0x55fb7c1ff650-SectionSubscript" + ] + }, + { + "id": "0x55fb7c2389b0-DataRef", + "variantKey": "Name", + "Name": "0x55fb7c2389b0-Name" + }, + { + "id": "0x55fb7c2389b0-Name", + "source": "s_b" + }, + { + "id": "0x55fb7c1ff650-SectionSubscript", + "variantKey": "Expr", + "Expr": "0x55fb7c1f5930-Expr" + }, + { + "id": "0x55fb7c1f5930-Expr", + "variantKey": "Designator", + "Designator": "0x55fb7c1f6a10-Designator" + }, + { + "id": "0x55fb7c1f6a10-Designator", + "variantKey": "DataRef", + "DataRef": "0x55fb7c1f6a20-DataRef" + }, + { + "id": "0x55fb7c1f6a20-DataRef", + "variantKey": "Name", + "Name": "0x55fb7c1f6a20-Name" + }, + { + "id": "0x55fb7c1f6a20-Name", + "source": "i" + }, + { + "id": "0x55fb7c1f5d60-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55fb7c1f5d60-ExecutableConstruct" + }, + { + "id": "0x55fb7c1f5d60-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55fb7c1f5d60-Statement" + }, + { + "id": "0x55fb7c1f5d60-Statement", + "statement": "0x55fb7c1f5d70-ActionStmt", + "label": "10", + "source": "10continue" + }, + { + "id": "0x55fb7c1f5d70-ActionStmt", + "variantKey": "ContinueStmt", + "ContinueStmt": "0x55fb7c1f5d70-ContinueStmt" + }, + { + "id": "0x55fb7c1f5d70-ContinueStmt" + }, + { + "id": "0x55fb7c20bd40-Statement", + "statement": "0x55fb7c20bd50-EndDoStmt", + "source": "" + }, + { + "id": "0x55fb7c20bd50-EndDoStmt" + }, + { + "id": "0x55fb7c1f72b0-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55fb7c1f72b0-ExecutableConstruct" + }, + { + "id": "0x55fb7c1f72b0-ExecutableConstruct", + "variantKey": "DoConstruct", + "DoConstruct": "0x55fb7c209360-DoConstruct" + }, + { + "id": "0x55fb7c209360-DoConstruct", + "Statement": "0x55fb7c2093b8-Statement", + "ExecutionPartConstruct": [ + "0x55fb7c1f7d90-ExecutionPartConstruct", + "0x55fb7c1f4210-ExecutionPartConstruct" + ], + "Statement": "0x55fb7c209360-Statement" + }, + { + "id": "0x55fb7c2093b8-Statement", + "statement": "0x55fb7c2093c8-NonLabelDoStmt", + "source": "do20i=1,5,1" + }, + { + "id": "0x55fb7c2093c8-NonLabelDoStmt", + "LoopControl": "0x55fb7c2093c8-LoopControl" + }, + { + "id": "0x55fb7c2093c8-LoopControl", + "variantKey": "LoopBounds", + "LoopBounds": "0x55fb7c2093c8-LoopBounds" + }, + { + "id": "0x55fb7c2093c8-LoopBounds", + "var": "0x55fb7c2093c8-Name", + "lower": "0x55fb7c1f73d0-Expr", + "upper": "0x55fb7c1f74b0-Expr", + "step": "0x55fb7c1f7590-Expr" + }, + { + "id": "0x55fb7c2093c8-Name", + "source": "i" + }, + { + "id": "0x55fb7c1f73d0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fb7c1f73f0-LiteralConstant" + }, + { + "id": "0x55fb7c1f73f0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55fb7c1f73f0-IntLiteralConstant" + }, + { + "id": "0x55fb7c1f73f0-IntLiteralConstant", + "CharBlock": "1" + }, + { + "id": "0x55fb7c1f74b0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fb7c1f74d0-LiteralConstant" + }, + { + "id": "0x55fb7c1f74d0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55fb7c1f74d0-IntLiteralConstant" + }, + { + "id": "0x55fb7c1f74d0-IntLiteralConstant", + "CharBlock": "5" + }, + { + "id": "0x55fb7c1f7590-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fb7c1f75b0-LiteralConstant" + }, + { + "id": "0x55fb7c1f75b0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55fb7c1f75b0-IntLiteralConstant" + }, + { + "id": "0x55fb7c1f75b0-IntLiteralConstant", + "CharBlock": "1" + }, + { + "id": "0x55fb7c2093a0-ExecutionPartConstruct" + }, + { + "id": "0x55fb7c1f7d90-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55fb7c1f7d90-ExecutableConstruct" + }, + { + "id": "0x55fb7c1f7d90-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55fb7c1f7d90-Statement" + }, + { + "id": "0x55fb7c1f7d90-Statement", + "statement": "0x55fb7c1f7da0-ActionStmt", + "source": "s_a(i+1)=s_dvt(i)" + }, + { + "id": "0x55fb7c1f7da0-ActionStmt", + "variantKey": "AssignmentStmt", + "AssignmentStmt": "0x55fb7c1f7c10-AssignmentStmt" + }, + { + "id": "0x55fb7c1f7c10-AssignmentStmt", + "Variable": "0x55fb7c1f7cf0-Variable", + "Expr": "0x55fb7c1f7c20-Expr" + }, + { + "id": "0x55fb7c1f7cf0-Variable", + "variantKey": "Designator", + "Designator": "0x55fb7c2236b0-Designator" + }, + { + "id": "0x55fb7c2236b0-Designator", + "variantKey": "DataRef", + "DataRef": "0x55fb7c2236c0-DataRef" + }, + { + "id": "0x55fb7c2236c0-DataRef", + "variantKey": "ArrayElement", + "ArrayElement": "0x55fb7c204d70-ArrayElement" + }, + { + "id": "0x55fb7c204d70-ArrayElement", + "base": "0x55fb7c204d70-DataRef", + "subscripts": [ + "0x55fb7c223a80-SectionSubscript" + ] + }, + { + "id": "0x55fb7c204d70-DataRef", + "variantKey": "Name", + "Name": "0x55fb7c204d70-Name" + }, + { + "id": "0x55fb7c204d70-Name", + "source": "s_a" + }, + { + "id": "0x55fb7c223a80-SectionSubscript", + "variantKey": "Expr", + "Expr": "0x55fb7c1f6ae0-Expr" + }, + { + "id": "0x55fb7c1f6ae0-Expr", + "variantKey": "Add", + "Add": "0x55fb7c1f6b00-Add" + }, + { + "id": "0x55fb7c1f6b00-Add", + "left": "0x55fb7c1f7830-Expr", + "right": "0x55fb7c1f7750-Expr", + "op": "ADD" + }, + { + "id": "0x55fb7c1f7830-Expr", + "variantKey": "Designator", + "Designator": "0x55fb7c1f3250-Designator" + }, + { + "id": "0x55fb7c1f3250-Designator", + "variantKey": "DataRef", + "DataRef": "0x55fb7c1f3260-DataRef" + }, + { + "id": "0x55fb7c1f3260-DataRef", + "variantKey": "Name", + "Name": "0x55fb7c1f3260-Name" + }, + { + "id": "0x55fb7c1f3260-Name", + "source": "i" + }, + { + "id": "0x55fb7c1f7750-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fb7c1f7770-LiteralConstant" + }, + { + "id": "0x55fb7c1f7770-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55fb7c1f7770-IntLiteralConstant" + }, + { + "id": "0x55fb7c1f7770-IntLiteralConstant", + "CharBlock": "1" + }, + { + "id": "0x55fb7c1f7c20-Expr", + "variantKey": "Designator", + "Designator": "0x55fb7c221f40-Designator" + }, + { + "id": "0x55fb7c221f40-Designator", + "variantKey": "DataRef", + "DataRef": "0x55fb7c221f50-DataRef" + }, + { + "id": "0x55fb7c221f50-DataRef", + "variantKey": "ArrayElement", + "ArrayElement": "0x55fb7c20d330-ArrayElement" + }, + { + "id": "0x55fb7c20d330-ArrayElement", + "base": "0x55fb7c20d330-DataRef", + "subscripts": [ + "0x55fb7c206620-SectionSubscript" + ] + }, + { + "id": "0x55fb7c20d330-DataRef", + "variantKey": "Name", + "Name": "0x55fb7c20d330-Name" + }, + { + "id": "0x55fb7c20d330-Name", + "source": "s_dvt" + }, + { + "id": "0x55fb7c206620-SectionSubscript", + "variantKey": "Expr", + "Expr": "0x55fb7c1f7670-Expr" + }, + { + "id": "0x55fb7c1f7670-Expr", + "variantKey": "Designator", + "Designator": "0x55fb7c1f65d0-Designator" + }, + { + "id": "0x55fb7c1f65d0-Designator", + "variantKey": "DataRef", + "DataRef": "0x55fb7c1f65e0-DataRef" + }, + { + "id": "0x55fb7c1f65e0-DataRef", + "variantKey": "Name", + "Name": "0x55fb7c1f65e0-Name" + }, + { + "id": "0x55fb7c1f65e0-Name", + "source": "i" + }, + { + "id": "0x55fb7c1f4210-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55fb7c1f4210-ExecutableConstruct" + }, + { + "id": "0x55fb7c1f4210-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55fb7c1f4210-Statement" + }, + { + "id": "0x55fb7c1f4210-Statement", + "statement": "0x55fb7c1f4220-ActionStmt", + "label": "20", + "source": "20continue" + }, + { + "id": "0x55fb7c1f4220-ActionStmt", + "variantKey": "ContinueStmt", + "ContinueStmt": "0x55fb7c1f4220-ContinueStmt" + }, + { + "id": "0x55fb7c1f4220-ContinueStmt" + }, + { + "id": "0x55fb7c209360-Statement", + "statement": "0x55fb7c209370-EndDoStmt", + "source": "" + }, + { + "id": "0x55fb7c209370-EndDoStmt" + }, + { + "id": "0x55fb7c1f7d30-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55fb7c1f7d30-ExecutableConstruct" + }, + { + "id": "0x55fb7c1f7d30-ExecutableConstruct", + "variantKey": "DoConstruct", + "DoConstruct": "0x55fb7c209480-DoConstruct" + }, + { + "id": "0x55fb7c209480-DoConstruct", + "Statement": "0x55fb7c2094d8-Statement", + "ExecutionPartConstruct": [ + "0x55fb7c1f8ed0-ExecutionPartConstruct", + "0x55fb7c1f8530-ExecutionPartConstruct" + ], + "Statement": "0x55fb7c209480-Statement" + }, + { + "id": "0x55fb7c2094d8-Statement", + "statement": "0x55fb7c2094e8-NonLabelDoStmt", + "source": "do30i=1,5,1" + }, + { + "id": "0x55fb7c2094e8-NonLabelDoStmt", + "LoopControl": "0x55fb7c2094e8-LoopControl" + }, + { + "id": "0x55fb7c2094e8-LoopControl", + "variantKey": "LoopBounds", + "LoopBounds": "0x55fb7c2094e8-LoopBounds" + }, + { + "id": "0x55fb7c2094e8-LoopBounds", + "var": "0x55fb7c2094e8-Name", + "lower": "0x55fb7c1f7de0-Expr", + "upper": "0x55fb7c1f7ec0-Expr", + "step": "0x55fb7c1f7fa0-Expr" + }, + { + "id": "0x55fb7c2094e8-Name", + "source": "i" + }, + { + "id": "0x55fb7c1f7de0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fb7c1f7e00-LiteralConstant" + }, + { + "id": "0x55fb7c1f7e00-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55fb7c1f7e00-IntLiteralConstant" + }, + { + "id": "0x55fb7c1f7e00-IntLiteralConstant", + "CharBlock": "1" + }, + { + "id": "0x55fb7c1f7ec0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fb7c1f7ee0-LiteralConstant" + }, + { + "id": "0x55fb7c1f7ee0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55fb7c1f7ee0-IntLiteralConstant" + }, + { + "id": "0x55fb7c1f7ee0-IntLiteralConstant", + "CharBlock": "5" + }, + { + "id": "0x55fb7c1f7fa0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fb7c1f7fc0-LiteralConstant" + }, + { + "id": "0x55fb7c1f7fc0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55fb7c1f7fc0-IntLiteralConstant" + }, + { + "id": "0x55fb7c1f7fc0-IntLiteralConstant", + "CharBlock": "1" + }, + { + "id": "0x55fb7c2094c0-ExecutionPartConstruct" + }, + { + "id": "0x55fb7c1f8ed0-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55fb7c1f8ed0-ExecutableConstruct" + }, + { + "id": "0x55fb7c1f8ed0-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55fb7c1f8ed0-Statement" + }, + { + "id": "0x55fb7c1f8ed0-Statement", + "statement": "0x55fb7c1f8ee0-ActionStmt", + "source": "s_dvt(i)=s_b(i)+s_a(i)" + }, + { + "id": "0x55fb7c1f8ee0-ActionStmt", + "variantKey": "AssignmentStmt", + "AssignmentStmt": "0x55fb7c1f8ce0-AssignmentStmt" + }, + { + "id": "0x55fb7c1f8ce0-AssignmentStmt", + "Variable": "0x55fb7c1f8dc0-Variable", + "Expr": "0x55fb7c1f8cf0-Expr" + }, + { + "id": "0x55fb7c1f8dc0-Variable", + "variantKey": "Designator", + "Designator": "0x55fb7c23c5a0-Designator" + }, + { + "id": "0x55fb7c23c5a0-Designator", + "variantKey": "DataRef", + "DataRef": "0x55fb7c23c5b0-DataRef" + }, + { + "id": "0x55fb7c23c5b0-DataRef", + "variantKey": "ArrayElement", + "ArrayElement": "0x55fb7c20dfa0-ArrayElement" + }, + { + "id": "0x55fb7c20dfa0-ArrayElement", + "base": "0x55fb7c20dfa0-DataRef", + "subscripts": [ + "0x55fb7c22c370-SectionSubscript" + ] + }, + { + "id": "0x55fb7c20dfa0-DataRef", + "variantKey": "Name", + "Name": "0x55fb7c20dfa0-Name" + }, + { + "id": "0x55fb7c20dfa0-Name", + "source": "s_dvt" + }, + { + "id": "0x55fb7c22c370-SectionSubscript", + "variantKey": "Expr", + "Expr": "0x55fb7c1f7a20-Expr" + }, + { + "id": "0x55fb7c1f7a20-Expr", + "variantKey": "Designator", + "Designator": "0x55fb7c1f4b10-Designator" + }, + { + "id": "0x55fb7c1f4b10-Designator", + "variantKey": "DataRef", + "DataRef": "0x55fb7c1f4b20-DataRef" + }, + { + "id": "0x55fb7c1f4b20-DataRef", + "variantKey": "Name", + "Name": "0x55fb7c1f4b20-Name" + }, + { + "id": "0x55fb7c1f4b20-Name", + "source": "i" + }, + { + "id": "0x55fb7c1f8cf0-Expr", + "variantKey": "Add", + "Add": "0x55fb7c1f8d10-Add" + }, + { + "id": "0x55fb7c1f8d10-Add", + "left": "0x55fb7c1f8b90-Expr", + "right": "0x55fb7c1f8ab0-Expr", + "op": "ADD" + }, + { + "id": "0x55fb7c1f8b90-Expr", + "variantKey": "Designator", + "Designator": "0x55fb7c1d4da0-Designator" + }, + { + "id": "0x55fb7c1d4da0-Designator", + "variantKey": "DataRef", + "DataRef": "0x55fb7c1d4db0-DataRef" + }, + { + "id": "0x55fb7c1d4db0-DataRef", + "variantKey": "ArrayElement", + "ArrayElement": "0x55fb7c1f24f0-ArrayElement" + }, + { + "id": "0x55fb7c1f24f0-ArrayElement", + "base": "0x55fb7c1f24f0-DataRef", + "subscripts": [ + "0x55fb7c22b9b0-SectionSubscript" + ] + }, + { + "id": "0x55fb7c1f24f0-DataRef", + "variantKey": "Name", + "Name": "0x55fb7c1f24f0-Name" + }, + { + "id": "0x55fb7c1f24f0-Name", + "source": "s_b" + }, + { + "id": "0x55fb7c22b9b0-SectionSubscript", + "variantKey": "Expr", + "Expr": "0x55fb7c1f8080-Expr" + }, + { + "id": "0x55fb7c1f8080-Expr", + "variantKey": "Designator", + "Designator": "0x55fb7c1f8270-Designator" + }, + { + "id": "0x55fb7c1f8270-Designator", + "variantKey": "DataRef", + "DataRef": "0x55fb7c1f8280-DataRef" + }, + { + "id": "0x55fb7c1f8280-DataRef", + "variantKey": "Name", + "Name": "0x55fb7c1f8280-Name" + }, + { + "id": "0x55fb7c1f8280-Name", + "source": "i" + }, + { + "id": "0x55fb7c1f8ab0-Expr", + "variantKey": "Designator", + "Designator": "0x55fb7c20c2e0-Designator" + }, + { + "id": "0x55fb7c20c2e0-Designator", + "variantKey": "DataRef", + "DataRef": "0x55fb7c20c2f0-DataRef" + }, + { + "id": "0x55fb7c20c2f0-DataRef", + "variantKey": "ArrayElement", + "ArrayElement": "0x55fb7c21a740-ArrayElement" + }, + { + "id": "0x55fb7c21a740-ArrayElement", + "base": "0x55fb7c21a740-DataRef", + "subscripts": [ + "0x55fb7c209a40-SectionSubscript" + ] + }, + { + "id": "0x55fb7c21a740-DataRef", + "variantKey": "Name", + "Name": "0x55fb7c21a740-Name" + }, + { + "id": "0x55fb7c21a740-Name", + "source": "s_a" + }, + { + "id": "0x55fb7c209a40-SectionSubscript", + "variantKey": "Expr", + "Expr": "0x55fb7c1f82d0-Expr" + }, + { + "id": "0x55fb7c1f82d0-Expr", + "variantKey": "Designator", + "Designator": "0x55fb7c1f8640-Designator" + }, + { + "id": "0x55fb7c1f8640-Designator", + "variantKey": "DataRef", + "DataRef": "0x55fb7c1f8650-DataRef" + }, + { + "id": "0x55fb7c1f8650-DataRef", + "variantKey": "Name", + "Name": "0x55fb7c1f8650-Name" + }, + { + "id": "0x55fb7c1f8650-Name", + "source": "i" + }, + { + "id": "0x55fb7c1f8530-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55fb7c1f8530-ExecutableConstruct" + }, + { + "id": "0x55fb7c1f8530-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55fb7c1f8530-Statement" + }, + { + "id": "0x55fb7c1f8530-Statement", + "statement": "0x55fb7c1f8540-ActionStmt", + "label": "30", + "source": "30continue" + }, + { + "id": "0x55fb7c1f8540-ActionStmt", + "variantKey": "ContinueStmt", + "ContinueStmt": "0x55fb7c1f8540-ContinueStmt" + }, + { + "id": "0x55fb7c1f8540-ContinueStmt" + }, + { + "id": "0x55fb7c209480-Statement", + "statement": "0x55fb7c209490-EndDoStmt", + "source": "" + }, + { + "id": "0x55fb7c209490-EndDoStmt" + }, + { + "id": "0x55fb7c1f8e00-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55fb7c1f8e00-ExecutableConstruct" + }, + { + "id": "0x55fb7c1f8e00-ExecutableConstruct", + "variantKey": "DoConstruct", + "DoConstruct": "0x55fb7c2095a0-DoConstruct" + }, + { + "id": "0x55fb7c2095a0-DoConstruct", + "Statement": "0x55fb7c2095f8-Statement", + "ExecutionPartConstruct": [ + "0x55fb7c1f9960-ExecutionPartConstruct", + "0x55fb7c1f6bd0-ExecutionPartConstruct" + ], + "Statement": "0x55fb7c2095a0-Statement" + }, + { + "id": "0x55fb7c2095f8-Statement", + "statement": "0x55fb7c209608-NonLabelDoStmt", + "source": "do40i=1,5,1" + }, + { + "id": "0x55fb7c209608-NonLabelDoStmt", + "LoopControl": "0x55fb7c209608-LoopControl" + }, + { + "id": "0x55fb7c209608-LoopControl", + "variantKey": "LoopBounds", + "LoopBounds": "0x55fb7c209608-LoopBounds" + }, + { + "id": "0x55fb7c209608-LoopBounds", + "var": "0x55fb7c209608-Name", + "lower": "0x55fb7c1f8f20-Expr", + "upper": "0x55fb7c1f9000-Expr", + "step": "0x55fb7c1f90e0-Expr" + }, + { + "id": "0x55fb7c209608-Name", + "source": "i" + }, + { + "id": "0x55fb7c1f8f20-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fb7c1f8f40-LiteralConstant" + }, + { + "id": "0x55fb7c1f8f40-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55fb7c1f8f40-IntLiteralConstant" + }, + { + "id": "0x55fb7c1f8f40-IntLiteralConstant", + "CharBlock": "1" + }, + { + "id": "0x55fb7c1f9000-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fb7c1f9020-LiteralConstant" + }, + { + "id": "0x55fb7c1f9020-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55fb7c1f9020-IntLiteralConstant" + }, + { + "id": "0x55fb7c1f9020-IntLiteralConstant", + "CharBlock": "5" + }, + { + "id": "0x55fb7c1f90e0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fb7c1f9100-LiteralConstant" + }, + { + "id": "0x55fb7c1f9100-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55fb7c1f9100-IntLiteralConstant" + }, + { + "id": "0x55fb7c1f9100-IntLiteralConstant", + "CharBlock": "1" + }, + { + "id": "0x55fb7c2095e0-ExecutionPartConstruct" + }, + { + "id": "0x55fb7c1f9960-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55fb7c1f9960-ExecutableConstruct" + }, + { + "id": "0x55fb7c1f9960-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55fb7c1f9960-Statement" + }, + { + "id": "0x55fb7c1f9960-Statement", + "statement": "0x55fb7c1f9970-ActionStmt", + "source": "s_b(i+1)=s_dvt(i)" + }, + { + "id": "0x55fb7c1f9970-ActionStmt", + "variantKey": "AssignmentStmt", + "AssignmentStmt": "0x55fb7c1f97e0-AssignmentStmt" + }, + { + "id": "0x55fb7c1f97e0-AssignmentStmt", + "Variable": "0x55fb7c1f98c0-Variable", + "Expr": "0x55fb7c1f97f0-Expr" + }, + { + "id": "0x55fb7c1f98c0-Variable", + "variantKey": "Designator", + "Designator": "0x55fb7c1f5ba0-Designator" + }, + { + "id": "0x55fb7c1f5ba0-Designator", + "variantKey": "DataRef", + "DataRef": "0x55fb7c1f5bb0-DataRef" + }, + { + "id": "0x55fb7c1f5bb0-DataRef", + "variantKey": "ArrayElement", + "ArrayElement": "0x55fb7c210490-ArrayElement" + }, + { + "id": "0x55fb7c210490-ArrayElement", + "base": "0x55fb7c210490-DataRef", + "subscripts": [ + "0x55fb7c2239e0-SectionSubscript" + ] + }, + { + "id": "0x55fb7c210490-DataRef", + "variantKey": "Name", + "Name": "0x55fb7c210490-Name" + }, + { + "id": "0x55fb7c210490-Name", + "source": "s_b" + }, + { + "id": "0x55fb7c2239e0-SectionSubscript", + "variantKey": "Expr", + "Expr": "0x55fb7c1f86a0-Expr" + }, + { + "id": "0x55fb7c1f86a0-Expr", + "variantKey": "Add", + "Add": "0x55fb7c1f86c0-Add" + }, + { + "id": "0x55fb7c1f86c0-Add", + "left": "0x55fb7c1f9400-Expr", + "right": "0x55fb7c1f9320-Expr", + "op": "ADD" + }, + { + "id": "0x55fb7c1f9400-Expr", + "variantKey": "Designator", + "Designator": "0x55fb7c1f3e30-Designator" + }, + { + "id": "0x55fb7c1f3e30-Designator", + "variantKey": "DataRef", + "DataRef": "0x55fb7c1f3e40-DataRef" + }, + { + "id": "0x55fb7c1f3e40-DataRef", + "variantKey": "Name", + "Name": "0x55fb7c1f3e40-Name" + }, + { + "id": "0x55fb7c1f3e40-Name", + "source": "i" + }, + { + "id": "0x55fb7c1f9320-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fb7c1f9340-LiteralConstant" + }, + { + "id": "0x55fb7c1f9340-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55fb7c1f9340-IntLiteralConstant" + }, + { + "id": "0x55fb7c1f9340-IntLiteralConstant", + "CharBlock": "1" + }, + { + "id": "0x55fb7c1f97f0-Expr", + "variantKey": "Designator", + "Designator": "0x55fb7c1f8900-Designator" + }, + { + "id": "0x55fb7c1f8900-Designator", + "variantKey": "DataRef", + "DataRef": "0x55fb7c1f8910-DataRef" + }, + { + "id": "0x55fb7c1f8910-DataRef", + "variantKey": "ArrayElement", + "ArrayElement": "0x55fb7c217540-ArrayElement" + }, + { + "id": "0x55fb7c217540-ArrayElement", + "base": "0x55fb7c217540-DataRef", + "subscripts": [ + "0x55fb7c206670-SectionSubscript" + ] + }, + { + "id": "0x55fb7c217540-DataRef", + "variantKey": "Name", + "Name": "0x55fb7c217540-Name" + }, + { + "id": "0x55fb7c217540-Name", + "source": "s_dvt" + }, + { + "id": "0x55fb7c206670-SectionSubscript", + "variantKey": "Expr", + "Expr": "0x55fb7c1f9240-Expr" + }, + { + "id": "0x55fb7c1f9240-Expr", + "variantKey": "Designator", + "Designator": "0x55fb7c1f8580-Designator" + }, + { + "id": "0x55fb7c1f8580-Designator", + "variantKey": "DataRef", + "DataRef": "0x55fb7c1f8590-DataRef" + }, + { + "id": "0x55fb7c1f8590-DataRef", + "variantKey": "Name", + "Name": "0x55fb7c1f8590-Name" + }, + { + "id": "0x55fb7c1f8590-Name", + "source": "i" + }, + { + "id": "0x55fb7c1f6bd0-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55fb7c1f6bd0-ExecutableConstruct" + }, + { + "id": "0x55fb7c1f6bd0-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55fb7c1f6bd0-Statement" + }, + { + "id": "0x55fb7c1f6bd0-Statement", + "statement": "0x55fb7c1f6be0-ActionStmt", + "label": "40", + "source": "40continue" + }, + { + "id": "0x55fb7c1f6be0-ActionStmt", + "variantKey": "ContinueStmt", + "ContinueStmt": "0x55fb7c1f6be0-ContinueStmt" + }, + { + "id": "0x55fb7c1f6be0-ContinueStmt" + }, + { + "id": "0x55fb7c2095a0-Statement", + "statement": "0x55fb7c2095b0-EndDoStmt", + "source": "" + }, + { + "id": "0x55fb7c2095b0-EndDoStmt" + }, + { + "id": "0x55fb7c1fa550-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55fb7c1fa550-ExecutableConstruct" + }, + { + "id": "0x55fb7c1fa550-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55fb7c1fa550-Statement" + }, + { + "id": "0x55fb7c1fa550-Statement", + "statement": "0x55fb7c1fa560-ActionStmt", + "source": "v_a(2:6)=v_a(1:5)+v_b(1:5)" + }, + { + "id": "0x55fb7c1fa560-ActionStmt", + "variantKey": "AssignmentStmt", + "AssignmentStmt": "0x55fb7c1f9b70-AssignmentStmt" + }, + { + "id": "0x55fb7c1f9b70-AssignmentStmt", + "Variable": "0x55fb7c1f9c50-Variable", + "Expr": "0x55fb7c1f9b80-Expr" + }, + { + "id": "0x55fb7c1f9c50-Variable", + "variantKey": "Designator", + "Designator": "0x55fb7c1f83b0-Designator" + }, + { + "id": "0x55fb7c1f83b0-Designator", + "variantKey": "DataRef", + "DataRef": "0x55fb7c1f83c0-DataRef" + }, + { + "id": "0x55fb7c1f83c0-DataRef", + "variantKey": "ArrayElement", + "ArrayElement": "0x55fb7c204db0-ArrayElement" + }, + { + "id": "0x55fb7c204db0-ArrayElement", + "base": "0x55fb7c204db0-DataRef", + "subscripts": [ + "0x55fb7c1fdc50-SectionSubscript" + ] + }, + { + "id": "0x55fb7c204db0-DataRef", + "variantKey": "Name", + "Name": "0x55fb7c204db0-Name" + }, + { + "id": "0x55fb7c204db0-Name", + "source": "v_a" + }, + { + "id": "0x55fb7c1fdc50-SectionSubscript", + "variantKey": "SubscriptTriplet", + "SubscriptTriplet": "0x55fb7c1fdc50-SubscriptTriplet" + }, + { + "id": "0x55fb7c1fdc50-SubscriptTriplet", + "start": "0x55fb7c1f99b0-Expr", + "end": "0x55fb7c1f9a90-Expr" + }, + { + "id": "0x55fb7c1f99b0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fb7c1f99d0-LiteralConstant" + }, + { + "id": "0x55fb7c1f99d0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55fb7c1f99d0-IntLiteralConstant" + }, + { + "id": "0x55fb7c1f99d0-IntLiteralConstant", + "CharBlock": "2" + }, + { + "id": "0x55fb7c1f9a90-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fb7c1f9ab0-LiteralConstant" + }, + { + "id": "0x55fb7c1f9ab0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55fb7c1f9ab0-IntLiteralConstant" + }, + { + "id": "0x55fb7c1f9ab0-IntLiteralConstant", + "CharBlock": "6" + }, + { + "id": "0x55fb7c1f9b80-Expr", + "variantKey": "Add", + "Add": "0x55fb7c1f9ba0-Add" + }, + { + "id": "0x55fb7c1f9ba0-Add", + "left": "0x55fb7c1fa320-Expr", + "right": "0x55fb7c1fa240-Expr", + "op": "ADD" + }, + { + "id": "0x55fb7c1fa320-Expr", + "variantKey": "Designator", + "Designator": "0x55fb7c1f9e40-Designator" + }, + { + "id": "0x55fb7c1f9e40-Designator", + "variantKey": "DataRef", + "DataRef": "0x55fb7c1f9e50-DataRef" + }, + { + "id": "0x55fb7c1f9e50-DataRef", + "variantKey": "ArrayElement", + "ArrayElement": "0x55fb7c205490-ArrayElement" + }, + { + "id": "0x55fb7c205490-ArrayElement", + "base": "0x55fb7c205490-DataRef", + "subscripts": [ + "0x55fb7c1fde30-SectionSubscript" + ] + }, + { + "id": "0x55fb7c205490-DataRef", + "variantKey": "Name", + "Name": "0x55fb7c205490-Name" + }, + { + "id": "0x55fb7c205490-Name", + "source": "v_a" + }, + { + "id": "0x55fb7c1fde30-SectionSubscript", + "variantKey": "SubscriptTriplet", + "SubscriptTriplet": "0x55fb7c1fde30-SubscriptTriplet" + }, + { + "id": "0x55fb7c1fde30-SubscriptTriplet", + "start": "0x55fb7c1f9c80-Expr", + "end": "0x55fb7c1f9d60-Expr" + }, + { + "id": "0x55fb7c1f9c80-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fb7c1f9ca0-LiteralConstant" + }, + { + "id": "0x55fb7c1f9ca0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55fb7c1f9ca0-IntLiteralConstant" + }, + { + "id": "0x55fb7c1f9ca0-IntLiteralConstant", + "CharBlock": "1" + }, + { + "id": "0x55fb7c1f9d60-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fb7c1f9d80-LiteralConstant" + }, + { + "id": "0x55fb7c1f9d80-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55fb7c1f9d80-IntLiteralConstant" + }, + { + "id": "0x55fb7c1f9d80-IntLiteralConstant", + "CharBlock": "5" + }, + { + "id": "0x55fb7c1fa240-Expr", + "variantKey": "Designator", + "Designator": "0x55fb7c1fa1e0-Designator" + }, + { + "id": "0x55fb7c1fa1e0-Designator", + "variantKey": "DataRef", + "DataRef": "0x55fb7c1fa1f0-DataRef" + }, + { + "id": "0x55fb7c1fa1f0-DataRef", + "variantKey": "ArrayElement", + "ArrayElement": "0x55fb7c205550-ArrayElement" + }, + { + "id": "0x55fb7c205550-ArrayElement", + "base": "0x55fb7c205550-DataRef", + "subscripts": [ + "0x55fb7c1fdfd0-SectionSubscript" + ] + }, + { + "id": "0x55fb7c205550-DataRef", + "variantKey": "Name", + "Name": "0x55fb7c205550-Name" + }, + { + "id": "0x55fb7c205550-Name", + "source": "v_b" + }, + { + "id": "0x55fb7c1fdfd0-SectionSubscript", + "variantKey": "SubscriptTriplet", + "SubscriptTriplet": "0x55fb7c1fdfd0-SubscriptTriplet" + }, + { + "id": "0x55fb7c1fdfd0-SubscriptTriplet", + "start": "0x55fb7c1f9f60-Expr", + "end": "0x55fb7c1fa0a0-Expr" + }, + { + "id": "0x55fb7c1f9f60-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fb7c1f9f80-LiteralConstant" + }, + { + "id": "0x55fb7c1f9f80-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55fb7c1f9f80-IntLiteralConstant" + }, + { + "id": "0x55fb7c1f9f80-IntLiteralConstant", + "CharBlock": "1" + }, + { + "id": "0x55fb7c1fa0a0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fb7c1fa0c0-LiteralConstant" + }, + { + "id": "0x55fb7c1fa0c0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55fb7c1fa0c0-IntLiteralConstant" + }, + { + "id": "0x55fb7c1fa0c0-IntLiteralConstant", + "CharBlock": "5" + }, + { + "id": "0x55fb7c1faee0-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55fb7c1faee0-ExecutableConstruct" + }, + { + "id": "0x55fb7c1faee0-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55fb7c1faee0-Statement" + }, + { + "id": "0x55fb7c1faee0-Statement", + "statement": "0x55fb7c1faef0-ActionStmt", + "source": "v_b(2:6)=v_b(1:5)+v_a(1:5)" + }, + { + "id": "0x55fb7c1faef0-ActionStmt", + "variantKey": "AssignmentStmt", + "AssignmentStmt": "0x55fb7c1fa760-AssignmentStmt" + }, + { + "id": "0x55fb7c1fa760-AssignmentStmt", + "Variable": "0x55fb7c1fa840-Variable", + "Expr": "0x55fb7c1fa770-Expr" + }, + { + "id": "0x55fb7c1fa840-Variable", + "variantKey": "Designator", + "Designator": "0x55fb7c1f9f00-Designator" + }, + { + "id": "0x55fb7c1f9f00-Designator", + "variantKey": "DataRef", + "DataRef": "0x55fb7c1f9f10-DataRef" + }, + { + "id": "0x55fb7c1f9f10-DataRef", + "variantKey": "ArrayElement", + "ArrayElement": "0x55fb7c205950-ArrayElement" + }, + { + "id": "0x55fb7c205950-ArrayElement", + "base": "0x55fb7c205950-DataRef", + "subscripts": [ + "0x55fb7c1fe180-SectionSubscript" + ] + }, + { + "id": "0x55fb7c205950-DataRef", + "variantKey": "Name", + "Name": "0x55fb7c205950-Name" + }, + { + "id": "0x55fb7c205950-Name", + "source": "v_b" + }, + { + "id": "0x55fb7c1fe180-SectionSubscript", + "variantKey": "SubscriptTriplet", + "SubscriptTriplet": "0x55fb7c1fe180-SubscriptTriplet" + }, + { + "id": "0x55fb7c1fe180-SubscriptTriplet", + "start": "0x55fb7c1fa5a0-Expr", + "end": "0x55fb7c1fa680-Expr" + }, + { + "id": "0x55fb7c1fa5a0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fb7c1fa5c0-LiteralConstant" + }, + { + "id": "0x55fb7c1fa5c0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55fb7c1fa5c0-IntLiteralConstant" + }, + { + "id": "0x55fb7c1fa5c0-IntLiteralConstant", + "CharBlock": "2" + }, + { + "id": "0x55fb7c1fa680-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fb7c1fa6a0-LiteralConstant" + }, + { + "id": "0x55fb7c1fa6a0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55fb7c1fa6a0-IntLiteralConstant" + }, + { + "id": "0x55fb7c1fa6a0-IntLiteralConstant", + "CharBlock": "6" + }, + { + "id": "0x55fb7c1fa770-Expr", + "variantKey": "Add", + "Add": "0x55fb7c1fa790-Add" + }, + { + "id": "0x55fb7c1fa790-Add", + "left": "0x55fb7c1fad90-Expr", + "right": "0x55fb7c1facb0-Expr", + "op": "ADD" + }, + { + "id": "0x55fb7c1fad90-Expr", + "variantKey": "Designator", + "Designator": "0x55fb7c1f8780-Designator" + }, + { + "id": "0x55fb7c1f8780-Designator", + "variantKey": "DataRef", + "DataRef": "0x55fb7c1f8790-DataRef" + }, + { + "id": "0x55fb7c1f8790-DataRef", + "variantKey": "ArrayElement", + "ArrayElement": "0x55fb7c206180-ArrayElement" + }, + { + "id": "0x55fb7c206180-ArrayElement", + "base": "0x55fb7c206180-DataRef", + "subscripts": [ + "0x55fb7c2036f0-SectionSubscript" + ] + }, + { + "id": "0x55fb7c206180-DataRef", + "variantKey": "Name", + "Name": "0x55fb7c206180-Name" + }, + { + "id": "0x55fb7c206180-Name", + "source": "v_b" + }, + { + "id": "0x55fb7c2036f0-SectionSubscript", + "variantKey": "SubscriptTriplet", + "SubscriptTriplet": "0x55fb7c2036f0-SubscriptTriplet" + }, + { + "id": "0x55fb7c2036f0-SubscriptTriplet", + "start": "0x55fb7c1fa870-Expr", + "end": "0x55fb7c1fa950-Expr" + }, + { + "id": "0x55fb7c1fa870-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fb7c1fa890-LiteralConstant" + }, + { + "id": "0x55fb7c1fa890-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55fb7c1fa890-IntLiteralConstant" + }, + { + "id": "0x55fb7c1fa890-IntLiteralConstant", + "CharBlock": "1" + }, + { + "id": "0x55fb7c1fa950-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fb7c1fa970-LiteralConstant" + }, + { + "id": "0x55fb7c1fa970-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55fb7c1fa970-IntLiteralConstant" + }, + { + "id": "0x55fb7c1fa970-IntLiteralConstant", + "CharBlock": "5" + }, + { + "id": "0x55fb7c1facb0-Expr", + "variantKey": "Designator", + "Designator": "0x55fb7c1fac50-Designator" + }, + { + "id": "0x55fb7c1fac50-Designator", + "variantKey": "DataRef", + "DataRef": "0x55fb7c1fac60-DataRef" + }, + { + "id": "0x55fb7c1fac60-DataRef", + "variantKey": "ArrayElement", + "ArrayElement": "0x55fb7c2061e0-ArrayElement" + }, + { + "id": "0x55fb7c2061e0-ArrayElement", + "base": "0x55fb7c2061e0-DataRef", + "subscripts": [ + "0x55fb7c1fd7f0-SectionSubscript" + ] + }, + { + "id": "0x55fb7c2061e0-DataRef", + "variantKey": "Name", + "Name": "0x55fb7c2061e0-Name" + }, + { + "id": "0x55fb7c2061e0-Name", + "source": "v_a" + }, + { + "id": "0x55fb7c1fd7f0-SectionSubscript", + "variantKey": "SubscriptTriplet", + "SubscriptTriplet": "0x55fb7c1fd7f0-SubscriptTriplet" + }, + { + "id": "0x55fb7c1fd7f0-SubscriptTriplet", + "start": "0x55fb7c1faa30-Expr", + "end": "0x55fb7c1fab10-Expr" + }, + { + "id": "0x55fb7c1faa30-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fb7c1faa50-LiteralConstant" + }, + { + "id": "0x55fb7c1faa50-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55fb7c1faa50-IntLiteralConstant" + }, + { + "id": "0x55fb7c1faa50-IntLiteralConstant", + "CharBlock": "1" + }, + { + "id": "0x55fb7c1fab10-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fb7c1fab30-LiteralConstant" + }, + { + "id": "0x55fb7c1fab30-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55fb7c1fab30-IntLiteralConstant" + }, + { + "id": "0x55fb7c1fab30-IntLiteralConstant", + "CharBlock": "5" + }, + { + "id": "0x55fb7c1fbe40-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55fb7c1fbe40-ExecutableConstruct" + }, + { + "id": "0x55fb7c1fbe40-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55fb7c1fbe40-Statement" + }, + { + "id": "0x55fb7c1fbe40-Statement", + "statement": "0x55fb7c1fbe50-ActionStmt", + "source": "callsub1(error,v_a,v_b,v_a+v_b)" + }, + { + "id": "0x55fb7c1fbe50-ActionStmt", + "variantKey": "CallStmt", + "CallStmt": "0x55fb7c1fde70-CallStmt" + }, + { + "id": "0x55fb7c1fde70-CallStmt", + "call": "0x55fb7c1fde70-Call" + }, + { + "id": "0x55fb7c1fde70-Call", + "ProcedureDesignator": "0x55fb7c1fde88-ProcedureDesignator", + "ActualArgSpec": [ + "0x55fb7c1fb9d0-ActualArgSpec", + "0x55fb7c1fb8c0-ActualArgSpec", + "0x55fb7c1fb7b0-ActualArgSpec", + "0x55fb7c1fb6a0-ActualArgSpec" + ] + }, + { + "id": "0x55fb7c1fde88-ProcedureDesignator", + "variantKey": "Name", + "Name": "0x55fb7c1fde88-Name" + }, + { + "id": "0x55fb7c1fde88-Name", + "source": "sub1" + }, + { + "id": "0x55fb7c1fb9d0-ActualArgSpec", + "ActualArg": "0x55fb7c1fb9d0-ActualArg" + }, + { + "id": "0x55fb7c1fb9d0-ActualArg", + "variantKey": "Expr", + "Expr": "0x55fb7c1fb3d0-Expr" + }, + { + "id": "0x55fb7c1fb3d0-Expr", + "variantKey": "Designator", + "Designator": "0x55fb7c1fb290-Designator" + }, + { + "id": "0x55fb7c1fb290-Designator", + "variantKey": "DataRef", + "DataRef": "0x55fb7c1fb2a0-DataRef" + }, + { + "id": "0x55fb7c1fb2a0-DataRef", + "variantKey": "Name", + "Name": "0x55fb7c1fb2a0-Name" + }, + { + "id": "0x55fb7c1fb2a0-Name", + "source": "error" + }, + { + "id": "0x55fb7c1fb8c0-ActualArgSpec", + "ActualArg": "0x55fb7c1fb8c0-ActualArg" + }, + { + "id": "0x55fb7c1fb8c0-ActualArg", + "variantKey": "Expr", + "Expr": "0x55fb7c1fb4b0-Expr" + }, + { + "id": "0x55fb7c1fb4b0-Expr", + "variantKey": "Designator", + "Designator": "0x55fb7c1f9ea0-Designator" + }, + { + "id": "0x55fb7c1f9ea0-Designator", + "variantKey": "DataRef", + "DataRef": "0x55fb7c1f9eb0-DataRef" + }, + { + "id": "0x55fb7c1f9eb0-DataRef", + "variantKey": "Name", + "Name": "0x55fb7c1f9eb0-Name" + }, + { + "id": "0x55fb7c1f9eb0-Name", + "source": "v_a" + }, + { + "id": "0x55fb7c1fb7b0-ActualArgSpec", + "ActualArg": "0x55fb7c1fb7b0-ActualArg" + }, + { + "id": "0x55fb7c1fb7b0-ActualArg", + "variantKey": "Expr", + "Expr": "0x55fb7c1fb2f0-Expr" + }, + { + "id": "0x55fb7c1fb2f0-Expr", + "variantKey": "Designator", + "Designator": "0x55fb7c1f5060-Designator" + }, + { + "id": "0x55fb7c1f5060-Designator", + "variantKey": "DataRef", + "DataRef": "0x55fb7c1f5070-DataRef" + }, + { + "id": "0x55fb7c1f5070-DataRef", + "variantKey": "Name", + "Name": "0x55fb7c1f5070-Name" + }, + { + "id": "0x55fb7c1f5070-Name", + "source": "v_b" + }, + { + "id": "0x55fb7c1fb6a0-ActualArgSpec", + "ActualArg": "0x55fb7c1fb6a0-ActualArg" + }, + { + "id": "0x55fb7c1fb6a0-ActualArg", + "variantKey": "Expr", + "Expr": "0x55fb7c1fb0f0-Expr" + }, + { + "id": "0x55fb7c1fb0f0-Expr", + "variantKey": "Add", + "Add": "0x55fb7c1fb110-Add" + }, + { + "id": "0x55fb7c1fb110-Add", + "left": "0x55fb7c1faf30-Expr", + "right": "0x55fb7c1fb010-Expr", + "op": "ADD" + }, + { + "id": "0x55fb7c1faf30-Expr", + "variantKey": "Designator", + "Designator": "0x55fb7c1fabf0-Designator" + }, + { + "id": "0x55fb7c1fabf0-Designator", + "variantKey": "DataRef", + "DataRef": "0x55fb7c1fac00-DataRef" + }, + { + "id": "0x55fb7c1fac00-DataRef", + "variantKey": "Name", + "Name": "0x55fb7c1fac00-Name" + }, + { + "id": "0x55fb7c1fac00-Name", + "source": "v_a" + }, + { + "id": "0x55fb7c1fb010-Expr", + "variantKey": "Designator", + "Designator": "0x55fb7c1fbc90-Designator" + }, + { + "id": "0x55fb7c1fbc90-Designator", + "variantKey": "DataRef", + "DataRef": "0x55fb7c1fbca0-DataRef" + }, + { + "id": "0x55fb7c1fbca0-DataRef", + "variantKey": "Name", + "Name": "0x55fb7c1fbca0-Name" + }, + { + "id": "0x55fb7c1fbca0-Name", + "source": "v_b" + }, + { + "id": "0x55fb7c1fcac0-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55fb7c1fcac0-ExecutableConstruct" + }, + { + "id": "0x55fb7c1fcac0-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55fb7c1fcac0-Statement" + }, + { + "id": "0x55fb7c1fcac0-Statement", + "statement": "0x55fb7c1fcad0-ActionStmt", + "source": "callsub2(error,v_a,v_b,v_a-v_b)" + }, + { + "id": "0x55fb7c1fcad0-ActionStmt", + "variantKey": "CallStmt", + "CallStmt": "0x55fb7c1fc990-CallStmt" + }, + { + "id": "0x55fb7c1fc990-CallStmt", + "call": "0x55fb7c1fc990-Call" + }, + { + "id": "0x55fb7c1fc990-Call", + "ProcedureDesignator": "0x55fb7c1fc9a8-ProcedureDesignator", + "ActualArgSpec": [ + "0x55fb7c1fc830-ActualArgSpec", + "0x55fb7c1fc720-ActualArgSpec", + "0x55fb7c1fc610-ActualArgSpec", + "0x55fb7c1fc500-ActualArgSpec" + ] + }, + { + "id": "0x55fb7c1fc9a8-ProcedureDesignator", + "variantKey": "Name", + "Name": "0x55fb7c1fc9a8-Name" + }, + { + "id": "0x55fb7c1fc9a8-Name", + "source": "sub2" + }, + { + "id": "0x55fb7c1fc830-ActualArgSpec", + "ActualArg": "0x55fb7c1fc830-ActualArg" + }, + { + "id": "0x55fb7c1fc830-ActualArg", + "variantKey": "Expr", + "Expr": "0x55fb7c1fc2d0-Expr" + }, + { + "id": "0x55fb7c1fc2d0-Expr", + "variantKey": "Designator", + "Designator": "0x55fb7c1fc190-Designator" + }, + { + "id": "0x55fb7c1fc190-Designator", + "variantKey": "DataRef", + "DataRef": "0x55fb7c1fc1a0-DataRef" + }, + { + "id": "0x55fb7c1fc1a0-DataRef", + "variantKey": "Name", + "Name": "0x55fb7c1fc1a0-Name" + }, + { + "id": "0x55fb7c1fc1a0-Name", + "source": "error" + }, + { + "id": "0x55fb7c1fc720-ActualArgSpec", + "ActualArg": "0x55fb7c1fc720-ActualArg" + }, + { + "id": "0x55fb7c1fc720-ActualArg", + "variantKey": "Expr", + "Expr": "0x55fb7c1fc3b0-Expr" + }, + { + "id": "0x55fb7c1fc3b0-Expr", + "variantKey": "Designator", + "Designator": "0x55fb7c1f3f00-Designator" + }, + { + "id": "0x55fb7c1f3f00-Designator", + "variantKey": "DataRef", + "DataRef": "0x55fb7c1f3f10-DataRef" + }, + { + "id": "0x55fb7c1f3f10-DataRef", + "variantKey": "Name", + "Name": "0x55fb7c1f3f10-Name" + }, + { + "id": "0x55fb7c1f3f10-Name", + "source": "v_a" + }, + { + "id": "0x55fb7c1fc610-ActualArgSpec", + "ActualArg": "0x55fb7c1fc610-ActualArg" + }, + { + "id": "0x55fb7c1fc610-ActualArg", + "variantKey": "Expr", + "Expr": "0x55fb7c1fc1f0-Expr" + }, + { + "id": "0x55fb7c1fc1f0-Expr", + "variantKey": "Designator", + "Designator": "0x55fb7c1f98f0-Designator" + }, + { + "id": "0x55fb7c1f98f0-Designator", + "variantKey": "DataRef", + "DataRef": "0x55fb7c1f9900-DataRef" + }, + { + "id": "0x55fb7c1f9900-DataRef", + "variantKey": "Name", + "Name": "0x55fb7c1f9900-Name" + }, + { + "id": "0x55fb7c1f9900-Name", + "source": "v_b" + }, + { + "id": "0x55fb7c1fc500-ActualArgSpec", + "ActualArg": "0x55fb7c1fc500-ActualArg" + }, + { + "id": "0x55fb7c1fc500-ActualArg", + "variantKey": "Expr", + "Expr": "0x55fb7c1fc050-Expr" + }, + { + "id": "0x55fb7c1fc050-Expr", + "variantKey": "Subtract", + "Subtract": "0x55fb7c1fc070-Subtract" + }, + { + "id": "0x55fb7c1fc070-Subtract", + "left": "0x55fb7c1fbe90-Expr", + "right": "0x55fb7c1fbf70-Expr", + "op": "SUBTRACT" + }, + { + "id": "0x55fb7c1fbe90-Expr", + "variantKey": "Designator", + "Designator": "0x55fb7c1fb630-Designator" + }, + { + "id": "0x55fb7c1fb630-Designator", + "variantKey": "DataRef", + "DataRef": "0x55fb7c1fb640-DataRef" + }, + { + "id": "0x55fb7c1fb640-DataRef", + "variantKey": "Name", + "Name": "0x55fb7c1fb640-Name" + }, + { + "id": "0x55fb7c1fb640-Name", + "source": "v_a" + }, + { + "id": "0x55fb7c1fbf70-Expr", + "variantKey": "Designator", + "Designator": "0x55fb7c1fc930-Designator" + }, + { + "id": "0x55fb7c1fc930-Designator", + "variantKey": "DataRef", + "DataRef": "0x55fb7c1fc940-DataRef" + }, + { + "id": "0x55fb7c1fc940-DataRef", + "variantKey": "Name", + "Name": "0x55fb7c1fc940-Name" + }, + { + "id": "0x55fb7c1fc940-Name", + "source": "v_b" + }, + { + "id": "0x55fb7c1fc4a0-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55fb7c1fc4a0-ExecutableConstruct" + }, + { + "id": "0x55fb7c1fc4a0-ExecutableConstruct", + "variantKey": "DoConstruct", + "DoConstruct": "0x55fb7c2096c0-DoConstruct" + }, + { + "id": "0x55fb7c2096c0-DoConstruct", + "Statement": "0x55fb7c209718-Statement", + "ExecutionPartConstruct": [ + "0x55fb7c20b790-ExecutionPartConstruct", + "0x55fb7c20deb0-ExecutionPartConstruct", + "0x55fb7c20d790-ExecutionPartConstruct" + ], + "Statement": "0x55fb7c2096c0-Statement" + }, + { + "id": "0x55fb7c209718-Statement", + "statement": "0x55fb7c209728-NonLabelDoStmt", + "source": "do50i=1,10,1" + }, + { + "id": "0x55fb7c209728-NonLabelDoStmt", + "LoopControl": "0x55fb7c209728-LoopControl" + }, + { + "id": "0x55fb7c209728-LoopControl", + "variantKey": "LoopBounds", + "LoopBounds": "0x55fb7c209728-LoopBounds" + }, + { + "id": "0x55fb7c209728-LoopBounds", + "var": "0x55fb7c209728-Name", + "lower": "0x55fb7c1fcb10-Expr", + "upper": "0x55fb7c1fcbf0-Expr", + "step": "0x55fb7c1fccd0-Expr" + }, + { + "id": "0x55fb7c209728-Name", + "source": "i" + }, + { + "id": "0x55fb7c1fcb10-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fb7c1fcb30-LiteralConstant" + }, + { + "id": "0x55fb7c1fcb30-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55fb7c1fcb30-IntLiteralConstant" + }, + { + "id": "0x55fb7c1fcb30-IntLiteralConstant", + "CharBlock": "1" + }, + { + "id": "0x55fb7c1fcbf0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fb7c1fcc10-LiteralConstant" + }, + { + "id": "0x55fb7c1fcc10-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55fb7c1fcc10-IntLiteralConstant" + }, + { + "id": "0x55fb7c1fcc10-IntLiteralConstant", + "CharBlock": "10" + }, + { + "id": "0x55fb7c1fccd0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fb7c1fccf0-LiteralConstant" + }, + { + "id": "0x55fb7c1fccf0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55fb7c1fccf0-IntLiteralConstant" + }, + { + "id": "0x55fb7c1fccf0-IntLiteralConstant", + "CharBlock": "1" + }, + { + "id": "0x55fb7c209700-ExecutionPartConstruct" + }, + { + "id": "0x55fb7c20b790-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55fb7c20b790-ExecutableConstruct" + }, + { + "id": "0x55fb7c20b790-ExecutableConstruct", + "variantKey": "IfConstruct", + "IfConstruct": "0x55fb7c19c780-IfConstruct" + }, + { + "id": "0x55fb7c19c780-IfConstruct", + "Statement": "0x55fb7c19c850-Statement", + "ExecutionPartConstruct": [ + "0x55fb7c1f41b0-ExecutionPartConstruct" + ], + "Statement": "0x55fb7c19c780-Statement" + }, + { + "id": "0x55fb7c19c850-Statement", + "statement": "0x55fb7c19c860-IfThenStmt", + "source": "if(v_a(i).ne.s_a(i))then" + }, + { + "id": "0x55fb7c19c860-IfThenStmt", + "Expr": "0x55fb7c20b440-Expr" + }, + { + "id": "0x55fb7c20b440-Expr", + "variantKey": "NE", + "NE": "0x55fb7c20b460-NE" + }, + { + "id": "0x55fb7c20b460-NE", + "left": "0x55fb7c1fcf30-Expr", + "right": "0x55fb7c20b360-Expr", + "op": "NE" + }, + { + "id": "0x55fb7c1fcf30-Expr", + "variantKey": "Designator", + "Designator": "0x55fb7c1f79c0-Designator" + }, + { + "id": "0x55fb7c1f79c0-Designator", + "variantKey": "DataRef", + "DataRef": "0x55fb7c1f79d0-DataRef" + }, + { + "id": "0x55fb7c1f79d0-DataRef", + "variantKey": "ArrayElement", + "ArrayElement": "0x55fb7c207b60-ArrayElement" + }, + { + "id": "0x55fb7c207b60-ArrayElement", + "base": "0x55fb7c207b60-DataRef", + "subscripts": [ + "0x55fb7c2306d0-SectionSubscript" + ] + }, + { + "id": "0x55fb7c207b60-DataRef", + "variantKey": "Name", + "Name": "0x55fb7c207b60-Name" + }, + { + "id": "0x55fb7c207b60-Name", + "source": "v_a" + }, + { + "id": "0x55fb7c2306d0-SectionSubscript", + "variantKey": "Expr", + "Expr": "0x55fb7c1f95f0-Expr" + }, + { + "id": "0x55fb7c1f95f0-Expr", + "variantKey": "Designator", + "Designator": "0x55fb7c1fa040-Designator" + }, + { + "id": "0x55fb7c1fa040-Designator", + "variantKey": "DataRef", + "DataRef": "0x55fb7c1fa050-DataRef" + }, + { + "id": "0x55fb7c1fa050-DataRef", + "variantKey": "Name", + "Name": "0x55fb7c1fa050-Name" + }, + { + "id": "0x55fb7c1fa050-Name", + "source": "i" + }, + { + "id": "0x55fb7c20b360-Expr", + "variantKey": "Designator", + "Designator": "0x55fb7c1f84c0-Designator" + }, + { + "id": "0x55fb7c1f84c0-Designator", + "variantKey": "DataRef", + "DataRef": "0x55fb7c1f84d0-DataRef" + }, + { + "id": "0x55fb7c1f84d0-DataRef", + "variantKey": "ArrayElement", + "ArrayElement": "0x55fb7c20adf0-ArrayElement" + }, + { + "id": "0x55fb7c20adf0-ArrayElement", + "base": "0x55fb7c20adf0-DataRef", + "subscripts": [ + "0x55fb7c2190e0-SectionSubscript" + ] + }, + { + "id": "0x55fb7c20adf0-DataRef", + "variantKey": "Name", + "Name": "0x55fb7c20adf0-Name" + }, + { + "id": "0x55fb7c20adf0-Name", + "source": "s_a" + }, + { + "id": "0x55fb7c2190e0-SectionSubscript", + "variantKey": "Expr", + "Expr": "0x55fb7c20b280-Expr" + }, + { + "id": "0x55fb7c20b280-Expr", + "variantKey": "Designator", + "Designator": "0x55fb7c1fb230-Designator" + }, + { + "id": "0x55fb7c1fb230-Designator", + "variantKey": "DataRef", + "DataRef": "0x55fb7c1fb240-DataRef" + }, + { + "id": "0x55fb7c1fb240-DataRef", + "variantKey": "Name", + "Name": "0x55fb7c1fb240-Name" + }, + { + "id": "0x55fb7c1fb240-Name", + "source": "i" + }, + { + "id": "0x55fb7c19c838-ExecutionPartConstruct" + }, + { + "id": "0x55fb7c1f41b0-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55fb7c1f41b0-ExecutableConstruct" + }, + { + "id": "0x55fb7c1f41b0-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55fb7c1f41b0-Statement" + }, + { + "id": "0x55fb7c1f41b0-Statement", + "statement": "0x55fb7c1f41c0-ActionStmt", + "source": "error=error+1" + }, + { + "id": "0x55fb7c1f41c0-ActionStmt", + "variantKey": "AssignmentStmt", + "AssignmentStmt": "0x55fb7c1fd010-AssignmentStmt" + }, + { + "id": "0x55fb7c1fd010-AssignmentStmt", + "Variable": "0x55fb7c1fd0f0-Variable", + "Expr": "0x55fb7c1fd020-Expr" + }, + { + "id": "0x55fb7c1fd0f0-Variable", + "variantKey": "Designator", + "Designator": "0x55fb7c1fca50-Designator" + }, + { + "id": "0x55fb7c1fca50-Designator", + "variantKey": "DataRef", + "DataRef": "0x55fb7c1fca60-DataRef" + }, + { + "id": "0x55fb7c1fca60-DataRef", + "variantKey": "Name", + "Name": "0x55fb7c1fca60-Name" + }, + { + "id": "0x55fb7c1fca60-Name", + "source": "error" + }, + { + "id": "0x55fb7c1fd020-Expr", + "variantKey": "Add", + "Add": "0x55fb7c1fd040-Add" + }, + { + "id": "0x55fb7c1fd040-Add", + "left": "0x55fb7c20d450-Expr", + "right": "0x55fb7c20d370-Expr", + "op": "ADD" + }, + { + "id": "0x55fb7c20d450-Expr", + "variantKey": "Designator", + "Designator": "0x55fb7c1fa180-Designator" + }, + { + "id": "0x55fb7c1fa180-Designator", + "variantKey": "DataRef", + "DataRef": "0x55fb7c1fa190-DataRef" + }, + { + "id": "0x55fb7c1fa190-DataRef", + "variantKey": "Name", + "Name": "0x55fb7c1fa190-Name" + }, + { + "id": "0x55fb7c1fa190-Name", + "source": "error" + }, + { + "id": "0x55fb7c20d370-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fb7c20d390-LiteralConstant" + }, + { + "id": "0x55fb7c20d390-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55fb7c20d390-IntLiteralConstant" + }, + { + "id": "0x55fb7c20d390-IntLiteralConstant", + "CharBlock": "1" + }, + { + "id": "0x55fb7c19c780-Statement", + "statement": "0x55fb7c19c790-EndIfStmt", + "source": "endif" + }, + { + "id": "0x55fb7c19c790-EndIfStmt" + }, + { + "id": "0x55fb7c20deb0-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55fb7c20deb0-ExecutableConstruct" + }, + { + "id": "0x55fb7c20deb0-ExecutableConstruct", + "variantKey": "IfConstruct", + "IfConstruct": "0x55fb7c20e1a0-IfConstruct" + }, + { + "id": "0x55fb7c20e1a0-IfConstruct", + "Statement": "0x55fb7c20e270-Statement", + "ExecutionPartConstruct": [ + "0x55fb7c1f6800-ExecutionPartConstruct" + ], + "Statement": "0x55fb7c20e1a0-Statement" + }, + { + "id": "0x55fb7c20e270-Statement", + "statement": "0x55fb7c20e280-IfThenStmt", + "source": "if(v_b(i).ne.s_b(i))then" + }, + { + "id": "0x55fb7c20e280-IfThenStmt", + "Expr": "0x55fb7c20dbf0-Expr" + }, + { + "id": "0x55fb7c20dbf0-Expr", + "variantKey": "NE", + "NE": "0x55fb7c20dc10-NE" + }, + { + "id": "0x55fb7c20dc10-NE", + "left": "0x55fb7c20d530-Expr", + "right": "0x55fb7c20db10-Expr", + "op": "NE" + }, + { + "id": "0x55fb7c20d530-Expr", + "variantKey": "Designator", + "Designator": "0x55fb7c1f7bb0-Designator" + }, + { + "id": "0x55fb7c1f7bb0-Designator", + "variantKey": "DataRef", + "DataRef": "0x55fb7c1f7bc0-DataRef" + }, + { + "id": "0x55fb7c1f7bc0-DataRef", + "variantKey": "ArrayElement", + "ArrayElement": "0x55fb7c21bcd0-ArrayElement" + }, + { + "id": "0x55fb7c21bcd0-ArrayElement", + "base": "0x55fb7c21bcd0-DataRef", + "subscripts": [ + "0x55fb7c21a4f0-SectionSubscript" + ] + }, + { + "id": "0x55fb7c21bcd0-DataRef", + "variantKey": "Name", + "Name": "0x55fb7c21bcd0-Name" + }, + { + "id": "0x55fb7c21bcd0-Name", + "source": "v_b" + }, + { + "id": "0x55fb7c21a4f0-SectionSubscript", + "variantKey": "Expr", + "Expr": "0x55fb7c20b090-Expr" + }, + { + "id": "0x55fb7c20b090-Expr", + "variantKey": "Designator", + "Designator": "0x55fb7c20de40-Designator" + }, + { + "id": "0x55fb7c20de40-Designator", + "variantKey": "DataRef", + "DataRef": "0x55fb7c20de50-DataRef" + }, + { + "id": "0x55fb7c20de50-DataRef", + "variantKey": "Name", + "Name": "0x55fb7c20de50-Name" + }, + { + "id": "0x55fb7c20de50-Name", + "source": "i" + }, + { + "id": "0x55fb7c20db10-Expr", + "variantKey": "Designator", + "Designator": "0x55fb7c21a0a0-Designator" + }, + { + "id": "0x55fb7c21a0a0-Designator", + "variantKey": "DataRef", + "DataRef": "0x55fb7c21a0b0-DataRef" + }, + { + "id": "0x55fb7c21a0b0-DataRef", + "variantKey": "ArrayElement", + "ArrayElement": "0x55fb7c219a50-ArrayElement" + }, + { + "id": "0x55fb7c219a50-ArrayElement", + "base": "0x55fb7c219a50-DataRef", + "subscripts": [ + "0x55fb7c21a540-SectionSubscript" + ] + }, + { + "id": "0x55fb7c219a50-DataRef", + "variantKey": "Name", + "Name": "0x55fb7c219a50-Name" + }, + { + "id": "0x55fb7c219a50-Name", + "source": "s_b" + }, + { + "id": "0x55fb7c21a540-SectionSubscript", + "variantKey": "Expr", + "Expr": "0x55fb7c20da30-Expr" + }, + { + "id": "0x55fb7c20da30-Expr", + "variantKey": "Designator", + "Designator": "0x55fb7c1fa470-Designator" + }, + { + "id": "0x55fb7c1fa470-Designator", + "variantKey": "DataRef", + "DataRef": "0x55fb7c1fa480-DataRef" + }, + { + "id": "0x55fb7c1fa480-DataRef", + "variantKey": "Name", + "Name": "0x55fb7c1fa480-Name" + }, + { + "id": "0x55fb7c1fa480-Name", + "source": "i" + }, + { + "id": "0x55fb7c20e258-ExecutionPartConstruct" + }, + { + "id": "0x55fb7c1f6800-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55fb7c1f6800-ExecutableConstruct" + }, + { + "id": "0x55fb7c1f6800-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55fb7c1f6800-Statement" + }, + { + "id": "0x55fb7c1f6800-Statement", + "statement": "0x55fb7c1f6810-ActionStmt", + "source": "error=error+1" + }, + { + "id": "0x55fb7c1f6810-ActionStmt", + "variantKey": "AssignmentStmt", + "AssignmentStmt": "0x55fb7c20d610-AssignmentStmt" + }, + { + "id": "0x55fb7c20d610-AssignmentStmt", + "Variable": "0x55fb7c20d6f0-Variable", + "Expr": "0x55fb7c20d620-Expr" + }, + { + "id": "0x55fb7c20d6f0-Variable", + "variantKey": "Designator", + "Designator": "0x55fb7c1fb1d0-Designator" + }, + { + "id": "0x55fb7c1fb1d0-Designator", + "variantKey": "DataRef", + "DataRef": "0x55fb7c1fb1e0-DataRef" + }, + { + "id": "0x55fb7c1fb1e0-DataRef", + "variantKey": "Name", + "Name": "0x55fb7c1fb1e0-Name" + }, + { + "id": "0x55fb7c1fb1e0-Name", + "source": "error" + }, + { + "id": "0x55fb7c20d620-Expr", + "variantKey": "Add", + "Add": "0x55fb7c20d640-Add" + }, + { + "id": "0x55fb7c20d640-Add", + "left": "0x55fb7c20e0c0-Expr", + "right": "0x55fb7c20dfe0-Expr", + "op": "ADD" + }, + { + "id": "0x55fb7c20e0c0-Expr", + "variantKey": "Designator", + "Designator": "0x55fb7c1fc130-Designator" + }, + { + "id": "0x55fb7c1fc130-Designator", + "variantKey": "DataRef", + "DataRef": "0x55fb7c1fc140-DataRef" + }, + { + "id": "0x55fb7c1fc140-DataRef", + "variantKey": "Name", + "Name": "0x55fb7c1fc140-Name" + }, + { + "id": "0x55fb7c1fc140-Name", + "source": "error" + }, + { + "id": "0x55fb7c20dfe0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fb7c20e000-LiteralConstant" + }, + { + "id": "0x55fb7c20e000-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55fb7c20e000-IntLiteralConstant" + }, + { + "id": "0x55fb7c20e000-IntLiteralConstant", + "CharBlock": "1" + }, + { + "id": "0x55fb7c20e1a0-Statement", + "statement": "0x55fb7c20e1b0-EndIfStmt", + "source": "endif" + }, + { + "id": "0x55fb7c20e1b0-EndIfStmt" + }, + { + "id": "0x55fb7c20d790-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55fb7c20d790-ExecutableConstruct" + }, + { + "id": "0x55fb7c20d790-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55fb7c20d790-Statement" + }, + { + "id": "0x55fb7c20d790-Statement", + "statement": "0x55fb7c20d7a0-ActionStmt", + "label": "50", + "source": "50continue" + }, + { + "id": "0x55fb7c20d7a0-ActionStmt", + "variantKey": "ContinueStmt", + "ContinueStmt": "0x55fb7c20d7a0-ContinueStmt" + }, + { + "id": "0x55fb7c20d7a0-ContinueStmt" + }, + { + "id": "0x55fb7c2096c0-Statement", + "statement": "0x55fb7c2096d0-EndDoStmt", + "source": "" + }, + { + "id": "0x55fb7c2096d0-EndDoStmt" + }, + { + "id": "0x55fb7c210170-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55fb7c210170-ExecutableConstruct" + }, + { + "id": "0x55fb7c210170-ExecutableConstruct", + "variantKey": "IfConstruct", + "IfConstruct": "0x55fb7c210220-IfConstruct" + }, + { + "id": "0x55fb7c210220-IfConstruct", + "Statement": "0x55fb7c2102f0-Statement", + "ExecutionPartConstruct": [ + "0x55fb7c1f4fa0-ExecutionPartConstruct" + ], + "ElseBlock": "0x55fb7c210260-ElseBlock", + "Statement": "0x55fb7c210220-Statement" + }, + { + "id": "0x55fb7c2102f0-Statement", + "statement": "0x55fb7c210300-IfThenStmt", + "source": "if(error.eq.0)then" + }, + { + "id": "0x55fb7c210300-IfThenStmt", + "Expr": "0x55fb7c20e2c0-Expr" + }, + { + "id": "0x55fb7c20e2c0-Expr", + "variantKey": "EQ", + "EQ": "0x55fb7c20e2e0-EQ" + }, + { + "id": "0x55fb7c20e2e0-EQ", + "left": "0x55fb7c20e480-Expr", + "right": "0x55fb7c20e3a0-Expr", + "op": "EQ" + }, + { + "id": "0x55fb7c20e480-Expr", + "variantKey": "Designator", + "Designator": "0x55fb7c20d8c0-Designator" + }, + { + "id": "0x55fb7c20d8c0-Designator", + "variantKey": "DataRef", + "DataRef": "0x55fb7c20d8d0-DataRef" + }, + { + "id": "0x55fb7c20d8d0-DataRef", + "variantKey": "Name", + "Name": "0x55fb7c20d8d0-Name" + }, + { + "id": "0x55fb7c20d8d0-Name", + "source": "error" + }, + { + "id": "0x55fb7c20e3a0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fb7c20e3c0-LiteralConstant" + }, + { + "id": "0x55fb7c20e3c0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55fb7c20e3c0-IntLiteralConstant" + }, + { + "id": "0x55fb7c20e3c0-IntLiteralConstant", + "CharBlock": "0" + }, + { + "id": "0x55fb7c2102d8-ExecutionPartConstruct" + }, + { + "id": "0x55fb7c1f4fa0-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55fb7c1f4fa0-ExecutableConstruct" + }, + { + "id": "0x55fb7c1f4fa0-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55fb7c1f4fa0-Statement" + }, + { + "id": "0x55fb7c1f4fa0-Statement", + "statement": "0x55fb7c1f4fb0-ActionStmt", + "source": "write(6,*)'OK'" + }, + { + "id": "0x55fb7c1f4fb0-ActionStmt", + "variantKey": "WriteStmt", + "WriteStmt": "0x55fb7c20e8a0-WriteStmt" + }, + { + "id": "0x55fb7c20e8a0-WriteStmt", + "iounit": "0x55fb7c20e8a0-IoUnit", + "format": "0x55fb7c20e8d0-Format", + "controls": [], + "items": [ + "0x55fb7c20e7c0-OutputItem" + ] + }, + { + "id": "0x55fb7c20e8a0-IoUnit", + "variantKey": "Expr", + "Expr": "0x55fb7c20e6d0-Expr" + }, + { + "id": "0x55fb7c20e6d0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fb7c20e6f0-LiteralConstant" + }, + { + "id": "0x55fb7c20e6f0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55fb7c20e6f0-IntLiteralConstant" + }, + { + "id": "0x55fb7c20e6f0-IntLiteralConstant", + "CharBlock": "6" + }, + { + "id": "0x55fb7c20e8d0-Format", + "variantKey": "Star", + "Star": "0x55fb7c20e8d0-Star" + }, + { + "id": "0x55fb7c20e8d0-Star" + }, + { + "id": "0x55fb7c20e7c0-OutputItem", + "variantKey": "Expr", + "Expr": "0x55fb7c20e7c0-Expr" + }, + { + "id": "0x55fb7c20e7c0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fb7c20e7e0-LiteralConstant" + }, + { + "id": "0x55fb7c20e7e0-LiteralConstant", + "variantKey": "CharLiteralConstant", + "CharLiteralConstant": "0x55fb7c20e7e0-CharLiteralConstant" + }, + { + "id": "0x55fb7c20e7e0-CharLiteralConstant", + "string": "OK" + }, + { + "id": "0x55fb7c210260-ElseBlock", + "Statement": "0x55fb7c210278-Statement", + "ExecutionPartConstruct": [ + "0x55fb7c20ed20-ExecutionPartConstruct", + "0x55fb7c20f2b0-ExecutionPartConstruct", + "0x55fb7c20f630-ExecutionPartConstruct", + "0x55fb7c20fa10-ExecutionPartConstruct", + "0x55fb7c20fdf0-ExecutionPartConstruct", + "0x55fb7c2101d0-ExecutionPartConstruct" + ] + }, + { + "id": "0x55fb7c210278-Statement", + "statement": "0x55fb7c210288-ElseStmt", + "source": "else" + }, + { + "id": "0x55fb7c210288-ElseStmt" + }, + { + "id": "0x55fb7c210260-ExecutionPartConstruct" + }, + { + "id": "0x55fb7c20ed20-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55fb7c20ed20-ExecutableConstruct" + }, + { + "id": "0x55fb7c20ed20-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55fb7c20ed20-Statement" + }, + { + "id": "0x55fb7c20ed20-Statement", + "statement": "0x55fb7c20ed30-ActionStmt", + "source": "write(6,*)'NG'" + }, + { + "id": "0x55fb7c20ed30-ActionStmt", + "variantKey": "WriteStmt", + "WriteStmt": "0x55fb7c20ebc0-WriteStmt" + }, + { + "id": "0x55fb7c20ebc0-WriteStmt", + "iounit": "0x55fb7c20ebc0-IoUnit", + "format": "0x55fb7c20ebf0-Format", + "controls": [], + "items": [ + "0x55fb7c20eae0-OutputItem" + ] + }, + { + "id": "0x55fb7c20ebc0-IoUnit", + "variantKey": "Expr", + "Expr": "0x55fb7c20e9f0-Expr" + }, + { + "id": "0x55fb7c20e9f0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fb7c20ea10-LiteralConstant" + }, + { + "id": "0x55fb7c20ea10-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55fb7c20ea10-IntLiteralConstant" + }, + { + "id": "0x55fb7c20ea10-IntLiteralConstant", + "CharBlock": "6" + }, + { + "id": "0x55fb7c20ebf0-Format", + "variantKey": "Star", + "Star": "0x55fb7c20ebf0-Star" + }, + { + "id": "0x55fb7c20ebf0-Star" + }, + { + "id": "0x55fb7c20eae0-OutputItem", + "variantKey": "Expr", + "Expr": "0x55fb7c20eae0-Expr" + }, + { + "id": "0x55fb7c20eae0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fb7c20eb00-LiteralConstant" + }, + { + "id": "0x55fb7c20eb00-LiteralConstant", + "variantKey": "CharLiteralConstant", + "CharLiteralConstant": "0x55fb7c20eb00-CharLiteralConstant" + }, + { + "id": "0x55fb7c20eb00-CharLiteralConstant", + "string": "NG" + }, + { + "id": "0x55fb7c20f2b0-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55fb7c20f2b0-ExecutableConstruct" + }, + { + "id": "0x55fb7c20f2b0-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55fb7c20f2b0-Statement" + }, + { + "id": "0x55fb7c20f2b0-Statement", + "statement": "0x55fb7c20f2c0-ActionStmt", + "source": "write(6,*)'ERROR=',error" + }, + { + "id": "0x55fb7c20f2c0-ActionStmt", + "variantKey": "WriteStmt", + "WriteStmt": "0x55fb7c20f0f0-WriteStmt" + }, + { + "id": "0x55fb7c20f0f0-WriteStmt", + "iounit": "0x55fb7c20f0f0-IoUnit", + "format": "0x55fb7c20f120-Format", + "controls": [], + "items": [ + "0x55fb7c20f010-OutputItem", + "0x55fb7c20ef20-OutputItem" + ] + }, + { + "id": "0x55fb7c20f0f0-IoUnit", + "variantKey": "Expr", + "Expr": "0x55fb7c20ed70-Expr" + }, + { + "id": "0x55fb7c20ed70-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fb7c20ed90-LiteralConstant" + }, + { + "id": "0x55fb7c20ed90-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55fb7c20ed90-IntLiteralConstant" + }, + { + "id": "0x55fb7c20ed90-IntLiteralConstant", + "CharBlock": "6" + }, + { + "id": "0x55fb7c20f120-Format", + "variantKey": "Star", + "Star": "0x55fb7c20f120-Star" + }, + { + "id": "0x55fb7c20f120-Star" + }, + { + "id": "0x55fb7c20f010-OutputItem", + "variantKey": "Expr", + "Expr": "0x55fb7c20f010-Expr" + }, + { + "id": "0x55fb7c20f010-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fb7c20f030-LiteralConstant" + }, + { + "id": "0x55fb7c20f030-LiteralConstant", + "variantKey": "CharLiteralConstant", + "CharLiteralConstant": "0x55fb7c20f030-CharLiteralConstant" + }, + { + "id": "0x55fb7c20f030-CharLiteralConstant", + "string": "ERROR=" + }, + { + "id": "0x55fb7c20ef20-OutputItem", + "variantKey": "Expr", + "Expr": "0x55fb7c20ef20-Expr" + }, + { + "id": "0x55fb7c20ef20-Expr", + "variantKey": "Designator", + "Designator": "0x55fb7c20eeb0-Designator" + }, + { + "id": "0x55fb7c20eeb0-Designator", + "variantKey": "DataRef", + "DataRef": "0x55fb7c20eec0-DataRef" + }, + { + "id": "0x55fb7c20eec0-DataRef", + "variantKey": "Name", + "Name": "0x55fb7c20eec0-Name" + }, + { + "id": "0x55fb7c20eec0-Name", + "source": "error" + }, + { + "id": "0x55fb7c20f630-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55fb7c20f630-ExecutableConstruct" + }, + { + "id": "0x55fb7c20f630-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55fb7c20f630-Statement" + }, + { + "id": "0x55fb7c20f630-Statement", + "statement": "0x55fb7c20f640-ActionStmt", + "source": "write(6,*)s_a" + }, + { + "id": "0x55fb7c20f640-ActionStmt", + "variantKey": "WriteStmt", + "WriteStmt": "0x55fb7c20f4d0-WriteStmt" + }, + { + "id": "0x55fb7c20f4d0-WriteStmt", + "iounit": "0x55fb7c20f4d0-IoUnit", + "format": "0x55fb7c20f500-Format", + "controls": [], + "items": [ + "0x55fb7c20f3f0-OutputItem" + ] + }, + { + "id": "0x55fb7c20f4d0-IoUnit", + "variantKey": "Expr", + "Expr": "0x55fb7c20f300-Expr" + }, + { + "id": "0x55fb7c20f300-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fb7c20f320-LiteralConstant" + }, + { + "id": "0x55fb7c20f320-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55fb7c20f320-IntLiteralConstant" + }, + { + "id": "0x55fb7c20f320-IntLiteralConstant", + "CharBlock": "6" + }, + { + "id": "0x55fb7c20f500-Format", + "variantKey": "Star", + "Star": "0x55fb7c20f500-Star" + }, + { + "id": "0x55fb7c20f500-Star" + }, + { + "id": "0x55fb7c20f3f0-OutputItem", + "variantKey": "Expr", + "Expr": "0x55fb7c20f3f0-Expr" + }, + { + "id": "0x55fb7c20f3f0-Expr", + "variantKey": "Designator", + "Designator": "0x55fb7c20ee50-Designator" + }, + { + "id": "0x55fb7c20ee50-Designator", + "variantKey": "DataRef", + "DataRef": "0x55fb7c20ee60-DataRef" + }, + { + "id": "0x55fb7c20ee60-DataRef", + "variantKey": "Name", + "Name": "0x55fb7c20ee60-Name" + }, + { + "id": "0x55fb7c20ee60-Name", + "source": "s_a" + }, + { + "id": "0x55fb7c20fa10-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55fb7c20fa10-ExecutableConstruct" + }, + { + "id": "0x55fb7c20fa10-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55fb7c20fa10-Statement" + }, + { + "id": "0x55fb7c20fa10-Statement", + "statement": "0x55fb7c20fa20-ActionStmt", + "source": "write(6,*)v_a" + }, + { + "id": "0x55fb7c20fa20-ActionStmt", + "variantKey": "WriteStmt", + "WriteStmt": "0x55fb7c20f850-WriteStmt" + }, + { + "id": "0x55fb7c20f850-WriteStmt", + "iounit": "0x55fb7c20f850-IoUnit", + "format": "0x55fb7c20f880-Format", + "controls": [], + "items": [ + "0x55fb7c20f770-OutputItem" + ] + }, + { + "id": "0x55fb7c20f850-IoUnit", + "variantKey": "Expr", + "Expr": "0x55fb7c20f680-Expr" + }, + { + "id": "0x55fb7c20f680-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fb7c20f6a0-LiteralConstant" + }, + { + "id": "0x55fb7c20f6a0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55fb7c20f6a0-IntLiteralConstant" + }, + { + "id": "0x55fb7c20f6a0-IntLiteralConstant", + "CharBlock": "6" + }, + { + "id": "0x55fb7c20f880-Format", + "variantKey": "Star", + "Star": "0x55fb7c20f880-Star" + }, + { + "id": "0x55fb7c20f880-Star" + }, + { + "id": "0x55fb7c20f770-OutputItem", + "variantKey": "Expr", + "Expr": "0x55fb7c20f770-Expr" + }, + { + "id": "0x55fb7c20f770-Expr", + "variantKey": "Designator", + "Designator": "0x55fb7c20d720-Designator" + }, + { + "id": "0x55fb7c20d720-Designator", + "variantKey": "DataRef", + "DataRef": "0x55fb7c20d730-DataRef" + }, + { + "id": "0x55fb7c20d730-DataRef", + "variantKey": "Name", + "Name": "0x55fb7c20d730-Name" + }, + { + "id": "0x55fb7c20d730-Name", + "source": "v_a" + }, + { + "id": "0x55fb7c20fdf0-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55fb7c20fdf0-ExecutableConstruct" + }, + { + "id": "0x55fb7c20fdf0-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55fb7c20fdf0-Statement" + }, + { + "id": "0x55fb7c20fdf0-Statement", + "statement": "0x55fb7c20fe00-ActionStmt", + "source": "write(6,*)s_b" + }, + { + "id": "0x55fb7c20fe00-ActionStmt", + "variantKey": "WriteStmt", + "WriteStmt": "0x55fb7c20fc30-WriteStmt" + }, + { + "id": "0x55fb7c20fc30-WriteStmt", + "iounit": "0x55fb7c20fc30-IoUnit", + "format": "0x55fb7c20fc60-Format", + "controls": [], + "items": [ + "0x55fb7c20fb50-OutputItem" + ] + }, + { + "id": "0x55fb7c20fc30-IoUnit", + "variantKey": "Expr", + "Expr": "0x55fb7c20fa60-Expr" + }, + { + "id": "0x55fb7c20fa60-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fb7c20fa80-LiteralConstant" + }, + { + "id": "0x55fb7c20fa80-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55fb7c20fa80-IntLiteralConstant" + }, + { + "id": "0x55fb7c20fa80-IntLiteralConstant", + "CharBlock": "6" + }, + { + "id": "0x55fb7c20fc60-Format", + "variantKey": "Star", + "Star": "0x55fb7c20fc60-Star" + }, + { + "id": "0x55fb7c20fc60-Star" + }, + { + "id": "0x55fb7c20fb50-OutputItem", + "variantKey": "Expr", + "Expr": "0x55fb7c20fb50-Expr" + }, + { + "id": "0x55fb7c20fb50-Expr", + "variantKey": "Designator", + "Designator": "0x55fb7c1fbd60-Designator" + }, + { + "id": "0x55fb7c1fbd60-Designator", + "variantKey": "DataRef", + "DataRef": "0x55fb7c1fbd70-DataRef" + }, + { + "id": "0x55fb7c1fbd70-DataRef", + "variantKey": "Name", + "Name": "0x55fb7c1fbd70-Name" + }, + { + "id": "0x55fb7c1fbd70-Name", + "source": "s_b" + }, + { + "id": "0x55fb7c2101d0-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55fb7c2101d0-ExecutableConstruct" + }, + { + "id": "0x55fb7c2101d0-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55fb7c2101d0-Statement" + }, + { + "id": "0x55fb7c2101d0-Statement", + "statement": "0x55fb7c2101e0-ActionStmt", + "source": "write(6,*)v_b" + }, + { + "id": "0x55fb7c2101e0-ActionStmt", + "variantKey": "WriteStmt", + "WriteStmt": "0x55fb7c210010-WriteStmt" + }, + { + "id": "0x55fb7c210010-WriteStmt", + "iounit": "0x55fb7c210010-IoUnit", + "format": "0x55fb7c210040-Format", + "controls": [], + "items": [ + "0x55fb7c20ff30-OutputItem" + ] + }, + { + "id": "0x55fb7c210010-IoUnit", + "variantKey": "Expr", + "Expr": "0x55fb7c20fe40-Expr" + }, + { + "id": "0x55fb7c20fe40-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fb7c20fe60-LiteralConstant" + }, + { + "id": "0x55fb7c20fe60-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55fb7c20fe60-IntLiteralConstant" + }, + { + "id": "0x55fb7c20fe60-IntLiteralConstant", + "CharBlock": "6" + }, + { + "id": "0x55fb7c210040-Format", + "variantKey": "Star", + "Star": "0x55fb7c210040-Star" + }, + { + "id": "0x55fb7c210040-Star" + }, + { + "id": "0x55fb7c20ff30-OutputItem", + "variantKey": "Expr", + "Expr": "0x55fb7c20ff30-Expr" + }, + { + "id": "0x55fb7c20ff30-Expr", + "variantKey": "Designator", + "Designator": "0x55fb7c20dcd0-Designator" + }, + { + "id": "0x55fb7c20dcd0-Designator", + "variantKey": "DataRef", + "DataRef": "0x55fb7c20dce0-DataRef" + }, + { + "id": "0x55fb7c20dce0-DataRef", + "variantKey": "Name", + "Name": "0x55fb7c20dce0-Name" + }, + { + "id": "0x55fb7c20dce0-Name", + "source": "v_b" + }, + { + "id": "0x55fb7c210220-Statement", + "statement": "0x55fb7c210230-EndIfStmt", + "source": "endif" + }, + { + "id": "0x55fb7c210230-EndIfStmt" + }, + { + "id": "0x55fb7c20f250-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55fb7c20f250-ExecutableConstruct" + }, + { + "id": "0x55fb7c20f250-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55fb7c20f250-Statement" + }, + { + "id": "0x55fb7c20f250-Statement", + "statement": "0x55fb7c20f260-ActionStmt", + "source": "stop" + }, + { + "id": "0x55fb7c20f260-ActionStmt", + "variantKey": "StopStmt", + "StopStmt": "0x55fb7c210340-StopStmt" + }, + { + "id": "0x55fb7c210340-StopStmt", + "kind": "0x55fb7c210428-Kind = Stop" + }, + { + "id": "0x55fb7c210428-Kind = Stop", + "disambiguation": "Fortran::parser::StopStmt::Kind", + "value": "Stop" + }, + { + "id": "0x55fb7c203fe0-Statement", + "statement": "0x55fb7c203ff0-EndProgramStmt", + "source": "end" + }, + { + "id": "0x55fb7c203ff0-EndProgramStmt" + }, + { + "id": "0x55fb7c203410-ProgramUnit", + "variantKey": "SubroutineSubprogram", + "SubroutineSubprogram": "0x55fb7c215ae0-SubroutineSubprogram" + }, + { + "id": "0x55fb7c215ae0-SubroutineSubprogram", + "Statement": "0x55fb7c215c28-Statement", + "SpecificationPart": "0x55fb7c215b80-SpecificationPart", + "ExecutionPart": "0x55fb7c215b68-ExecutionPart", + "Statement": "0x55fb7c215ae0-Statement" + }, + { + "id": "0x55fb7c215c28-Statement", + "statement": "0x55fb7c215c38-SubroutineStmt", + "source": "subroutinesub1(error,a,b,c)" + }, + { + "id": "0x55fb7c215c38-SubroutineStmt", + "Name": "0x55fb7c215c70-Name", + "DummyArg": [ + "0x55fb7c203560-DummyArg", + "0x55fb7c206230-DummyArg", + "0x55fb7c204d40-DummyArg", + "0x55fb7c203520-DummyArg" + ] + }, + { + "id": "0x55fb7c215c70-Name", + "source": "sub1" + }, + { + "id": "0x55fb7c203560-DummyArg", + "variantKey": "Name", + "Name": "0x55fb7c203560-Name" + }, + { + "id": "0x55fb7c203560-Name", + "source": "error" + }, + { + "id": "0x55fb7c206230-DummyArg", + "variantKey": "Name", + "Name": "0x55fb7c206230-Name" + }, + { + "id": "0x55fb7c206230-Name", + "source": "a" + }, + { + "id": "0x55fb7c204d40-DummyArg", + "variantKey": "Name", + "Name": "0x55fb7c204d40-Name" + }, + { + "id": "0x55fb7c204d40-Name", + "source": "b" + }, + { + "id": "0x55fb7c203520-DummyArg", + "variantKey": "Name", + "Name": "0x55fb7c203520-Name" + }, + { + "id": "0x55fb7c203520-Name", + "source": "c" + }, + { + "id": "0x55fb7c215b80-SpecificationPart", + "ImplicitPart": "0x55fb7c215b98-ImplicitPart", + "DeclarationConstruct": [ + "0x55fb7c1fae80-DeclarationConstruct", + "0x55fb7c20e680-DeclarationConstruct", + "0x55fb7c2112e0-DeclarationConstruct" + ] + }, + { + "id": "0x55fb7c215b98-ImplicitPart" + }, + { + "id": "0x55fb7c1fae80-DeclarationConstruct", + "variantKey": "SpecificationConstruct", + "SpecificationConstruct": "0x55fb7c1fae80-SpecificationConstruct" + }, + { + "id": "0x55fb7c1fae80-SpecificationConstruct", + "variantKey": "Statement", + "Statement": "0x55fb7c1fae80-Statement" + }, + { + "id": "0x55fb7c1fae80-Statement", + "statement": "0x55fb7c210680-TypeDeclarationStmt", + "source": "integer*4error" + }, + { + "id": "0x55fb7c210680-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x55fb7c2106b0-DeclarationTypeSpec", + "EntityDecl": [ + "0x55fb7c211030-EntityDecl" + ] + }, + { + "id": "0x55fb7c2106b0-DeclarationTypeSpec", + "variantKey": "IntrinsicTypeSpec", + "IntrinsicTypeSpec": "0x55fb7c2106b0-IntrinsicTypeSpec" + }, + { + "id": "0x55fb7c2106b0-IntrinsicTypeSpec", + "variantKey": "IntegerTypeSpec", + "IntegerTypeSpec": "0x55fb7c2106b0-IntegerTypeSpec" + }, + { + "id": "0x55fb7c2106b0-IntegerTypeSpec", + "KindSelector": "0x55fb7c2106b0-KindSelector" + }, + { + "id": "0x55fb7c2106b0-KindSelector", + "variantKey": "StarSize", + "StarSize": "0x55fb7c2106b0-StarSize" + }, + { + "id": "0x55fb7c2106b0-StarSize", + "uint64_t": "4" + }, + { + "id": "0x55fb7c211030-EntityDecl", + "Name": "0x55fb7c2110e8-Name" + }, + { + "id": "0x55fb7c2110e8-Name", + "source": "error" + }, + { + "id": "0x55fb7c20e680-DeclarationConstruct", + "variantKey": "SpecificationConstruct", + "SpecificationConstruct": "0x55fb7c20e680-SpecificationConstruct" + }, + { + "id": "0x55fb7c20e680-SpecificationConstruct", + "variantKey": "Statement", + "Statement": "0x55fb7c20e680-Statement" + }, + { + "id": "0x55fb7c20e680-Statement", + "statement": "0x55fb7c1f91c0-TypeDeclarationStmt", + "source": "complex*8a,b,c" + }, + { + "id": "0x55fb7c1f91c0-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x55fb7c1f91f0-DeclarationTypeSpec", + "EntityDecl": [ + "0x55fb7c210820-EntityDecl", + "0x55fb7c1f5ed0-EntityDecl", + "0x55fb7c2104e0-EntityDecl" + ] + }, + { + "id": "0x55fb7c1f91f0-DeclarationTypeSpec", + "variantKey": "IntrinsicTypeSpec", + "IntrinsicTypeSpec": "0x55fb7c1f91f0-IntrinsicTypeSpec" + }, + { + "id": "0x55fb7c1f91f0-IntrinsicTypeSpec", + "variantKey": "Complex", + "Complex": "0x55fb7c1f91f0-Complex" + }, + { + "id": "0x55fb7c1f91f0-Complex", + "KindSelector": "0x55fb7c1f91f0-KindSelector" + }, + { + "id": "0x55fb7c1f91f0-KindSelector", + "variantKey": "StarSize", + "StarSize": "0x55fb7c1f91f0-StarSize" + }, + { + "id": "0x55fb7c1f91f0-StarSize", + "uint64_t": "8" + }, + { + "id": "0x55fb7c210820-EntityDecl", + "Name": "0x55fb7c2108d8-Name" + }, + { + "id": "0x55fb7c2108d8-Name", + "source": "a" + }, + { + "id": "0x55fb7c1f5ed0-EntityDecl", + "Name": "0x55fb7c1f5f88-Name" + }, + { + "id": "0x55fb7c1f5f88-Name", + "source": "b" + }, + { + "id": "0x55fb7c2104e0-EntityDecl", + "Name": "0x55fb7c210598-Name" + }, + { + "id": "0x55fb7c210598-Name", + "source": "c" + }, + { + "id": "0x55fb7c2112e0-DeclarationConstruct", + "variantKey": "SpecificationConstruct", + "SpecificationConstruct": "0x55fb7c2112e0-SpecificationConstruct" + }, + { + "id": "0x55fb7c2112e0-SpecificationConstruct", + "variantKey": "Statement", + "Statement": "0x55fb7c2112e0-Statement" + }, + { + "id": "0x55fb7c2112e0-Statement", + "statement": "0x55fb7c2112f0-OtherSpecificationStmt", + "source": "dimensiona(10),b(10),c(10)" + }, + { + "id": "0x55fb7c2112f0-OtherSpecificationStmt", + "variantKey": "DimensionStmt", + "DimensionStmt": "0x55fb7c2028b0-DimensionStmt" + }, + { + "id": "0x55fb7c2028b0-DimensionStmt", + "Declaration": [ + "0x55fb7c2109f0-Declaration", + "0x55fb7c1f85f0-Declaration", + "0x55fb7c212e10-Declaration" + ] + }, + { + "id": "0x55fb7c2109f0-Declaration", + "Name": "0x55fb7c210a20-Name", + "ArraySpec": "0x55fb7c2109f0-ArraySpec" + }, + { + "id": "0x55fb7c210a20-Name", + "source": "a" + }, + { + "id": "0x55fb7c2109f0-ArraySpec", + "variantKey": "ExplicitShapeSpec", + "ExplicitShapeSpec": [ + "0x55fb7c202fa0-ExplicitShapeSpec" + ] + }, + { + "id": "0x55fb7c202fa0-ExplicitShapeSpec", + "upper_bound": "0x55fb7c202fa0-SpecificationExpr" + }, + { + "id": "0x55fb7c202fa0-SpecificationExpr", + "Expr": "0x55fb7c210900-Expr" + }, + { + "id": "0x55fb7c210900-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fb7c210920-LiteralConstant" + }, + { + "id": "0x55fb7c210920-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55fb7c210920-IntLiteralConstant" + }, + { + "id": "0x55fb7c210920-IntLiteralConstant", + "CharBlock": "10" + }, + { + "id": "0x55fb7c1f85f0-Declaration", + "Name": "0x55fb7c1f8620-Name", + "ArraySpec": "0x55fb7c1f85f0-ArraySpec" + }, + { + "id": "0x55fb7c1f8620-Name", + "source": "b" + }, + { + "id": "0x55fb7c1f85f0-ArraySpec", + "variantKey": "ExplicitShapeSpec", + "ExplicitShapeSpec": [ + "0x55fb7c203130-ExplicitShapeSpec" + ] + }, + { + "id": "0x55fb7c203130-ExplicitShapeSpec", + "upper_bound": "0x55fb7c203130-SpecificationExpr" + }, + { + "id": "0x55fb7c203130-SpecificationExpr", + "Expr": "0x55fb7c212be0-Expr" + }, + { + "id": "0x55fb7c212be0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fb7c212c00-LiteralConstant" + }, + { + "id": "0x55fb7c212c00-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55fb7c212c00-IntLiteralConstant" + }, + { + "id": "0x55fb7c212c00-IntLiteralConstant", + "CharBlock": "10" + }, + { + "id": "0x55fb7c212e10-Declaration", + "Name": "0x55fb7c212e40-Name", + "ArraySpec": "0x55fb7c212e10-ArraySpec" + }, + { + "id": "0x55fb7c212e40-Name", + "source": "c" + }, + { + "id": "0x55fb7c212e10-ArraySpec", + "variantKey": "ExplicitShapeSpec", + "ExplicitShapeSpec": [ + "0x55fb7c2031a0-ExplicitShapeSpec" + ] + }, + { + "id": "0x55fb7c2031a0-ExplicitShapeSpec", + "upper_bound": "0x55fb7c2031a0-SpecificationExpr" + }, + { + "id": "0x55fb7c2031a0-SpecificationExpr", + "Expr": "0x55fb7c212d20-Expr" + }, + { + "id": "0x55fb7c212d20-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fb7c212d40-LiteralConstant" + }, + { + "id": "0x55fb7c212d40-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55fb7c212d40-IntLiteralConstant" + }, + { + "id": "0x55fb7c212d40-IntLiteralConstant", + "CharBlock": "10" + }, + { + "id": "0x55fb7c215b68-ExecutionPart", + "ExecutionPartConstruct": [ + "0x55fb7c212190-ExecutionPartConstruct", + "0x55fb7c212590-ExecutionPartConstruct" + ] + }, + { + "id": "0x55fb7c215b68-ExecutionPartConstruct" + }, + { + "id": "0x55fb7c212190-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55fb7c212190-ExecutableConstruct" + }, + { + "id": "0x55fb7c212190-ExecutableConstruct", + "variantKey": "DoConstruct", + "DoConstruct": "0x55fb7c2097e0-DoConstruct" + }, + { + "id": "0x55fb7c2097e0-DoConstruct", + "Statement": "0x55fb7c209838-Statement", + "ExecutionPartConstruct": [ + "0x55fb7c212130-ExecutionPartConstruct", + "0x55fb7c213370-ExecutionPartConstruct" + ], + "Statement": "0x55fb7c2097e0-Statement" + }, + { + "id": "0x55fb7c209838-Statement", + "statement": "0x55fb7c209848-NonLabelDoStmt", + "source": "do60i=1,10,1" + }, + { + "id": "0x55fb7c209848-NonLabelDoStmt", + "LoopControl": "0x55fb7c209848-LoopControl" + }, + { + "id": "0x55fb7c209848-LoopControl", + "variantKey": "LoopBounds", + "LoopBounds": "0x55fb7c209848-LoopBounds" + }, + { + "id": "0x55fb7c209848-LoopBounds", + "var": "0x55fb7c209848-Name", + "lower": "0x55fb7c211e80-Expr", + "upper": "0x55fb7c211f60-Expr", + "step": "0x55fb7c212040-Expr" + }, + { + "id": "0x55fb7c209848-Name", + "source": "i" + }, + { + "id": "0x55fb7c211e80-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fb7c211ea0-LiteralConstant" + }, + { + "id": "0x55fb7c211ea0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55fb7c211ea0-IntLiteralConstant" + }, + { + "id": "0x55fb7c211ea0-IntLiteralConstant", + "CharBlock": "1" + }, + { + "id": "0x55fb7c211f60-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fb7c211f80-LiteralConstant" + }, + { + "id": "0x55fb7c211f80-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55fb7c211f80-IntLiteralConstant" + }, + { + "id": "0x55fb7c211f80-IntLiteralConstant", + "CharBlock": "10" + }, + { + "id": "0x55fb7c212040-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fb7c212060-LiteralConstant" + }, + { + "id": "0x55fb7c212060-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55fb7c212060-IntLiteralConstant" + }, + { + "id": "0x55fb7c212060-IntLiteralConstant", + "CharBlock": "1" + }, + { + "id": "0x55fb7c209820-ExecutionPartConstruct" + }, + { + "id": "0x55fb7c212130-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55fb7c212130-ExecutableConstruct" + }, + { + "id": "0x55fb7c212130-ExecutableConstruct", + "variantKey": "IfConstruct", + "IfConstruct": "0x55fb7c214220-IfConstruct" + }, + { + "id": "0x55fb7c214220-IfConstruct", + "Statement": "0x55fb7c2142f0-Statement", + "ExecutionPartConstruct": [ + "0x55fb7c213040-ExecutionPartConstruct" + ], + "Statement": "0x55fb7c214220-Statement" + }, + { + "id": "0x55fb7c2142f0-Statement", + "statement": "0x55fb7c214300-IfThenStmt", + "source": "if(c(i).ne.a(i)+b(i))then" + }, + { + "id": "0x55fb7c214300-IfThenStmt", + "Expr": "0x55fb7c213f80-Expr" + }, + { + "id": "0x55fb7c213f80-Expr", + "variantKey": "NE", + "NE": "0x55fb7c213fa0-NE" + }, + { + "id": "0x55fb7c213fa0-NE", + "left": "0x55fb7c213bd0-Expr", + "right": "0x55fb7c213af0-Expr", + "op": "NE" + }, + { + "id": "0x55fb7c213bd0-Expr", + "variantKey": "Designator", + "Designator": "0x55fb7c21d130-Designator" + }, + { + "id": "0x55fb7c21d130-Designator", + "variantKey": "DataRef", + "DataRef": "0x55fb7c21d140-DataRef" + }, + { + "id": "0x55fb7c21d140-DataRef", + "variantKey": "ArrayElement", + "ArrayElement": "0x55fb7c219210-ArrayElement" + }, + { + "id": "0x55fb7c219210-ArrayElement", + "base": "0x55fb7c219210-DataRef", + "subscripts": [ + "0x55fb7c208d50-SectionSubscript" + ] + }, + { + "id": "0x55fb7c219210-DataRef", + "variantKey": "Name", + "Name": "0x55fb7c219210-Name" + }, + { + "id": "0x55fb7c219210-Name", + "source": "c" + }, + { + "id": "0x55fb7c208d50-SectionSubscript", + "variantKey": "Expr", + "Expr": "0x55fb7c20d7e0-Expr" + }, + { + "id": "0x55fb7c20d7e0-Expr", + "variantKey": "Designator", + "Designator": "0x55fb7c211d70-Designator" + }, + { + "id": "0x55fb7c211d70-Designator", + "variantKey": "DataRef", + "DataRef": "0x55fb7c211d80-DataRef" + }, + { + "id": "0x55fb7c211d80-DataRef", + "variantKey": "Name", + "Name": "0x55fb7c211d80-Name" + }, + { + "id": "0x55fb7c211d80-Name", + "source": "i" + }, + { + "id": "0x55fb7c213af0-Expr", + "variantKey": "Add", + "Add": "0x55fb7c213b10-Add" + }, + { + "id": "0x55fb7c213b10-Add", + "left": "0x55fb7c213a10-Expr", + "right": "0x55fb7c213930-Expr", + "op": "ADD" + }, + { + "id": "0x55fb7c213a10-Expr", + "variantKey": "Designator", + "Designator": "0x55fb7c201a70-Designator" + }, + { + "id": "0x55fb7c201a70-Designator", + "variantKey": "DataRef", + "DataRef": "0x55fb7c201a80-DataRef" + }, + { + "id": "0x55fb7c201a80-DataRef", + "variantKey": "ArrayElement", + "ArrayElement": "0x55fb7c20b5d0-ArrayElement" + }, + { + "id": "0x55fb7c20b5d0-ArrayElement", + "base": "0x55fb7c20b5d0-DataRef", + "subscripts": [ + "0x55fb7c213e50-SectionSubscript" + ] + }, + { + "id": "0x55fb7c20b5d0-DataRef", + "variantKey": "Name", + "Name": "0x55fb7c20b5d0-Name" + }, + { + "id": "0x55fb7c20b5d0-Name", + "source": "a" + }, + { + "id": "0x55fb7c213e50-SectionSubscript", + "variantKey": "Expr", + "Expr": "0x55fb7c213470-Expr" + }, + { + "id": "0x55fb7c213470-Expr", + "variantKey": "Designator", + "Designator": "0x55fb7c211a40-Designator" + }, + { + "id": "0x55fb7c211a40-Designator", + "variantKey": "DataRef", + "DataRef": "0x55fb7c211a50-DataRef" + }, + { + "id": "0x55fb7c211a50-DataRef", + "variantKey": "Name", + "Name": "0x55fb7c211a50-Name" + }, + { + "id": "0x55fb7c211a50-Name", + "source": "i" + }, + { + "id": "0x55fb7c213930-Expr", + "variantKey": "Designator", + "Designator": "0x55fb7c1f89d0-Designator" + }, + { + "id": "0x55fb7c1f89d0-Designator", + "variantKey": "DataRef", + "DataRef": "0x55fb7c1f89e0-DataRef" + }, + { + "id": "0x55fb7c1f89e0-DataRef", + "variantKey": "ArrayElement", + "ArrayElement": "0x55fb7c21a580-ArrayElement" + }, + { + "id": "0x55fb7c21a580-ArrayElement", + "base": "0x55fb7c21a580-DataRef", + "subscripts": [ + "0x55fb7c1f30b0-SectionSubscript" + ] + }, + { + "id": "0x55fb7c21a580-DataRef", + "variantKey": "Name", + "Name": "0x55fb7c21a580-Name" + }, + { + "id": "0x55fb7c21a580-Name", + "source": "b" + }, + { + "id": "0x55fb7c1f30b0-SectionSubscript", + "variantKey": "Expr", + "Expr": "0x55fb7c213550-Expr" + }, + { + "id": "0x55fb7c213550-Expr", + "variantKey": "Designator", + "Designator": "0x55fb7c20fd80-Designator" + }, + { + "id": "0x55fb7c20fd80-Designator", + "variantKey": "DataRef", + "DataRef": "0x55fb7c20fd90-DataRef" + }, + { + "id": "0x55fb7c20fd90-DataRef", + "variantKey": "Name", + "Name": "0x55fb7c20fd90-Name" + }, + { + "id": "0x55fb7c20fd90-Name", + "source": "i" + }, + { + "id": "0x55fb7c2142d8-ExecutionPartConstruct" + }, + { + "id": "0x55fb7c213040-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55fb7c213040-ExecutableConstruct" + }, + { + "id": "0x55fb7c213040-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55fb7c213040-Statement" + }, + { + "id": "0x55fb7c213040-Statement", + "statement": "0x55fb7c213050-ActionStmt", + "source": "error=error+1" + }, + { + "id": "0x55fb7c213050-ActionStmt", + "variantKey": "AssignmentStmt", + "AssignmentStmt": "0x55fb7c20e560-AssignmentStmt" + }, + { + "id": "0x55fb7c20e560-AssignmentStmt", + "Variable": "0x55fb7c20e640-Variable", + "Expr": "0x55fb7c20e570-Expr" + }, + { + "id": "0x55fb7c20e640-Variable", + "variantKey": "Designator", + "Designator": "0x55fb7c211b50-Designator" + }, + { + "id": "0x55fb7c211b50-Designator", + "variantKey": "DataRef", + "DataRef": "0x55fb7c211b60-DataRef" + }, + { + "id": "0x55fb7c211b60-DataRef", + "variantKey": "Name", + "Name": "0x55fb7c211b60-Name" + }, + { + "id": "0x55fb7c211b60-Name", + "source": "error" + }, + { + "id": "0x55fb7c20e570-Expr", + "variantKey": "Add", + "Add": "0x55fb7c20e590-Add" + }, + { + "id": "0x55fb7c20e590-Add", + "left": "0x55fb7c214140-Expr", + "right": "0x55fb7c214060-Expr", + "op": "ADD" + }, + { + "id": "0x55fb7c214140-Expr", + "variantKey": "Designator", + "Designator": "0x55fb7c20f9a0-Designator" + }, + { + "id": "0x55fb7c20f9a0-Designator", + "variantKey": "DataRef", + "DataRef": "0x55fb7c20f9b0-DataRef" + }, + { + "id": "0x55fb7c20f9b0-DataRef", + "variantKey": "Name", + "Name": "0x55fb7c20f9b0-Name" + }, + { + "id": "0x55fb7c20f9b0-Name", + "source": "error" + }, + { + "id": "0x55fb7c214060-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fb7c214080-LiteralConstant" + }, + { + "id": "0x55fb7c214080-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55fb7c214080-IntLiteralConstant" + }, + { + "id": "0x55fb7c214080-IntLiteralConstant", + "CharBlock": "1" + }, + { + "id": "0x55fb7c214220-Statement", + "statement": "0x55fb7c214230-EndIfStmt", + "source": "endif" + }, + { + "id": "0x55fb7c214230-EndIfStmt" + }, + { + "id": "0x55fb7c213370-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55fb7c213370-ExecutableConstruct" + }, + { + "id": "0x55fb7c213370-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55fb7c213370-Statement" + }, + { + "id": "0x55fb7c213370-Statement", + "statement": "0x55fb7c213380-ActionStmt", + "label": "60", + "source": "60continue" + }, + { + "id": "0x55fb7c213380-ActionStmt", + "variantKey": "ContinueStmt", + "ContinueStmt": "0x55fb7c213380-ContinueStmt" + }, + { + "id": "0x55fb7c213380-ContinueStmt" + }, + { + "id": "0x55fb7c2097e0-Statement", + "statement": "0x55fb7c2097f0-EndDoStmt", + "source": "" + }, + { + "id": "0x55fb7c2097f0-EndDoStmt" + }, + { + "id": "0x55fb7c212590-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55fb7c212590-ExecutableConstruct" + }, + { + "id": "0x55fb7c212590-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55fb7c212590-Statement" + }, + { + "id": "0x55fb7c212590-Statement", + "statement": "0x55fb7c2125a0-ActionStmt", + "source": "return" + }, + { + "id": "0x55fb7c2125a0-ActionStmt", + "variantKey": "ReturnStmt", + "ReturnStmt": "0x55fb7c202a70-ReturnStmt" + }, + { + "id": "0x55fb7c202a70-ReturnStmt" + }, + { + "id": "0x55fb7c215ae0-Statement", + "statement": "0x55fb7c215af0-EndSubroutineStmt", + "source": "endsubroutinesub1" + }, + { + "id": "0x55fb7c215af0-EndSubroutineStmt", + "Name": "0x55fb7c215af0-Name" + }, + { + "id": "0x55fb7c215af0-Name", + "source": "sub1" + }, + { + "id": "0x55fb7c2022f0-ProgramUnit", + "variantKey": "SubroutineSubprogram", + "SubroutineSubprogram": "0x55fb7c217e70-SubroutineSubprogram" + }, + { + "id": "0x55fb7c217e70-SubroutineSubprogram", + "Statement": "0x55fb7c217fb8-Statement", + "SpecificationPart": "0x55fb7c217f10-SpecificationPart", + "ExecutionPart": "0x55fb7c217ef8-ExecutionPart", + "Statement": "0x55fb7c217e70-Statement" + }, + { + "id": "0x55fb7c217fb8-Statement", + "statement": "0x55fb7c217fc8-SubroutineStmt", + "source": "subroutinesub2(error,a,b,c)" + }, + { + "id": "0x55fb7c217fc8-SubroutineStmt", + "Name": "0x55fb7c218000-Name", + "DummyArg": [ + "0x55fb7c2036b0-DummyArg", + "0x55fb7c203610-DummyArg", + "0x55fb7c2035d0-DummyArg", + "0x55fb7c203650-DummyArg" + ] + }, + { + "id": "0x55fb7c218000-Name", + "source": "sub2" + }, + { + "id": "0x55fb7c2036b0-DummyArg", + "variantKey": "Name", + "Name": "0x55fb7c2036b0-Name" + }, + { + "id": "0x55fb7c2036b0-Name", + "source": "error" + }, + { + "id": "0x55fb7c203610-DummyArg", + "variantKey": "Name", + "Name": "0x55fb7c203610-Name" + }, + { + "id": "0x55fb7c203610-Name", + "source": "a" + }, + { + "id": "0x55fb7c2035d0-DummyArg", + "variantKey": "Name", + "Name": "0x55fb7c2035d0-Name" + }, + { + "id": "0x55fb7c2035d0-Name", + "source": "b" + }, + { + "id": "0x55fb7c203650-DummyArg", + "variantKey": "Name", + "Name": "0x55fb7c203650-Name" + }, + { + "id": "0x55fb7c203650-Name", + "source": "c" + }, + { + "id": "0x55fb7c217f10-SpecificationPart", + "ImplicitPart": "0x55fb7c217f28-ImplicitPart", + "DeclarationConstruct": [ + "0x55fb7c2127b0-DeclarationConstruct", + "0x55fb7c211500-DeclarationConstruct", + "0x55fb7c2146e0-DeclarationConstruct" + ] + }, + { + "id": "0x55fb7c217f28-ImplicitPart" + }, + { + "id": "0x55fb7c2127b0-DeclarationConstruct", + "variantKey": "SpecificationConstruct", + "SpecificationConstruct": "0x55fb7c2127b0-SpecificationConstruct" + }, + { + "id": "0x55fb7c2127b0-SpecificationConstruct", + "variantKey": "Statement", + "Statement": "0x55fb7c2127b0-Statement" + }, + { + "id": "0x55fb7c2127b0-Statement", + "statement": "0x55fb7c212720-TypeDeclarationStmt", + "source": "integer*4error" + }, + { + "id": "0x55fb7c212720-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x55fb7c212750-DeclarationTypeSpec", + "EntityDecl": [ + "0x55fb7c215cd0-EntityDecl" + ] + }, + { + "id": "0x55fb7c212750-DeclarationTypeSpec", + "variantKey": "IntrinsicTypeSpec", + "IntrinsicTypeSpec": "0x55fb7c212750-IntrinsicTypeSpec" + }, + { + "id": "0x55fb7c212750-IntrinsicTypeSpec", + "variantKey": "IntegerTypeSpec", + "IntegerTypeSpec": "0x55fb7c212750-IntegerTypeSpec" + }, + { + "id": "0x55fb7c212750-IntegerTypeSpec", + "KindSelector": "0x55fb7c212750-KindSelector" + }, + { + "id": "0x55fb7c212750-KindSelector", + "variantKey": "StarSize", + "StarSize": "0x55fb7c212750-StarSize" + }, + { + "id": "0x55fb7c212750-StarSize", + "uint64_t": "4" + }, + { + "id": "0x55fb7c215cd0-EntityDecl", + "Name": "0x55fb7c215d88-Name" + }, + { + "id": "0x55fb7c215d88-Name", + "source": "error" + }, + { + "id": "0x55fb7c211500-DeclarationConstruct", + "variantKey": "SpecificationConstruct", + "SpecificationConstruct": "0x55fb7c211500-SpecificationConstruct" + }, + { + "id": "0x55fb7c211500-SpecificationConstruct", + "variantKey": "Statement", + "Statement": "0x55fb7c211500-Statement" + }, + { + "id": "0x55fb7c211500-Statement", + "statement": "0x55fb7c1f5fe0-TypeDeclarationStmt", + "source": "complex*8a,b,c" + }, + { + "id": "0x55fb7c1f5fe0-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x55fb7c1f6010-DeclarationTypeSpec", + "EntityDecl": [ + "0x55fb7c214350-EntityDecl", + "0x55fb7c1f62c0-EntityDecl", + "0x55fb7c2158b0-EntityDecl" + ] + }, + { + "id": "0x55fb7c1f6010-DeclarationTypeSpec", + "variantKey": "IntrinsicTypeSpec", + "IntrinsicTypeSpec": "0x55fb7c1f6010-IntrinsicTypeSpec" + }, + { + "id": "0x55fb7c1f6010-IntrinsicTypeSpec", + "variantKey": "Complex", + "Complex": "0x55fb7c1f6010-Complex" + }, + { + "id": "0x55fb7c1f6010-Complex", + "KindSelector": "0x55fb7c1f6010-KindSelector" + }, + { + "id": "0x55fb7c1f6010-KindSelector", + "variantKey": "StarSize", + "StarSize": "0x55fb7c1f6010-StarSize" + }, + { + "id": "0x55fb7c1f6010-StarSize", + "uint64_t": "8" + }, + { + "id": "0x55fb7c214350-EntityDecl", + "Name": "0x55fb7c214408-Name" + }, + { + "id": "0x55fb7c214408-Name", + "source": "a" + }, + { + "id": "0x55fb7c1f62c0-EntityDecl", + "Name": "0x55fb7c1f6378-Name" + }, + { + "id": "0x55fb7c1f6378-Name", + "source": "b" + }, + { + "id": "0x55fb7c2158b0-EntityDecl", + "Name": "0x55fb7c215968-Name" + }, + { + "id": "0x55fb7c215968-Name", + "source": "c" + }, + { + "id": "0x55fb7c2146e0-DeclarationConstruct", + "variantKey": "SpecificationConstruct", + "SpecificationConstruct": "0x55fb7c2146e0-SpecificationConstruct" + }, + { + "id": "0x55fb7c2146e0-SpecificationConstruct", + "variantKey": "Statement", + "Statement": "0x55fb7c2146e0-Statement" + }, + { + "id": "0x55fb7c2146e0-Statement", + "statement": "0x55fb7c2146f0-OtherSpecificationStmt", + "source": "dimensiona(10),b(10),c(10)" + }, + { + "id": "0x55fb7c2146f0-OtherSpecificationStmt", + "variantKey": "DimensionStmt", + "DimensionStmt": "0x55fb7c202d10-DimensionStmt" + }, + { + "id": "0x55fb7c202d10-DimensionStmt", + "Declaration": [ + "0x55fb7c211c70-Declaration", + "0x55fb7c211830-Declaration", + "0x55fb7c2126a0-Declaration" + ] + }, + { + "id": "0x55fb7c211c70-Declaration", + "Name": "0x55fb7c211ca0-Name", + "ArraySpec": "0x55fb7c211c70-ArraySpec" + }, + { + "id": "0x55fb7c211ca0-Name", + "source": "a" + }, + { + "id": "0x55fb7c211c70-ArraySpec", + "variantKey": "ExplicitShapeSpec", + "ExplicitShapeSpec": [ + "0x55fb7c202b40-ExplicitShapeSpec" + ] + }, + { + "id": "0x55fb7c202b40-ExplicitShapeSpec", + "upper_bound": "0x55fb7c202b40-SpecificationExpr" + }, + { + "id": "0x55fb7c202b40-SpecificationExpr", + "Expr": "0x55fb7c214430-Expr" + }, + { + "id": "0x55fb7c214430-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fb7c214450-LiteralConstant" + }, + { + "id": "0x55fb7c214450-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55fb7c214450-IntLiteralConstant" + }, + { + "id": "0x55fb7c214450-IntLiteralConstant", + "CharBlock": "10" + }, + { + "id": "0x55fb7c211830-Declaration", + "Name": "0x55fb7c211860-Name", + "ArraySpec": "0x55fb7c211830-ArraySpec" + }, + { + "id": "0x55fb7c211860-Name", + "source": "b" + }, + { + "id": "0x55fb7c211830-ArraySpec", + "variantKey": "ExplicitShapeSpec", + "ExplicitShapeSpec": [ + "0x55fb7c201f10-ExplicitShapeSpec" + ] + }, + { + "id": "0x55fb7c201f10-ExplicitShapeSpec", + "upper_bound": "0x55fb7c201f10-SpecificationExpr" + }, + { + "id": "0x55fb7c201f10-SpecificationExpr", + "Expr": "0x55fb7c214510-Expr" + }, + { + "id": "0x55fb7c214510-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fb7c214530-LiteralConstant" + }, + { + "id": "0x55fb7c214530-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55fb7c214530-IntLiteralConstant" + }, + { + "id": "0x55fb7c214530-IntLiteralConstant", + "CharBlock": "10" + }, + { + "id": "0x55fb7c2126a0-Declaration", + "Name": "0x55fb7c2126d0-Name", + "ArraySpec": "0x55fb7c2126a0-ArraySpec" + }, + { + "id": "0x55fb7c2126d0-Name", + "source": "c" + }, + { + "id": "0x55fb7c2126a0-ArraySpec", + "variantKey": "ExplicitShapeSpec", + "ExplicitShapeSpec": [ + "0x55fb7c2020a0-ExplicitShapeSpec" + ] + }, + { + "id": "0x55fb7c2020a0-ExplicitShapeSpec", + "upper_bound": "0x55fb7c2020a0-SpecificationExpr" + }, + { + "id": "0x55fb7c2020a0-SpecificationExpr", + "Expr": "0x55fb7c2145f0-Expr" + }, + { + "id": "0x55fb7c2145f0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fb7c214610-LiteralConstant" + }, + { + "id": "0x55fb7c214610-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55fb7c214610-IntLiteralConstant" + }, + { + "id": "0x55fb7c214610-IntLiteralConstant", + "CharBlock": "10" + }, + { + "id": "0x55fb7c217ef8-ExecutionPart", + "ExecutionPartConstruct": [ + "0x55fb7c2154e0-ExecutionPartConstruct", + "0x55fb7c210f20-ExecutionPartConstruct" + ] + }, + { + "id": "0x55fb7c217ef8-ExecutionPartConstruct" + }, + { + "id": "0x55fb7c2154e0-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55fb7c2154e0-ExecutableConstruct" + }, + { + "id": "0x55fb7c2154e0-ExecutableConstruct", + "variantKey": "DoConstruct", + "DoConstruct": "0x55fb7c2b5680-DoConstruct" + }, + { + "id": "0x55fb7c2b5680-DoConstruct", + "Statement": "0x55fb7c2b56d8-Statement", + "ExecutionPartConstruct": [ + "0x55fb7c215480-ExecutionPartConstruct", + "0x55fb7c215740-ExecutionPartConstruct" + ], + "Statement": "0x55fb7c2b5680-Statement" + }, + { + "id": "0x55fb7c2b56d8-Statement", + "statement": "0x55fb7c2b56e8-NonLabelDoStmt", + "source": "do70i=1,10,1" + }, + { + "id": "0x55fb7c2b56e8-NonLabelDoStmt", + "LoopControl": "0x55fb7c2b56e8-LoopControl" + }, + { + "id": "0x55fb7c2b56e8-LoopControl", + "variantKey": "LoopBounds", + "LoopBounds": "0x55fb7c2b56e8-LoopBounds" + }, + { + "id": "0x55fb7c2b56e8-LoopBounds", + "var": "0x55fb7c2b56e8-Name", + "lower": "0x55fb7c2151d0-Expr", + "upper": "0x55fb7c2152b0-Expr", + "step": "0x55fb7c215390-Expr" + }, + { + "id": "0x55fb7c2b56e8-Name", + "source": "i" + }, + { + "id": "0x55fb7c2151d0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fb7c2151f0-LiteralConstant" + }, + { + "id": "0x55fb7c2151f0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55fb7c2151f0-IntLiteralConstant" + }, + { + "id": "0x55fb7c2151f0-IntLiteralConstant", + "CharBlock": "1" + }, + { + "id": "0x55fb7c2152b0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fb7c2152d0-LiteralConstant" + }, + { + "id": "0x55fb7c2152d0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55fb7c2152d0-IntLiteralConstant" + }, + { + "id": "0x55fb7c2152d0-IntLiteralConstant", + "CharBlock": "10" + }, + { + "id": "0x55fb7c215390-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fb7c2153b0-LiteralConstant" + }, + { + "id": "0x55fb7c2153b0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55fb7c2153b0-IntLiteralConstant" + }, + { + "id": "0x55fb7c2153b0-IntLiteralConstant", + "CharBlock": "1" + }, + { + "id": "0x55fb7c2b56c0-ExecutionPartConstruct" + }, + { + "id": "0x55fb7c215480-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55fb7c215480-ExecutableConstruct" + }, + { + "id": "0x55fb7c215480-ExecutableConstruct", + "variantKey": "IfConstruct", + "IfConstruct": "0x55fb7c2166d0-IfConstruct" + }, + { + "id": "0x55fb7c2166d0-IfConstruct", + "Statement": "0x55fb7c2167a0-Statement", + "ExecutionPartConstruct": [ + "0x55fb7c2149f0-ExecutionPartConstruct" + ], + "Statement": "0x55fb7c2166d0-Statement" + }, + { + "id": "0x55fb7c2167a0-Statement", + "statement": "0x55fb7c2167b0-IfThenStmt", + "source": "if(c(i).ne.a(i)-b(i))then" + }, + { + "id": "0x55fb7c2167b0-IfThenStmt", + "Expr": "0x55fb7c216320-Expr" + }, + { + "id": "0x55fb7c216320-Expr", + "variantKey": "NE", + "NE": "0x55fb7c216340-NE" + }, + { + "id": "0x55fb7c216340-NE", + "left": "0x55fb7c216240-Expr", + "right": "0x55fb7c216160-Expr", + "op": "NE" + }, + { + "id": "0x55fb7c216240-Expr", + "variantKey": "Designator", + "Designator": "0x55fb7c219b10-Designator" + }, + { + "id": "0x55fb7c219b10-Designator", + "variantKey": "DataRef", + "DataRef": "0x55fb7c219b20-DataRef" + }, + { + "id": "0x55fb7c219b20-DataRef", + "variantKey": "ArrayElement", + "ArrayElement": "0x55fb7c2ba710-ArrayElement" + }, + { + "id": "0x55fb7c2ba710-ArrayElement", + "base": "0x55fb7c2ba710-DataRef", + "subscripts": [ + "0x55fb7c2bb5d0-SectionSubscript" + ] + }, + { + "id": "0x55fb7c2ba710-DataRef", + "variantKey": "Name", + "Name": "0x55fb7c2ba710-Name" + }, + { + "id": "0x55fb7c2ba710-Name", + "source": "c" + }, + { + "id": "0x55fb7c2bb5d0-SectionSubscript", + "variantKey": "Expr", + "Expr": "0x55fb7c213740-Expr" + }, + { + "id": "0x55fb7c213740-Expr", + "variantKey": "Designator", + "Designator": "0x55fb7c214aa0-Designator" + }, + { + "id": "0x55fb7c214aa0-Designator", + "variantKey": "DataRef", + "DataRef": "0x55fb7c214ab0-DataRef" + }, + { + "id": "0x55fb7c214ab0-DataRef", + "variantKey": "Name", + "Name": "0x55fb7c214ab0-Name" + }, + { + "id": "0x55fb7c214ab0-Name", + "source": "i" + }, + { + "id": "0x55fb7c216160-Expr", + "variantKey": "Subtract", + "Subtract": "0x55fb7c216180-Subtract" + }, + { + "id": "0x55fb7c216180-Subtract", + "left": "0x55fb7c214e30-Expr", + "right": "0x55fb7c214d50-Expr", + "op": "SUBTRACT" + }, + { + "id": "0x55fb7c214e30-Expr", + "variantKey": "Designator", + "Designator": "0x55fb7c2bb180-Designator" + }, + { + "id": "0x55fb7c2bb180-Designator", + "variantKey": "DataRef", + "DataRef": "0x55fb7c2bb190-DataRef" + }, + { + "id": "0x55fb7c2bb190-DataRef", + "variantKey": "ArrayElement", + "ArrayElement": "0x55fb7c2ba8e0-ArrayElement" + }, + { + "id": "0x55fb7c2ba8e0-ArrayElement", + "base": "0x55fb7c2ba8e0-DataRef", + "subscripts": [ + "0x55fb7c2164c0-SectionSubscript" + ] + }, + { + "id": "0x55fb7c2ba8e0-DataRef", + "variantKey": "Name", + "Name": "0x55fb7c2ba8e0-Name" + }, + { + "id": "0x55fb7c2ba8e0-Name", + "source": "a" + }, + { + "id": "0x55fb7c2164c0-SectionSubscript", + "variantKey": "Expr", + "Expr": "0x55fb7c215530-Expr" + }, + { + "id": "0x55fb7c215530-Expr", + "variantKey": "Designator", + "Designator": "0x55fb7c2156d0-Designator" + }, + { + "id": "0x55fb7c2156d0-Designator", + "variantKey": "DataRef", + "DataRef": "0x55fb7c2156e0-DataRef" + }, + { + "id": "0x55fb7c2156e0-DataRef", + "variantKey": "Name", + "Name": "0x55fb7c2156e0-Name" + }, + { + "id": "0x55fb7c2156e0-Name", + "source": "i" + }, + { + "id": "0x55fb7c214d50-Expr", + "variantKey": "Designator", + "Designator": "0x55fb7c2bb6c0-Designator" + }, + { + "id": "0x55fb7c2bb6c0-Designator", + "variantKey": "DataRef", + "DataRef": "0x55fb7c2bb6d0-DataRef" + }, + { + "id": "0x55fb7c2bb6d0-DataRef", + "variantKey": "ArrayElement", + "ArrayElement": "0x55fb7c21a6b0-ArrayElement" + }, + { + "id": "0x55fb7c21a6b0-ArrayElement", + "base": "0x55fb7c21a6b0-DataRef", + "subscripts": [ + "0x55fb7c214d00-SectionSubscript" + ] + }, + { + "id": "0x55fb7c21a6b0-DataRef", + "variantKey": "Name", + "Name": "0x55fb7c21a6b0-Name" + }, + { + "id": "0x55fb7c21a6b0-Name", + "source": "b" + }, + { + "id": "0x55fb7c214d00-SectionSubscript", + "variantKey": "Expr", + "Expr": "0x55fb7c214730-Expr" + }, + { + "id": "0x55fb7c214730-Expr", + "variantKey": "Designator", + "Designator": "0x55fb7c210be0-Designator" + }, + { + "id": "0x55fb7c210be0-Designator", + "variantKey": "DataRef", + "DataRef": "0x55fb7c210bf0-DataRef" + }, + { + "id": "0x55fb7c210bf0-DataRef", + "variantKey": "Name", + "Name": "0x55fb7c210bf0-Name" + }, + { + "id": "0x55fb7c210bf0-Name", + "source": "i" + }, + { + "id": "0x55fb7c216788-ExecutionPartConstruct" + }, + { + "id": "0x55fb7c2149f0-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55fb7c2149f0-ExecutableConstruct" + }, + { + "id": "0x55fb7c2149f0-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55fb7c2149f0-Statement" + }, + { + "id": "0x55fb7c2149f0-Statement", + "statement": "0x55fb7c214a00-ActionStmt", + "source": "error=error+1" + }, + { + "id": "0x55fb7c214a00-ActionStmt", + "variantKey": "AssignmentStmt", + "AssignmentStmt": "0x55fb7c2150c0-AssignmentStmt" + }, + { + "id": "0x55fb7c2150c0-AssignmentStmt", + "Variable": "0x55fb7c2151a0-Variable", + "Expr": "0x55fb7c2150d0-Expr" + }, + { + "id": "0x55fb7c2151a0-Variable", + "variantKey": "Designator", + "Designator": "0x55fb7c215670-Designator" + }, + { + "id": "0x55fb7c215670-Designator", + "variantKey": "DataRef", + "DataRef": "0x55fb7c215680-DataRef" + }, + { + "id": "0x55fb7c215680-DataRef", + "variantKey": "Name", + "Name": "0x55fb7c215680-Name" + }, + { + "id": "0x55fb7c215680-Name", + "source": "error" + }, + { + "id": "0x55fb7c2150d0-Expr", + "variantKey": "Add", + "Add": "0x55fb7c2150f0-Add" + }, + { + "id": "0x55fb7c2150f0-Add", + "left": "0x55fb7c2165f0-Expr", + "right": "0x55fb7c216510-Expr", + "op": "ADD" + }, + { + "id": "0x55fb7c2165f0-Expr", + "variantKey": "Designator", + "Designator": "0x55fb7c211930-Designator" + }, + { + "id": "0x55fb7c211930-Designator", + "variantKey": "DataRef", + "DataRef": "0x55fb7c211940-DataRef" + }, + { + "id": "0x55fb7c211940-DataRef", + "variantKey": "Name", + "Name": "0x55fb7c211940-Name" + }, + { + "id": "0x55fb7c211940-Name", + "source": "error" + }, + { + "id": "0x55fb7c216510-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55fb7c216530-LiteralConstant" + }, + { + "id": "0x55fb7c216530-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55fb7c216530-IntLiteralConstant" + }, + { + "id": "0x55fb7c216530-IntLiteralConstant", + "CharBlock": "1" + }, + { + "id": "0x55fb7c2166d0-Statement", + "statement": "0x55fb7c2166e0-EndIfStmt", + "source": "endif" + }, + { + "id": "0x55fb7c2166e0-EndIfStmt" + }, + { + "id": "0x55fb7c215740-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55fb7c215740-ExecutableConstruct" + }, + { + "id": "0x55fb7c215740-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55fb7c215740-Statement" + }, + { + "id": "0x55fb7c215740-Statement", + "statement": "0x55fb7c215750-ActionStmt", + "label": "70", + "source": "70continue" + }, + { + "id": "0x55fb7c215750-ActionStmt", + "variantKey": "ContinueStmt", + "ContinueStmt": "0x55fb7c215750-ContinueStmt" + }, + { + "id": "0x55fb7c215750-ContinueStmt" + }, + { + "id": "0x55fb7c2b5680-Statement", + "statement": "0x55fb7c2b5690-EndDoStmt", + "source": "" + }, + { + "id": "0x55fb7c2b5690-EndDoStmt" + }, + { + "id": "0x55fb7c210f20-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55fb7c210f20-ExecutableConstruct" + }, + { + "id": "0x55fb7c210f20-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55fb7c210f20-Statement" + }, + { + "id": "0x55fb7c210f20-Statement", + "statement": "0x55fb7c210f30-ActionStmt", + "source": "return" + }, + { + "id": "0x55fb7c210f30-ActionStmt", + "variantKey": "ReturnStmt", + "ReturnStmt": "0x55fb7c202ef0-ReturnStmt" + }, + { + "id": "0x55fb7c202ef0-ReturnStmt" + }, + { + "id": "0x55fb7c217e70-Statement", + "statement": "0x55fb7c217e80-EndSubroutineStmt", + "source": "endsubroutinesub2" + }, + { + "id": "0x55fb7c217e80-EndSubroutineStmt", + "Name": "0x55fb7c217e80-Name" + }, + { + "id": "0x55fb7c217e80-Name", + "source": "sub2" + } + ], + "comments": [ + { + "text": "", + "stmtId": "0x55fb7c20bd98-Statement", + "trailing": false + }, + { + "text": "", + "stmtId": "0x55fb7c1fa550-Statement", + "trailing": false + }, + { + "text": "", + "stmtId": "0x55fb7c209718-Statement", + "trailing": false + }, + { + "text": "", + "stmtId": "0x55fb7c20f250-Statement", + "trailing": false + }, + { + "text": "", + "stmtId": "0x55fb7c215c28-Statement", + "trailing": false + }, + { + "text": "", + "stmtId": "0x55fb7c209838-Statement", + "trailing": false + }, + { + "text": "", + "stmtId": "0x55fb7c212590-Statement", + "trailing": false + }, + { + "text": "", + "stmtId": "0x55fb7c217fb8-Statement", + "trailing": false + }, + { + "text": "", + "stmtId": "0x55fb7c2b56d8-Statement", + "trailing": false + }, + { + "text": "", + "stmtId": "0x55fb7c210f20-Statement", + "trailing": false + } + ], + "enums": { + "Fortran::common::CUDADataAttr": [ + "Constant", + "Device", + "Managed", + "Pinned", + "Shared", + "Texture", + "Unified" + ], + "Fortran::common::CUDASubprogramAttrs": [ + "Host", + "Device", + "HostDevice", + "Global", + "Grid_Global" + ], + "Fortran::common::ImportKind": [ + "Default", + "Only", + "None", + "All" + ], + "Fortran::common::OmpDependenceKind": [ + "In", + "Out", + "Inout", + "Inoutset", + "Mutexinoutset", + "Depobj" + ], + "Fortran::common::OmpMemoryOrderType": [ + "Acq_Rel", + "Acquire", + "Relaxed", + "Release", + "Seq_Cst" + ], + "Fortran::common::OpenACCDeviceType": [ + "Star", + "Default", + "Nvidia", + "Radeon", + "Host", + "Multicore", + "None" + ], + "Fortran::parser::AccDataModifier::Modifier": [ + "ReadOnly", + "Zero" + ], + "Fortran::parser::AccessSpec::Kind": [ + "Public", + "Private" + ], + "Fortran::parser::BindEntity::Kind": [ + "Object", + "Common" + ], + "Fortran::parser::CompilerDirective::VectorLength::Kind": [ + "Auto", + "Fixed", + "Scalable" + ], + "Fortran::parser::ConnectSpec::CharExpr::Kind": [ + "Access", + "Action", + "Asynchronous", + "Blank", + "Decimal", + "Delim", + "Encoding", + "Form", + "Pad", + "Position", + "Round", + "Sign", + "Carriagecontrol", + "Convert", + "Dispose" + ], + "Fortran::parser::DefinedOperator::IntrinsicOperator": [ + "Power", + "Multiply", + "Divide", + "Add", + "Subtract", + "Concat", + "LT", + "LE", + "EQ", + "NE", + "GE", + "GT", + "NOT", + "AND", + "OR", + "EQV", + "NEQV" + ], + "Fortran::parser::ImplicitStmt::ImplicitNoneNameSpec": [ + "External", + "Type" + ], + "Fortran::parser::InquireSpec::CharVar::Kind": [ + "Access", + "Action", + "Asynchronous", + "Blank", + "Decimal", + "Delim", + "Direct", + "Encoding", + "Form", + "Formatted", + "Iomsg", + "Name", + "Pad", + "Position", + "Read", + "Readwrite", + "Round", + "Sequential", + "Sign", + "Stream", + "Status", + "Unformatted", + "Write", + "Carriagecontrol", + "Convert", + "Dispose" + ], + "Fortran::parser::InquireSpec::IntVar::Kind": [ + "Iostat", + "Nextrec", + "Number", + "Pos", + "Recl", + "Size" + ], + "Fortran::parser::InquireSpec::LogVar::Kind": [ + "Exist", + "Named", + "Opened", + "Pending" + ], + "Fortran::parser::IntentSpec::Intent": [ + "In", + "Out", + "InOut" + ], + "Fortran::parser::IoControlSpec::CharExpr::Kind": [ + "Advance", + "Blank", + "Decimal", + "Delim", + "Pad", + "Round", + "Sign" + ], + "Fortran::parser::ReductionOperator::Operator": [ + "Plus", + "Multiply", + "Max", + "Min", + "Iand", + "Ior", + "Ieor", + "And", + "Or", + "Eqv", + "Neqv" + ], + "Fortran::parser::OmpAccessGroup::Value": [ + "Cgroup" + ], + "Fortran::parser::OmpAdjustArgsClause::OmpAdjustOp::Value": [ + "Nothing", + "Need_Device_Ptr" + ], + "Fortran::parser::OmpAlwaysModifier::Value": [ + "Always" + ], + "Fortran::parser::OmpAtClause::ActionTime": [ + "Compilation", + "Execution" + ], + "Fortran::parser::OmpAttachModifier::Value": [ + "Always", + "Never", + "Auto" + ], + "Fortran::parser::OmpAutomapModifier::Value": [ + "Automap" + ], + "Fortran::parser::OmpBindClause::Binding": [ + "Parallel", + "Teams", + "Thread" + ], + "Fortran::parser::OmpChunkModifier::Value": [ + "Simd" + ], + "Fortran::parser::OmpCloseModifier::Value": [ + "Close" + ], + "Fortran::parser::OmpDefaultClause::DataSharingAttribute": [ + "Private", + "Firstprivate", + "Shared", + "None" + ], + "Fortran::parser::OmpDefaultmapClause::ImplicitBehavior": [ + "Alloc", + "To", + "From", + "Tofrom", + "Firstprivate", + "None", + "Default", + "Present" + ], + "Fortran::parser::OmpDeleteModifier::Value": [ + "Delete" + ], + "Fortran::parser::OmpDependenceType::Value": [ + "Sink", + "Source" + ], + "Fortran::parser::OmpDeviceModifier::Value": [ + "Ancestor", + "Device_Num" + ], + "Fortran::parser::OmpDeviceTypeClause::DeviceTypeDescription": [ + "Any", + "Host", + "Nohost" + ], + "Fortran::parser::OmpDirectiveSpecification::Flag": [ + "DeprecatedSyntax", + "CrossesLabelDo" + ], + "Fortran::parser::OmpExpectation::Value": [ + "Present" + ], + "Fortran::parser::OmpInteropType::Value": [ + "Target", + "Targetsync" + ], + "Fortran::parser::OmpLastprivateModifier::Value": [ + "Conditional" + ], + "Fortran::parser::OmpLinearModifier::Value": [ + "Ref", + "Uval", + "Val" + ], + "Fortran::parser::OmpMapType::Value": [ + "Alloc", + "Delete", + "From", + "Release", + "Storage", + "To", + "Tofrom" + ], + "Fortran::parser::OmpMapTypeModifier::Value": [ + "Always", + "Close", + "Present", + "Ompx_Hold" + ], + "Fortran::parser::OmpObject::Invalid::Kind": [ + "BlankCommonBlock" + ], + "Fortran::parser::OmpOrderClause::Ordering": [ + "Concurrent" + ], + "Fortran::parser::OmpOrderingModifier::Value": [ + "Monotonic", + "Nonmonotonic", + "Simd" + ], + "Fortran::parser::OmpOrderModifier::Value": [ + "Reproducible", + "Unconstrained" + ], + "Fortran::parser::OmpPrescriptiveness::Value": [ + "Strict" + ], + "Fortran::parser::OmpPresentModifier::Value": [ + "Present" + ], + "Fortran::parser::OmpProcBindClause::AffinityPolicy": [ + "Close", + "Master", + "Spread", + "Primary" + ], + "Fortran::parser::OmpReductionModifier::Value": [ + "Default", + "Inscan", + "Task" + ], + "Fortran::parser::OmpRefModifier::Value": [ + "Ref_Ptee", + "Ref_Ptr", + "Ref_Ptr_Ptee" + ], + "Fortran::parser::OmpScheduleClause::Kind": [ + "Static", + "Dynamic", + "Guided", + "Auto", + "Runtime" + ], + "Fortran::parser::OmpSelfModifier::Value": [ + "Self" + ], + "Fortran::parser::OmpSeverityClause::SevLevel": [ + "Fatal", + "Warning" + ], + "Fortran::parser::OmpThreadsetClause::ThreadsetPolicy": [ + "Omp_Pool", + "Omp_Team" + ], + "Fortran::parser::OmpTraitSelectorName::Value": [ + "Arch", + "Atomic_Default_Mem_Order", + "Condition", + "Device_Num", + "Extension", + "Isa", + "Kind", + "Requires", + "Simd", + "Uid", + "Vendor" + ], + "Fortran::parser::OmpTraitSetSelectorName::Value": [ + "Construct", + "Device", + "Implementation", + "Target_Device", + "User" + ], + "Fortran::parser::OmpVariableCategory::Value": [ + "Aggregate", + "All", + "Allocatable", + "Pointer", + "Scalar" + ], + "Fortran::parser::OmpxHoldModifier::Value": [ + "Ompx_Hold" + ], + "Fortran::parser::ProcedureStmt::Kind": [ + "ModuleProcedure", + "Procedure" + ], + "Fortran::parser::SavedEntity::Kind": [ + "Entity", + "Common" + ], + "Fortran::parser::StopStmt::Kind": [ + "Stop", + "ErrorStop" + ], + "Fortran::parser::UseStmt::ModuleNature": [ + "Intrinsic", + "Non_Intrinsic" + ] + } +} diff --git a/FortranParser/resources-test/fortran/parser/hello.json b/FortranParser/resources-test/fortran/parser/hello.json index 2a1cef6a..9c207b2d 100644 --- a/FortranParser/resources-test/fortran/parser/hello.json +++ b/FortranParser/resources-test/fortran/parser/hello.json @@ -1,332 +1,333 @@ { + "fileExtension": "f90", "nodes": [ { - "id": "0x561cfdde3f00-Program", + "id": "0x55c6aab29f00-Program", "ProgramUnit": [ - "0x561cfde18cb0-ProgramUnit" + "0x55c6aab5ec20-ProgramUnit" ] }, { - "id": "0x561cfde18cb0-ProgramUnit", + "id": "0x55c6aab5ec20-ProgramUnit", "variantKey": "MainProgram", - "MainProgram": "0x561cfde11d00-MainProgram" + "MainProgram": "0x55c6aab57c80-MainProgram" }, { - "id": "0x561cfde11d00-MainProgram", - "Statement": "0x561cfde11e48-Statement", - "SpecificationPart": "0x561cfde11da0-SpecificationPart", - "ExecutionPart": "0x561cfde11d88-ExecutionPart", - "Statement": "0x561cfde11d00-Statement" + "id": "0x55c6aab57c80-MainProgram", + "Statement": "0x55c6aab57dc8-Statement", + "SpecificationPart": "0x55c6aab57d20-SpecificationPart", + "ExecutionPart": "0x55c6aab57d08-ExecutionPart", + "Statement": "0x55c6aab57c80-Statement" }, { - "id": "0x561cfde11e48-Statement", - "statement": "0x561cfde11e58-ProgramStmt", + "id": "0x55c6aab57dc8-Statement", + "statement": "0x55c6aab57dd8-ProgramStmt", "source": "program HELLO" }, { - "id": "0x561cfde11e58-ProgramStmt", - "Name": "0x561cfde11e58-Name" + "id": "0x55c6aab57dd8-ProgramStmt", + "Name": "0x55c6aab57dd8-Name" }, { - "id": "0x561cfde11e58-Name", + "id": "0x55c6aab57dd8-Name", "source": "HELLO" }, { - "id": "0x561cfde11da0-SpecificationPart", - "ImplicitPart": "0x561cfde11db8-ImplicitPart" + "id": "0x55c6aab57d20-SpecificationPart", + "ImplicitPart": "0x55c6aab57d38-ImplicitPart" }, { - "id": "0x561cfde11db8-ImplicitPart" + "id": "0x55c6aab57d38-ImplicitPart" }, { - "id": "0x561cfde11d88-ExecutionPart", + "id": "0x55c6aab57d08-ExecutionPart", "ExecutionPartConstruct": [ - "0x561cfde23c10-ExecutionPartConstruct", - "0x561cfde20560-ExecutionPartConstruct", - "0x561cfde23c70-ExecutionPartConstruct", - "0x561cfddf1170-ExecutionPartConstruct" + "0x55c6aab699b0-ExecutionPartConstruct", + "0x55c6aab664f0-ExecutionPartConstruct", + "0x55c6aab69a10-ExecutionPartConstruct", + "0x55c6aab37170-ExecutionPartConstruct" ] }, { - "id": "0x561cfde11d88-ExecutionPartConstruct" + "id": "0x55c6aab57d08-ExecutionPartConstruct" }, { - "id": "0x561cfde23c10-ExecutionPartConstruct", + "id": "0x55c6aab699b0-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x561cfde23c10-ExecutableConstruct" + "ExecutableConstruct": "0x55c6aab699b0-ExecutableConstruct" }, { - "id": "0x561cfde23c10-ExecutableConstruct", + "id": "0x55c6aab699b0-ExecutableConstruct", "variantKey": "Statement", - "Statement": "0x561cfde23c10-Statement" + "Statement": "0x55c6aab699b0-Statement" }, { - "id": "0x561cfde23c10-Statement", - "statement": "0x561cfde23c20-ActionStmt", + "id": "0x55c6aab699b0-Statement", + "statement": "0x55c6aab699c0-ActionStmt", "source": "print *, 'Hello, World!'" }, { - "id": "0x561cfde23c20-ActionStmt", + "id": "0x55c6aab699c0-ActionStmt", "variantKey": "PrintStmt", - "PrintStmt": "0x561cfdd99260-PrintStmt" + "PrintStmt": "0x55c6aaadf260-PrintStmt" }, { - "id": "0x561cfdd99260-PrintStmt", - "Format": "0x561cfdd99278-Format", + "id": "0x55c6aaadf260-PrintStmt", + "Format": "0x55c6aaadf278-Format", "OutputItem": [ - "0x561cfde24ea0-OutputItem" + "0x55c6aab6adf0-OutputItem" ] }, { - "id": "0x561cfdd99278-Format", + "id": "0x55c6aaadf278-Format", "variantKey": "Star", - "Star": "0x561cfdd99278-Star" + "Star": "0x55c6aaadf278-Star" }, { - "id": "0x561cfdd99278-Star" + "id": "0x55c6aaadf278-Star" }, { - "id": "0x561cfde24ea0-OutputItem", + "id": "0x55c6aab6adf0-OutputItem", "variantKey": "Expr", - "Expr": "0x561cfde24ea0-Expr" + "Expr": "0x55c6aab6adf0-Expr" }, { - "id": "0x561cfde24ea0-Expr", + "id": "0x55c6aab6adf0-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x561cfde24ec0-LiteralConstant" + "LiteralConstant": "0x55c6aab6ae10-LiteralConstant" }, { - "id": "0x561cfde24ec0-LiteralConstant", + "id": "0x55c6aab6ae10-LiteralConstant", "variantKey": "CharLiteralConstant", - "CharLiteralConstant": "0x561cfde24ec0-CharLiteralConstant" + "CharLiteralConstant": "0x55c6aab6ae10-CharLiteralConstant" }, { - "id": "0x561cfde24ec0-CharLiteralConstant", + "id": "0x55c6aab6ae10-CharLiteralConstant", "string": "Hello, World!" }, { - "id": "0x561cfde20560-ExecutionPartConstruct", + "id": "0x55c6aab664f0-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x561cfde20560-ExecutableConstruct" + "ExecutableConstruct": "0x55c6aab664f0-ExecutableConstruct" }, { - "id": "0x561cfde20560-ExecutableConstruct", + "id": "0x55c6aab664f0-ExecutableConstruct", "variantKey": "Statement", - "Statement": "0x561cfde20560-Statement" + "Statement": "0x55c6aab664f0-Statement" }, { - "id": "0x561cfde20560-Statement", - "statement": "0x561cfde20570-ActionStmt", + "id": "0x55c6aab664f0-Statement", + "statement": "0x55c6aab66500-ActionStmt", "source": "print 100, 'Hello, World!', 2" }, { - "id": "0x561cfde20570-ActionStmt", + "id": "0x55c6aab66500-ActionStmt", "variantKey": "PrintStmt", - "PrintStmt": "0x561cfde20450-PrintStmt" + "PrintStmt": "0x55c6aab663e0-PrintStmt" }, { - "id": "0x561cfde20450-PrintStmt", - "Format": "0x561cfde20468-Format", + "id": "0x55c6aab663e0-PrintStmt", + "Format": "0x55c6aab663f8-Format", "OutputItem": [ - "0x561cfde20370-OutputItem", - "0x561cfde22c70-OutputItem" + "0x55c6aab66300-OutputItem", + "0x55c6aab68bc0-OutputItem" ] }, { - "id": "0x561cfde20468-Format", + "id": "0x55c6aab663f8-Format", "variantKey": "uint64_t", "uint64_t": "100" }, { - "id": "0x561cfde20370-OutputItem", + "id": "0x55c6aab66300-OutputItem", "variantKey": "Expr", - "Expr": "0x561cfde20370-Expr" + "Expr": "0x55c6aab66300-Expr" }, { - "id": "0x561cfde20370-Expr", + "id": "0x55c6aab66300-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x561cfde20390-LiteralConstant" + "LiteralConstant": "0x55c6aab66320-LiteralConstant" }, { - "id": "0x561cfde20390-LiteralConstant", + "id": "0x55c6aab66320-LiteralConstant", "variantKey": "CharLiteralConstant", - "CharLiteralConstant": "0x561cfde20390-CharLiteralConstant" + "CharLiteralConstant": "0x55c6aab66320-CharLiteralConstant" }, { - "id": "0x561cfde20390-CharLiteralConstant", + "id": "0x55c6aab66320-CharLiteralConstant", "string": "Hello, World!" }, { - "id": "0x561cfde22c70-OutputItem", + "id": "0x55c6aab68bc0-OutputItem", "variantKey": "Expr", - "Expr": "0x561cfde22c70-Expr" + "Expr": "0x55c6aab68bc0-Expr" }, { - "id": "0x561cfde22c70-Expr", + "id": "0x55c6aab68bc0-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x561cfde22c90-LiteralConstant" + "LiteralConstant": "0x55c6aab68be0-LiteralConstant" }, { - "id": "0x561cfde22c90-LiteralConstant", + "id": "0x55c6aab68be0-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x561cfde22c90-IntLiteralConstant" + "IntLiteralConstant": "0x55c6aab68be0-IntLiteralConstant" }, { - "id": "0x561cfde22c90-IntLiteralConstant", + "id": "0x55c6aab68be0-IntLiteralConstant", "CharBlock": "2" }, { - "id": "0x561cfde23c70-ExecutionPartConstruct", + "id": "0x55c6aab69a10-ExecutionPartConstruct", "variantKey": "Statement", - "Statement": "0x561cfde23c70-Statement" + "Statement": "0x55c6aab69a10-Statement" }, { - "id": "0x561cfde23c70-Statement", - "statement": "0x561cfde26380-FormatStmt", + "id": "0x55c6aab69a10-Statement", + "statement": "0x55c6aab6c2f0-FormatStmt", "label": "100", "source": "100 format(a, i3)" }, { - "id": "0x561cfde26380-FormatStmt", - "FormatSpecification": "0x561cfde26380-FormatSpecification" + "id": "0x55c6aab6c2f0-FormatStmt", + "FormatSpecification": "0x55c6aab6c2f0-FormatSpecification" }, { - "id": "0x561cfde26380-FormatSpecification", + "id": "0x55c6aab6c2f0-FormatSpecification", "items": [ - "0x561cfde24810-FormatItem", - "0x561cfde24e30-FormatItem" + "0x55c6aab6a760-FormatItem", + "0x55c6aab6ad80-FormatItem" ], "unlimitedItems": [] }, { - "id": "0x561cfde24810-FormatItem", + "id": "0x55c6aab6a760-FormatItem", "variantKey": "IntrinsicTypeDataEditDesc", - "IntrinsicTypeDataEditDesc": "0x561cfde24820-IntrinsicTypeDataEditDesc" + "IntrinsicTypeDataEditDesc": "0x55c6aab6a770-IntrinsicTypeDataEditDesc" }, { - "id": "0x561cfde24820-IntrinsicTypeDataEditDesc", - "kind": "0x561cfde24820-Kind" + "id": "0x55c6aab6a770-IntrinsicTypeDataEditDesc", + "kind": "0x55c6aab6a770-Kind" }, { - "id": "0x561cfde24820-Kind" + "id": "0x55c6aab6a770-Kind" }, { - "id": "0x561cfde24e30-FormatItem", + "id": "0x55c6aab6ad80-FormatItem", "variantKey": "IntrinsicTypeDataEditDesc", - "IntrinsicTypeDataEditDesc": "0x561cfde24e40-IntrinsicTypeDataEditDesc" + "IntrinsicTypeDataEditDesc": "0x55c6aab6ad90-IntrinsicTypeDataEditDesc" }, { - "id": "0x561cfde24e40-IntrinsicTypeDataEditDesc", - "kind": "0x561cfde24e40-Kind", + "id": "0x55c6aab6ad90-IntrinsicTypeDataEditDesc", + "kind": "0x55c6aab6ad90-Kind", "width": "3" }, { - "id": "0x561cfde24e40-Kind" + "id": "0x55c6aab6ad90-Kind" }, { - "id": "0x561cfddf1170-ExecutionPartConstruct", + "id": "0x55c6aab37170-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x561cfddf1170-ExecutableConstruct" + "ExecutableConstruct": "0x55c6aab37170-ExecutableConstruct" }, { - "id": "0x561cfddf1170-ExecutableConstruct", + "id": "0x55c6aab37170-ExecutableConstruct", "variantKey": "Statement", - "Statement": "0x561cfddf1170-Statement" + "Statement": "0x55c6aab37170-Statement" }, { - "id": "0x561cfddf1170-Statement", - "statement": "0x561cfddf1180-ActionStmt", + "id": "0x55c6aab37170-Statement", + "statement": "0x55c6aab37180-ActionStmt", "label": "20", "source": "20 print '(A, F6.3)', 'Value = ', 3" }, { - "id": "0x561cfddf1180-ActionStmt", + "id": "0x55c6aab37180-ActionStmt", "variantKey": "PrintStmt", - "PrintStmt": "0x561cfde0ebd0-PrintStmt" + "PrintStmt": "0x55c6aab54bd0-PrintStmt" }, { - "id": "0x561cfde0ebd0-PrintStmt", - "Format": "0x561cfde0ebe8-Format", + "id": "0x55c6aab54bd0-PrintStmt", + "Format": "0x55c6aab54be8-Format", "OutputItem": [ - "0x561cfde0eaf0-OutputItem", - "0x561cfde0ea00-OutputItem" + "0x55c6aab54af0-OutputItem", + "0x55c6aab54a00-OutputItem" ] }, { - "id": "0x561cfde0ebe8-Format", + "id": "0x55c6aab54be8-Format", "variantKey": "Expr", - "Expr": "0x561cfde0ebe8-Expr" + "Expr": "0x55c6aab54be8-Expr" }, { - "id": "0x561cfde0ebe8-Expr", + "id": "0x55c6aab54be8-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x561cfde0ec08-LiteralConstant" + "LiteralConstant": "0x55c6aab54c08-LiteralConstant" }, { - "id": "0x561cfde0ec08-LiteralConstant", + "id": "0x55c6aab54c08-LiteralConstant", "variantKey": "CharLiteralConstant", - "CharLiteralConstant": "0x561cfde0ec08-CharLiteralConstant" + "CharLiteralConstant": "0x55c6aab54c08-CharLiteralConstant" }, { - "id": "0x561cfde0ec08-CharLiteralConstant", + "id": "0x55c6aab54c08-CharLiteralConstant", "string": "(A, F6.3)" }, { - "id": "0x561cfde0eaf0-OutputItem", + "id": "0x55c6aab54af0-OutputItem", "variantKey": "Expr", - "Expr": "0x561cfde0eaf0-Expr" + "Expr": "0x55c6aab54af0-Expr" }, { - "id": "0x561cfde0eaf0-Expr", + "id": "0x55c6aab54af0-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x561cfde0eb10-LiteralConstant" + "LiteralConstant": "0x55c6aab54b10-LiteralConstant" }, { - "id": "0x561cfde0eb10-LiteralConstant", + "id": "0x55c6aab54b10-LiteralConstant", "variantKey": "CharLiteralConstant", - "CharLiteralConstant": "0x561cfde0eb10-CharLiteralConstant" + "CharLiteralConstant": "0x55c6aab54b10-CharLiteralConstant" }, { - "id": "0x561cfde0eb10-CharLiteralConstant", + "id": "0x55c6aab54b10-CharLiteralConstant", "string": "Value = " }, { - "id": "0x561cfde0ea00-OutputItem", + "id": "0x55c6aab54a00-OutputItem", "variantKey": "Expr", - "Expr": "0x561cfde0ea00-Expr" + "Expr": "0x55c6aab54a00-Expr" }, { - "id": "0x561cfde0ea00-Expr", + "id": "0x55c6aab54a00-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x561cfde0ea20-LiteralConstant" + "LiteralConstant": "0x55c6aab54a20-LiteralConstant" }, { - "id": "0x561cfde0ea20-LiteralConstant", + "id": "0x55c6aab54a20-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x561cfde0ea20-IntLiteralConstant" + "IntLiteralConstant": "0x55c6aab54a20-IntLiteralConstant" }, { - "id": "0x561cfde0ea20-IntLiteralConstant", + "id": "0x55c6aab54a20-IntLiteralConstant", "CharBlock": "3" }, { - "id": "0x561cfde11d00-Statement", - "statement": "0x561cfde11d10-EndProgramStmt", + "id": "0x55c6aab57c80-Statement", + "statement": "0x55c6aab57c90-EndProgramStmt", "source": "end program HELLO" }, { - "id": "0x561cfde11d10-EndProgramStmt", - "Name": "0x561cfde11d10-Name" + "id": "0x55c6aab57c90-EndProgramStmt", + "Name": "0x55c6aab57c90-Name" }, { - "id": "0x561cfde11d10-Name", + "id": "0x55c6aab57c90-Name", "source": "HELLO" } ], "comments": [ { - "text": "! This is a comment line; it is ignored by the compiler", - "stmtId": "0x561cfde23c10-Statement", + "text": " This is a comment line; it is ignored by the compiler", + "stmtId": "0x55c6aab699b0-Statement", "trailing": false } ], diff --git a/FortranParser/resources-test/fortran/parser/io/io_control.expected.f90 b/FortranParser/resources-test/fortran/parser/io/io_control.expected.f90 new file mode 100644 index 00000000..b8a94901 --- /dev/null +++ b/FortranParser/resources-test/fortran/parser/io/io_control.expected.f90 @@ -0,0 +1,74 @@ +PROGRAM IO_CONTROL_SPECS + INTEGER :: u_seq, u_dir, u_stream + INTEGER :: ios, async_id, chars_read + CHARACTER(LEN=200) :: io_message + CHARACTER(LEN=20) :: text_buffer + REAL :: x = 123.456 + INTEGER :: val = 42 + + ! Define a namelist for the NML specifier demo + NAMELIST /my_namelist/ val, x + + ! Open temporary test files (Sequential, Direct, Stream) + OPEN(NEWUNIT=u_seq, FILE="seq.txt", STATUS="replace", ACTION="readwrite") + OPEN(NEWUNIT=u_dir, FILE="dir.bin", STATUS="replace", ACCESS="direct", RECL=16) + OPEN(NEWUNIT=u_stream, FILE="stream.bin", STATUS="replace", ACCESS="stream") + + + ! ----------------------------------------------------------------- + ! 1. Formatting, Rounding, Decimal, Sign, Delim, IOSTAT & IOMSG + ! ----------------------------------------------------------------- + WRITE(u_seq, *, DECIMAL="comma", SIGN="plus", ROUND="up", DELIM="quote", IOSTAT=ios, IOMSG=io_message) + + + ! ----------------------------------------------------------------- + ! 2. Namelist Specifier (NML) + ! ----------------------------------------------------------------- + WRITE(u_seq, my_namelist, IOSTAT=ios) + + + ! ----------------------------------------------------------------- + ! 3. Non-Advancing I/O (ADVANCE, SIZE, PAD, EOR, ERR) + ! ----------------------------------------------------------------- + REWIND(u_seq) + READ(u_seq, "(A)", ADVANCE="no", PAD="yes", SIZE=chars_read, EOR=100, ERR=900, IOSTAT=ios) text_buffer + + 100 CONTINUE + + + ! ----------------------------------------------------------------- + ! 4. Direct Access (REC) + ! ----------------------------------------------------------------- + WRITE(u_dir, REC=1, IOSTAT=ios) val, x + + + ! ----------------------------------------------------------------- + ! 5. Stream Access (POS) + ! ----------------------------------------------------------------- + WRITE(u_stream, POS=10, IOSTAT=ios) "Stream Header" + + ! ----------------------------------------------------------------- + ! 6. Asynchronous Non-Blocking I/O (ASYNCHRONOUS, ID) + ! ----------------------------------------------------------------- + WRITE(u_seq, "(I5)", ASYNCHRONOUS="yes", ID=async_id, IOSTAT=ios) val + + ! Wait for async operation to complete before continuing + WAIT(u_seq, ID=async_id) + + + ! ----------------------------------------------------------------- + ! 7. Input Blank Handling and EOF Branching (BLANK, END) + ! ----------------------------------------------------------------- + READ(u_seq, "(I5)", BLANK="zero", END=200, ERR=900, IOSTAT=ios) val + + 200 CONTINUE + PRINT *, "All 20 io-control-spec items demonstrated successfully!" + + ! Clean up files + CLOSE(u_seq, STATUS="delete") + CLOSE(u_dir, STATUS="delete") + CLOSE(u_stream, STATUS="delete") + STOP + + 900 PRINT *, "I/O Error Occurred: ", trim(io_message) +END PROGRAM IO_CONTROL_SPECS \ No newline at end of file diff --git a/FortranParser/resources-test/fortran/parser/io/io_control.f90 b/FortranParser/resources-test/fortran/parser/io/io_control.f90 new file mode 100644 index 00000000..575c837d --- /dev/null +++ b/FortranParser/resources-test/fortran/parser/io/io_control.f90 @@ -0,0 +1,104 @@ +program io_control_specs + integer :: u_seq, u_dir, u_stream + integer :: ios, async_id, chars_read + character(len=200) :: io_message + character(len=20) :: text_buffer + real :: x = 123.456 + integer :: val = 42 + + ! Define a namelist for the NML specifier demo + namelist /my_namelist/ val, x + + ! Open temporary test files (Sequential, Direct, Stream) + open(newunit=u_seq, file='seq.txt', status='replace', action='readwrite') + open(newunit=u_dir, file='dir.bin', status='replace', access='direct', recl=16) + open(newunit=u_stream, file='stream.bin', status='replace', access='stream') + + + ! ----------------------------------------------------------------- + ! 1. Formatting, Rounding, Decimal, Sign, Delim, IOSTAT & IOMSG + ! ----------------------------------------------------------------- + write( unit = u_seq, & + fmt = *, & + decimal = 'comma', & + sign = 'plus', & + round = 'up', & + delim = 'quote', & + iostat = ios, & + iomsg = io_message ) + + + ! ----------------------------------------------------------------- + ! 2. Namelist Specifier (NML) + ! ----------------------------------------------------------------- + write( unit = u_seq, & + nml = my_namelist, & + iostat = ios ) + + + ! ----------------------------------------------------------------- + ! 3. Non-Advancing I/O (ADVANCE, SIZE, PAD, EOR, ERR) + ! ----------------------------------------------------------------- + rewind(u_seq) + read( unit = u_seq, & + fmt = '(A)', & + advance = 'no', & + pad = 'yes', & + size = chars_read, & + eor = 100, & + err = 900, & + iostat = ios ) text_buffer + + 100 continue + + + ! ----------------------------------------------------------------- + ! 4. Direct Access (REC) + ! ----------------------------------------------------------------- + write( unit = u_dir, & + rec = 1, & + iostat = ios ) val, x + + + ! ----------------------------------------------------------------- + ! 5. Stream Access (POS) + ! ----------------------------------------------------------------- + write( unit = u_stream, & + pos = 10, & + iostat = ios ) "Stream Header" + + + ! ----------------------------------------------------------------- + ! 6. Asynchronous Non-Blocking I/O (ASYNCHRONOUS, ID) + ! ----------------------------------------------------------------- + write( unit = u_seq, & + fmt = '(I5)', & + asynchronous = 'yes', & + id = async_id, & + iostat = ios ) val + + ! Wait for async operation to complete before continuing + wait(unit=u_seq, id=async_id) + + + ! ----------------------------------------------------------------- + ! 7. Input Blank Handling and EOF Branching (BLANK, END) + ! ----------------------------------------------------------------- + read( unit = u_seq, & + fmt = '(I5)', & + blank = 'zero', & + end = 200, & + err = 900, & + iostat = ios ) val + + 200 continue + print *, "All 20 io-control-spec items demonstrated successfully!" + + ! Clean up files + close(u_seq, status='delete') + close(u_dir, status='delete') + close(u_stream, status='delete') + stop + + 900 print *, "I/O Error Occurred: ", trim(io_message) +end program io_control_specs \ No newline at end of file diff --git a/FortranParser/resources-test/fortran/parser/io/io_control.json b/FortranParser/resources-test/fortran/parser/io/io_control.json new file mode 100644 index 00000000..162f56b7 --- /dev/null +++ b/FortranParser/resources-test/fortran/parser/io/io_control.json @@ -0,0 +1,3315 @@ +{ + "fileExtension": "f90", + "nodes": [ + { + "id": "0x5586249b3f00-Program", + "ProgramUnit": [ + "0x5586249f29f0-ProgramUnit" + ] + }, + { + "id": "0x5586249f29f0-ProgramUnit", + "variantKey": "MainProgram", + "MainProgram": "0x5586249f15d0-MainProgram" + }, + { + "id": "0x5586249f15d0-MainProgram", + "Statement": "0x5586249f1718-Statement", + "SpecificationPart": "0x5586249f1670-SpecificationPart", + "ExecutionPart": "0x5586249f1658-ExecutionPart", + "Statement": "0x5586249f15d0-Statement" + }, + { + "id": "0x5586249f1718-Statement", + "statement": "0x5586249f1728-ProgramStmt", + "source": "program IO_CONTROL_SPECS" + }, + { + "id": "0x5586249f1728-ProgramStmt", + "Name": "0x5586249f1728-Name" + }, + { + "id": "0x5586249f1728-Name", + "source": "IO_CONTROL_SPECS" + }, + { + "id": "0x5586249f1670-SpecificationPart", + "ImplicitPart": "0x5586249f1688-ImplicitPart", + "DeclarationConstruct": [ + "0x5586249c1170-DeclarationConstruct", + "0x5586249c1110-DeclarationConstruct", + "0x5586249f0be0-DeclarationConstruct", + "0x5586249f0cc0-DeclarationConstruct", + "0x5586249de950-DeclarationConstruct", + "0x5586249dec00-DeclarationConstruct", + "0x5586249c0da0-DeclarationConstruct" + ] + }, + { + "id": "0x5586249f1688-ImplicitPart" + }, + { + "id": "0x5586249c1170-DeclarationConstruct", + "variantKey": "SpecificationConstruct", + "SpecificationConstruct": "0x5586249c1170-SpecificationConstruct" + }, + { + "id": "0x5586249c1170-SpecificationConstruct", + "variantKey": "Statement", + "Statement": "0x5586249c1170-Statement" + }, + { + "id": "0x5586249c1170-Statement", + "statement": "0x5586249f0170-TypeDeclarationStmt", + "source": "integer :: u_seq, u_dir, u_stream" + }, + { + "id": "0x5586249f0170-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x5586249f01a0-DeclarationTypeSpec", + "EntityDecl": [ + "0x5586249f0460-EntityDecl", + "0x5586249f0280-EntityDecl", + "0x5586249f0370-EntityDecl" + ] + }, + { + "id": "0x5586249f01a0-DeclarationTypeSpec", + "variantKey": "IntrinsicTypeSpec", + "IntrinsicTypeSpec": "0x5586249f01a0-IntrinsicTypeSpec" + }, + { + "id": "0x5586249f01a0-IntrinsicTypeSpec", + "variantKey": "IntegerTypeSpec", + "IntegerTypeSpec": "0x5586249f01a0-IntegerTypeSpec" + }, + { + "id": "0x5586249f01a0-IntegerTypeSpec" + }, + { + "id": "0x5586249f0460-EntityDecl", + "Name": "0x5586249f0518-Name" + }, + { + "id": "0x5586249f0518-Name", + "source": "u_seq" + }, + { + "id": "0x5586249f0280-EntityDecl", + "Name": "0x5586249f0338-Name" + }, + { + "id": "0x5586249f0338-Name", + "source": "u_dir" + }, + { + "id": "0x5586249f0370-EntityDecl", + "Name": "0x5586249f0428-Name" + }, + { + "id": "0x5586249f0428-Name", + "source": "u_stream" + }, + { + "id": "0x5586249c1110-DeclarationConstruct", + "variantKey": "SpecificationConstruct", + "SpecificationConstruct": "0x5586249c1110-SpecificationConstruct" + }, + { + "id": "0x5586249c1110-SpecificationConstruct", + "variantKey": "Statement", + "Statement": "0x5586249c1110-Statement" + }, + { + "id": "0x5586249c1110-Statement", + "statement": "0x5586249f01f0-TypeDeclarationStmt", + "source": "integer :: ios, async_id, chars_read" + }, + { + "id": "0x5586249f01f0-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x5586249f0220-DeclarationTypeSpec", + "EntityDecl": [ + "0x5586249f07b0-EntityDecl", + "0x5586249f05d0-EntityDecl", + "0x5586249f06c0-EntityDecl" + ] + }, + { + "id": "0x5586249f0220-DeclarationTypeSpec", + "variantKey": "IntrinsicTypeSpec", + "IntrinsicTypeSpec": "0x5586249f0220-IntrinsicTypeSpec" + }, + { + "id": "0x5586249f0220-IntrinsicTypeSpec", + "variantKey": "IntegerTypeSpec", + "IntegerTypeSpec": "0x5586249f0220-IntegerTypeSpec" + }, + { + "id": "0x5586249f0220-IntegerTypeSpec" + }, + { + "id": "0x5586249f07b0-EntityDecl", + "Name": "0x5586249f0868-Name" + }, + { + "id": "0x5586249f0868-Name", + "source": "ios" + }, + { + "id": "0x5586249f05d0-EntityDecl", + "Name": "0x5586249f0688-Name" + }, + { + "id": "0x5586249f0688-Name", + "source": "async_id" + }, + { + "id": "0x5586249f06c0-EntityDecl", + "Name": "0x5586249f0778-Name" + }, + { + "id": "0x5586249f0778-Name", + "source": "chars_read" + }, + { + "id": "0x5586249f0be0-DeclarationConstruct", + "variantKey": "SpecificationConstruct", + "SpecificationConstruct": "0x5586249f0be0-SpecificationConstruct" + }, + { + "id": "0x5586249f0be0-SpecificationConstruct", + "variantKey": "Statement", + "Statement": "0x5586249f0be0-Statement" + }, + { + "id": "0x5586249f0be0-Statement", + "statement": "0x5586249f0540-TypeDeclarationStmt", + "source": "character(len=200) :: io_message" + }, + { + "id": "0x5586249f0540-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x5586249f0570-DeclarationTypeSpec", + "EntityDecl": [ + "0x5586249f0a10-EntityDecl" + ] + }, + { + "id": "0x5586249f0570-DeclarationTypeSpec", + "variantKey": "IntrinsicTypeSpec", + "IntrinsicTypeSpec": "0x5586249f0570-IntrinsicTypeSpec" + }, + { + "id": "0x5586249f0570-IntrinsicTypeSpec", + "variantKey": "Character", + "Character": "0x5586249f0570-Character" + }, + { + "id": "0x5586249f0570-Character", + "CharSelector": "0x5586249f0570-CharSelector" + }, + { + "id": "0x5586249f0570-CharSelector", + "variantKey": "LengthSelector", + "LengthSelector": "0x5586249f0570-LengthSelector" + }, + { + "id": "0x5586249f0570-LengthSelector", + "variantKey": "TypeParamValue", + "TypeParamValue": "0x5586249f0570-TypeParamValue" + }, + { + "id": "0x5586249f0570-TypeParamValue", + "variantKey": "Expr", + "Expr": "0x558624953790-Expr" + }, + { + "id": "0x558624953790-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x5586249537b0-LiteralConstant" + }, + { + "id": "0x5586249537b0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x5586249537b0-IntLiteralConstant" + }, + { + "id": "0x5586249537b0-IntLiteralConstant", + "CharBlock": "200" + }, + { + "id": "0x5586249f0a10-EntityDecl", + "Name": "0x5586249f0ac8-Name" + }, + { + "id": "0x5586249f0ac8-Name", + "source": "io_message" + }, + { + "id": "0x5586249f0cc0-DeclarationConstruct", + "variantKey": "SpecificationConstruct", + "SpecificationConstruct": "0x5586249f0cc0-SpecificationConstruct" + }, + { + "id": "0x5586249f0cc0-SpecificationConstruct", + "variantKey": "Statement", + "Statement": "0x5586249f0cc0-Statement" + }, + { + "id": "0x5586249f0cc0-Statement", + "statement": "0x5586249f0890-TypeDeclarationStmt", + "source": "character(len=20) :: text_buffer" + }, + { + "id": "0x5586249f0890-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x5586249f08c0-DeclarationTypeSpec", + "EntityDecl": [ + "0x558624969270-EntityDecl" + ] + }, + { + "id": "0x5586249f08c0-DeclarationTypeSpec", + "variantKey": "IntrinsicTypeSpec", + "IntrinsicTypeSpec": "0x5586249f08c0-IntrinsicTypeSpec" + }, + { + "id": "0x5586249f08c0-IntrinsicTypeSpec", + "variantKey": "Character", + "Character": "0x5586249f08c0-Character" + }, + { + "id": "0x5586249f08c0-Character", + "CharSelector": "0x5586249f08c0-CharSelector" + }, + { + "id": "0x5586249f08c0-CharSelector", + "variantKey": "LengthSelector", + "LengthSelector": "0x5586249f08c0-LengthSelector" + }, + { + "id": "0x5586249f08c0-LengthSelector", + "variantKey": "TypeParamValue", + "TypeParamValue": "0x5586249f08c0-TypeParamValue" + }, + { + "id": "0x5586249f08c0-TypeParamValue", + "variantKey": "Expr", + "Expr": "0x5586249f7e90-Expr" + }, + { + "id": "0x5586249f7e90-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x5586249f7eb0-LiteralConstant" + }, + { + "id": "0x5586249f7eb0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x5586249f7eb0-IntLiteralConstant" + }, + { + "id": "0x5586249f7eb0-IntLiteralConstant", + "CharBlock": "20" + }, + { + "id": "0x558624969270-EntityDecl", + "Name": "0x558624969328-Name" + }, + { + "id": "0x558624969328-Name", + "source": "text_buffer" + }, + { + "id": "0x5586249de950-DeclarationConstruct", + "variantKey": "SpecificationConstruct", + "SpecificationConstruct": "0x5586249de950-SpecificationConstruct" + }, + { + "id": "0x5586249de950-SpecificationConstruct", + "variantKey": "Statement", + "Statement": "0x5586249de950-Statement" + }, + { + "id": "0x5586249de950-Statement", + "statement": "0x5586249f0910-TypeDeclarationStmt", + "source": "real :: x = 123.456" + }, + { + "id": "0x5586249f0910-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x5586249f0940-DeclarationTypeSpec", + "EntityDecl": [ + "0x5586249de860-EntityDecl" + ] + }, + { + "id": "0x5586249f0940-DeclarationTypeSpec", + "variantKey": "IntrinsicTypeSpec", + "IntrinsicTypeSpec": "0x5586249f0940-IntrinsicTypeSpec" + }, + { + "id": "0x5586249f0940-IntrinsicTypeSpec", + "variantKey": "Real", + "Real": "0x5586249f0940-Real" + }, + { + "id": "0x5586249f0940-Real" + }, + { + "id": "0x5586249de860-EntityDecl", + "Name": "0x5586249de918-Name", + "Initialization": "0x5586249de860-Initialization" + }, + { + "id": "0x5586249de918-Name", + "source": "x" + }, + { + "id": "0x5586249de860-Initialization", + "variantKey": "Expr", + "Expr": "0x5586249de770-Expr" + }, + { + "id": "0x5586249de770-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x5586249de790-LiteralConstant" + }, + { + "id": "0x5586249de790-LiteralConstant", + "variantKey": "RealLiteralConstant", + "RealLiteralConstant": "0x5586249de790-RealLiteralConstant" + }, + { + "id": "0x5586249de790-RealLiteralConstant", + "real": "0x5586249de790-Real" + }, + { + "id": "0x5586249de790-Real", + "source": "123.456" + }, + { + "id": "0x5586249dec00-DeclarationConstruct", + "variantKey": "SpecificationConstruct", + "SpecificationConstruct": "0x5586249dec00-SpecificationConstruct" + }, + { + "id": "0x5586249dec00-SpecificationConstruct", + "variantKey": "Statement", + "Statement": "0x5586249dec00-Statement" + }, + { + "id": "0x5586249dec00-Statement", + "statement": "0x5586249f0c30-TypeDeclarationStmt", + "source": "integer :: val = 42" + }, + { + "id": "0x5586249f0c30-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x5586249f0c60-DeclarationTypeSpec", + "EntityDecl": [ + "0x5586249deb10-EntityDecl" + ] + }, + { + "id": "0x5586249f0c60-DeclarationTypeSpec", + "variantKey": "IntrinsicTypeSpec", + "IntrinsicTypeSpec": "0x5586249f0c60-IntrinsicTypeSpec" + }, + { + "id": "0x5586249f0c60-IntrinsicTypeSpec", + "variantKey": "IntegerTypeSpec", + "IntegerTypeSpec": "0x5586249f0c60-IntegerTypeSpec" + }, + { + "id": "0x5586249f0c60-IntegerTypeSpec" + }, + { + "id": "0x5586249deb10-EntityDecl", + "Name": "0x5586249debc8-Name", + "Initialization": "0x5586249deb10-Initialization" + }, + { + "id": "0x5586249debc8-Name", + "source": "val" + }, + { + "id": "0x5586249deb10-Initialization", + "variantKey": "Expr", + "Expr": "0x5586249dea20-Expr" + }, + { + "id": "0x5586249dea20-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x5586249dea40-LiteralConstant" + }, + { + "id": "0x5586249dea40-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x5586249dea40-IntLiteralConstant" + }, + { + "id": "0x5586249dea40-IntLiteralConstant", + "CharBlock": "42" + }, + { + "id": "0x5586249c0da0-DeclarationConstruct", + "variantKey": "SpecificationConstruct", + "SpecificationConstruct": "0x5586249c0da0-SpecificationConstruct" + }, + { + "id": "0x5586249c0da0-SpecificationConstruct", + "variantKey": "Statement", + "Statement": "0x5586249c0da0-Statement" + }, + { + "id": "0x5586249c0da0-Statement", + "statement": "0x5586249c0db0-OtherSpecificationStmt", + "source": "namelist /my_namelist/ val, x" + }, + { + "id": "0x5586249c0db0-OtherSpecificationStmt", + "variantKey": "NamelistStmt", + "NamelistStmt": "0x5586249f2bc0-NamelistStmt" + }, + { + "id": "0x5586249f2bc0-NamelistStmt", + "Group": [ + "0x5586249f1860-Group" + ] + }, + { + "id": "0x5586249f1860-Group", + "groupName": "0x5586249f1878-Name", + "objectNames": [ + "0x5586249f2970-Name", + "0x5586249f2940-Name" + ] + }, + { + "id": "0x5586249f1878-Name", + "source": "my_namelist" + }, + { + "id": "0x5586249f2970-Name", + "source": "val" + }, + { + "id": "0x5586249f2940-Name", + "source": "x" + }, + { + "id": "0x5586249f1658-ExecutionPart", + "ExecutionPartConstruct": [ + "0x5586249df9b0-ExecutionPartConstruct", + "0x5586249e2a90-ExecutionPartConstruct", + "0x5586249e19c0-ExecutionPartConstruct", + "0x5586249e4490-ExecutionPartConstruct", + "0x5586249effe0-ExecutionPartConstruct", + "0x5586249e2510-ExecutionPartConstruct", + "0x5586249e6160-ExecutionPartConstruct", + "0x5586249e5210-ExecutionPartConstruct", + "0x5586249e6850-ExecutionPartConstruct", + "0x5586249e5270-ExecutionPartConstruct", + "0x5586249e79f0-ExecutionPartConstruct", + "0x5586249e5f50-ExecutionPartConstruct", + "0x5586249f88d0-ExecutionPartConstruct", + "0x5586249e24b0-ExecutionPartConstruct", + "0x5586249e5490-ExecutionPartConstruct", + "0x5586249e4e80-ExecutionPartConstruct", + "0x5586249e12f0-ExecutionPartConstruct", + "0x5586249e5430-ExecutionPartConstruct", + "0x5586249e76f0-ExecutionPartConstruct", + "0x5586249f91e0-ExecutionPartConstruct" + ] + }, + { + "id": "0x5586249f1658-ExecutionPartConstruct" + }, + { + "id": "0x5586249df9b0-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x5586249df9b0-ExecutableConstruct" + }, + { + "id": "0x5586249df9b0-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x5586249df9b0-Statement" + }, + { + "id": "0x5586249df9b0-Statement", + "statement": "0x5586249df9c0-ActionStmt", + "source": "open(newunit=u_seq, file='seq.txt', status='replace', action='readwrite')" + }, + { + "id": "0x5586249df9c0-ActionStmt", + "variantKey": "OpenStmt", + "OpenStmt": "0x5586249f29c0-OpenStmt" + }, + { + "id": "0x5586249f29c0-OpenStmt", + "ConnectSpec": [ + "0x5586249ea160-ConnectSpec", + "0x5586249ea060-ConnectSpec", + "0x5586249e9c60-ConnectSpec", + "0x5586249e9ba0-ConnectSpec" + ] + }, + { + "id": "0x5586249ea160-ConnectSpec", + "variantKey": "Newunit", + "Newunit": "0x5586249ea160-Newunit" + }, + { + "id": "0x5586249ea160-Newunit", + "Variable": "0x5586249ea160-Variable" + }, + { + "id": "0x5586249ea160-Variable", + "variantKey": "Designator", + "Designator": "0x5586249e1e60-Designator" + }, + { + "id": "0x5586249e1e60-Designator", + "variantKey": "DataRef", + "DataRef": "0x5586249e1e70-DataRef" + }, + { + "id": "0x5586249e1e70-DataRef", + "variantKey": "Name", + "Name": "0x5586249e1e70-Name" + }, + { + "id": "0x5586249e1e70-Name", + "source": "u_seq" + }, + { + "id": "0x5586249ea060-ConnectSpec", + "variantKey": "Expr", + "Expr": "0x5586249df5c0-Expr" + }, + { + "id": "0x5586249df5c0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x5586249df5e0-LiteralConstant" + }, + { + "id": "0x5586249df5e0-LiteralConstant", + "variantKey": "CharLiteralConstant", + "CharLiteralConstant": "0x5586249df5e0-CharLiteralConstant" + }, + { + "id": "0x5586249df5e0-CharLiteralConstant", + "string": "seq.txt" + }, + { + "id": "0x5586249e9c60-ConnectSpec", + "variantKey": "StatusExpr", + "StatusExpr": "0x5586249e9c60-StatusExpr" + }, + { + "id": "0x5586249e9c60-StatusExpr", + "Expr": "0x5586249e0420-Expr" + }, + { + "id": "0x5586249e0420-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x5586249e0440-LiteralConstant" + }, + { + "id": "0x5586249e0440-LiteralConstant", + "variantKey": "CharLiteralConstant", + "CharLiteralConstant": "0x5586249e0440-CharLiteralConstant" + }, + { + "id": "0x5586249e0440-CharLiteralConstant", + "string": "replace" + }, + { + "id": "0x5586249e9ba0-ConnectSpec", + "variantKey": "CharExpr", + "CharExpr": "0x5586249e9ba0-CharExpr" + }, + { + "id": "0x5586249e9ba0-CharExpr", + "Kind": "0x5586249e9ba8-Kind", + "Expr": "0x5586249dffa0-Expr" + }, + { + "id": "0x5586249e9ba8-Kind", + "disambiguation": "Fortran::parser::ConnectSpec::CharExpr::Kind", + "value": "Action" + }, + { + "id": "0x5586249dffa0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x5586249dffc0-LiteralConstant" + }, + { + "id": "0x5586249dffc0-LiteralConstant", + "variantKey": "CharLiteralConstant", + "CharLiteralConstant": "0x5586249dffc0-CharLiteralConstant" + }, + { + "id": "0x5586249dffc0-CharLiteralConstant", + "string": "readwrite" + }, + { + "id": "0x5586249e2a90-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x5586249e2a90-ExecutableConstruct" + }, + { + "id": "0x5586249e2a90-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x5586249e2a90-Statement" + }, + { + "id": "0x5586249e2a90-Statement", + "statement": "0x5586249e2aa0-ActionStmt", + "source": "open(newunit=u_dir, file='dir.bin', status='replace', access='direct', recl=16)" + }, + { + "id": "0x5586249e2aa0-ActionStmt", + "variantKey": "OpenStmt", + "OpenStmt": "0x5586249f2890-OpenStmt" + }, + { + "id": "0x5586249f2890-OpenStmt", + "ConnectSpec": [ + "0x5586249e9210-ConnectSpec", + "0x5586249f2a20-ConnectSpec", + "0x5586249f2a80-ConnectSpec", + "0x5586249f2ac0-ConnectSpec", + "0x5586249e9440-ConnectSpec" + ] + }, + { + "id": "0x5586249e9210-ConnectSpec", + "variantKey": "Newunit", + "Newunit": "0x5586249e9210-Newunit" + }, + { + "id": "0x5586249e9210-Newunit", + "Variable": "0x5586249e9210-Variable" + }, + { + "id": "0x5586249e9210-Variable", + "variantKey": "Designator", + "Designator": "0x5586249df0e0-Designator" + }, + { + "id": "0x5586249df0e0-Designator", + "variantKey": "DataRef", + "DataRef": "0x5586249df0f0-DataRef" + }, + { + "id": "0x5586249df0f0-DataRef", + "variantKey": "Name", + "Name": "0x5586249df0f0-Name" + }, + { + "id": "0x5586249df0f0-Name", + "source": "u_dir" + }, + { + "id": "0x5586249f2a20-ConnectSpec", + "variantKey": "Expr", + "Expr": "0x5586249e22b0-Expr" + }, + { + "id": "0x5586249e22b0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x5586249e22d0-LiteralConstant" + }, + { + "id": "0x5586249e22d0-LiteralConstant", + "variantKey": "CharLiteralConstant", + "CharLiteralConstant": "0x5586249e22d0-CharLiteralConstant" + }, + { + "id": "0x5586249e22d0-CharLiteralConstant", + "string": "dir.bin" + }, + { + "id": "0x5586249f2a80-ConnectSpec", + "variantKey": "StatusExpr", + "StatusExpr": "0x5586249f2a80-StatusExpr" + }, + { + "id": "0x5586249f2a80-StatusExpr", + "Expr": "0x5586249e21d0-Expr" + }, + { + "id": "0x5586249e21d0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x5586249e21f0-LiteralConstant" + }, + { + "id": "0x5586249e21f0-LiteralConstant", + "variantKey": "CharLiteralConstant", + "CharLiteralConstant": "0x5586249e21f0-CharLiteralConstant" + }, + { + "id": "0x5586249e21f0-CharLiteralConstant", + "string": "replace" + }, + { + "id": "0x5586249f2ac0-ConnectSpec", + "variantKey": "CharExpr", + "CharExpr": "0x5586249f2ac0-CharExpr" + }, + { + "id": "0x5586249f2ac0-CharExpr", + "Kind": "0x5586249f2ac8-Kind", + "Expr": "0x5586249e20f0-Expr" + }, + { + "id": "0x5586249f2ac8-Kind", + "disambiguation": "Fortran::parser::ConnectSpec::CharExpr::Kind", + "value": "Access" + }, + { + "id": "0x5586249e20f0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x5586249e2110-LiteralConstant" + }, + { + "id": "0x5586249e2110-LiteralConstant", + "variantKey": "CharLiteralConstant", + "CharLiteralConstant": "0x5586249e2110-CharLiteralConstant" + }, + { + "id": "0x5586249e2110-CharLiteralConstant", + "string": "direct" + }, + { + "id": "0x5586249e9440-ConnectSpec", + "variantKey": "Recl", + "Recl": "0x5586249e9440-Recl" + }, + { + "id": "0x5586249e9440-Recl", + "Expr": "0x5586249e2010-Expr" + }, + { + "id": "0x5586249e2010-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x5586249e2030-LiteralConstant" + }, + { + "id": "0x5586249e2030-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x5586249e2030-IntLiteralConstant" + }, + { + "id": "0x5586249e2030-IntLiteralConstant", + "CharBlock": "16" + }, + { + "id": "0x5586249e19c0-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x5586249e19c0-ExecutableConstruct" + }, + { + "id": "0x5586249e19c0-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x5586249e19c0-Statement" + }, + { + "id": "0x5586249e19c0-Statement", + "statement": "0x5586249e19d0-ActionStmt", + "source": "open(newunit=u_stream, file='stream.bin', status='replace', access='stream')" + }, + { + "id": "0x5586249e19d0-ActionStmt", + "variantKey": "OpenStmt", + "OpenStmt": "0x5586249e89c0-OpenStmt" + }, + { + "id": "0x5586249e89c0-OpenStmt", + "ConnectSpec": [ + "0x5586249e9360-ConnectSpec", + "0x5586249e92c0-ConnectSpec", + "0x5586249e9280-ConnectSpec", + "0x5586249e9300-ConnectSpec" + ] + }, + { + "id": "0x5586249e9360-ConnectSpec", + "variantKey": "Newunit", + "Newunit": "0x5586249e9360-Newunit" + }, + { + "id": "0x5586249e9360-Newunit", + "Variable": "0x5586249e9360-Variable" + }, + { + "id": "0x5586249e9360-Variable", + "variantKey": "Designator", + "Designator": "0x5586249e0190-Designator" + }, + { + "id": "0x5586249e0190-Designator", + "variantKey": "DataRef", + "DataRef": "0x5586249e01a0-DataRef" + }, + { + "id": "0x5586249e01a0-DataRef", + "variantKey": "Name", + "Name": "0x5586249e01a0-Name" + }, + { + "id": "0x5586249e01a0-Name", + "source": "u_stream" + }, + { + "id": "0x5586249e92c0-ConnectSpec", + "variantKey": "Expr", + "Expr": "0x5586249e2df0-Expr" + }, + { + "id": "0x5586249e2df0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x5586249e2e10-LiteralConstant" + }, + { + "id": "0x5586249e2e10-LiteralConstant", + "variantKey": "CharLiteralConstant", + "CharLiteralConstant": "0x5586249e2e10-CharLiteralConstant" + }, + { + "id": "0x5586249e2e10-CharLiteralConstant", + "string": "stream.bin" + }, + { + "id": "0x5586249e9280-ConnectSpec", + "variantKey": "StatusExpr", + "StatusExpr": "0x5586249e9280-StatusExpr" + }, + { + "id": "0x5586249e9280-StatusExpr", + "Expr": "0x5586249e2d10-Expr" + }, + { + "id": "0x5586249e2d10-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x5586249e2d30-LiteralConstant" + }, + { + "id": "0x5586249e2d30-LiteralConstant", + "variantKey": "CharLiteralConstant", + "CharLiteralConstant": "0x5586249e2d30-CharLiteralConstant" + }, + { + "id": "0x5586249e2d30-CharLiteralConstant", + "string": "replace" + }, + { + "id": "0x5586249e9300-ConnectSpec", + "variantKey": "CharExpr", + "CharExpr": "0x5586249e9300-CharExpr" + }, + { + "id": "0x5586249e9300-CharExpr", + "Kind": "0x5586249e9308-Kind", + "Expr": "0x5586249e2c30-Expr" + }, + { + "id": "0x5586249e9308-Kind", + "disambiguation": "Fortran::parser::ConnectSpec::CharExpr::Kind", + "value": "Access" + }, + { + "id": "0x5586249e2c30-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x5586249e2c50-LiteralConstant" + }, + { + "id": "0x5586249e2c50-LiteralConstant", + "variantKey": "CharLiteralConstant", + "CharLiteralConstant": "0x5586249e2c50-CharLiteralConstant" + }, + { + "id": "0x5586249e2c50-CharLiteralConstant", + "string": "stream" + }, + { + "id": "0x5586249e4490-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x5586249e4490-ExecutableConstruct" + }, + { + "id": "0x5586249e4490-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x5586249e4490-Statement" + }, + { + "id": "0x5586249e4490-Statement", + "statement": "0x5586249e44a0-ActionStmt", + "source": "write(unit = u_seq, fmt = *, decimal = 'comma', sign = 'plus', round = 'up', delim = 'quote', iostat = ios, iomsg = io_message)" + }, + { + "id": "0x5586249e44a0-ActionStmt", + "variantKey": "WriteStmt", + "WriteStmt": "0x5586249e42c0-WriteStmt" + }, + { + "id": "0x5586249e42c0-WriteStmt", + "controls": [ + "0x5586249e3ca0-IoControlSpec", + "0x5586249e2ee0-IoControlSpec", + "0x5586249e2fe0-IoControlSpec", + "0x5586249e31c0-IoControlSpec", + "0x5586249e33a0-IoControlSpec", + "0x5586249e3580-IoControlSpec", + "0x5586249e3750-IoControlSpec", + "0x5586249e3ba0-IoControlSpec" + ], + "items": [] + }, + { + "id": "0x5586249e3ca0-IoControlSpec", + "variantKey": "IoUnit", + "IoUnit": "0x5586249e3ca0-IoUnit" + }, + { + "id": "0x5586249e3ca0-IoUnit", + "variantKey": "Expr", + "Expr": "0x558624a1cc40-Expr" + }, + { + "id": "0x558624a1cc40-Expr", + "variantKey": "Designator", + "Designator": "0x5586249b24d0-Designator" + }, + { + "id": "0x5586249b24d0-Designator", + "variantKey": "DataRef", + "DataRef": "0x5586249b24e0-DataRef" + }, + { + "id": "0x5586249b24e0-DataRef", + "variantKey": "Name", + "Name": "0x5586249b24e0-Name" + }, + { + "id": "0x5586249b24e0-Name", + "source": "u_seq" + }, + { + "id": "0x5586249e2ee0-IoControlSpec", + "variantKey": "Format", + "Format": "0x5586249e2ee0-Format" + }, + { + "id": "0x5586249e2ee0-Format", + "variantKey": "Star", + "Star": "0x5586249e2ee0-Star" + }, + { + "id": "0x5586249e2ee0-Star" + }, + { + "id": "0x5586249e2fe0-IoControlSpec", + "variantKey": "CharExpr", + "CharExpr": "0x5586249e2fe0-CharExpr" + }, + { + "id": "0x5586249e2fe0-CharExpr", + "Kind": "0x5586249e2fe8-Kind", + "Expr": "0x5586249dfc30-Expr" + }, + { + "id": "0x5586249e2fe8-Kind", + "disambiguation": "Fortran::parser::IoControlSpec::CharExpr::Kind", + "value": "Decimal" + }, + { + "id": "0x5586249dfc30-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x5586249dfc50-LiteralConstant" + }, + { + "id": "0x5586249dfc50-LiteralConstant", + "variantKey": "CharLiteralConstant", + "CharLiteralConstant": "0x5586249dfc50-CharLiteralConstant" + }, + { + "id": "0x5586249dfc50-CharLiteralConstant", + "string": "comma" + }, + { + "id": "0x5586249e31c0-IoControlSpec", + "variantKey": "CharExpr", + "CharExpr": "0x5586249e31c0-CharExpr" + }, + { + "id": "0x5586249e31c0-CharExpr", + "Kind": "0x5586249e31c8-Kind", + "Expr": "0x5586249e30d0-Expr" + }, + { + "id": "0x5586249e31c8-Kind", + "disambiguation": "Fortran::parser::IoControlSpec::CharExpr::Kind", + "value": "Sign" + }, + { + "id": "0x5586249e30d0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x5586249e30f0-LiteralConstant" + }, + { + "id": "0x5586249e30f0-LiteralConstant", + "variantKey": "CharLiteralConstant", + "CharLiteralConstant": "0x5586249e30f0-CharLiteralConstant" + }, + { + "id": "0x5586249e30f0-CharLiteralConstant", + "string": "plus" + }, + { + "id": "0x5586249e33a0-IoControlSpec", + "variantKey": "CharExpr", + "CharExpr": "0x5586249e33a0-CharExpr" + }, + { + "id": "0x5586249e33a0-CharExpr", + "Kind": "0x5586249e33a8-Kind", + "Expr": "0x5586249e32b0-Expr" + }, + { + "id": "0x5586249e33a8-Kind", + "disambiguation": "Fortran::parser::IoControlSpec::CharExpr::Kind", + "value": "Round" + }, + { + "id": "0x5586249e32b0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x5586249e32d0-LiteralConstant" + }, + { + "id": "0x5586249e32d0-LiteralConstant", + "variantKey": "CharLiteralConstant", + "CharLiteralConstant": "0x5586249e32d0-CharLiteralConstant" + }, + { + "id": "0x5586249e32d0-CharLiteralConstant", + "string": "up" + }, + { + "id": "0x5586249e3580-IoControlSpec", + "variantKey": "CharExpr", + "CharExpr": "0x5586249e3580-CharExpr" + }, + { + "id": "0x5586249e3580-CharExpr", + "Kind": "0x5586249e3588-Kind", + "Expr": "0x5586249e3490-Expr" + }, + { + "id": "0x5586249e3588-Kind", + "disambiguation": "Fortran::parser::IoControlSpec::CharExpr::Kind", + "value": "Delim" + }, + { + "id": "0x5586249e3490-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x5586249e34b0-LiteralConstant" + }, + { + "id": "0x5586249e34b0-LiteralConstant", + "variantKey": "CharLiteralConstant", + "CharLiteralConstant": "0x5586249e34b0-CharLiteralConstant" + }, + { + "id": "0x5586249e34b0-CharLiteralConstant", + "string": "quote" + }, + { + "id": "0x5586249e3750-IoControlSpec", + "variantKey": "StatVariable", + "StatVariable": "0x5586249e3750-StatVariable" + }, + { + "id": "0x5586249e3750-StatVariable", + "Variable": "0x5586249e3750-Variable" + }, + { + "id": "0x5586249e3750-Variable", + "variantKey": "Designator", + "Designator": "0x5586249e3670-Designator" + }, + { + "id": "0x5586249e3670-Designator", + "variantKey": "DataRef", + "DataRef": "0x5586249e3680-DataRef" + }, + { + "id": "0x5586249e3680-DataRef", + "variantKey": "Name", + "Name": "0x5586249e3680-Name" + }, + { + "id": "0x5586249e3680-Name", + "source": "ios" + }, + { + "id": "0x5586249e3ba0-IoControlSpec", + "variantKey": "MsgVariable", + "MsgVariable": "0x5586249e3ba0-MsgVariable" + }, + { + "id": "0x5586249e3ba0-MsgVariable", + "Variable": "0x5586249e3ba0-Variable" + }, + { + "id": "0x5586249e3ba0-Variable", + "variantKey": "Designator", + "Designator": "0x5586249e3ac0-Designator" + }, + { + "id": "0x5586249e3ac0-Designator", + "variantKey": "DataRef", + "DataRef": "0x5586249e3ad0-DataRef" + }, + { + "id": "0x5586249e3ad0-DataRef", + "variantKey": "Name", + "Name": "0x5586249e3ad0-Name" + }, + { + "id": "0x5586249e3ad0-Name", + "source": "io_message" + }, + { + "id": "0x5586249effe0-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x5586249effe0-ExecutableConstruct" + }, + { + "id": "0x5586249effe0-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x5586249effe0-Statement" + }, + { + "id": "0x5586249effe0-Statement", + "statement": "0x5586249efff0-ActionStmt", + "source": "write(unit = u_seq, nml = my_namelist, iostat = ios)" + }, + { + "id": "0x5586249efff0-ActionStmt", + "variantKey": "WriteStmt", + "WriteStmt": "0x5586249e4a80-WriteStmt" + }, + { + "id": "0x5586249e4a80-WriteStmt", + "controls": [ + "0x5586249e4990-IoControlSpec", + "0x5586249e4790-IoControlSpec", + "0x5586249e4890-IoControlSpec" + ], + "items": [] + }, + { + "id": "0x5586249e4990-IoControlSpec", + "variantKey": "IoUnit", + "IoUnit": "0x5586249e4990-IoUnit" + }, + { + "id": "0x5586249e4990-IoUnit", + "variantKey": "Expr", + "Expr": "0x558624a99ad0-Expr" + }, + { + "id": "0x558624a99ad0-Expr", + "variantKey": "Designator", + "Designator": "0x5586249dfd10-Designator" + }, + { + "id": "0x5586249dfd10-Designator", + "variantKey": "DataRef", + "DataRef": "0x5586249dfd20-DataRef" + }, + { + "id": "0x5586249dfd20-DataRef", + "variantKey": "Name", + "Name": "0x5586249dfd20-Name" + }, + { + "id": "0x5586249dfd20-Name", + "source": "u_seq" + }, + { + "id": "0x5586249e4790-IoControlSpec", + "variantKey": "Name", + "Name": "0x5586249e4790-Name" + }, + { + "id": "0x5586249e4790-Name", + "source": "my_namelist" + }, + { + "id": "0x5586249e4890-IoControlSpec", + "variantKey": "StatVariable", + "StatVariable": "0x5586249e4890-StatVariable" + }, + { + "id": "0x5586249e4890-StatVariable", + "Variable": "0x5586249e4890-Variable" + }, + { + "id": "0x5586249e4890-Variable", + "variantKey": "Designator", + "Designator": "0x5586249eff70-Designator" + }, + { + "id": "0x5586249eff70-Designator", + "variantKey": "DataRef", + "DataRef": "0x5586249eff80-DataRef" + }, + { + "id": "0x5586249eff80-DataRef", + "variantKey": "Name", + "Name": "0x5586249eff80-Name" + }, + { + "id": "0x5586249eff80-Name", + "source": "ios" + }, + { + "id": "0x5586249e2510-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x5586249e2510-ExecutableConstruct" + }, + { + "id": "0x5586249e2510-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x5586249e2510-Statement" + }, + { + "id": "0x5586249e2510-Statement", + "statement": "0x5586249e2520-ActionStmt", + "source": "rewind(u_seq)" + }, + { + "id": "0x5586249e2520-ActionStmt", + "variantKey": "RewindStmt", + "RewindStmt": "0x5586249e8d30-RewindStmt" + }, + { + "id": "0x5586249e8d30-RewindStmt", + "PositionOrFlushSpec": [ + "0x5586249e93a0-PositionOrFlushSpec" + ] + }, + { + "id": "0x5586249e93a0-PositionOrFlushSpec", + "variantKey": "FileUnitNumber", + "FileUnitNumber": "0x5586249e93a0-FileUnitNumber" + }, + { + "id": "0x5586249e93a0-FileUnitNumber", + "Expr": "0x5586249e46a0-Expr" + }, + { + "id": "0x5586249e46a0-Expr", + "variantKey": "Designator", + "Designator": "0x5586249e1500-Designator" + }, + { + "id": "0x5586249e1500-Designator", + "variantKey": "DataRef", + "DataRef": "0x5586249e1510-DataRef" + }, + { + "id": "0x5586249e1510-DataRef", + "variantKey": "Name", + "Name": "0x5586249e1510-Name" + }, + { + "id": "0x5586249e1510-Name", + "source": "u_seq" + }, + { + "id": "0x5586249e6160-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x5586249e6160-ExecutableConstruct" + }, + { + "id": "0x5586249e6160-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x5586249e6160-Statement" + }, + { + "id": "0x5586249e6160-Statement", + "statement": "0x5586249e6170-ActionStmt", + "source": "read(unit = u_seq, fmt = '(A)', advance = 'no', pad = 'yes', size = chars_read, eor = 100, err = 900, iostat = ios) text_buffer" + }, + { + "id": "0x5586249e6170-ActionStmt", + "variantKey": "ReadStmt", + "ReadStmt": "0x5586249e6000-ReadStmt" + }, + { + "id": "0x5586249e6000-ReadStmt", + "controls": [ + "0x5586249e5df0-IoControlSpec", + "0x5586249e5690-IoControlSpec", + "0x5586249e5790-IoControlSpec", + "0x5586249e5890-IoControlSpec", + "0x5586249e5990-IoControlSpec", + "0x5586249e5a90-IoControlSpec", + "0x5586249e5b90-IoControlSpec", + "0x5586249e5cf0-IoControlSpec" + ], + "items": [ + "0x5586249e9400-InputItem" + ] + }, + { + "id": "0x5586249e5df0-IoControlSpec", + "variantKey": "IoUnit", + "IoUnit": "0x5586249e5df0-IoUnit" + }, + { + "id": "0x5586249e5df0-IoUnit", + "variantKey": "Expr", + "Expr": "0x558624a999f0-Expr" + }, + { + "id": "0x558624a999f0-Expr", + "variantKey": "Designator", + "Designator": "0x5586249e52c0-Designator" + }, + { + "id": "0x5586249e52c0-Designator", + "variantKey": "DataRef", + "DataRef": "0x5586249e52d0-DataRef" + }, + { + "id": "0x5586249e52d0-DataRef", + "variantKey": "Name", + "Name": "0x5586249e52d0-Name" + }, + { + "id": "0x5586249e52d0-Name", + "source": "u_seq" + }, + { + "id": "0x5586249e5690-IoControlSpec", + "variantKey": "Format", + "Format": "0x5586249e5690-Format" + }, + { + "id": "0x5586249e5690-Format", + "variantKey": "Expr", + "Expr": "0x5586249e5690-Expr" + }, + { + "id": "0x5586249e5690-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x5586249e56b0-LiteralConstant" + }, + { + "id": "0x5586249e56b0-LiteralConstant", + "variantKey": "CharLiteralConstant", + "CharLiteralConstant": "0x5586249e56b0-CharLiteralConstant" + }, + { + "id": "0x5586249e56b0-CharLiteralConstant", + "string": "(A)" + }, + { + "id": "0x5586249e5790-IoControlSpec", + "variantKey": "CharExpr", + "CharExpr": "0x5586249e5790-CharExpr" + }, + { + "id": "0x5586249e5790-CharExpr", + "Kind": "0x5586249e5798-Kind", + "Expr": "0x5586249e5010-Expr" + }, + { + "id": "0x5586249e5798-Kind", + "disambiguation": "Fortran::parser::IoControlSpec::CharExpr::Kind", + "value": "Advance" + }, + { + "id": "0x5586249e5010-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x5586249e5030-LiteralConstant" + }, + { + "id": "0x5586249e5030-LiteralConstant", + "variantKey": "CharLiteralConstant", + "CharLiteralConstant": "0x5586249e5030-CharLiteralConstant" + }, + { + "id": "0x5586249e5030-CharLiteralConstant", + "string": "no" + }, + { + "id": "0x5586249e5890-IoControlSpec", + "variantKey": "CharExpr", + "CharExpr": "0x5586249e5890-CharExpr" + }, + { + "id": "0x5586249e5890-CharExpr", + "Kind": "0x5586249e5898-Kind", + "Expr": "0x5586249e4ed0-Expr" + }, + { + "id": "0x5586249e5898-Kind", + "disambiguation": "Fortran::parser::IoControlSpec::CharExpr::Kind", + "value": "Pad" + }, + { + "id": "0x5586249e4ed0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x5586249e4ef0-LiteralConstant" + }, + { + "id": "0x5586249e4ef0-LiteralConstant", + "variantKey": "CharLiteralConstant", + "CharLiteralConstant": "0x5586249e4ef0-CharLiteralConstant" + }, + { + "id": "0x5586249e4ef0-CharLiteralConstant", + "string": "yes" + }, + { + "id": "0x5586249e5990-IoControlSpec", + "variantKey": "Size", + "Size": "0x5586249e5990-Size" + }, + { + "id": "0x5586249e5990-Size", + "Variable": "0x5586249e5990-Variable" + }, + { + "id": "0x5586249e5990-Variable", + "variantKey": "Designator", + "Designator": "0x5586249e5620-Designator" + }, + { + "id": "0x5586249e5620-Designator", + "variantKey": "DataRef", + "DataRef": "0x5586249e5630-DataRef" + }, + { + "id": "0x5586249e5630-DataRef", + "variantKey": "Name", + "Name": "0x5586249e5630-Name" + }, + { + "id": "0x5586249e5630-Name", + "source": "chars_read" + }, + { + "id": "0x5586249e5a90-IoControlSpec", + "variantKey": "EorLabel", + "EorLabel": "0x5586249e5a90-EorLabel" + }, + { + "id": "0x5586249e5a90-EorLabel", + "uint64_t": "100" + }, + { + "id": "0x5586249e5b90-IoControlSpec", + "variantKey": "ErrLabel", + "ErrLabel": "0x5586249e5b90-ErrLabel" + }, + { + "id": "0x5586249e5b90-ErrLabel", + "uint64_t": "900" + }, + { + "id": "0x5586249e5cf0-IoControlSpec", + "variantKey": "StatVariable", + "StatVariable": "0x5586249e5cf0-StatVariable" + }, + { + "id": "0x5586249e5cf0-StatVariable", + "Variable": "0x5586249e5cf0-Variable" + }, + { + "id": "0x5586249e5cf0-Variable", + "variantKey": "Designator", + "Designator": "0x5586249e5c80-Designator" + }, + { + "id": "0x5586249e5c80-Designator", + "variantKey": "DataRef", + "DataRef": "0x5586249e5c90-DataRef" + }, + { + "id": "0x5586249e5c90-DataRef", + "variantKey": "Name", + "Name": "0x5586249e5c90-Name" + }, + { + "id": "0x5586249e5c90-Name", + "source": "ios" + }, + { + "id": "0x5586249e9400-InputItem", + "variantKey": "Variable", + "Variable": "0x5586249e9400-Variable" + }, + { + "id": "0x5586249e9400-Variable", + "variantKey": "Designator", + "Designator": "0x5586249e5fa0-Designator" + }, + { + "id": "0x5586249e5fa0-Designator", + "variantKey": "DataRef", + "DataRef": "0x5586249e5fb0-DataRef" + }, + { + "id": "0x5586249e5fb0-DataRef", + "variantKey": "Name", + "Name": "0x5586249e5fb0-Name" + }, + { + "id": "0x5586249e5fb0-Name", + "source": "text_buffer" + }, + { + "id": "0x5586249e5210-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x5586249e5210-ExecutableConstruct" + }, + { + "id": "0x5586249e5210-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x5586249e5210-Statement" + }, + { + "id": "0x5586249e5210-Statement", + "statement": "0x5586249e5220-ActionStmt", + "label": "100", + "source": "100 continue" + }, + { + "id": "0x5586249e5220-ActionStmt", + "variantKey": "ContinueStmt", + "ContinueStmt": "0x5586249e5220-ContinueStmt" + }, + { + "id": "0x5586249e5220-ContinueStmt" + }, + { + "id": "0x5586249e6850-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x5586249e6850-ExecutableConstruct" + }, + { + "id": "0x5586249e6850-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x5586249e6850-Statement" + }, + { + "id": "0x5586249e6850-Statement", + "statement": "0x5586249e6860-ActionStmt", + "source": "write(unit = u_dir, rec = 1, iostat = ios) val, x" + }, + { + "id": "0x5586249e6860-ActionStmt", + "variantKey": "WriteStmt", + "WriteStmt": "0x5586249e66f0-WriteStmt" + }, + { + "id": "0x5586249e66f0-WriteStmt", + "controls": [ + "0x5586249e63c0-IoControlSpec", + "0x5586249e61c0-IoControlSpec", + "0x5586249e62c0-IoControlSpec" + ], + "items": [ + "0x5586249e6610-OutputItem", + "0x5586249e6520-OutputItem" + ] + }, + { + "id": "0x5586249e63c0-IoControlSpec", + "variantKey": "IoUnit", + "IoUnit": "0x5586249e63c0-IoUnit" + }, + { + "id": "0x5586249e63c0-IoUnit", + "variantKey": "Expr", + "Expr": "0x5586249f55c0-Expr" + }, + { + "id": "0x5586249f55c0-Expr", + "variantKey": "Designator", + "Designator": "0x5586249e25d0-Designator" + }, + { + "id": "0x5586249e25d0-Designator", + "variantKey": "DataRef", + "DataRef": "0x5586249e25e0-DataRef" + }, + { + "id": "0x5586249e25e0-DataRef", + "variantKey": "Name", + "Name": "0x5586249e25e0-Name" + }, + { + "id": "0x5586249e25e0-Name", + "source": "u_dir" + }, + { + "id": "0x5586249e61c0-IoControlSpec", + "variantKey": "Rec", + "Rec": "0x5586249e61c0-Rec" + }, + { + "id": "0x5586249e61c0-Rec", + "Expr": "0x5586249e4bd0-Expr" + }, + { + "id": "0x5586249e4bd0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x5586249e4bf0-LiteralConstant" + }, + { + "id": "0x5586249e4bf0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x5586249e4bf0-IntLiteralConstant" + }, + { + "id": "0x5586249e4bf0-IntLiteralConstant", + "CharBlock": "1" + }, + { + "id": "0x5586249e62c0-IoControlSpec", + "variantKey": "StatVariable", + "StatVariable": "0x5586249e62c0-StatVariable" + }, + { + "id": "0x5586249e62c0-StatVariable", + "Variable": "0x5586249e62c0-Variable" + }, + { + "id": "0x5586249e62c0-Variable", + "variantKey": "Designator", + "Designator": "0x5586249e2860-Designator" + }, + { + "id": "0x5586249e2860-Designator", + "variantKey": "DataRef", + "DataRef": "0x5586249e2870-DataRef" + }, + { + "id": "0x5586249e2870-DataRef", + "variantKey": "Name", + "Name": "0x5586249e2870-Name" + }, + { + "id": "0x5586249e2870-Name", + "source": "ios" + }, + { + "id": "0x5586249e6610-OutputItem", + "variantKey": "Expr", + "Expr": "0x5586249e6610-Expr" + }, + { + "id": "0x5586249e6610-Expr", + "variantKey": "Designator", + "Designator": "0x5586249df8d0-Designator" + }, + { + "id": "0x5586249df8d0-Designator", + "variantKey": "DataRef", + "DataRef": "0x5586249df8e0-DataRef" + }, + { + "id": "0x5586249df8e0-DataRef", + "variantKey": "Name", + "Name": "0x5586249df8e0-Name" + }, + { + "id": "0x5586249df8e0-Name", + "source": "val" + }, + { + "id": "0x5586249e6520-OutputItem", + "variantKey": "Expr", + "Expr": "0x5586249e6520-Expr" + }, + { + "id": "0x5586249e6520-Expr", + "variantKey": "Designator", + "Designator": "0x5586249e64b0-Designator" + }, + { + "id": "0x5586249e64b0-Designator", + "variantKey": "DataRef", + "DataRef": "0x5586249e64c0-DataRef" + }, + { + "id": "0x5586249e64c0-DataRef", + "variantKey": "Name", + "Name": "0x5586249e64c0-Name" + }, + { + "id": "0x5586249e64c0-Name", + "source": "x" + }, + { + "id": "0x5586249e5270-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x5586249e5270-ExecutableConstruct" + }, + { + "id": "0x5586249e5270-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x5586249e5270-Statement" + }, + { + "id": "0x5586249e5270-Statement", + "statement": "0x5586249e5280-ActionStmt", + "source": "write(unit = u_stream, pos = 10, iostat = ios) \"Stream Header\"" + }, + { + "id": "0x5586249e5280-ActionStmt", + "variantKey": "WriteStmt", + "WriteStmt": "0x5586249e6c90-WriteStmt" + }, + { + "id": "0x5586249e6c90-WriteStmt", + "controls": [ + "0x5586249e6ab0-IoControlSpec", + "0x5586249e68b0-IoControlSpec", + "0x5586249e69b0-IoControlSpec" + ], + "items": [ + "0x5586249e6bb0-OutputItem" + ] + }, + { + "id": "0x5586249e6ab0-IoControlSpec", + "variantKey": "IoUnit", + "IoUnit": "0x5586249e6ab0-IoUnit" + }, + { + "id": "0x5586249e6ab0-IoUnit", + "variantKey": "Expr", + "Expr": "0x5586249f54e0-Expr" + }, + { + "id": "0x5586249f54e0-Expr", + "variantKey": "Designator", + "Designator": "0x5586249e5ee0-Designator" + }, + { + "id": "0x5586249e5ee0-Designator", + "variantKey": "DataRef", + "DataRef": "0x5586249e5ef0-DataRef" + }, + { + "id": "0x5586249e5ef0-DataRef", + "variantKey": "Name", + "Name": "0x5586249e5ef0-Name" + }, + { + "id": "0x5586249e5ef0-Name", + "source": "u_stream" + }, + { + "id": "0x5586249e68b0-IoControlSpec", + "variantKey": "Pos", + "Pos": "0x5586249e68b0-Pos" + }, + { + "id": "0x5586249e68b0-Pos", + "Expr": "0x5586249e44e0-Expr" + }, + { + "id": "0x5586249e44e0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x5586249e4500-LiteralConstant" + }, + { + "id": "0x5586249e4500-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x5586249e4500-IntLiteralConstant" + }, + { + "id": "0x5586249e4500-IntLiteralConstant", + "CharBlock": "10" + }, + { + "id": "0x5586249e69b0-IoControlSpec", + "variantKey": "StatVariable", + "StatVariable": "0x5586249e69b0-StatVariable" + }, + { + "id": "0x5586249e69b0-StatVariable", + "Variable": "0x5586249e69b0-Variable" + }, + { + "id": "0x5586249e69b0-Variable", + "variantKey": "Designator", + "Designator": "0x5586249deec0-Designator" + }, + { + "id": "0x5586249deec0-Designator", + "variantKey": "DataRef", + "DataRef": "0x5586249deed0-DataRef" + }, + { + "id": "0x5586249deed0-DataRef", + "variantKey": "Name", + "Name": "0x5586249deed0-Name" + }, + { + "id": "0x5586249deed0-Name", + "source": "ios" + }, + { + "id": "0x5586249e6bb0-OutputItem", + "variantKey": "Expr", + "Expr": "0x5586249e6bb0-Expr" + }, + { + "id": "0x5586249e6bb0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x5586249e6bd0-LiteralConstant" + }, + { + "id": "0x5586249e6bd0-LiteralConstant", + "variantKey": "CharLiteralConstant", + "CharLiteralConstant": "0x5586249e6bd0-CharLiteralConstant" + }, + { + "id": "0x5586249e6bd0-CharLiteralConstant", + "string": "Stream Header" + }, + { + "id": "0x5586249e79f0-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x5586249e79f0-ExecutableConstruct" + }, + { + "id": "0x5586249e79f0-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x5586249e79f0-Statement" + }, + { + "id": "0x5586249e79f0-Statement", + "statement": "0x5586249e7a00-ActionStmt", + "source": "write(unit = u_seq, fmt = '(I5)', asynchronous = 'yes', id = async_id, iostat = ios) val" + }, + { + "id": "0x5586249e7a00-ActionStmt", + "variantKey": "WriteStmt", + "WriteStmt": "0x5586249e7890-WriteStmt" + }, + { + "id": "0x5586249e7890-WriteStmt", + "controls": [ + "0x5586249e7590-IoControlSpec", + "0x5586249e7130-IoControlSpec", + "0x5586249e7230-IoControlSpec", + "0x5586249e7330-IoControlSpec", + "0x5586249e7490-IoControlSpec" + ], + "items": [ + "0x5586249e77b0-OutputItem" + ] + }, + { + "id": "0x5586249e7590-IoControlSpec", + "variantKey": "IoUnit", + "IoUnit": "0x5586249e7590-IoUnit" + }, + { + "id": "0x5586249e7590-IoUnit", + "variantKey": "Expr", + "Expr": "0x558624a99bb0-Expr" + }, + { + "id": "0x558624a99bb0-Expr", + "variantKey": "Designator", + "Designator": "0x5586249e6f80-Designator" + }, + { + "id": "0x5586249e6f80-Designator", + "variantKey": "DataRef", + "DataRef": "0x5586249e6f90-DataRef" + }, + { + "id": "0x5586249e6f90-DataRef", + "variantKey": "Name", + "Name": "0x5586249e6f90-Name" + }, + { + "id": "0x5586249e6f90-Name", + "source": "u_seq" + }, + { + "id": "0x5586249e7130-IoControlSpec", + "variantKey": "Format", + "Format": "0x5586249e7130-Format" + }, + { + "id": "0x5586249e7130-Format", + "variantKey": "Expr", + "Expr": "0x5586249e7130-Expr" + }, + { + "id": "0x5586249e7130-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x5586249e7150-LiteralConstant" + }, + { + "id": "0x5586249e7150-LiteralConstant", + "variantKey": "CharLiteralConstant", + "CharLiteralConstant": "0x5586249e7150-CharLiteralConstant" + }, + { + "id": "0x5586249e7150-CharLiteralConstant", + "string": "(I5)" + }, + { + "id": "0x5586249e7230-IoControlSpec", + "variantKey": "Asynchronous", + "Asynchronous": "0x5586249e7230-Asynchronous" + }, + { + "id": "0x5586249e7230-Asynchronous", + "Expr": "0x5586249e6fe0-Expr" + }, + { + "id": "0x5586249e6fe0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x5586249e7000-LiteralConstant" + }, + { + "id": "0x5586249e7000-LiteralConstant", + "variantKey": "CharLiteralConstant", + "CharLiteralConstant": "0x5586249e7000-CharLiteralConstant" + }, + { + "id": "0x5586249e7000-CharLiteralConstant", + "string": "yes" + }, + { + "id": "0x5586249e7330-IoControlSpec", + "variantKey": "IdVariable", + "IdVariable": "0x5586249e7330-IdVariable" + }, + { + "id": "0x5586249e7330-IdVariable", + "Variable": "0x5586249e7330-Variable" + }, + { + "id": "0x5586249e7330-Variable", + "variantKey": "Designator", + "Designator": "0x5586249e70c0-Designator" + }, + { + "id": "0x5586249e70c0-Designator", + "variantKey": "DataRef", + "DataRef": "0x5586249e70d0-DataRef" + }, + { + "id": "0x5586249e70d0-DataRef", + "variantKey": "Name", + "Name": "0x5586249e70d0-Name" + }, + { + "id": "0x5586249e70d0-Name", + "source": "async_id" + }, + { + "id": "0x5586249e7490-IoControlSpec", + "variantKey": "StatVariable", + "StatVariable": "0x5586249e7490-StatVariable" + }, + { + "id": "0x5586249e7490-StatVariable", + "Variable": "0x5586249e7490-Variable" + }, + { + "id": "0x5586249e7490-Variable", + "variantKey": "Designator", + "Designator": "0x5586249e7420-Designator" + }, + { + "id": "0x5586249e7420-Designator", + "variantKey": "DataRef", + "DataRef": "0x5586249e7430-DataRef" + }, + { + "id": "0x5586249e7430-DataRef", + "variantKey": "Name", + "Name": "0x5586249e7430-Name" + }, + { + "id": "0x5586249e7430-Name", + "source": "ios" + }, + { + "id": "0x5586249e77b0-OutputItem", + "variantKey": "Expr", + "Expr": "0x5586249e77b0-Expr" + }, + { + "id": "0x5586249e77b0-Expr", + "variantKey": "Designator", + "Designator": "0x5586249e7740-Designator" + }, + { + "id": "0x5586249e7740-Designator", + "variantKey": "DataRef", + "DataRef": "0x5586249e7750-DataRef" + }, + { + "id": "0x5586249e7750-DataRef", + "variantKey": "Name", + "Name": "0x5586249e7750-Name" + }, + { + "id": "0x5586249e7750-Name", + "source": "val" + }, + { + "id": "0x5586249e5f50-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x5586249e5f50-ExecutableConstruct" + }, + { + "id": "0x5586249e5f50-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x5586249e5f50-Statement" + }, + { + "id": "0x5586249e5f50-Statement", + "statement": "0x5586249e5f60-ActionStmt", + "source": "wait(unit=u_seq, id=async_id)" + }, + { + "id": "0x5586249e5f60-ActionStmt", + "variantKey": "WaitStmt", + "WaitStmt": "0x5586249e9330-WaitStmt" + }, + { + "id": "0x5586249e9330-WaitStmt", + "WaitSpec": [ + "0x5586249e8fa0-WaitSpec", + "0x5586249e91d0-WaitSpec" + ] + }, + { + "id": "0x5586249e8fa0-WaitSpec", + "variantKey": "FileUnitNumber", + "FileUnitNumber": "0x5586249e8fa0-FileUnitNumber" + }, + { + "id": "0x5586249e8fa0-FileUnitNumber", + "Expr": "0x5586249e45c0-Expr" + }, + { + "id": "0x5586249e45c0-Expr", + "variantKey": "Designator", + "Designator": "0x5586249e10c0-Designator" + }, + { + "id": "0x5586249e10c0-Designator", + "variantKey": "DataRef", + "DataRef": "0x5586249e10d0-DataRef" + }, + { + "id": "0x5586249e10d0-DataRef", + "variantKey": "Name", + "Name": "0x5586249e10d0-Name" + }, + { + "id": "0x5586249e10d0-Name", + "source": "u_seq" + }, + { + "id": "0x5586249e91d0-WaitSpec", + "variantKey": "IdExpr", + "IdExpr": "0x5586249e91d0-IdExpr" + }, + { + "id": "0x5586249e91d0-IdExpr", + "Expr": "0x5586249e6de0-Expr" + }, + { + "id": "0x5586249e6de0-Expr", + "variantKey": "Designator", + "Designator": "0x5586249e1c40-Designator" + }, + { + "id": "0x5586249e1c40-Designator", + "variantKey": "DataRef", + "DataRef": "0x5586249e1c50-DataRef" + }, + { + "id": "0x5586249e1c50-DataRef", + "variantKey": "Name", + "Name": "0x5586249e1c50-Name" + }, + { + "id": "0x5586249e1c50-Name", + "source": "async_id" + }, + { + "id": "0x5586249f88d0-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x5586249f88d0-ExecutableConstruct" + }, + { + "id": "0x5586249f88d0-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x5586249f88d0-Statement" + }, + { + "id": "0x5586249f88d0-Statement", + "statement": "0x5586249f88e0-ActionStmt", + "source": "read(unit = u_seq, fmt = '(I5)', blank = 'zero', end = 200, err = 900, iostat = ios) val" + }, + { + "id": "0x5586249f88e0-ActionStmt", + "variantKey": "ReadStmt", + "ReadStmt": "0x5586249f8770-ReadStmt" + }, + { + "id": "0x5586249f8770-ReadStmt", + "controls": [ + "0x5586249e5330-IoControlSpec", + "0x5586249e7ef0-IoControlSpec", + "0x5586249e7ff0-IoControlSpec", + "0x5586249e80f0-IoControlSpec", + "0x5586249e81f0-IoControlSpec", + "0x5586249e82f0-IoControlSpec" + ], + "items": [ + "0x5586249e8fe0-InputItem" + ] + }, + { + "id": "0x5586249e5330-IoControlSpec", + "variantKey": "IoUnit", + "IoUnit": "0x5586249e5330-IoUnit" + }, + { + "id": "0x5586249e5330-IoUnit", + "variantKey": "Expr", + "Expr": "0x558624a99c90-Expr" + }, + { + "id": "0x558624a99c90-Expr", + "variantKey": "Designator", + "Designator": "0x5586249e7ce0-Designator" + }, + { + "id": "0x5586249e7ce0-Designator", + "variantKey": "DataRef", + "DataRef": "0x5586249e7cf0-DataRef" + }, + { + "id": "0x5586249e7cf0-DataRef", + "variantKey": "Name", + "Name": "0x5586249e7cf0-Name" + }, + { + "id": "0x5586249e7cf0-Name", + "source": "u_seq" + }, + { + "id": "0x5586249e7ef0-IoControlSpec", + "variantKey": "Format", + "Format": "0x5586249e7ef0-Format" + }, + { + "id": "0x5586249e7ef0-Format", + "variantKey": "Expr", + "Expr": "0x5586249e7ef0-Expr" + }, + { + "id": "0x5586249e7ef0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x5586249e7f10-LiteralConstant" + }, + { + "id": "0x5586249e7f10-LiteralConstant", + "variantKey": "CharLiteralConstant", + "CharLiteralConstant": "0x5586249e7f10-CharLiteralConstant" + }, + { + "id": "0x5586249e7f10-CharLiteralConstant", + "string": "(I5)" + }, + { + "id": "0x5586249e7ff0-IoControlSpec", + "variantKey": "CharExpr", + "CharExpr": "0x5586249e7ff0-CharExpr" + }, + { + "id": "0x5586249e7ff0-CharExpr", + "Kind": "0x5586249e7ff8-Kind", + "Expr": "0x5586249e7d40-Expr" + }, + { + "id": "0x5586249e7ff8-Kind", + "disambiguation": "Fortran::parser::IoControlSpec::CharExpr::Kind", + "value": "Blank" + }, + { + "id": "0x5586249e7d40-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x5586249e7d60-LiteralConstant" + }, + { + "id": "0x5586249e7d60-LiteralConstant", + "variantKey": "CharLiteralConstant", + "CharLiteralConstant": "0x5586249e7d60-CharLiteralConstant" + }, + { + "id": "0x5586249e7d60-CharLiteralConstant", + "string": "zero" + }, + { + "id": "0x5586249e80f0-IoControlSpec", + "variantKey": "EndLabel", + "EndLabel": "0x5586249e80f0-EndLabel" + }, + { + "id": "0x5586249e80f0-EndLabel", + "uint64_t": "200" + }, + { + "id": "0x5586249e81f0-IoControlSpec", + "variantKey": "ErrLabel", + "ErrLabel": "0x5586249e81f0-ErrLabel" + }, + { + "id": "0x5586249e81f0-ErrLabel", + "uint64_t": "900" + }, + { + "id": "0x5586249e82f0-IoControlSpec", + "variantKey": "StatVariable", + "StatVariable": "0x5586249e82f0-StatVariable" + }, + { + "id": "0x5586249e82f0-StatVariable", + "Variable": "0x5586249e82f0-Variable" + }, + { + "id": "0x5586249e82f0-Variable", + "variantKey": "Designator", + "Designator": "0x5586249e7e80-Designator" + }, + { + "id": "0x5586249e7e80-Designator", + "variantKey": "DataRef", + "DataRef": "0x5586249e7e90-DataRef" + }, + { + "id": "0x5586249e7e90-DataRef", + "variantKey": "Name", + "Name": "0x5586249e7e90-Name" + }, + { + "id": "0x5586249e7e90-Name", + "source": "ios" + }, + { + "id": "0x5586249e8fe0-InputItem", + "variantKey": "Variable", + "Variable": "0x5586249e8fe0-Variable" + }, + { + "id": "0x5586249e8fe0-Variable", + "variantKey": "Designator", + "Designator": "0x5586249df7d0-Designator" + }, + { + "id": "0x5586249df7d0-Designator", + "variantKey": "DataRef", + "DataRef": "0x5586249df7e0-DataRef" + }, + { + "id": "0x5586249df7e0-DataRef", + "variantKey": "Name", + "Name": "0x5586249df7e0-Name" + }, + { + "id": "0x5586249df7e0-Name", + "source": "val" + }, + { + "id": "0x5586249e24b0-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x5586249e24b0-ExecutableConstruct" + }, + { + "id": "0x5586249e24b0-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x5586249e24b0-Statement" + }, + { + "id": "0x5586249e24b0-Statement", + "statement": "0x5586249e24c0-ActionStmt", + "label": "200", + "source": "200 continue" + }, + { + "id": "0x5586249e24c0-ActionStmt", + "variantKey": "ContinueStmt", + "ContinueStmt": "0x5586249e24c0-ContinueStmt" + }, + { + "id": "0x5586249e24c0-ContinueStmt" + }, + { + "id": "0x5586249e5490-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x5586249e5490-ExecutableConstruct" + }, + { + "id": "0x5586249e5490-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x5586249e5490-Statement" + }, + { + "id": "0x5586249e5490-Statement", + "statement": "0x5586249e54a0-ActionStmt", + "source": "print *, \"All 20 io-control-spec items demonstrated successfully!\"" + }, + { + "id": "0x5586249e54a0-ActionStmt", + "variantKey": "PrintStmt", + "PrintStmt": "0x5586249f8a10-PrintStmt" + }, + { + "id": "0x5586249f8a10-PrintStmt", + "Format": "0x5586249f8a28-Format", + "OutputItem": [ + "0x5586249f8930-OutputItem" + ] + }, + { + "id": "0x5586249f8a28-Format", + "variantKey": "Star", + "Star": "0x5586249f8a28-Star" + }, + { + "id": "0x5586249f8a28-Star" + }, + { + "id": "0x5586249f8930-OutputItem", + "variantKey": "Expr", + "Expr": "0x5586249f8930-Expr" + }, + { + "id": "0x5586249f8930-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x5586249f8950-LiteralConstant" + }, + { + "id": "0x5586249f8950-LiteralConstant", + "variantKey": "CharLiteralConstant", + "CharLiteralConstant": "0x5586249f8950-CharLiteralConstant" + }, + { + "id": "0x5586249f8950-CharLiteralConstant", + "string": "All 20 io-control-spec items demonstrated successfully!" + }, + { + "id": "0x5586249e4e80-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x5586249e4e80-ExecutableConstruct" + }, + { + "id": "0x5586249e4e80-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x5586249e4e80-Statement" + }, + { + "id": "0x5586249e4e80-Statement", + "statement": "0x5586249e4e90-ActionStmt", + "source": "close(u_seq, status='delete')" + }, + { + "id": "0x5586249e4e90-ActionStmt", + "variantKey": "CloseStmt", + "CloseStmt": "0x5586249e8a20-CloseStmt" + }, + { + "id": "0x5586249e8a20-CloseStmt", + "CloseSpec": [ + "0x5586249e9080-CloseSpec", + "0x5586249e9040-CloseSpec" + ] + }, + { + "id": "0x5586249e9080-CloseSpec", + "variantKey": "FileUnitNumber", + "FileUnitNumber": "0x5586249e9080-FileUnitNumber" + }, + { + "id": "0x5586249e9080-FileUnitNumber", + "Expr": "0x5586249e7c00-Expr" + }, + { + "id": "0x5586249e7c00-Expr", + "variantKey": "Designator", + "Designator": "0x5586249e4fb0-Designator" + }, + { + "id": "0x5586249e4fb0-Designator", + "variantKey": "DataRef", + "DataRef": "0x5586249e4fc0-DataRef" + }, + { + "id": "0x5586249e4fc0-DataRef", + "variantKey": "Name", + "Name": "0x5586249e4fc0-Name" + }, + { + "id": "0x5586249e4fc0-Name", + "source": "u_seq" + }, + { + "id": "0x5586249e9040-CloseSpec", + "variantKey": "StatusExpr", + "StatusExpr": "0x5586249e9040-StatusExpr" + }, + { + "id": "0x5586249e9040-StatusExpr", + "Expr": "0x5586249e7b20-Expr" + }, + { + "id": "0x5586249e7b20-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x5586249e7b40-LiteralConstant" + }, + { + "id": "0x5586249e7b40-LiteralConstant", + "variantKey": "CharLiteralConstant", + "CharLiteralConstant": "0x5586249e7b40-CharLiteralConstant" + }, + { + "id": "0x5586249e7b40-CharLiteralConstant", + "string": "delete" + }, + { + "id": "0x5586249e12f0-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x5586249e12f0-ExecutableConstruct" + }, + { + "id": "0x5586249e12f0-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x5586249e12f0-Statement" + }, + { + "id": "0x5586249e12f0-Statement", + "statement": "0x5586249e1300-ActionStmt", + "source": "close(u_dir, status='delete')" + }, + { + "id": "0x5586249e1300-ActionStmt", + "variantKey": "CloseStmt", + "CloseStmt": "0x5586249e9010-CloseStmt" + }, + { + "id": "0x5586249e9010-CloseStmt", + "CloseSpec": [ + "0x5586249e9130-CloseSpec", + "0x5586249e90f0-CloseSpec" + ] + }, + { + "id": "0x5586249e9130-CloseSpec", + "variantKey": "FileUnitNumber", + "FileUnitNumber": "0x5586249e9130-FileUnitNumber" + }, + { + "id": "0x5586249e9130-FileUnitNumber", + "Expr": "0x5586249e7a40-Expr" + }, + { + "id": "0x5586249e7a40-Expr", + "variantKey": "Designator", + "Designator": "0x5586249e3840-Designator" + }, + { + "id": "0x5586249e3840-Designator", + "variantKey": "DataRef", + "DataRef": "0x5586249e3850-DataRef" + }, + { + "id": "0x5586249e3850-DataRef", + "variantKey": "Name", + "Name": "0x5586249e3850-Name" + }, + { + "id": "0x5586249e3850-Name", + "source": "u_dir" + }, + { + "id": "0x5586249e90f0-CloseSpec", + "variantKey": "StatusExpr", + "StatusExpr": "0x5586249e90f0-StatusExpr" + }, + { + "id": "0x5586249e90f0-StatusExpr", + "Expr": "0x5586249e4d90-Expr" + }, + { + "id": "0x5586249e4d90-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x5586249e4db0-LiteralConstant" + }, + { + "id": "0x5586249e4db0-LiteralConstant", + "variantKey": "CharLiteralConstant", + "CharLiteralConstant": "0x5586249e4db0-CharLiteralConstant" + }, + { + "id": "0x5586249e4db0-CharLiteralConstant", + "string": "delete" + }, + { + "id": "0x5586249e5430-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x5586249e5430-ExecutableConstruct" + }, + { + "id": "0x5586249e5430-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x5586249e5430-Statement" + }, + { + "id": "0x5586249e5430-Statement", + "statement": "0x5586249e5440-ActionStmt", + "source": "close(u_stream, status='delete')" + }, + { + "id": "0x5586249e5440-ActionStmt", + "variantKey": "CloseStmt", + "CloseStmt": "0x5586249e8900-CloseStmt" + }, + { + "id": "0x5586249e8900-CloseStmt", + "CloseSpec": [ + "0x5586249e8f20-CloseSpec", + "0x5586249e9170-CloseSpec" + ] + }, + { + "id": "0x5586249e8f20-CloseSpec", + "variantKey": "FileUnitNumber", + "FileUnitNumber": "0x5586249e8f20-FileUnitNumber" + }, + { + "id": "0x5586249e8f20-FileUnitNumber", + "Expr": "0x5586249e4cb0-Expr" + }, + { + "id": "0x5586249e4cb0-Expr", + "variantKey": "Designator", + "Designator": "0x5586249e1790-Designator" + }, + { + "id": "0x5586249e1790-Designator", + "variantKey": "DataRef", + "DataRef": "0x5586249e17a0-DataRef" + }, + { + "id": "0x5586249e17a0-DataRef", + "variantKey": "Name", + "Name": "0x5586249e17a0-Name" + }, + { + "id": "0x5586249e17a0-Name", + "source": "u_stream" + }, + { + "id": "0x5586249e9170-CloseSpec", + "variantKey": "StatusExpr", + "StatusExpr": "0x5586249e9170-StatusExpr" + }, + { + "id": "0x5586249e9170-StatusExpr", + "Expr": "0x5586249f8b10-Expr" + }, + { + "id": "0x5586249f8b10-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x5586249f8b30-LiteralConstant" + }, + { + "id": "0x5586249f8b30-LiteralConstant", + "variantKey": "CharLiteralConstant", + "CharLiteralConstant": "0x5586249f8b30-CharLiteralConstant" + }, + { + "id": "0x5586249f8b30-CharLiteralConstant", + "string": "delete" + }, + { + "id": "0x5586249e76f0-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x5586249e76f0-ExecutableConstruct" + }, + { + "id": "0x5586249e76f0-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x5586249e76f0-Statement" + }, + { + "id": "0x5586249e76f0-Statement", + "statement": "0x5586249e7700-ActionStmt", + "source": "stop" + }, + { + "id": "0x5586249e7700-ActionStmt", + "variantKey": "StopStmt", + "StopStmt": "0x5586249f8bf0-StopStmt" + }, + { + "id": "0x5586249f8bf0-StopStmt", + "kind": "0x5586249f8cd8-Kind" + }, + { + "id": "0x5586249f8cd8-Kind", + "disambiguation": "Fortran::parser::StopStmt::Kind", + "value": "Stop" + }, + { + "id": "0x5586249f91e0-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x5586249f91e0-ExecutableConstruct" + }, + { + "id": "0x5586249f91e0-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x5586249f91e0-Statement" + }, + { + "id": "0x5586249f91e0-Statement", + "statement": "0x5586249f91f0-ActionStmt", + "label": "900", + "source": "900 print *, \"I/O Error Occurred: \", trim(io_message)" + }, + { + "id": "0x5586249f91f0-ActionStmt", + "variantKey": "PrintStmt", + "PrintStmt": "0x5586249f9070-PrintStmt" + }, + { + "id": "0x5586249f9070-PrintStmt", + "Format": "0x5586249f9088-Format", + "OutputItem": [ + "0x5586249f8f90-OutputItem", + "0x5586249f8ea0-OutputItem" + ] + }, + { + "id": "0x5586249f9088-Format", + "variantKey": "Star", + "Star": "0x5586249f9088-Star" + }, + { + "id": "0x5586249f9088-Star" + }, + { + "id": "0x5586249f8f90-OutputItem", + "variantKey": "Expr", + "Expr": "0x5586249f8f90-Expr" + }, + { + "id": "0x5586249f8f90-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x5586249f8fb0-LiteralConstant" + }, + { + "id": "0x5586249f8fb0-LiteralConstant", + "variantKey": "CharLiteralConstant", + "CharLiteralConstant": "0x5586249f8fb0-CharLiteralConstant" + }, + { + "id": "0x5586249f8fb0-CharLiteralConstant", + "string": "I/O Error Occurred: " + }, + { + "id": "0x5586249f8ea0-OutputItem", + "variantKey": "Expr", + "Expr": "0x5586249f8ea0-Expr" + }, + { + "id": "0x5586249f8ea0-Expr", + "variantKey": "FunctionReference", + "FunctionReference": "0x5586249e1af0-FunctionReference" + }, + { + "id": "0x5586249e1af0-FunctionReference", + "Call": "0x5586249e1af0-Call" + }, + { + "id": "0x5586249e1af0-Call", + "ProcedureDesignator": "0x5586249e1b08-ProcedureDesignator", + "ActualArgSpec": [ + "0x5586249e0090-ActualArgSpec" + ] + }, + { + "id": "0x5586249e1b08-ProcedureDesignator", + "variantKey": "Name", + "Name": "0x5586249e1b08-Name" + }, + { + "id": "0x5586249e1b08-Name", + "source": "trim" + }, + { + "id": "0x5586249e0090-ActualArgSpec", + "ActualArg": "0x5586249e0090-ActualArg" + }, + { + "id": "0x5586249e0090-ActualArg", + "variantKey": "Expr", + "Expr": "0x5586249f8d50-Expr" + }, + { + "id": "0x5586249f8d50-Expr", + "variantKey": "Designator", + "Designator": "0x5586249f8cf0-Designator" + }, + { + "id": "0x5586249f8cf0-Designator", + "variantKey": "DataRef", + "DataRef": "0x5586249f8d00-DataRef" + }, + { + "id": "0x5586249f8d00-DataRef", + "variantKey": "Name", + "Name": "0x5586249f8d00-Name" + }, + { + "id": "0x5586249f8d00-Name", + "source": "io_message" + }, + { + "id": "0x5586249f15d0-Statement", + "statement": "0x5586249f15e0-EndProgramStmt", + "source": "end program IO_CONTROL_SPECS" + }, + { + "id": "0x5586249f15e0-EndProgramStmt", + "Name": "0x5586249f15e0-Name" + }, + { + "id": "0x5586249f15e0-Name", + "source": "IO_CONTROL_SPECS" + } + ], + "comments": [ + { + "text": " Define a namelist for the NML specifier demo", + "stmtId": "0x5586249c0da0-Statement", + "trailing": false + }, + { + "text": " Open temporary test files (Sequential, Direct, Stream)", + "stmtId": "0x5586249df9b0-Statement", + "trailing": false + }, + { + "text": " -----------------------------------------------------------------", + "stmtId": "0x5586249e4490-Statement", + "trailing": false + }, + { + "text": " 1. Formatting, Rounding, Decimal, Sign, Delim, IOSTAT & IOMSG", + "stmtId": "0x5586249e4490-Statement", + "trailing": false + }, + { + "text": " -----------------------------------------------------------------", + "stmtId": "0x5586249e4490-Statement", + "trailing": false + }, + { + "text": " -----------------------------------------------------------------", + "stmtId": "0x5586249effe0-Statement", + "trailing": false + }, + { + "text": " 2. Namelist Specifier (NML)", + "stmtId": "0x5586249effe0-Statement", + "trailing": false + }, + { + "text": " -----------------------------------------------------------------", + "stmtId": "0x5586249effe0-Statement", + "trailing": false + }, + { + "text": " -----------------------------------------------------------------", + "stmtId": "0x5586249e2510-Statement", + "trailing": false + }, + { + "text": " 3. Non-Advancing I/O (ADVANCE, SIZE, PAD, EOR, ERR)", + "stmtId": "0x5586249e2510-Statement", + "trailing": false + }, + { + "text": " -----------------------------------------------------------------", + "stmtId": "0x5586249e2510-Statement", + "trailing": false + }, + { + "text": " -----------------------------------------------------------------", + "stmtId": "0x5586249e6850-Statement", + "trailing": false + }, + { + "text": " 4. Direct Access (REC)", + "stmtId": "0x5586249e6850-Statement", + "trailing": false + }, + { + "text": " -----------------------------------------------------------------", + "stmtId": "0x5586249e6850-Statement", + "trailing": false + }, + { + "text": " -----------------------------------------------------------------", + "stmtId": "0x5586249e5270-Statement", + "trailing": false + }, + { + "text": " 5. Stream Access (POS)", + "stmtId": "0x5586249e5270-Statement", + "trailing": false + }, + { + "text": " -----------------------------------------------------------------", + "stmtId": "0x5586249e5270-Statement", + "trailing": false + }, + { + "text": " -----------------------------------------------------------------", + "stmtId": "0x5586249e79f0-Statement", + "trailing": false + }, + { + "text": " 6. Asynchronous Non-Blocking I/O (ASYNCHRONOUS, ID)", + "stmtId": "0x5586249e79f0-Statement", + "trailing": false + }, + { + "text": " -----------------------------------------------------------------", + "stmtId": "0x5586249e79f0-Statement", + "trailing": false + }, + { + "text": " Wait for async operation to complete before continuing", + "stmtId": "0x5586249e5f50-Statement", + "trailing": false + }, + { + "text": " -----------------------------------------------------------------", + "stmtId": "0x5586249f88d0-Statement", + "trailing": false + }, + { + "text": " 7. Input Blank Handling and EOF Branching (BLANK, END)", + "stmtId": "0x5586249f88d0-Statement", + "trailing": false + }, + { + "text": " -----------------------------------------------------------------", + "stmtId": "0x5586249f88d0-Statement", + "trailing": false + }, + { + "text": " Clean up files", + "stmtId": "0x5586249e4e80-Statement", + "trailing": false + } + ], + "enums": { + "Fortran::common::CUDADataAttr": [ + "Constant", + "Device", + "Managed", + "Pinned", + "Shared", + "Texture", + "Unified" + ], + "Fortran::common::CUDASubprogramAttrs": [ + "Host", + "Device", + "HostDevice", + "Global", + "Grid_Global" + ], + "Fortran::common::ImportKind": [ + "Default", + "Only", + "None", + "All" + ], + "Fortran::common::OmpDependenceKind": [ + "In", + "Out", + "Inout", + "Inoutset", + "Mutexinoutset", + "Depobj" + ], + "Fortran::common::OmpMemoryOrderType": [ + "Acq_Rel", + "Acquire", + "Relaxed", + "Release", + "Seq_Cst" + ], + "Fortran::common::OpenACCDeviceType": [ + "Star", + "Default", + "Nvidia", + "Radeon", + "Host", + "Multicore", + "None" + ], + "Fortran::parser::AccDataModifier::Modifier": [ + "ReadOnly", + "Zero" + ], + "Fortran::parser::AccessSpec::Kind": [ + "Public", + "Private" + ], + "Fortran::parser::BindEntity::Kind": [ + "Object", + "Common" + ], + "Fortran::parser::CompilerDirective::VectorLength::Kind": [ + "Auto", + "Fixed", + "Scalable" + ], + "Fortran::parser::ConnectSpec::CharExpr::Kind": [ + "Access", + "Action", + "Asynchronous", + "Blank", + "Decimal", + "Delim", + "Encoding", + "Form", + "Pad", + "Position", + "Round", + "Sign", + "Carriagecontrol", + "Convert", + "Dispose" + ], + "Fortran::parser::DefinedOperator::IntrinsicOperator": [ + "Power", + "Multiply", + "Divide", + "Add", + "Subtract", + "Concat", + "LT", + "LE", + "EQ", + "NE", + "GE", + "GT", + "NOT", + "AND", + "OR", + "EQV", + "NEQV" + ], + "Fortran::parser::ImplicitStmt::ImplicitNoneNameSpec": [ + "External", + "Type" + ], + "Fortran::parser::InquireSpec::CharVar::Kind": [ + "Access", + "Action", + "Asynchronous", + "Blank", + "Decimal", + "Delim", + "Direct", + "Encoding", + "Form", + "Formatted", + "Iomsg", + "Name", + "Pad", + "Position", + "Read", + "Readwrite", + "Round", + "Sequential", + "Sign", + "Stream", + "Status", + "Unformatted", + "Write", + "Carriagecontrol", + "Convert", + "Dispose" + ], + "Fortran::parser::InquireSpec::IntVar::Kind": [ + "Iostat", + "Nextrec", + "Number", + "Pos", + "Recl", + "Size" + ], + "Fortran::parser::InquireSpec::LogVar::Kind": [ + "Exist", + "Named", + "Opened", + "Pending" + ], + "Fortran::parser::IntentSpec::Intent": [ + "In", + "Out", + "InOut" + ], + "Fortran::parser::IoControlSpec::CharExpr::Kind": [ + "Advance", + "Blank", + "Decimal", + "Delim", + "Pad", + "Round", + "Sign" + ], + "Fortran::parser::ReductionOperator::Operator": [ + "Plus", + "Multiply", + "Max", + "Min", + "Iand", + "Ior", + "Ieor", + "And", + "Or", + "Eqv", + "Neqv" + ], + "Fortran::parser::OmpAccessGroup::Value": [ + "Cgroup" + ], + "Fortran::parser::OmpAdjustArgsClause::OmpAdjustOp::Value": [ + "Nothing", + "Need_Device_Ptr" + ], + "Fortran::parser::OmpAlwaysModifier::Value": [ + "Always" + ], + "Fortran::parser::OmpAtClause::ActionTime": [ + "Compilation", + "Execution" + ], + "Fortran::parser::OmpAttachModifier::Value": [ + "Always", + "Never", + "Auto" + ], + "Fortran::parser::OmpAutomapModifier::Value": [ + "Automap" + ], + "Fortran::parser::OmpBindClause::Binding": [ + "Parallel", + "Teams", + "Thread" + ], + "Fortran::parser::OmpChunkModifier::Value": [ + "Simd" + ], + "Fortran::parser::OmpCloseModifier::Value": [ + "Close" + ], + "Fortran::parser::OmpDefaultClause::DataSharingAttribute": [ + "Private", + "Firstprivate", + "Shared", + "None" + ], + "Fortran::parser::OmpDefaultmapClause::ImplicitBehavior": [ + "Alloc", + "To", + "From", + "Tofrom", + "Firstprivate", + "None", + "Default", + "Present" + ], + "Fortran::parser::OmpDeleteModifier::Value": [ + "Delete" + ], + "Fortran::parser::OmpDependenceType::Value": [ + "Sink", + "Source" + ], + "Fortran::parser::OmpDeviceModifier::Value": [ + "Ancestor", + "Device_Num" + ], + "Fortran::parser::OmpDeviceTypeClause::DeviceTypeDescription": [ + "Any", + "Host", + "Nohost" + ], + "Fortran::parser::OmpDirectiveSpecification::Flag": [ + "DeprecatedSyntax", + "CrossesLabelDo" + ], + "Fortran::parser::OmpExpectation::Value": [ + "Present" + ], + "Fortran::parser::OmpInteropType::Value": [ + "Target", + "Targetsync" + ], + "Fortran::parser::OmpLastprivateModifier::Value": [ + "Conditional" + ], + "Fortran::parser::OmpLinearModifier::Value": [ + "Ref", + "Uval", + "Val" + ], + "Fortran::parser::OmpMapType::Value": [ + "Alloc", + "Delete", + "From", + "Release", + "Storage", + "To", + "Tofrom" + ], + "Fortran::parser::OmpMapTypeModifier::Value": [ + "Always", + "Close", + "Present", + "Ompx_Hold" + ], + "Fortran::parser::OmpObject::Invalid::Kind": [ + "BlankCommonBlock" + ], + "Fortran::parser::OmpOrderClause::Ordering": [ + "Concurrent" + ], + "Fortran::parser::OmpOrderingModifier::Value": [ + "Monotonic", + "Nonmonotonic", + "Simd" + ], + "Fortran::parser::OmpOrderModifier::Value": [ + "Reproducible", + "Unconstrained" + ], + "Fortran::parser::OmpPrescriptiveness::Value": [ + "Strict" + ], + "Fortran::parser::OmpPresentModifier::Value": [ + "Present" + ], + "Fortran::parser::OmpProcBindClause::AffinityPolicy": [ + "Close", + "Master", + "Spread", + "Primary" + ], + "Fortran::parser::OmpReductionModifier::Value": [ + "Default", + "Inscan", + "Task" + ], + "Fortran::parser::OmpRefModifier::Value": [ + "Ref_Ptee", + "Ref_Ptr", + "Ref_Ptr_Ptee" + ], + "Fortran::parser::OmpScheduleClause::Kind": [ + "Static", + "Dynamic", + "Guided", + "Auto", + "Runtime" + ], + "Fortran::parser::OmpSelfModifier::Value": [ + "Self" + ], + "Fortran::parser::OmpSeverityClause::SevLevel": [ + "Fatal", + "Warning" + ], + "Fortran::parser::OmpThreadsetClause::ThreadsetPolicy": [ + "Omp_Pool", + "Omp_Team" + ], + "Fortran::parser::OmpTraitSelectorName::Value": [ + "Arch", + "Atomic_Default_Mem_Order", + "Condition", + "Device_Num", + "Extension", + "Isa", + "Kind", + "Requires", + "Simd", + "Uid", + "Vendor" + ], + "Fortran::parser::OmpTraitSetSelectorName::Value": [ + "Construct", + "Device", + "Implementation", + "Target_Device", + "User" + ], + "Fortran::parser::OmpVariableCategory::Value": [ + "Aggregate", + "All", + "Allocatable", + "Pointer", + "Scalar" + ], + "Fortran::parser::OmpxHoldModifier::Value": [ + "Ompx_Hold" + ], + "Fortran::parser::ProcedureStmt::Kind": [ + "ModuleProcedure", + "Procedure" + ], + "Fortran::parser::SavedEntity::Kind": [ + "Entity", + "Common" + ], + "Fortran::parser::StopStmt::Kind": [ + "Stop", + "ErrorStop" + ], + "Fortran::parser::UseStmt::ModuleNature": [ + "Intrinsic", + "Non_Intrinsic" + ] + } +} diff --git a/FortranParser/resources-test/fortran/parser/logical_expression.expected.f90 b/FortranParser/resources-test/fortran/parser/logical_expression.expected.f90 index 3101aadc..b66063a7 100644 --- a/FortranParser/resources-test/fortran/parser/logical_expression.expected.f90 +++ b/FortranParser/resources-test/fortran/parser/logical_expression.expected.f90 @@ -2,7 +2,7 @@ PROGRAM LOGICAL_EXPRESSION INTEGER :: a1, b1, a2, b2 LOGICAL :: ok - ok = .true. + ok = .TRUE. a1 = 1 b1 = 2 diff --git a/FortranParser/resources-test/fortran/parser/omp/omp_basic.expected.f90 b/FortranParser/resources-test/fortran/parser/omp/omp_basic.expected.f90 index a0d2ca06..1ffe8799 100644 --- a/FortranParser/resources-test/fortran/parser/omp/omp_basic.expected.f90 +++ b/FortranParser/resources-test/fortran/parser/omp/omp_basic.expected.f90 @@ -1,5 +1,5 @@ PROGRAM OPENMP_DEMO - USE omp_lib + USE :: omp_lib INTEGER :: total_sum diff --git a/FortranParser/resources-test/fortran/parser/omp/omp_basic.json b/FortranParser/resources-test/fortran/parser/omp/omp_basic.json index d08eef44..d464a367 100644 --- a/FortranParser/resources-test/fortran/parser/omp/omp_basic.json +++ b/FortranParser/resources-test/fortran/parser/omp/omp_basic.json @@ -1,322 +1,644 @@ -{"nodes": [ - { - "id": "0x63007e678640-Program", - "ProgramUnit": [ - "0x63007e6ad280-ProgramUnit"] - }, - { - "id": "0x63007e6ad280-ProgramUnit", - "variantKey": "MainProgram", - "MainProgram": "0x63007e6a32f0-MainProgram" - }, - { - "id": "0x63007e6a32f0-MainProgram", - "Statement": "0x63007e6a3438-Statement", - "SpecificationPart": "0x63007e6a3390-SpecificationPart", - "ExecutionPart": "0x63007e6a3378-ExecutionPart", - "Statement": "0x63007e6a32f0-Statement" - }, - { - "id": "0x63007e6a3438-Statement", - "statement": "0x63007e6a3448-ProgramStmt", - "source": "program OPENMP_DEMO" - }, - { - "id": "0x63007e6a3448-ProgramStmt", - "Name": "0x63007e6a3448-Name" - }, - { - "id": "0x63007e6a3448-Name", - "source": "OPENMP_DEMO" - }, - { - "id": "0x63007e6a3390-SpecificationPart", - "Statement": [ - "0x63007e6ad3e0-Statement"], - "ImplicitPart": "0x63007e6a33a8-ImplicitPart", - "DeclarationConstruct": [ - "0x63007e6858b0-DeclarationConstruct"] - }, - { - "id": "0x63007e6ad3e0-Statement", - "statement": "0x63007e6b57f0-UseStmt", - "source": "use omp_lib" - }, - { - "id": "0x63007e6b57f0-UseStmt", - "moduleName": "0x63007e6b57f8-Name" - }, - { - "id": "0x63007e6b57f8-Name", - "source": "omp_lib" - }, - { - "id": "0x63007e6a33a8-ImplicitPart" - }, - { - "id": "0x63007e6858b0-DeclarationConstruct", - "variantKey": "SpecificationConstruct", - "SpecificationConstruct": "0x63007e6858b0-SpecificationConstruct" - }, - { - "id": "0x63007e6858b0-SpecificationConstruct", - "variantKey": "Statement", - "Statement": "0x63007e6858b0-Statement" - }, - { - "id": "0x63007e6858b0-Statement", - "statement": "0x63007e6b2670-TypeDeclarationStmt", - "source": "integer :: total_sum" - }, - { - "id": "0x63007e6b2670-TypeDeclarationStmt", - "DeclarationTypeSpec": "0x63007e6b26a0-DeclarationTypeSpec", - "EntityDecl": [ - "0x63007e6af690-EntityDecl"] - }, - { - "id": "0x63007e6b26a0-DeclarationTypeSpec", - "variantKey": "IntrinsicTypeSpec", - "IntrinsicTypeSpec": "0x63007e6b26a0-IntrinsicTypeSpec" - }, - { - "id": "0x63007e6b26a0-IntrinsicTypeSpec", - "variantKey": "IntegerTypeSpec", - "IntegerTypeSpec": "0x63007e6b26a0-IntegerTypeSpec" - }, - { - "id": "0x63007e6b26a0-IntegerTypeSpec" - }, - { - "id": "0x63007e6af690-EntityDecl", - "Name": "0x63007e6af748-Name" - }, - { - "id": "0x63007e6af748-Name", - "source": "total_sum" - }, - { - "id": "0x63007e6a3378-ExecutionPart", - "ExecutionPartConstruct": [ - "0x63007e6ad710-ExecutionPartConstruct"] - }, - { - "id": "0x63007e6a3378-ExecutionPartConstruct" - }, - { - "id": "0x63007e6ad710-ExecutionPartConstruct", - "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x63007e6ad710-ExecutableConstruct" - }, - { - "id": "0x63007e6ad710-ExecutableConstruct", - "variantKey": "OpenMPConstruct", - "OpenMPConstruct": "0x63007e6b3690-OpenMPConstruct" - }, - { - "id": "0x63007e6b3690-OpenMPConstruct", - "variantKey": "OmpBlockConstruct", - "OmpBlockConstruct": "0x63007e6b3690-OmpBlockConstruct" - }, - { - "id": "0x63007e6b3690-OmpBlockConstruct", - "OmpBeginDirective": "0x63007e6b3750-OmpBeginDirective", - "ExecutionPartConstruct": [ - "0x63007e6b3640-ExecutionPartConstruct"], - "OmpEndDirective": "0x63007e6b36a0-OmpEndDirective" - }, - { - "id": "0x63007e6b3750-OmpBeginDirective", - "OmpDirectiveName": "0x63007e6b37c8-OmpDirectiveName", - "OmpClauseList": "0x63007e6b3768-OmpClauseList", - "Flags = {}": "0x63007e6b3760-Flags = {}" - }, - { - "id": "0x63007e6b37c8-OmpDirectiveName", - "directive": "parallel" - }, - { - "id": "0x63007e6b3768-OmpClauseList" - }, - { - "id": "0x63007e6b3738-ExecutionPartConstruct" - }, - { - "id": "0x63007e6b3640-ExecutionPartConstruct", - "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x63007e6b3640-ExecutableConstruct" - }, - { - "id": "0x63007e6b3640-ExecutableConstruct", - "variantKey": "Statement", - "Statement": "0x63007e6b3640-Statement" - }, - { - "id": "0x63007e6b3640-Statement", - "statement": "0x63007e6b3650-ActionStmt", - "source": "total_sum = total_sum + 1" - }, - { - "id": "0x63007e6b3650-ActionStmt", - "variantKey": "AssignmentStmt", - "AssignmentStmt": "0x63007e6862e0-AssignmentStmt" - }, - { - "id": "0x63007e6862e0-AssignmentStmt", - "Variable": "0x63007e6863c0-Variable", - "Expr": "0x63007e6862f0-Expr" - }, - { - "id": "0x63007e6863c0-Variable", - "variantKey": "Designator", - "Designator": "0x63007e6b3310-Designator" - }, - { - "id": "0x63007e6b3310-Designator", - "variantKey": "DataRef", - "DataRef": "0x63007e6b3320-DataRef" - }, - { - "id": "0x63007e6b3320-DataRef", - "variantKey": "Name", - "Name": "0x63007e6b3320-Name" - }, - { - "id": "0x63007e6b3320-Name", - "source": "total_sum" - }, - { - "id": "0x63007e6862f0-Expr", - "variantKey": "Add", - "Add": "0x63007e686310-Add" - }, - { - "id": "0x63007e686310-Add", - "left": "0x63007e6b34f0-Expr", - "right": "0x63007e6b27f0-Expr", - "op": "ADD" - }, - { - "id": "0x63007e6b34f0-Expr", - "variantKey": "Designator", - "Designator": "0x63007e6b3430-Designator" - }, - { - "id": "0x63007e6b3430-Designator", - "variantKey": "DataRef", - "DataRef": "0x63007e6b3440-DataRef" - }, - { - "id": "0x63007e6b3440-DataRef", - "variantKey": "Name", - "Name": "0x63007e6b3440-Name" - }, - { - "id": "0x63007e6b3440-Name", - "source": "total_sum" - }, - { - "id": "0x63007e6b27f0-Expr", - "variantKey": "LiteralConstant", - "LiteralConstant": "0x63007e6b2810-LiteralConstant" - }, - { - "id": "0x63007e6b2810-LiteralConstant", - "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x63007e6b2810-IntLiteralConstant" - }, - { - "id": "0x63007e6b2810-IntLiteralConstant", - "CharBlock": "1" - }, - { - "id": "0x63007e6b36a0-OmpEndDirective", - "OmpDirectiveName": "0x63007e6b3718-OmpDirectiveName", - "OmpClauseList": "0x63007e6b36b8-OmpClauseList", - "Flags = {}": "0x63007e6b36b0-Flags = {}" - }, - { - "id": "0x63007e6b3718-OmpDirectiveName", - "directive": "parallel" - }, - { - "id": "0x63007e6b36b8-OmpClauseList" - }, - { - "id": "0x63007e6a32f0-Statement", - "statement": "0x63007e6a3300-EndProgramStmt", - "source": "end program OPENMP_DEMO" - }, - { - "id": "0x63007e6a3300-EndProgramStmt", - "Name": "0x63007e6a3300-Name" - }, - { - "id": "0x63007e6a3300-Name", - "source": "OPENMP_DEMO" - }], +{ + "fileExtension": "f90", + "nodes": [ + { + "id": "0x55ba3cae6f00-Program", + "ProgramUnit": [ + "0x55ba3cb20ae0-ProgramUnit" + ] + }, + { + "id": "0x55ba3cb20ae0-ProgramUnit", + "variantKey": "MainProgram", + "MainProgram": "0x55ba3cb11ae0-MainProgram" + }, + { + "id": "0x55ba3cb11ae0-MainProgram", + "Statement": "0x55ba3cb11c28-Statement", + "SpecificationPart": "0x55ba3cb11b80-SpecificationPart", + "ExecutionPart": "0x55ba3cb11b68-ExecutionPart", + "Statement": "0x55ba3cb11ae0-Statement" + }, + { + "id": "0x55ba3cb11c28-Statement", + "statement": "0x55ba3cb11c38-ProgramStmt", + "source": "program OPENMP_DEMO" + }, + { + "id": "0x55ba3cb11c38-ProgramStmt", + "Name": "0x55ba3cb11c38-Name" + }, + { + "id": "0x55ba3cb11c38-Name", + "source": "OPENMP_DEMO" + }, + { + "id": "0x55ba3cb11b80-SpecificationPart", + "Statement": [ + "0x55ba3cb1bc00-Statement" + ], + "ImplicitPart": "0x55ba3cb11b98-ImplicitPart", + "DeclarationConstruct": [ + "0x55ba3caf4170-DeclarationConstruct" + ] + }, + { + "id": "0x55ba3cb1bc00-Statement", + "statement": "0x55ba3cb2a600-UseStmt", + "source": "use omp_lib" + }, + { + "id": "0x55ba3cb2a600-UseStmt", + "moduleName": "0x55ba3cb2a608-Name", + "variantKey": "Rename", + "Rename": [] + }, + { + "id": "0x55ba3cb2a608-Name", + "source": "omp_lib" + }, + { + "id": "0x55ba3cb11b98-ImplicitPart" + }, + { + "id": "0x55ba3caf4170-DeclarationConstruct", + "variantKey": "SpecificationConstruct", + "SpecificationConstruct": "0x55ba3caf4170-SpecificationConstruct" + }, + { + "id": "0x55ba3caf4170-SpecificationConstruct", + "variantKey": "Statement", + "Statement": "0x55ba3caf4170-Statement" + }, + { + "id": "0x55ba3caf4170-Statement", + "statement": "0x55ba3cb20de0-TypeDeclarationStmt", + "source": "integer :: total_sum" + }, + { + "id": "0x55ba3cb20de0-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x55ba3cb20e10-DeclarationTypeSpec", + "EntityDecl": [ + "0x55ba3cb20ef0-EntityDecl" + ] + }, + { + "id": "0x55ba3cb20e10-DeclarationTypeSpec", + "variantKey": "IntrinsicTypeSpec", + "IntrinsicTypeSpec": "0x55ba3cb20e10-IntrinsicTypeSpec" + }, + { + "id": "0x55ba3cb20e10-IntrinsicTypeSpec", + "variantKey": "IntegerTypeSpec", + "IntegerTypeSpec": "0x55ba3cb20e10-IntegerTypeSpec" + }, + { + "id": "0x55ba3cb20e10-IntegerTypeSpec" + }, + { + "id": "0x55ba3cb20ef0-EntityDecl", + "Name": "0x55ba3cb20fa8-Name" + }, + { + "id": "0x55ba3cb20fa8-Name", + "source": "total_sum" + }, + { + "id": "0x55ba3cb11b68-ExecutionPart", + "ExecutionPartConstruct": [ + "0x55ba3cb1b700-ExecutionPartConstruct" + ] + }, + { + "id": "0x55ba3cb11b68-ExecutionPartConstruct" + }, + { + "id": "0x55ba3cb1b700-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55ba3cb1b700-ExecutableConstruct" + }, + { + "id": "0x55ba3cb1b700-ExecutableConstruct", + "variantKey": "OpenMPConstruct", + "OpenMPConstruct": "0x55ba3cb21b20-OpenMPConstruct" + }, + { + "id": "0x55ba3cb21b20-OpenMPConstruct", + "variantKey": "OmpBlockConstruct", + "OmpBlockConstruct": "0x55ba3cb21b20-OmpBlockConstruct" + }, + { + "id": "0x55ba3cb21b20-OmpBlockConstruct", + "OmpBeginDirective": "0x55ba3cb21be0-OmpBeginDirective", + "ExecutionPartConstruct": [ + "0x55ba3cb21ad0-ExecutionPartConstruct" + ], + "OmpEndDirective": "0x55ba3cb21b30-OmpEndDirective" + }, + { + "id": "0x55ba3cb21be0-OmpBeginDirective", + "OmpDirectiveName": "0x55ba3cb21c58-OmpDirectiveName", + "OmpClauseList": "0x55ba3cb21bf8-OmpClauseList", + "Flags": "0x55ba3cb21bf0-Flags" + }, + { + "id": "0x55ba3cb21c58-OmpDirectiveName", + "directive": "parallel" + }, + { + "id": "0x55ba3cb21bf8-OmpClauseList" + }, + { + "id": "0x55ba3cb21bc8-ExecutionPartConstruct" + }, + { + "id": "0x55ba3cb21ad0-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55ba3cb21ad0-ExecutableConstruct" + }, + { + "id": "0x55ba3cb21ad0-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55ba3cb21ad0-Statement" + }, + { + "id": "0x55ba3cb21ad0-Statement", + "statement": "0x55ba3cb21ae0-ActionStmt", + "source": "total_sum = total_sum + 1" + }, + { + "id": "0x55ba3cb21ae0-ActionStmt", + "variantKey": "AssignmentStmt", + "AssignmentStmt": "0x55ba3caf4ce0-AssignmentStmt" + }, + { + "id": "0x55ba3caf4ce0-AssignmentStmt", + "Variable": "0x55ba3caf4dc0-Variable", + "Expr": "0x55ba3caf4cf0-Expr" + }, + { + "id": "0x55ba3caf4dc0-Variable", + "variantKey": "Designator", + "Designator": "0x55ba3cb23340-Designator" + }, + { + "id": "0x55ba3cb23340-Designator", + "variantKey": "DataRef", + "DataRef": "0x55ba3cb23350-DataRef" + }, + { + "id": "0x55ba3cb23350-DataRef", + "variantKey": "Name", + "Name": "0x55ba3cb23350-Name" + }, + { + "id": "0x55ba3cb23350-Name", + "source": "total_sum" + }, + { + "id": "0x55ba3caf4cf0-Expr", + "variantKey": "Add", + "Add": "0x55ba3caf4d10-Add" + }, + { + "id": "0x55ba3caf4d10-Add", + "left": "0x55ba3cb21980-Expr", + "right": "0x55ba3cb21050-Expr", + "op": "ADD" + }, + { + "id": "0x55ba3cb21980-Expr", + "variantKey": "Designator", + "Designator": "0x55ba3cb218c0-Designator" + }, + { + "id": "0x55ba3cb218c0-Designator", + "variantKey": "DataRef", + "DataRef": "0x55ba3cb218d0-DataRef" + }, + { + "id": "0x55ba3cb218d0-DataRef", + "variantKey": "Name", + "Name": "0x55ba3cb218d0-Name" + }, + { + "id": "0x55ba3cb218d0-Name", + "source": "total_sum" + }, + { + "id": "0x55ba3cb21050-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55ba3cb21070-LiteralConstant" + }, + { + "id": "0x55ba3cb21070-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55ba3cb21070-IntLiteralConstant" + }, + { + "id": "0x55ba3cb21070-IntLiteralConstant", + "CharBlock": "1" + }, + { + "id": "0x55ba3cb21b30-OmpEndDirective", + "OmpDirectiveName": "0x55ba3cb21ba8-OmpDirectiveName", + "OmpClauseList": "0x55ba3cb21b48-OmpClauseList", + "Flags": "0x55ba3cb21b40-Flags" + }, + { + "id": "0x55ba3cb21ba8-OmpDirectiveName", + "directive": "parallel" + }, + { + "id": "0x55ba3cb21b48-OmpClauseList" + }, + { + "id": "0x55ba3cb11ae0-Statement", + "statement": "0x55ba3cb11af0-EndProgramStmt", + "source": "end program OPENMP_DEMO" + }, + { + "id": "0x55ba3cb11af0-EndProgramStmt", + "Name": "0x55ba3cb11af0-Name" + }, + { + "id": "0x55ba3cb11af0-Name", + "source": "OPENMP_DEMO" + } + ], + "comments": [], "enums": { - "Fortran::common::CUDADataAttr": ["Constant", "Device", "Managed", "Pinned", "Shared", "Texture", "Unified"], - "Fortran::common::CUDASubprogramAttrs": ["Host", "Device", "HostDevice", "Global", "Grid_Global"], - "Fortran::common::ImportKind": ["Default", "Only", "None", "All"], - "Fortran::common::OmpDependenceKind": ["In", "Out", "Inout", "Inoutset", "Mutexinoutset", "Depobj"], - "Fortran::common::OmpMemoryOrderType": ["Acq_Rel", "Acquire", "Relaxed", "Release", "Seq_Cst"], - "Fortran::common::OpenACCDeviceType": ["Star", "Default", "Nvidia", "Radeon", "Host", "Multicore", "None"], - "Fortran::parser::AccDataModifier::Modifier": ["ReadOnly", "Zero"], - "Fortran::parser::AccessSpec::Kind": ["Public", "Private"], - "Fortran::parser::BindEntity::Kind": ["Object", "Common"], - "Fortran::parser::CompilerDirective::VectorLength::Kind": ["Auto", "Fixed", "Scalable"], - "Fortran::parser::ConnectSpec::CharExpr::Kind": ["Access", "Action", "Asynchronous", "Blank", "Decimal", "Delim", "Encoding", "Form", "Pad", "Position", "Round", "Sign", "Carriagecontrol", "Convert", "Dispose"], - "Fortran::parser::DefinedOperator::IntrinsicOperator": ["Power", "Multiply", "Divide", "Add", "Subtract", "Concat", "LT", "LE", "EQ", "NE", "GE", "GT", "NOT", "AND", "OR", "EQV", "NEQV"], - "Fortran::parser::ImplicitStmt::ImplicitNoneNameSpec": ["External", "Type"], - "Fortran::parser::InquireSpec::CharVar::Kind": ["Access", "Action", "Asynchronous", "Blank", "Decimal", "Delim", "Direct", "Encoding", "Form", "Formatted", "Iomsg", "Name", "Pad", "Position", "Read", "Readwrite", "Round", "Sequential", "Sign", "Stream", "Status", "Unformatted", "Write", "Carriagecontrol", "Convert", "Dispose"], - "Fortran::parser::InquireSpec::IntVar::Kind": ["Iostat", "Nextrec", "Number", "Pos", "Recl", "Size"], - "Fortran::parser::InquireSpec::LogVar::Kind": ["Exist", "Named", "Opened", "Pending"], - "Fortran::parser::IntentSpec::Intent": ["In", "Out", "InOut"], - "Fortran::parser::IoControlSpec::CharExpr::Kind": ["Advance", "Blank", "Decimal", "Delim", "Pad", "Round", "Sign"], - "Fortran::parser::ReductionOperator::Operator": ["Plus", "Multiply", "Max", "Min", "Iand", "Ior", "Ieor", "And", "Or", "Eqv", "Neqv"], - "Fortran::parser::OmpAccessGroup::Value": ["Cgroup"], - "Fortran::parser::OmpAdjustArgsClause::OmpAdjustOp::Value": ["Nothing", "Need_Device_Ptr"], - "Fortran::parser::OmpAlwaysModifier::Value": ["Always"], - "Fortran::parser::OmpAtClause::ActionTime": ["Compilation", "Execution"], - "Fortran::parser::OmpAttachModifier::Value": ["Always", "Never", "Auto"], - "Fortran::parser::OmpAutomapModifier::Value": ["Automap"], - "Fortran::parser::OmpBindClause::Binding": ["Parallel", "Teams", "Thread"], - "Fortran::parser::OmpChunkModifier::Value": ["Simd"], - "Fortran::parser::OmpCloseModifier::Value": ["Close"], - "Fortran::parser::OmpDefaultClause::DataSharingAttribute": ["Private", "Firstprivate", "Shared", "None"], - "Fortran::parser::OmpDefaultmapClause::ImplicitBehavior": ["Alloc", "To", "From", "Tofrom", "Firstprivate", "None", "Default", "Present"], - "Fortran::parser::OmpDeleteModifier::Value": ["Delete"], - "Fortran::parser::OmpDependenceType::Value": ["Sink", "Source"], - "Fortran::parser::OmpDeviceModifier::Value": ["Ancestor", "Device_Num"], - "Fortran::parser::OmpDeviceTypeClause::DeviceTypeDescription": ["Any", "Host", "Nohost"], - "Fortran::parser::OmpDirectiveSpecification::Flag": ["DeprecatedSyntax", "CrossesLabelDo"], - "Fortran::parser::OmpExpectation::Value": ["Present"], - "Fortran::parser::OmpInteropType::Value": ["Target", "Targetsync"], - "Fortran::parser::OmpLastprivateModifier::Value": ["Conditional"], - "Fortran::parser::OmpLinearModifier::Value": ["Ref", "Uval", "Val"], - "Fortran::parser::OmpMapType::Value": ["Alloc", "Delete", "From", "Release", "Storage", "To", "Tofrom"], - "Fortran::parser::OmpMapTypeModifier::Value": ["Always", "Close", "Present", "Ompx_Hold"], - "Fortran::parser::OmpObject::Invalid::Kind": ["BlankCommonBlock"], - "Fortran::parser::OmpOrderClause::Ordering": ["Concurrent"], - "Fortran::parser::OmpOrderingModifier::Value": ["Monotonic", "Nonmonotonic", "Simd"], - "Fortran::parser::OmpOrderModifier::Value": ["Reproducible", "Unconstrained"], - "Fortran::parser::OmpPrescriptiveness::Value": ["Strict"], - "Fortran::parser::OmpPresentModifier::Value": ["Present"], - "Fortran::parser::OmpProcBindClause::AffinityPolicy": ["Close", "Master", "Spread", "Primary"], - "Fortran::parser::OmpReductionModifier::Value": ["Default", "Inscan", "Task"], - "Fortran::parser::OmpRefModifier::Value": ["Ref_Ptee", "Ref_Ptr", "Ref_Ptr_Ptee"], - "Fortran::parser::OmpScheduleClause::Kind": ["Static", "Dynamic", "Guided", "Auto", "Runtime"], - "Fortran::parser::OmpSelfModifier::Value": ["Self"], - "Fortran::parser::OmpSeverityClause::SevLevel": ["Fatal", "Warning"], - "Fortran::parser::OmpThreadsetClause::ThreadsetPolicy": ["Omp_Pool", "Omp_Team"], - "Fortran::parser::OmpTraitSelectorName::Value": ["Arch", "Atomic_Default_Mem_Order", "Condition", "Device_Num", "Extension", "Isa", "Kind", "Requires", "Simd", "Uid", "Vendor"], - "Fortran::parser::OmpTraitSetSelectorName::Value": ["Construct", "Device", "Implementation", "Target_Device", "User"], - "Fortran::parser::OmpVariableCategory::Value": ["Aggregate", "All", "Allocatable", "Pointer", "Scalar"], - "Fortran::parser::OmpxHoldModifier::Value": ["Ompx_Hold"], - "Fortran::parser::ProcedureStmt::Kind": ["ModuleProcedure", "Procedure"], - "Fortran::parser::SavedEntity::Kind": ["Entity", "Common"], - "Fortran::parser::StopStmt::Kind": ["Stop", "ErrorStop"], - "Fortran::parser::UseStmt::ModuleNature": ["Intrinsic", "Non_Intrinsic"] + "Fortran::common::CUDADataAttr": [ + "Constant", + "Device", + "Managed", + "Pinned", + "Shared", + "Texture", + "Unified" + ], + "Fortran::common::CUDASubprogramAttrs": [ + "Host", + "Device", + "HostDevice", + "Global", + "Grid_Global" + ], + "Fortran::common::ImportKind": [ + "Default", + "Only", + "None", + "All" + ], + "Fortran::common::OmpDependenceKind": [ + "In", + "Out", + "Inout", + "Inoutset", + "Mutexinoutset", + "Depobj" + ], + "Fortran::common::OmpMemoryOrderType": [ + "Acq_Rel", + "Acquire", + "Relaxed", + "Release", + "Seq_Cst" + ], + "Fortran::common::OpenACCDeviceType": [ + "Star", + "Default", + "Nvidia", + "Radeon", + "Host", + "Multicore", + "None" + ], + "Fortran::parser::AccDataModifier::Modifier": [ + "ReadOnly", + "Zero" + ], + "Fortran::parser::AccessSpec::Kind": [ + "Public", + "Private" + ], + "Fortran::parser::BindEntity::Kind": [ + "Object", + "Common" + ], + "Fortran::parser::CompilerDirective::VectorLength::Kind": [ + "Auto", + "Fixed", + "Scalable" + ], + "Fortran::parser::ConnectSpec::CharExpr::Kind": [ + "Access", + "Action", + "Asynchronous", + "Blank", + "Decimal", + "Delim", + "Encoding", + "Form", + "Pad", + "Position", + "Round", + "Sign", + "Carriagecontrol", + "Convert", + "Dispose" + ], + "Fortran::parser::DefinedOperator::IntrinsicOperator": [ + "Power", + "Multiply", + "Divide", + "Add", + "Subtract", + "Concat", + "LT", + "LE", + "EQ", + "NE", + "GE", + "GT", + "NOT", + "AND", + "OR", + "EQV", + "NEQV" + ], + "Fortran::parser::ImplicitStmt::ImplicitNoneNameSpec": [ + "External", + "Type" + ], + "Fortran::parser::InquireSpec::CharVar::Kind": [ + "Access", + "Action", + "Asynchronous", + "Blank", + "Decimal", + "Delim", + "Direct", + "Encoding", + "Form", + "Formatted", + "Iomsg", + "Name", + "Pad", + "Position", + "Read", + "Readwrite", + "Round", + "Sequential", + "Sign", + "Stream", + "Status", + "Unformatted", + "Write", + "Carriagecontrol", + "Convert", + "Dispose" + ], + "Fortran::parser::InquireSpec::IntVar::Kind": [ + "Iostat", + "Nextrec", + "Number", + "Pos", + "Recl", + "Size" + ], + "Fortran::parser::InquireSpec::LogVar::Kind": [ + "Exist", + "Named", + "Opened", + "Pending" + ], + "Fortran::parser::IntentSpec::Intent": [ + "In", + "Out", + "InOut" + ], + "Fortran::parser::IoControlSpec::CharExpr::Kind": [ + "Advance", + "Blank", + "Decimal", + "Delim", + "Pad", + "Round", + "Sign" + ], + "Fortran::parser::ReductionOperator::Operator": [ + "Plus", + "Multiply", + "Max", + "Min", + "Iand", + "Ior", + "Ieor", + "And", + "Or", + "Eqv", + "Neqv" + ], + "Fortran::parser::OmpAccessGroup::Value": [ + "Cgroup" + ], + "Fortran::parser::OmpAdjustArgsClause::OmpAdjustOp::Value": [ + "Nothing", + "Need_Device_Ptr" + ], + "Fortran::parser::OmpAlwaysModifier::Value": [ + "Always" + ], + "Fortran::parser::OmpAtClause::ActionTime": [ + "Compilation", + "Execution" + ], + "Fortran::parser::OmpAttachModifier::Value": [ + "Always", + "Never", + "Auto" + ], + "Fortran::parser::OmpAutomapModifier::Value": [ + "Automap" + ], + "Fortran::parser::OmpBindClause::Binding": [ + "Parallel", + "Teams", + "Thread" + ], + "Fortran::parser::OmpChunkModifier::Value": [ + "Simd" + ], + "Fortran::parser::OmpCloseModifier::Value": [ + "Close" + ], + "Fortran::parser::OmpDefaultClause::DataSharingAttribute": [ + "Private", + "Firstprivate", + "Shared", + "None" + ], + "Fortran::parser::OmpDefaultmapClause::ImplicitBehavior": [ + "Alloc", + "To", + "From", + "Tofrom", + "Firstprivate", + "None", + "Default", + "Present" + ], + "Fortran::parser::OmpDeleteModifier::Value": [ + "Delete" + ], + "Fortran::parser::OmpDependenceType::Value": [ + "Sink", + "Source" + ], + "Fortran::parser::OmpDeviceModifier::Value": [ + "Ancestor", + "Device_Num" + ], + "Fortran::parser::OmpDeviceTypeClause::DeviceTypeDescription": [ + "Any", + "Host", + "Nohost" + ], + "Fortran::parser::OmpDirectiveSpecification::Flag": [ + "DeprecatedSyntax", + "CrossesLabelDo" + ], + "Fortran::parser::OmpExpectation::Value": [ + "Present" + ], + "Fortran::parser::OmpInteropType::Value": [ + "Target", + "Targetsync" + ], + "Fortran::parser::OmpLastprivateModifier::Value": [ + "Conditional" + ], + "Fortran::parser::OmpLinearModifier::Value": [ + "Ref", + "Uval", + "Val" + ], + "Fortran::parser::OmpMapType::Value": [ + "Alloc", + "Delete", + "From", + "Release", + "Storage", + "To", + "Tofrom" + ], + "Fortran::parser::OmpMapTypeModifier::Value": [ + "Always", + "Close", + "Present", + "Ompx_Hold" + ], + "Fortran::parser::OmpObject::Invalid::Kind": [ + "BlankCommonBlock" + ], + "Fortran::parser::OmpOrderClause::Ordering": [ + "Concurrent" + ], + "Fortran::parser::OmpOrderingModifier::Value": [ + "Monotonic", + "Nonmonotonic", + "Simd" + ], + "Fortran::parser::OmpOrderModifier::Value": [ + "Reproducible", + "Unconstrained" + ], + "Fortran::parser::OmpPrescriptiveness::Value": [ + "Strict" + ], + "Fortran::parser::OmpPresentModifier::Value": [ + "Present" + ], + "Fortran::parser::OmpProcBindClause::AffinityPolicy": [ + "Close", + "Master", + "Spread", + "Primary" + ], + "Fortran::parser::OmpReductionModifier::Value": [ + "Default", + "Inscan", + "Task" + ], + "Fortran::parser::OmpRefModifier::Value": [ + "Ref_Ptee", + "Ref_Ptr", + "Ref_Ptr_Ptee" + ], + "Fortran::parser::OmpScheduleClause::Kind": [ + "Static", + "Dynamic", + "Guided", + "Auto", + "Runtime" + ], + "Fortran::parser::OmpSelfModifier::Value": [ + "Self" + ], + "Fortran::parser::OmpSeverityClause::SevLevel": [ + "Fatal", + "Warning" + ], + "Fortran::parser::OmpThreadsetClause::ThreadsetPolicy": [ + "Omp_Pool", + "Omp_Team" + ], + "Fortran::parser::OmpTraitSelectorName::Value": [ + "Arch", + "Atomic_Default_Mem_Order", + "Condition", + "Device_Num", + "Extension", + "Isa", + "Kind", + "Requires", + "Simd", + "Uid", + "Vendor" + ], + "Fortran::parser::OmpTraitSetSelectorName::Value": [ + "Construct", + "Device", + "Implementation", + "Target_Device", + "User" + ], + "Fortran::parser::OmpVariableCategory::Value": [ + "Aggregate", + "All", + "Allocatable", + "Pointer", + "Scalar" + ], + "Fortran::parser::OmpxHoldModifier::Value": [ + "Ompx_Hold" + ], + "Fortran::parser::ProcedureStmt::Kind": [ + "ModuleProcedure", + "Procedure" + ], + "Fortran::parser::SavedEntity::Kind": [ + "Entity", + "Common" + ], + "Fortran::parser::StopStmt::Kind": [ + "Stop", + "ErrorStop" + ], + "Fortran::parser::UseStmt::ModuleNature": [ + "Intrinsic", + "Non_Intrinsic" + ] } -} \ No newline at end of file +} diff --git a/FortranParser/resources-test/fortran/parser/omp/omp_clause.expected.f90 b/FortranParser/resources-test/fortran/parser/omp/omp_clause.expected.f90 index 97f53ebb..55d43c7d 100644 --- a/FortranParser/resources-test/fortran/parser/omp/omp_clause.expected.f90 +++ b/FortranParser/resources-test/fortran/parser/omp/omp_clause.expected.f90 @@ -1,5 +1,5 @@ PROGRAM OPENMP_DEMO - USE omp_lib + USE :: omp_lib INTEGER :: i, thread_id, num_threads, total_sum INTEGER :: shared_counter = 0 diff --git a/FortranParser/resources-test/fortran/parser/omp/omp_clause.json b/FortranParser/resources-test/fortran/parser/omp/omp_clause.json index 7a0f36ac..386d8382 100644 --- a/FortranParser/resources-test/fortran/parser/omp/omp_clause.json +++ b/FortranParser/resources-test/fortran/parser/omp/omp_clause.json @@ -1,600 +1,929 @@ -{"nodes": [ - { - "id": "0x7ffff2064640-Program", - "ProgramUnit": [ - "0x7ffff20a0970-ProgramUnit"] - }, - { - "id": "0x7ffff20a0970-ProgramUnit", - "variantKey": "MainProgram", - "MainProgram": "0x7ffff208fe70-MainProgram" - }, - { - "id": "0x7ffff208fe70-MainProgram", - "Statement": "0x7ffff208ffb8-Statement", - "SpecificationPart": "0x7ffff208ff10-SpecificationPart", - "ExecutionPart": "0x7ffff208fef8-ExecutionPart", - "Statement": "0x7ffff208fe70-Statement" - }, - { - "id": "0x7ffff208ffb8-Statement", - "statement": "0x7ffff208ffc8-ProgramStmt", - "source": "program OPENMP_DEMO" - }, - { - "id": "0x7ffff208ffc8-ProgramStmt", - "Name": "0x7ffff208ffc8-Name" - }, - { - "id": "0x7ffff208ffc8-Name", - "source": "OPENMP_DEMO" - }, - { - "id": "0x7ffff208ff10-SpecificationPart", - "Statement": [ - "0x7ffff20994b0-Statement"], - "ImplicitPart": "0x7ffff208ff28-ImplicitPart", - "DeclarationConstruct": [ - "0x7ffff20718b0-DeclarationConstruct", - "0x7ffff20714e0-DeclarationConstruct"] - }, - { - "id": "0x7ffff20994b0-Statement", - "statement": "0x7ffff2098ac0-UseStmt", - "source": "use omp_lib" - }, - { - "id": "0x7ffff2098ac0-UseStmt", - "moduleName": "0x7ffff2098ac8-Name" - }, - { - "id": "0x7ffff2098ac8-Name", - "source": "omp_lib" - }, - { - "id": "0x7ffff208ff28-ImplicitPart" - }, - { - "id": "0x7ffff20718b0-DeclarationConstruct", - "variantKey": "SpecificationConstruct", - "SpecificationConstruct": "0x7ffff20718b0-SpecificationConstruct" - }, - { - "id": "0x7ffff20718b0-SpecificationConstruct", - "variantKey": "Statement", - "Statement": "0x7ffff20718b0-Statement" - }, - { - "id": "0x7ffff20718b0-Statement", - "statement": "0x7ffff209e7f0-TypeDeclarationStmt", - "source": "integer :: i, thread_id, num_threads, total_sum" - }, - { - "id": "0x7ffff209e7f0-TypeDeclarationStmt", - "DeclarationTypeSpec": "0x7ffff209e820-DeclarationTypeSpec", - "EntityDecl": [ - "0x7ffff209ebd0-EntityDecl", - "0x7ffff209e900-EntityDecl", - "0x7ffff209e9f0-EntityDecl", - "0x7ffff209eae0-EntityDecl"] - }, - { - "id": "0x7ffff209e820-DeclarationTypeSpec", - "variantKey": "IntrinsicTypeSpec", - "IntrinsicTypeSpec": "0x7ffff209e820-IntrinsicTypeSpec" - }, - { - "id": "0x7ffff209e820-IntrinsicTypeSpec", - "variantKey": "IntegerTypeSpec", - "IntegerTypeSpec": "0x7ffff209e820-IntegerTypeSpec" - }, - { - "id": "0x7ffff209e820-IntegerTypeSpec" - }, - { - "id": "0x7ffff209ebd0-EntityDecl", - "Name": "0x7ffff209ec88-Name" - }, - { - "id": "0x7ffff209ec88-Name", - "source": "i" - }, - { - "id": "0x7ffff209e900-EntityDecl", - "Name": "0x7ffff209e9b8-Name" - }, - { - "id": "0x7ffff209e9b8-Name", - "source": "thread_id" - }, - { - "id": "0x7ffff209e9f0-EntityDecl", - "Name": "0x7ffff209eaa8-Name" - }, - { - "id": "0x7ffff209eaa8-Name", - "source": "num_threads" - }, - { - "id": "0x7ffff209eae0-EntityDecl", - "Name": "0x7ffff209eb98-Name" - }, - { - "id": "0x7ffff209eb98-Name", - "source": "total_sum" - }, - { - "id": "0x7ffff20714e0-DeclarationConstruct", - "variantKey": "SpecificationConstruct", - "SpecificationConstruct": "0x7ffff20714e0-SpecificationConstruct" - }, - { - "id": "0x7ffff20714e0-SpecificationConstruct", - "variantKey": "Statement", - "Statement": "0x7ffff20714e0-Statement" - }, - { - "id": "0x7ffff20714e0-Statement", - "statement": "0x7ffff209e870-TypeDeclarationStmt", - "source": "integer :: shared_counter = 0" - }, - { - "id": "0x7ffff209e870-TypeDeclarationStmt", - "DeclarationTypeSpec": "0x7ffff209e8a0-DeclarationTypeSpec", - "EntityDecl": [ - "0x7ffff209edb0-EntityDecl"] - }, - { - "id": "0x7ffff209e8a0-DeclarationTypeSpec", - "variantKey": "IntrinsicTypeSpec", - "IntrinsicTypeSpec": "0x7ffff209e8a0-IntrinsicTypeSpec" - }, - { - "id": "0x7ffff209e8a0-IntrinsicTypeSpec", - "variantKey": "IntegerTypeSpec", - "IntegerTypeSpec": "0x7ffff209e8a0-IntegerTypeSpec" - }, - { - "id": "0x7ffff209e8a0-IntegerTypeSpec" - }, - { - "id": "0x7ffff209edb0-EntityDecl", - "Name": "0x7ffff209ee68-Name", - "Initialization": "0x7ffff209edb0-Initialization" - }, - { - "id": "0x7ffff209ee68-Name", - "source": "shared_counter" - }, - { - "id": "0x7ffff209edb0-Initialization", - "variantKey": "Expr", - "Expr": "0x7ffff2005790-Expr" - }, - { - "id": "0x7ffff2005790-Expr", - "variantKey": "LiteralConstant", - "LiteralConstant": "0x7ffff20057b0-LiteralConstant" - }, - { - "id": "0x7ffff20057b0-LiteralConstant", - "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x7ffff20057b0-IntLiteralConstant" - }, - { - "id": "0x7ffff20057b0-IntLiteralConstant", - "CharBlock": "0" - }, - { - "id": "0x7ffff208fef8-ExecutionPart", - "ExecutionPartConstruct": [ - "0x7ffff20a00f0-ExecutionPartConstruct"] - }, - { - "id": "0x7ffff208fef8-ExecutionPartConstruct" - }, - { - "id": "0x7ffff20a00f0-ExecutionPartConstruct", - "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x7ffff20a00f0-ExecutableConstruct" - }, - { - "id": "0x7ffff20a00f0-ExecutableConstruct", - "variantKey": "OpenMPConstruct", - "OpenMPConstruct": "0x7ffff20a0460-OpenMPConstruct" - }, - { - "id": "0x7ffff20a0460-OpenMPConstruct", - "variantKey": "OmpBlockConstruct", - "OmpBlockConstruct": "0x7ffff20a0460-OmpBlockConstruct" - }, - { - "id": "0x7ffff20a0460-OmpBlockConstruct", - "OmpBeginDirective": "0x7ffff20a0520-OmpBeginDirective", - "ExecutionPartConstruct": [ - "0x7ffff20a0090-ExecutionPartConstruct"], - "OmpEndDirective": "0x7ffff20a0470-OmpEndDirective" - }, - { - "id": "0x7ffff20a0520-OmpBeginDirective", - "OmpDirectiveName": "0x7ffff20a0598-OmpDirectiveName", - "OmpClauseList": "0x7ffff20a0538-OmpClauseList", - "Flags = {}": "0x7ffff20a0530-Flags = {}" - }, - { - "id": "0x7ffff20a0598-OmpDirectiveName", - "directive": "parallel" - }, - { - "id": "0x7ffff20a0538-OmpClauseList", - "OmpClause": [ - "0x7ffff209fab0-OmpClause", - "0x7ffff209fcd0-OmpClause"] - }, - { - "id": "0x7ffff209fab0-OmpClause", - "variantKey": "Private", - "Private": "0x7ffff209fac0-Private" - }, - { - "id": "0x7ffff209fac0-Private", - "OmpObjectList": "0x7ffff209fac0-OmpObjectList", - "kind": "PRIVATE" - }, - { - "id": "0x7ffff209fac0-OmpObjectList", - "OmpObject": [ - "0x7ffff20a7be0-OmpObject"] - }, - { - "id": "0x7ffff20a7be0-OmpObject", - "variantKey": "Designator", - "Designator": "0x7ffff20a7be0-Designator" - }, - { - "id": "0x7ffff20a7be0-Designator", - "variantKey": "DataRef", - "DataRef": "0x7ffff20a7bf0-DataRef" - }, - { - "id": "0x7ffff20a7bf0-DataRef", - "variantKey": "Name", - "Name": "0x7ffff20a7bf0-Name" - }, - { - "id": "0x7ffff20a7bf0-Name", - "source": "i" - }, - { - "id": "0x7ffff209fcd0-OmpClause", - "variantKey": "Shared", - "Shared": "0x7ffff209fce0-Shared" - }, - { - "id": "0x7ffff209fce0-Shared", - "OmpObjectList": "0x7ffff209fce0-OmpObjectList", - "kind": "SHARED" - }, - { - "id": "0x7ffff209fce0-OmpObjectList", - "OmpObject": [ - "0x7ffff2099970-OmpObject"] - }, - { - "id": "0x7ffff2099970-OmpObject", - "variantKey": "Designator", - "Designator": "0x7ffff2099970-Designator" - }, - { - "id": "0x7ffff2099970-Designator", - "variantKey": "DataRef", - "DataRef": "0x7ffff2099980-DataRef" - }, - { - "id": "0x7ffff2099980-DataRef", - "variantKey": "Name", - "Name": "0x7ffff2099980-Name" - }, - { - "id": "0x7ffff2099980-Name", - "source": "num_threads" - }, - { - "id": "0x7ffff20a0508-ExecutionPartConstruct" - }, - { - "id": "0x7ffff20a0090-ExecutionPartConstruct", - "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x7ffff20a0090-ExecutableConstruct" - }, - { - "id": "0x7ffff20a0090-ExecutableConstruct", - "variantKey": "OpenMPConstruct", - "OpenMPConstruct": "0x7ffff20a02b0-OpenMPConstruct" - }, - { - "id": "0x7ffff20a02b0-OpenMPConstruct", - "variantKey": "OpenMPLoopConstruct", - "OpenMPLoopConstruct": "0x7ffff20a02b0-OpenMPLoopConstruct" - }, - { - "id": "0x7ffff20a02b0-OpenMPLoopConstruct", - "OmpBeginLoopDirective": "0x7ffff20a0370-OmpBeginLoopDirective", - "ExecutionPartConstruct": [ - "0x7ffff209fc10-ExecutionPartConstruct"], - "OmpEndLoopDirective": "0x7ffff20a02c0-OmpEndLoopDirective" - }, - { - "id": "0x7ffff20a0370-OmpBeginLoopDirective", - "OmpDirectiveName": "0x7ffff20a03e8-OmpDirectiveName", - "OmpClauseList": "0x7ffff20a0388-OmpClauseList", - "Flags = {}": "0x7ffff20a0380-Flags = {}" - }, - { - "id": "0x7ffff20a03e8-OmpDirectiveName", - "directive": "do" - }, - { - "id": "0x7ffff20a0388-OmpClauseList" - }, - { - "id": "0x7ffff20a0358-ExecutionPartConstruct" - }, - { - "id": "0x7ffff209fc10-ExecutionPartConstruct", - "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x7ffff209fc10-ExecutableConstruct" - }, - { - "id": "0x7ffff209fc10-ExecutableConstruct", - "variantKey": "DoConstruct", - "DoConstruct": "0x7ffff209a560-DoConstruct" - }, - { - "id": "0x7ffff209a560-DoConstruct", - "Statement": "0x7ffff209a5b8-Statement", - "ExecutionPartConstruct": [ - "0x7ffff20a0030-ExecutionPartConstruct"], - "Statement": "0x7ffff209a560-Statement" - }, - { - "id": "0x7ffff209a5b8-Statement", - "statement": "0x7ffff209a5c8-NonLabelDoStmt", - "source": "do i = 1, 100" - }, - { - "id": "0x7ffff209a5c8-NonLabelDoStmt", - "LoopControl": "0x7ffff209a5c8-LoopControl" - }, - { - "id": "0x7ffff209a5c8-LoopControl", - "variantKey": "LoopBounds", - "LoopBounds": "0x7ffff209a5c8-LoopBounds" - }, - { - "id": "0x7ffff209a5c8-LoopBounds", - "var": "0x7ffff209a5c8-Name", - "lower": "0x7ffff209eff0-Expr", - "upper": "0x7ffff209fdc0-Expr" - }, - { - "id": "0x7ffff209a5c8-Name", - "source": "i" - }, - { - "id": "0x7ffff209eff0-Expr", - "variantKey": "LiteralConstant", - "LiteralConstant": "0x7ffff209f010-LiteralConstant" - }, - { - "id": "0x7ffff209f010-LiteralConstant", - "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x7ffff209f010-IntLiteralConstant" - }, - { - "id": "0x7ffff209f010-IntLiteralConstant", - "CharBlock": "1" - }, - { - "id": "0x7ffff209fdc0-Expr", - "variantKey": "LiteralConstant", - "LiteralConstant": "0x7ffff209fde0-LiteralConstant" - }, - { - "id": "0x7ffff209fde0-LiteralConstant", - "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x7ffff209fde0-IntLiteralConstant" - }, - { - "id": "0x7ffff209fde0-IntLiteralConstant", - "CharBlock": "100" - }, - { - "id": "0x7ffff209a5a0-ExecutionPartConstruct" - }, - { - "id": "0x7ffff20a0030-ExecutionPartConstruct", - "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x7ffff20a0030-ExecutableConstruct" - }, - { - "id": "0x7ffff20a0030-ExecutableConstruct", - "variantKey": "Statement", - "Statement": "0x7ffff20a0030-Statement" - }, - { - "id": "0x7ffff20a0030-Statement", - "statement": "0x7ffff20a0040-ActionStmt", - "source": "total_sum = total_sum" - }, - { - "id": "0x7ffff20a0040-ActionStmt", - "variantKey": "AssignmentStmt", - "AssignmentStmt": "0x7ffff20722e0-AssignmentStmt" - }, - { - "id": "0x7ffff20722e0-AssignmentStmt", - "Variable": "0x7ffff20723c0-Variable", - "Expr": "0x7ffff20722f0-Expr" - }, - { - "id": "0x7ffff20723c0-Variable", - "variantKey": "Designator", - "Designator": "0x7ffff209fc60-Designator" - }, - { - "id": "0x7ffff209fc60-Designator", - "variantKey": "DataRef", - "DataRef": "0x7ffff209fc70-DataRef" - }, - { - "id": "0x7ffff209fc70-DataRef", - "variantKey": "Name", - "Name": "0x7ffff209fc70-Name" - }, - { - "id": "0x7ffff209fc70-Name", - "source": "total_sum" - }, - { - "id": "0x7ffff20722f0-Expr", - "variantKey": "Designator", - "Designator": "0x7ffff20a1160-Designator" - }, - { - "id": "0x7ffff20a1160-Designator", - "variantKey": "DataRef", - "DataRef": "0x7ffff20a1170-DataRef" - }, - { - "id": "0x7ffff20a1170-DataRef", - "variantKey": "Name", - "Name": "0x7ffff20a1170-Name" - }, - { - "id": "0x7ffff20a1170-Name", - "source": "total_sum" - }, - { - "id": "0x7ffff209a560-Statement", - "statement": "0x7ffff209a570-EndDoStmt", - "source": "end do" - }, - { - "id": "0x7ffff209a570-EndDoStmt" - }, - { - "id": "0x7ffff20a02c0-OmpEndLoopDirective", - "OmpDirectiveName": "0x7ffff20a0338-OmpDirectiveName", - "OmpClauseList": "0x7ffff20a02d8-OmpClauseList", - "Flags = {}": "0x7ffff20a02d0-Flags = {}" - }, - { - "id": "0x7ffff20a0338-OmpDirectiveName", - "directive": "do" - }, - { - "id": "0x7ffff20a02d8-OmpClauseList", - "OmpClause": [ - "0x7ffff20a01c0-OmpClause"] - }, - { - "id": "0x7ffff20a01c0-OmpClause", - "variantKey": "Nowait", - "Nowait": "0x7ffff20a01d0-Nowait" - }, - { - "id": "0x7ffff20a01d0-Nowait", - "kind": "NOWAIT" - }, - { - "id": "0x7ffff20a0470-OmpEndDirective", - "OmpDirectiveName": "0x7ffff20a04e8-OmpDirectiveName", - "OmpClauseList": "0x7ffff20a0488-OmpClauseList", - "Flags = {}": "0x7ffff20a0480-Flags = {}" - }, - { - "id": "0x7ffff20a04e8-OmpDirectiveName", - "directive": "parallel" - }, - { - "id": "0x7ffff20a0488-OmpClauseList" - }, - { - "id": "0x7ffff208fe70-Statement", - "statement": "0x7ffff208fe80-EndProgramStmt", - "source": "end program OPENMP_DEMO" - }, - { - "id": "0x7ffff208fe80-EndProgramStmt", - "Name": "0x7ffff208fe80-Name" - }, - { - "id": "0x7ffff208fe80-Name", - "source": "OPENMP_DEMO" - }], +{ + "fileExtension": "f90", + "nodes": [ + { + "id": "0x55f3007a1f00-Program", + "ProgramUnit": [ + "0x55f3007de400-ProgramUnit" + ] + }, + { + "id": "0x55f3007de400-ProgramUnit", + "variantKey": "MainProgram", + "MainProgram": "0x55f3007cd5d0-MainProgram" + }, + { + "id": "0x55f3007cd5d0-MainProgram", + "Statement": "0x55f3007cd718-Statement", + "SpecificationPart": "0x55f3007cd670-SpecificationPart", + "ExecutionPart": "0x55f3007cd658-ExecutionPart", + "Statement": "0x55f3007cd5d0-Statement" + }, + { + "id": "0x55f3007cd718-Statement", + "statement": "0x55f3007cd728-ProgramStmt", + "source": "program OPENMP_DEMO" + }, + { + "id": "0x55f3007cd728-ProgramStmt", + "Name": "0x55f3007cd728-Name" + }, + { + "id": "0x55f3007cd728-Name", + "source": "OPENMP_DEMO" + }, + { + "id": "0x55f3007cd670-SpecificationPart", + "Statement": [ + "0x55f3007d6cf0-Statement" + ], + "ImplicitPart": "0x55f3007cd688-ImplicitPart", + "DeclarationConstruct": [ + "0x55f3007af170-DeclarationConstruct", + "0x55f3007aeda0-DeclarationConstruct" + ] + }, + { + "id": "0x55f3007d6cf0-Statement", + "statement": "0x55f3007e5950-UseStmt", + "source": "use omp_lib" + }, + { + "id": "0x55f3007e5950-UseStmt", + "moduleName": "0x55f3007e5958-Name", + "variantKey": "Rename", + "Rename": [] + }, + { + "id": "0x55f3007e5958-Name", + "source": "omp_lib" + }, + { + "id": "0x55f3007cd688-ImplicitPart" + }, + { + "id": "0x55f3007af170-DeclarationConstruct", + "variantKey": "SpecificationConstruct", + "SpecificationConstruct": "0x55f3007af170-SpecificationConstruct" + }, + { + "id": "0x55f3007af170-SpecificationConstruct", + "variantKey": "Statement", + "Statement": "0x55f3007af170-Statement" + }, + { + "id": "0x55f3007af170-Statement", + "statement": "0x55f3007dc220-TypeDeclarationStmt", + "source": "integer :: i, thread_id, num_threads, total_sum" + }, + { + "id": "0x55f3007dc220-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x55f3007dc250-DeclarationTypeSpec", + "EntityDecl": [ + "0x55f3007dc600-EntityDecl", + "0x55f3007dc330-EntityDecl", + "0x55f3007dc420-EntityDecl", + "0x55f3007dc510-EntityDecl" + ] + }, + { + "id": "0x55f3007dc250-DeclarationTypeSpec", + "variantKey": "IntrinsicTypeSpec", + "IntrinsicTypeSpec": "0x55f3007dc250-IntrinsicTypeSpec" + }, + { + "id": "0x55f3007dc250-IntrinsicTypeSpec", + "variantKey": "IntegerTypeSpec", + "IntegerTypeSpec": "0x55f3007dc250-IntegerTypeSpec" + }, + { + "id": "0x55f3007dc250-IntegerTypeSpec" + }, + { + "id": "0x55f3007dc600-EntityDecl", + "Name": "0x55f3007dc6b8-Name" + }, + { + "id": "0x55f3007dc6b8-Name", + "source": "i" + }, + { + "id": "0x55f3007dc330-EntityDecl", + "Name": "0x55f3007dc3e8-Name" + }, + { + "id": "0x55f3007dc3e8-Name", + "source": "thread_id" + }, + { + "id": "0x55f3007dc420-EntityDecl", + "Name": "0x55f3007dc4d8-Name" + }, + { + "id": "0x55f3007dc4d8-Name", + "source": "num_threads" + }, + { + "id": "0x55f3007dc510-EntityDecl", + "Name": "0x55f3007dc5c8-Name" + }, + { + "id": "0x55f3007dc5c8-Name", + "source": "total_sum" + }, + { + "id": "0x55f3007aeda0-DeclarationConstruct", + "variantKey": "SpecificationConstruct", + "SpecificationConstruct": "0x55f3007aeda0-SpecificationConstruct" + }, + { + "id": "0x55f3007aeda0-SpecificationConstruct", + "variantKey": "Statement", + "Statement": "0x55f3007aeda0-Statement" + }, + { + "id": "0x55f3007aeda0-Statement", + "statement": "0x55f3007dc2a0-TypeDeclarationStmt", + "source": "integer :: shared_counter = 0" + }, + { + "id": "0x55f3007dc2a0-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x55f3007dc2d0-DeclarationTypeSpec", + "EntityDecl": [ + "0x55f3007dc7e0-EntityDecl" + ] + }, + { + "id": "0x55f3007dc2d0-DeclarationTypeSpec", + "variantKey": "IntrinsicTypeSpec", + "IntrinsicTypeSpec": "0x55f3007dc2d0-IntrinsicTypeSpec" + }, + { + "id": "0x55f3007dc2d0-IntrinsicTypeSpec", + "variantKey": "IntegerTypeSpec", + "IntegerTypeSpec": "0x55f3007dc2d0-IntegerTypeSpec" + }, + { + "id": "0x55f3007dc2d0-IntegerTypeSpec" + }, + { + "id": "0x55f3007dc7e0-EntityDecl", + "Name": "0x55f3007dc898-Name", + "Initialization": "0x55f3007dc7e0-Initialization" + }, + { + "id": "0x55f3007dc898-Name", + "source": "shared_counter" + }, + { + "id": "0x55f3007dc7e0-Initialization", + "variantKey": "Expr", + "Expr": "0x55f300741790-Expr" + }, + { + "id": "0x55f300741790-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55f3007417b0-LiteralConstant" + }, + { + "id": "0x55f3007417b0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55f3007417b0-IntLiteralConstant" + }, + { + "id": "0x55f3007417b0-IntLiteralConstant", + "CharBlock": "0" + }, + { + "id": "0x55f3007cd658-ExecutionPart", + "ExecutionPartConstruct": [ + "0x55f3007dd780-ExecutionPartConstruct" + ] + }, + { + "id": "0x55f3007cd658-ExecutionPartConstruct" + }, + { + "id": "0x55f3007dd780-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55f3007dd780-ExecutableConstruct" + }, + { + "id": "0x55f3007dd780-ExecutableConstruct", + "variantKey": "OpenMPConstruct", + "OpenMPConstruct": "0x55f3007ddb90-OpenMPConstruct" + }, + { + "id": "0x55f3007ddb90-OpenMPConstruct", + "variantKey": "OmpBlockConstruct", + "OmpBlockConstruct": "0x55f3007ddb90-OmpBlockConstruct" + }, + { + "id": "0x55f3007ddb90-OmpBlockConstruct", + "OmpBeginDirective": "0x55f3007ddc50-OmpBeginDirective", + "ExecutionPartConstruct": [ + "0x55f3007dd720-ExecutionPartConstruct" + ], + "OmpEndDirective": "0x55f3007ddba0-OmpEndDirective" + }, + { + "id": "0x55f3007ddc50-OmpBeginDirective", + "OmpDirectiveName": "0x55f3007ddcc8-OmpDirectiveName", + "OmpClauseList": "0x55f3007ddc68-OmpClauseList", + "Flags": "0x55f3007ddc60-Flags" + }, + { + "id": "0x55f3007ddcc8-OmpDirectiveName", + "directive": "parallel" + }, + { + "id": "0x55f3007ddc68-OmpClauseList", + "OmpClause": [ + "0x55f3007dd240-OmpClause", + "0x55f3007dd3c0-OmpClause" + ] + }, + { + "id": "0x55f3007dd240-OmpClause", + "variantKey": "Private", + "Private": "0x55f3007dd250-Private" + }, + { + "id": "0x55f3007dd250-Private", + "OmpObjectList": "0x55f3007dd250-OmpObjectList", + "kind": "PRIVATE" + }, + { + "id": "0x55f3007dd250-OmpObjectList", + "OmpObject": [ + "0x55f3007d7350-OmpObject" + ] + }, + { + "id": "0x55f3007d7350-OmpObject", + "variantKey": "Designator", + "Designator": "0x55f3007d7350-Designator" + }, + { + "id": "0x55f3007d7350-Designator", + "variantKey": "DataRef", + "DataRef": "0x55f3007d7360-DataRef" + }, + { + "id": "0x55f3007d7360-DataRef", + "variantKey": "Name", + "Name": "0x55f3007d7360-Name" + }, + { + "id": "0x55f3007d7360-Name", + "source": "i" + }, + { + "id": "0x55f3007dd3c0-OmpClause", + "variantKey": "Shared", + "Shared": "0x55f3007dd3d0-Shared" + }, + { + "id": "0x55f3007dd3d0-Shared", + "OmpObjectList": "0x55f3007dd3d0-OmpObjectList", + "kind": "SHARED" + }, + { + "id": "0x55f3007dd3d0-OmpObjectList", + "OmpObject": [ + "0x55f3007df5f0-OmpObject" + ] + }, + { + "id": "0x55f3007df5f0-OmpObject", + "variantKey": "Designator", + "Designator": "0x55f3007df5f0-Designator" + }, + { + "id": "0x55f3007df5f0-Designator", + "variantKey": "DataRef", + "DataRef": "0x55f3007df600-DataRef" + }, + { + "id": "0x55f3007df600-DataRef", + "variantKey": "Name", + "Name": "0x55f3007df600-Name" + }, + { + "id": "0x55f3007df600-Name", + "source": "num_threads" + }, + { + "id": "0x55f3007ddc38-ExecutionPartConstruct" + }, + { + "id": "0x55f3007dd720-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55f3007dd720-ExecutableConstruct" + }, + { + "id": "0x55f3007dd720-ExecutableConstruct", + "variantKey": "OpenMPConstruct", + "OpenMPConstruct": "0x55f3007dd940-OpenMPConstruct" + }, + { + "id": "0x55f3007dd940-OpenMPConstruct", + "variantKey": "OpenMPLoopConstruct", + "OpenMPLoopConstruct": "0x55f3007dd940-OpenMPLoopConstruct" + }, + { + "id": "0x55f3007dd940-OpenMPLoopConstruct", + "OmpBeginLoopDirective": "0x55f3007dda00-OmpBeginLoopDirective", + "ExecutionPartConstruct": [ + "0x55f3007de6a0-ExecutionPartConstruct" + ], + "OmpEndLoopDirective": "0x55f3007dd950-OmpEndLoopDirective" + }, + { + "id": "0x55f3007dda00-OmpBeginLoopDirective", + "OmpDirectiveName": "0x55f3007dda78-OmpDirectiveName", + "OmpClauseList": "0x55f3007dda18-OmpClauseList", + "Flags": "0x55f3007dda10-Flags" + }, + { + "id": "0x55f3007dda78-OmpDirectiveName", + "directive": "do" + }, + { + "id": "0x55f3007dda18-OmpClauseList" + }, + { + "id": "0x55f3007dd9e8-ExecutionPartConstruct" + }, + { + "id": "0x55f3007de6a0-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55f3007de6a0-ExecutableConstruct" + }, + { + "id": "0x55f3007de6a0-ExecutableConstruct", + "variantKey": "DoConstruct", + "DoConstruct": "0x55f300757260-DoConstruct" + }, + { + "id": "0x55f300757260-DoConstruct", + "Statement": "0x55f3007572b8-Statement", + "ExecutionPartConstruct": [ + "0x55f3007dec90-ExecutionPartConstruct" + ], + "Statement": "0x55f300757260-Statement" + }, + { + "id": "0x55f3007572b8-Statement", + "statement": "0x55f3007572c8-NonLabelDoStmt", + "source": "do i = 1, 100" + }, + { + "id": "0x55f3007572c8-NonLabelDoStmt", + "LoopControl": "0x55f3007572c8-LoopControl" + }, + { + "id": "0x55f3007572c8-LoopControl", + "variantKey": "LoopBounds", + "LoopBounds": "0x55f3007572c8-LoopBounds" + }, + { + "id": "0x55f3007572c8-LoopBounds", + "var": "0x55f3007572c8-Name", + "lower": "0x55f3007dca20-Expr", + "upper": "0x55f3007dd4b0-Expr" + }, + { + "id": "0x55f3007572c8-Name", + "source": "i" + }, + { + "id": "0x55f3007dca20-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55f3007dca40-LiteralConstant" + }, + { + "id": "0x55f3007dca40-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55f3007dca40-IntLiteralConstant" + }, + { + "id": "0x55f3007dca40-IntLiteralConstant", + "CharBlock": "1" + }, + { + "id": "0x55f3007dd4b0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55f3007dd4d0-LiteralConstant" + }, + { + "id": "0x55f3007dd4d0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55f3007dd4d0-IntLiteralConstant" + }, + { + "id": "0x55f3007dd4d0-IntLiteralConstant", + "CharBlock": "100" + }, + { + "id": "0x55f3007572a0-ExecutionPartConstruct" + }, + { + "id": "0x55f3007dec90-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55f3007dec90-ExecutableConstruct" + }, + { + "id": "0x55f3007dec90-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55f3007dec90-Statement" + }, + { + "id": "0x55f3007dec90-Statement", + "statement": "0x55f3007deca0-ActionStmt", + "source": "total_sum = total_sum" + }, + { + "id": "0x55f3007deca0-ActionStmt", + "variantKey": "AssignmentStmt", + "AssignmentStmt": "0x55f3007afce0-AssignmentStmt" + }, + { + "id": "0x55f3007afce0-AssignmentStmt", + "Variable": "0x55f3007afdc0-Variable", + "Expr": "0x55f3007afcf0-Expr" + }, + { + "id": "0x55f3007afdc0-Variable", + "variantKey": "Designator", + "Designator": "0x55f3007d67e0-Designator" + }, + { + "id": "0x55f3007d67e0-Designator", + "variantKey": "DataRef", + "DataRef": "0x55f3007d67f0-DataRef" + }, + { + "id": "0x55f3007d67f0-DataRef", + "variantKey": "Name", + "Name": "0x55f3007d67f0-Name" + }, + { + "id": "0x55f3007d67f0-Name", + "source": "total_sum" + }, + { + "id": "0x55f3007afcf0-Expr", + "variantKey": "Designator", + "Designator": "0x55f3007d7820-Designator" + }, + { + "id": "0x55f3007d7820-Designator", + "variantKey": "DataRef", + "DataRef": "0x55f3007d7830-DataRef" + }, + { + "id": "0x55f3007d7830-DataRef", + "variantKey": "Name", + "Name": "0x55f3007d7830-Name" + }, + { + "id": "0x55f3007d7830-Name", + "source": "total_sum" + }, + { + "id": "0x55f300757260-Statement", + "statement": "0x55f300757270-EndDoStmt", + "source": "end do" + }, + { + "id": "0x55f300757270-EndDoStmt" + }, + { + "id": "0x55f3007dd950-OmpEndLoopDirective", + "OmpDirectiveName": "0x55f3007dd9c8-OmpDirectiveName", + "OmpClauseList": "0x55f3007dd968-OmpClauseList", + "Flags": "0x55f3007dd960-Flags" + }, + { + "id": "0x55f3007dd9c8-OmpDirectiveName", + "directive": "do" + }, + { + "id": "0x55f3007dd968-OmpClauseList", + "OmpClause": [ + "0x55f3007dd850-OmpClause" + ] + }, + { + "id": "0x55f3007dd850-OmpClause", + "variantKey": "Nowait", + "Nowait": "0x55f3007dd860-Nowait" + }, + { + "id": "0x55f3007dd860-Nowait", + "kind": "NOWAIT" + }, + { + "id": "0x55f3007ddba0-OmpEndDirective", + "OmpDirectiveName": "0x55f3007ddc18-OmpDirectiveName", + "OmpClauseList": "0x55f3007ddbb8-OmpClauseList", + "Flags": "0x55f3007ddbb0-Flags" + }, + { + "id": "0x55f3007ddc18-OmpDirectiveName", + "directive": "parallel" + }, + { + "id": "0x55f3007ddbb8-OmpClauseList" + }, + { + "id": "0x55f3007cd5d0-Statement", + "statement": "0x55f3007cd5e0-EndProgramStmt", + "source": "end program OPENMP_DEMO" + }, + { + "id": "0x55f3007cd5e0-EndProgramStmt", + "Name": "0x55f3007cd5e0-Name" + }, + { + "id": "0x55f3007cd5e0-Name", + "source": "OPENMP_DEMO" + } + ], + "comments": [], "enums": { - "Fortran::common::CUDADataAttr": ["Constant", "Device", "Managed", "Pinned", "Shared", "Texture", "Unified"], - "Fortran::common::CUDASubprogramAttrs": ["Host", "Device", "HostDevice", "Global", "Grid_Global"], - "Fortran::common::ImportKind": ["Default", "Only", "None", "All"], - "Fortran::common::OmpDependenceKind": ["In", "Out", "Inout", "Inoutset", "Mutexinoutset", "Depobj"], - "Fortran::common::OmpMemoryOrderType": ["Acq_Rel", "Acquire", "Relaxed", "Release", "Seq_Cst"], - "Fortran::common::OpenACCDeviceType": ["Star", "Default", "Nvidia", "Radeon", "Host", "Multicore", "None"], - "Fortran::parser::AccDataModifier::Modifier": ["ReadOnly", "Zero"], - "Fortran::parser::AccessSpec::Kind": ["Public", "Private"], - "Fortran::parser::BindEntity::Kind": ["Object", "Common"], - "Fortran::parser::CompilerDirective::VectorLength::Kind": ["Auto", "Fixed", "Scalable"], - "Fortran::parser::ConnectSpec::CharExpr::Kind": ["Access", "Action", "Asynchronous", "Blank", "Decimal", "Delim", "Encoding", "Form", "Pad", "Position", "Round", "Sign", "Carriagecontrol", "Convert", "Dispose"], - "Fortran::parser::DefinedOperator::IntrinsicOperator": ["Power", "Multiply", "Divide", "Add", "Subtract", "Concat", "LT", "LE", "EQ", "NE", "GE", "GT", "NOT", "AND", "OR", "EQV", "NEQV"], - "Fortran::parser::ImplicitStmt::ImplicitNoneNameSpec": ["External", "Type"], - "Fortran::parser::InquireSpec::CharVar::Kind": ["Access", "Action", "Asynchronous", "Blank", "Decimal", "Delim", "Direct", "Encoding", "Form", "Formatted", "Iomsg", "Name", "Pad", "Position", "Read", "Readwrite", "Round", "Sequential", "Sign", "Stream", "Status", "Unformatted", "Write", "Carriagecontrol", "Convert", "Dispose"], - "Fortran::parser::InquireSpec::IntVar::Kind": ["Iostat", "Nextrec", "Number", "Pos", "Recl", "Size"], - "Fortran::parser::InquireSpec::LogVar::Kind": ["Exist", "Named", "Opened", "Pending"], - "Fortran::parser::IntentSpec::Intent": ["In", "Out", "InOut"], - "Fortran::parser::IoControlSpec::CharExpr::Kind": ["Advance", "Blank", "Decimal", "Delim", "Pad", "Round", "Sign"], - "Fortran::parser::ReductionOperator::Operator": ["Plus", "Multiply", "Max", "Min", "Iand", "Ior", "Ieor", "And", "Or", "Eqv", "Neqv"], - "Fortran::parser::OmpAccessGroup::Value": ["Cgroup"], - "Fortran::parser::OmpAdjustArgsClause::OmpAdjustOp::Value": ["Nothing", "Need_Device_Ptr"], - "Fortran::parser::OmpAlwaysModifier::Value": ["Always"], - "Fortran::parser::OmpAtClause::ActionTime": ["Compilation", "Execution"], - "Fortran::parser::OmpAttachModifier::Value": ["Always", "Never", "Auto"], - "Fortran::parser::OmpAutomapModifier::Value": ["Automap"], - "Fortran::parser::OmpBindClause::Binding": ["Parallel", "Teams", "Thread"], - "Fortran::parser::OmpChunkModifier::Value": ["Simd"], - "Fortran::parser::OmpCloseModifier::Value": ["Close"], - "Fortran::parser::OmpDefaultClause::DataSharingAttribute": ["Private", "Firstprivate", "Shared", "None"], - "Fortran::parser::OmpDefaultmapClause::ImplicitBehavior": ["Alloc", "To", "From", "Tofrom", "Firstprivate", "None", "Default", "Present"], - "Fortran::parser::OmpDeleteModifier::Value": ["Delete"], - "Fortran::parser::OmpDependenceType::Value": ["Sink", "Source"], - "Fortran::parser::OmpDeviceModifier::Value": ["Ancestor", "Device_Num"], - "Fortran::parser::OmpDeviceTypeClause::DeviceTypeDescription": ["Any", "Host", "Nohost"], - "Fortran::parser::OmpDirectiveSpecification::Flag": ["DeprecatedSyntax", "CrossesLabelDo"], - "Fortran::parser::OmpExpectation::Value": ["Present"], - "Fortran::parser::OmpInteropType::Value": ["Target", "Targetsync"], - "Fortran::parser::OmpLastprivateModifier::Value": ["Conditional"], - "Fortran::parser::OmpLinearModifier::Value": ["Ref", "Uval", "Val"], - "Fortran::parser::OmpMapType::Value": ["Alloc", "Delete", "From", "Release", "Storage", "To", "Tofrom"], - "Fortran::parser::OmpMapTypeModifier::Value": ["Always", "Close", "Present", "Ompx_Hold"], - "Fortran::parser::OmpObject::Invalid::Kind": ["BlankCommonBlock"], - "Fortran::parser::OmpOrderClause::Ordering": ["Concurrent"], - "Fortran::parser::OmpOrderingModifier::Value": ["Monotonic", "Nonmonotonic", "Simd"], - "Fortran::parser::OmpOrderModifier::Value": ["Reproducible", "Unconstrained"], - "Fortran::parser::OmpPrescriptiveness::Value": ["Strict"], - "Fortran::parser::OmpPresentModifier::Value": ["Present"], - "Fortran::parser::OmpProcBindClause::AffinityPolicy": ["Close", "Master", "Spread", "Primary"], - "Fortran::parser::OmpReductionModifier::Value": ["Default", "Inscan", "Task"], - "Fortran::parser::OmpRefModifier::Value": ["Ref_Ptee", "Ref_Ptr", "Ref_Ptr_Ptee"], - "Fortran::parser::OmpScheduleClause::Kind": ["Static", "Dynamic", "Guided", "Auto", "Runtime"], - "Fortran::parser::OmpSelfModifier::Value": ["Self"], - "Fortran::parser::OmpSeverityClause::SevLevel": ["Fatal", "Warning"], - "Fortran::parser::OmpThreadsetClause::ThreadsetPolicy": ["Omp_Pool", "Omp_Team"], - "Fortran::parser::OmpTraitSelectorName::Value": ["Arch", "Atomic_Default_Mem_Order", "Condition", "Device_Num", "Extension", "Isa", "Kind", "Requires", "Simd", "Uid", "Vendor"], - "Fortran::parser::OmpTraitSetSelectorName::Value": ["Construct", "Device", "Implementation", "Target_Device", "User"], - "Fortran::parser::OmpVariableCategory::Value": ["Aggregate", "All", "Allocatable", "Pointer", "Scalar"], - "Fortran::parser::OmpxHoldModifier::Value": ["Ompx_Hold"], - "Fortran::parser::ProcedureStmt::Kind": ["ModuleProcedure", "Procedure"], - "Fortran::parser::SavedEntity::Kind": ["Entity", "Common"], - "Fortran::parser::StopStmt::Kind": ["Stop", "ErrorStop"], - "Fortran::parser::UseStmt::ModuleNature": ["Intrinsic", "Non_Intrinsic"] + "Fortran::common::CUDADataAttr": [ + "Constant", + "Device", + "Managed", + "Pinned", + "Shared", + "Texture", + "Unified" + ], + "Fortran::common::CUDASubprogramAttrs": [ + "Host", + "Device", + "HostDevice", + "Global", + "Grid_Global" + ], + "Fortran::common::ImportKind": [ + "Default", + "Only", + "None", + "All" + ], + "Fortran::common::OmpDependenceKind": [ + "In", + "Out", + "Inout", + "Inoutset", + "Mutexinoutset", + "Depobj" + ], + "Fortran::common::OmpMemoryOrderType": [ + "Acq_Rel", + "Acquire", + "Relaxed", + "Release", + "Seq_Cst" + ], + "Fortran::common::OpenACCDeviceType": [ + "Star", + "Default", + "Nvidia", + "Radeon", + "Host", + "Multicore", + "None" + ], + "Fortran::parser::AccDataModifier::Modifier": [ + "ReadOnly", + "Zero" + ], + "Fortran::parser::AccessSpec::Kind": [ + "Public", + "Private" + ], + "Fortran::parser::BindEntity::Kind": [ + "Object", + "Common" + ], + "Fortran::parser::CompilerDirective::VectorLength::Kind": [ + "Auto", + "Fixed", + "Scalable" + ], + "Fortran::parser::ConnectSpec::CharExpr::Kind": [ + "Access", + "Action", + "Asynchronous", + "Blank", + "Decimal", + "Delim", + "Encoding", + "Form", + "Pad", + "Position", + "Round", + "Sign", + "Carriagecontrol", + "Convert", + "Dispose" + ], + "Fortran::parser::DefinedOperator::IntrinsicOperator": [ + "Power", + "Multiply", + "Divide", + "Add", + "Subtract", + "Concat", + "LT", + "LE", + "EQ", + "NE", + "GE", + "GT", + "NOT", + "AND", + "OR", + "EQV", + "NEQV" + ], + "Fortran::parser::ImplicitStmt::ImplicitNoneNameSpec": [ + "External", + "Type" + ], + "Fortran::parser::InquireSpec::CharVar::Kind": [ + "Access", + "Action", + "Asynchronous", + "Blank", + "Decimal", + "Delim", + "Direct", + "Encoding", + "Form", + "Formatted", + "Iomsg", + "Name", + "Pad", + "Position", + "Read", + "Readwrite", + "Round", + "Sequential", + "Sign", + "Stream", + "Status", + "Unformatted", + "Write", + "Carriagecontrol", + "Convert", + "Dispose" + ], + "Fortran::parser::InquireSpec::IntVar::Kind": [ + "Iostat", + "Nextrec", + "Number", + "Pos", + "Recl", + "Size" + ], + "Fortran::parser::InquireSpec::LogVar::Kind": [ + "Exist", + "Named", + "Opened", + "Pending" + ], + "Fortran::parser::IntentSpec::Intent": [ + "In", + "Out", + "InOut" + ], + "Fortran::parser::IoControlSpec::CharExpr::Kind": [ + "Advance", + "Blank", + "Decimal", + "Delim", + "Pad", + "Round", + "Sign" + ], + "Fortran::parser::ReductionOperator::Operator": [ + "Plus", + "Multiply", + "Max", + "Min", + "Iand", + "Ior", + "Ieor", + "And", + "Or", + "Eqv", + "Neqv" + ], + "Fortran::parser::OmpAccessGroup::Value": [ + "Cgroup" + ], + "Fortran::parser::OmpAdjustArgsClause::OmpAdjustOp::Value": [ + "Nothing", + "Need_Device_Ptr" + ], + "Fortran::parser::OmpAlwaysModifier::Value": [ + "Always" + ], + "Fortran::parser::OmpAtClause::ActionTime": [ + "Compilation", + "Execution" + ], + "Fortran::parser::OmpAttachModifier::Value": [ + "Always", + "Never", + "Auto" + ], + "Fortran::parser::OmpAutomapModifier::Value": [ + "Automap" + ], + "Fortran::parser::OmpBindClause::Binding": [ + "Parallel", + "Teams", + "Thread" + ], + "Fortran::parser::OmpChunkModifier::Value": [ + "Simd" + ], + "Fortran::parser::OmpCloseModifier::Value": [ + "Close" + ], + "Fortran::parser::OmpDefaultClause::DataSharingAttribute": [ + "Private", + "Firstprivate", + "Shared", + "None" + ], + "Fortran::parser::OmpDefaultmapClause::ImplicitBehavior": [ + "Alloc", + "To", + "From", + "Tofrom", + "Firstprivate", + "None", + "Default", + "Present" + ], + "Fortran::parser::OmpDeleteModifier::Value": [ + "Delete" + ], + "Fortran::parser::OmpDependenceType::Value": [ + "Sink", + "Source" + ], + "Fortran::parser::OmpDeviceModifier::Value": [ + "Ancestor", + "Device_Num" + ], + "Fortran::parser::OmpDeviceTypeClause::DeviceTypeDescription": [ + "Any", + "Host", + "Nohost" + ], + "Fortran::parser::OmpDirectiveSpecification::Flag": [ + "DeprecatedSyntax", + "CrossesLabelDo" + ], + "Fortran::parser::OmpExpectation::Value": [ + "Present" + ], + "Fortran::parser::OmpInteropType::Value": [ + "Target", + "Targetsync" + ], + "Fortran::parser::OmpLastprivateModifier::Value": [ + "Conditional" + ], + "Fortran::parser::OmpLinearModifier::Value": [ + "Ref", + "Uval", + "Val" + ], + "Fortran::parser::OmpMapType::Value": [ + "Alloc", + "Delete", + "From", + "Release", + "Storage", + "To", + "Tofrom" + ], + "Fortran::parser::OmpMapTypeModifier::Value": [ + "Always", + "Close", + "Present", + "Ompx_Hold" + ], + "Fortran::parser::OmpObject::Invalid::Kind": [ + "BlankCommonBlock" + ], + "Fortran::parser::OmpOrderClause::Ordering": [ + "Concurrent" + ], + "Fortran::parser::OmpOrderingModifier::Value": [ + "Monotonic", + "Nonmonotonic", + "Simd" + ], + "Fortran::parser::OmpOrderModifier::Value": [ + "Reproducible", + "Unconstrained" + ], + "Fortran::parser::OmpPrescriptiveness::Value": [ + "Strict" + ], + "Fortran::parser::OmpPresentModifier::Value": [ + "Present" + ], + "Fortran::parser::OmpProcBindClause::AffinityPolicy": [ + "Close", + "Master", + "Spread", + "Primary" + ], + "Fortran::parser::OmpReductionModifier::Value": [ + "Default", + "Inscan", + "Task" + ], + "Fortran::parser::OmpRefModifier::Value": [ + "Ref_Ptee", + "Ref_Ptr", + "Ref_Ptr_Ptee" + ], + "Fortran::parser::OmpScheduleClause::Kind": [ + "Static", + "Dynamic", + "Guided", + "Auto", + "Runtime" + ], + "Fortran::parser::OmpSelfModifier::Value": [ + "Self" + ], + "Fortran::parser::OmpSeverityClause::SevLevel": [ + "Fatal", + "Warning" + ], + "Fortran::parser::OmpThreadsetClause::ThreadsetPolicy": [ + "Omp_Pool", + "Omp_Team" + ], + "Fortran::parser::OmpTraitSelectorName::Value": [ + "Arch", + "Atomic_Default_Mem_Order", + "Condition", + "Device_Num", + "Extension", + "Isa", + "Kind", + "Requires", + "Simd", + "Uid", + "Vendor" + ], + "Fortran::parser::OmpTraitSetSelectorName::Value": [ + "Construct", + "Device", + "Implementation", + "Target_Device", + "User" + ], + "Fortran::parser::OmpVariableCategory::Value": [ + "Aggregate", + "All", + "Allocatable", + "Pointer", + "Scalar" + ], + "Fortran::parser::OmpxHoldModifier::Value": [ + "Ompx_Hold" + ], + "Fortran::parser::ProcedureStmt::Kind": [ + "ModuleProcedure", + "Procedure" + ], + "Fortran::parser::SavedEntity::Kind": [ + "Entity", + "Common" + ], + "Fortran::parser::StopStmt::Kind": [ + "Stop", + "ErrorStop" + ], + "Fortran::parser::UseStmt::ModuleNature": [ + "Intrinsic", + "Non_Intrinsic" + ] } -} \ No newline at end of file +} diff --git a/FortranParser/resources-test/fortran/parser/omp/omp_do.expected.f90 b/FortranParser/resources-test/fortran/parser/omp/omp_do.expected.f90 index 2499bd91..72a24455 100644 --- a/FortranParser/resources-test/fortran/parser/omp/omp_do.expected.f90 +++ b/FortranParser/resources-test/fortran/parser/omp/omp_do.expected.f90 @@ -1,5 +1,5 @@ PROGRAM OPENMP_DEMO - USE omp_lib + USE :: omp_lib INTEGER :: i, thread_id, num_threads, total_sum INTEGER :: shared_counter = 0 diff --git a/FortranParser/resources-test/fortran/parser/omp/omp_do.json b/FortranParser/resources-test/fortran/parser/omp/omp_do.json index 6158f760..074db9a9 100644 --- a/FortranParser/resources-test/fortran/parser/omp/omp_do.json +++ b/FortranParser/resources-test/fortran/parser/omp/omp_do.json @@ -1,708 +1,1035 @@ -{"nodes": [ - { - "id": "0x623723286640-Program", - "ProgramUnit": [ - "0x6237232c9620-ProgramUnit"] - }, - { - "id": "0x6237232c9620-ProgramUnit", - "variantKey": "MainProgram", - "MainProgram": "0x6237232c3100-MainProgram" - }, - { - "id": "0x6237232c3100-MainProgram", - "Statement": "0x6237232c3248-Statement", - "SpecificationPart": "0x6237232c31a0-SpecificationPart", - "ExecutionPart": "0x6237232c3188-ExecutionPart", - "Statement": "0x6237232c3100-Statement" - }, - { - "id": "0x6237232c3248-Statement", - "statement": "0x6237232c3258-ProgramStmt", - "source": "program OPENMP_DEMO" - }, - { - "id": "0x6237232c3258-ProgramStmt", - "Name": "0x6237232c3258-Name" - }, - { - "id": "0x6237232c3258-Name", - "source": "OPENMP_DEMO" - }, - { - "id": "0x6237232c31a0-SpecificationPart", - "Statement": [ - "0x6237232bb610-Statement"], - "ImplicitPart": "0x6237232c31b8-ImplicitPart", - "DeclarationConstruct": [ - "0x6237232938b0-DeclarationConstruct", - "0x6237232934e0-DeclarationConstruct"] - }, - { - "id": "0x6237232bb610-Statement", - "statement": "0x6237232c9f30-UseStmt", - "source": "use omp_lib" - }, - { - "id": "0x6237232c9f30-UseStmt", - "moduleName": "0x6237232c9f38-Name" - }, - { - "id": "0x6237232c9f38-Name", - "source": "omp_lib" - }, - { - "id": "0x6237232c31b8-ImplicitPart" - }, - { - "id": "0x6237232938b0-DeclarationConstruct", - "variantKey": "SpecificationConstruct", - "SpecificationConstruct": "0x6237232938b0-SpecificationConstruct" - }, - { - "id": "0x6237232938b0-SpecificationConstruct", - "variantKey": "Statement", - "Statement": "0x6237232938b0-Statement" - }, - { - "id": "0x6237232938b0-Statement", - "statement": "0x6237232c0b60-TypeDeclarationStmt", - "source": "integer :: i, thread_id, num_threads, total_sum" - }, - { - "id": "0x6237232c0b60-TypeDeclarationStmt", - "DeclarationTypeSpec": "0x6237232c0b90-DeclarationTypeSpec", - "EntityDecl": [ - "0x6237232c0f40-EntityDecl", - "0x6237232c0c70-EntityDecl", - "0x6237232c0d60-EntityDecl", - "0x6237232c0e50-EntityDecl"] - }, - { - "id": "0x6237232c0b90-DeclarationTypeSpec", - "variantKey": "IntrinsicTypeSpec", - "IntrinsicTypeSpec": "0x6237232c0b90-IntrinsicTypeSpec" - }, - { - "id": "0x6237232c0b90-IntrinsicTypeSpec", - "variantKey": "IntegerTypeSpec", - "IntegerTypeSpec": "0x6237232c0b90-IntegerTypeSpec" - }, - { - "id": "0x6237232c0b90-IntegerTypeSpec" - }, - { - "id": "0x6237232c0f40-EntityDecl", - "Name": "0x6237232c0ff8-Name" - }, - { - "id": "0x6237232c0ff8-Name", - "source": "i" - }, - { - "id": "0x6237232c0c70-EntityDecl", - "Name": "0x6237232c0d28-Name" - }, - { - "id": "0x6237232c0d28-Name", - "source": "thread_id" - }, - { - "id": "0x6237232c0d60-EntityDecl", - "Name": "0x6237232c0e18-Name" - }, - { - "id": "0x6237232c0e18-Name", - "source": "num_threads" - }, - { - "id": "0x6237232c0e50-EntityDecl", - "Name": "0x6237232c0f08-Name" - }, - { - "id": "0x6237232c0f08-Name", - "source": "total_sum" - }, - { - "id": "0x6237232934e0-DeclarationConstruct", - "variantKey": "SpecificationConstruct", - "SpecificationConstruct": "0x6237232934e0-SpecificationConstruct" - }, - { - "id": "0x6237232934e0-SpecificationConstruct", - "variantKey": "Statement", - "Statement": "0x6237232934e0-Statement" - }, - { - "id": "0x6237232934e0-Statement", - "statement": "0x6237232c0be0-TypeDeclarationStmt", - "source": "integer :: shared_counter = 0" - }, - { - "id": "0x6237232c0be0-TypeDeclarationStmt", - "DeclarationTypeSpec": "0x6237232c0c10-DeclarationTypeSpec", - "EntityDecl": [ - "0x6237232c1120-EntityDecl"] - }, - { - "id": "0x6237232c0c10-DeclarationTypeSpec", - "variantKey": "IntrinsicTypeSpec", - "IntrinsicTypeSpec": "0x6237232c0c10-IntrinsicTypeSpec" - }, - { - "id": "0x6237232c0c10-IntrinsicTypeSpec", - "variantKey": "IntegerTypeSpec", - "IntegerTypeSpec": "0x6237232c0c10-IntegerTypeSpec" - }, - { - "id": "0x6237232c0c10-IntegerTypeSpec" - }, - { - "id": "0x6237232c1120-EntityDecl", - "Name": "0x6237232c11d8-Name", - "Initialization": "0x6237232c1120-Initialization" - }, - { - "id": "0x6237232c11d8-Name", - "source": "shared_counter" - }, - { - "id": "0x6237232c1120-Initialization", - "variantKey": "Expr", - "Expr": "0x623723227790-Expr" - }, - { - "id": "0x623723227790-Expr", - "variantKey": "LiteralConstant", - "LiteralConstant": "0x6237232277b0-LiteralConstant" - }, - { - "id": "0x6237232277b0-LiteralConstant", - "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x6237232277b0-IntLiteralConstant" - }, - { - "id": "0x6237232277b0-IntLiteralConstant", - "CharBlock": "0" - }, - { - "id": "0x6237232c3188-ExecutionPart", - "ExecutionPartConstruct": [ - "0x6237232c2260-ExecutionPartConstruct", - "0x6237232c2730-ExecutionPartConstruct"] - }, - { - "id": "0x6237232c3188-ExecutionPartConstruct" - }, - { - "id": "0x6237232c2260-ExecutionPartConstruct", - "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x6237232c2260-ExecutableConstruct" - }, - { - "id": "0x6237232c2260-ExecutableConstruct", - "variantKey": "OpenMPConstruct", - "OpenMPConstruct": "0x6237232c2570-OpenMPConstruct" - }, - { - "id": "0x6237232c2570-OpenMPConstruct", - "variantKey": "OmpBlockConstruct", - "OmpBlockConstruct": "0x6237232c2570-OmpBlockConstruct" - }, - { - "id": "0x6237232c2570-OmpBlockConstruct", - "OmpBeginDirective": "0x6237232c2630-OmpBeginDirective", - "ExecutionPartConstruct": [ - "0x6237232c20f0-ExecutionPartConstruct"], - "OmpEndDirective": "0x6237232c2580-OmpEndDirective" - }, - { - "id": "0x6237232c2630-OmpBeginDirective", - "OmpDirectiveName": "0x6237232c26a8-OmpDirectiveName", - "OmpClauseList": "0x6237232c2648-OmpClauseList", - "Flags = {}": "0x6237232c2640-Flags = {}" - }, - { - "id": "0x6237232c26a8-OmpDirectiveName", - "directive": "parallel" - }, - { - "id": "0x6237232c2648-OmpClauseList" - }, - { - "id": "0x6237232c2618-ExecutionPartConstruct" - }, - { - "id": "0x6237232c20f0-ExecutionPartConstruct", - "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x6237232c20f0-ExecutableConstruct" - }, - { - "id": "0x6237232c20f0-ExecutableConstruct", - "variantKey": "OpenMPConstruct", - "OpenMPConstruct": "0x6237232c2320-OpenMPConstruct" - }, - { - "id": "0x6237232c2320-OpenMPConstruct", - "variantKey": "OpenMPLoopConstruct", - "OpenMPLoopConstruct": "0x6237232c2320-OpenMPLoopConstruct" - }, - { - "id": "0x6237232c2320-OpenMPLoopConstruct", - "OmpBeginLoopDirective": "0x6237232c23e0-OmpBeginLoopDirective", - "ExecutionPartConstruct": [ - "0x6237232bb110-ExecutionPartConstruct"], - "OmpEndLoopDirective": "0x6237232c2330-OmpEndLoopDirective" - }, - { - "id": "0x6237232c23e0-OmpBeginLoopDirective", - "OmpDirectiveName": "0x6237232c2458-OmpDirectiveName", - "OmpClauseList": "0x6237232c23f8-OmpClauseList", - "Flags = {}": "0x6237232c23f0-Flags = {}" - }, - { - "id": "0x6237232c2458-OmpDirectiveName", - "directive": "do" - }, - { - "id": "0x6237232c23f8-OmpClauseList" - }, - { - "id": "0x6237232c23c8-ExecutionPartConstruct" - }, - { - "id": "0x6237232bb110-ExecutionPartConstruct", - "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x6237232bb110-ExecutableConstruct" - }, - { - "id": "0x6237232bb110-ExecutableConstruct", - "variantKey": "DoConstruct", - "DoConstruct": "0x62372325d780-DoConstruct" - }, - { - "id": "0x62372325d780-DoConstruct", - "Statement": "0x62372325d7d8-Statement", - "ExecutionPartConstruct": [ - "0x6237232c2090-ExecutionPartConstruct"], - "Statement": "0x62372325d780-Statement" - }, - { - "id": "0x62372325d7d8-Statement", - "statement": "0x62372325d7e8-NonLabelDoStmt", - "source": "do i = 1, 100" - }, - { - "id": "0x62372325d7e8-NonLabelDoStmt", - "LoopControl": "0x62372325d7e8-LoopControl" - }, - { - "id": "0x62372325d7e8-LoopControl", - "variantKey": "LoopBounds", - "LoopBounds": "0x62372325d7e8-LoopBounds" - }, - { - "id": "0x62372325d7e8-LoopBounds", - "var": "0x62372325d7e8-Name", - "lower": "0x6237232c1360-Expr", - "upper": "0x6237232c1e80-Expr" - }, - { - "id": "0x62372325d7e8-Name", - "source": "i" - }, - { - "id": "0x6237232c1360-Expr", - "variantKey": "LiteralConstant", - "LiteralConstant": "0x6237232c1380-LiteralConstant" - }, - { - "id": "0x6237232c1380-LiteralConstant", - "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x6237232c1380-IntLiteralConstant" - }, - { - "id": "0x6237232c1380-IntLiteralConstant", - "CharBlock": "1" - }, - { - "id": "0x6237232c1e80-Expr", - "variantKey": "LiteralConstant", - "LiteralConstant": "0x6237232c1ea0-LiteralConstant" - }, - { - "id": "0x6237232c1ea0-LiteralConstant", - "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x6237232c1ea0-IntLiteralConstant" - }, - { - "id": "0x6237232c1ea0-IntLiteralConstant", - "CharBlock": "100" - }, - { - "id": "0x62372325d7c0-ExecutionPartConstruct" - }, - { - "id": "0x6237232c2090-ExecutionPartConstruct", - "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x6237232c2090-ExecutableConstruct" - }, - { - "id": "0x6237232c2090-ExecutableConstruct", - "variantKey": "Statement", - "Statement": "0x6237232c2090-Statement" - }, - { - "id": "0x6237232c2090-Statement", - "statement": "0x6237232c20a0-ActionStmt", - "source": "total_sum = total_sum" - }, - { - "id": "0x6237232c20a0-ActionStmt", - "variantKey": "AssignmentStmt", - "AssignmentStmt": "0x6237232c2140-AssignmentStmt" - }, - { - "id": "0x6237232c2140-AssignmentStmt", - "Variable": "0x6237232c2220-Variable", - "Expr": "0x6237232c2150-Expr" - }, - { - "id": "0x6237232c2220-Variable", - "variantKey": "Designator", - "Designator": "0x6237232c2d80-Designator" - }, - { - "id": "0x6237232c2d80-Designator", - "variantKey": "DataRef", - "DataRef": "0x6237232c2d90-DataRef" - }, - { - "id": "0x6237232c2d90-DataRef", - "variantKey": "Name", - "Name": "0x6237232c2d90-Name" - }, - { - "id": "0x6237232c2d90-Name", - "source": "total_sum" - }, - { - "id": "0x6237232c2150-Expr", - "variantKey": "Designator", - "Designator": "0x6237232bd330-Designator" - }, - { - "id": "0x6237232bd330-Designator", - "variantKey": "DataRef", - "DataRef": "0x6237232bd340-DataRef" - }, - { - "id": "0x6237232bd340-DataRef", - "variantKey": "Name", - "Name": "0x6237232bd340-Name" - }, - { - "id": "0x6237232bd340-Name", - "source": "total_sum" - }, - { - "id": "0x62372325d780-Statement", - "statement": "0x62372325d790-EndDoStmt", - "source": "end do" - }, - { - "id": "0x62372325d790-EndDoStmt" - }, - { - "id": "0x6237232c2330-OmpEndLoopDirective", - "OmpDirectiveName": "0x6237232c23a8-OmpDirectiveName", - "OmpClauseList": "0x6237232c2348-OmpClauseList", - "Flags = {}": "0x6237232c2340-Flags = {}" - }, - { - "id": "0x6237232c23a8-OmpDirectiveName", - "directive": "do" - }, - { - "id": "0x6237232c2348-OmpClauseList" - }, - { - "id": "0x6237232c2580-OmpEndDirective", - "OmpDirectiveName": "0x6237232c25f8-OmpDirectiveName", - "OmpClauseList": "0x6237232c2598-OmpClauseList", - "Flags = {}": "0x6237232c2590-Flags = {}" - }, - { - "id": "0x6237232c25f8-OmpDirectiveName", - "directive": "parallel" - }, - { - "id": "0x6237232c2598-OmpClauseList" - }, - { - "id": "0x6237232c2730-ExecutionPartConstruct", - "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x6237232c2730-ExecutableConstruct" - }, - { - "id": "0x6237232c2730-ExecutableConstruct", - "variantKey": "OpenMPConstruct", - "OpenMPConstruct": "0x6237232c7d10-OpenMPConstruct" - }, - { - "id": "0x6237232c7d10-OpenMPConstruct", - "variantKey": "OpenMPLoopConstruct", - "OpenMPLoopConstruct": "0x6237232c7d10-OpenMPLoopConstruct" - }, - { - "id": "0x6237232c7d10-OpenMPLoopConstruct", - "OmpBeginLoopDirective": "0x6237232c7dd0-OmpBeginLoopDirective", - "ExecutionPartConstruct": [ - "0x6237232c7a30-ExecutionPartConstruct"], - "OmpEndLoopDirective": "0x6237232c7d20-OmpEndLoopDirective" - }, - { - "id": "0x6237232c7dd0-OmpBeginLoopDirective", - "OmpDirectiveName": "0x6237232c7e48-OmpDirectiveName", - "OmpClauseList": "0x6237232c7de8-OmpClauseList", - "Flags = {}": "0x6237232c7de0-Flags = {}" - }, - { - "id": "0x6237232c7e48-OmpDirectiveName", - "directive": "parallel do" - }, - { - "id": "0x6237232c7de8-OmpClauseList" - }, - { - "id": "0x6237232c7db8-ExecutionPartConstruct" - }, - { - "id": "0x6237232c7a30-ExecutionPartConstruct", - "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x6237232c7a30-ExecutableConstruct" - }, - { - "id": "0x6237232c7a30-ExecutableConstruct", - "variantKey": "DoConstruct", - "DoConstruct": "0x6237232c7bf0-DoConstruct" - }, - { - "id": "0x6237232c7bf0-DoConstruct", - "Statement": "0x6237232c7c48-Statement", - "ExecutionPartConstruct": [ - "0x6237232c9ee0-ExecutionPartConstruct"], - "Statement": "0x6237232c7bf0-Statement" - }, - { - "id": "0x6237232c7c48-Statement", - "statement": "0x6237232c7c58-NonLabelDoStmt", - "source": "do i = 1, 2" - }, - { - "id": "0x6237232c7c58-NonLabelDoStmt", - "LoopControl": "0x6237232c7c58-LoopControl" - }, - { - "id": "0x6237232c7c58-LoopControl", - "variantKey": "LoopBounds", - "LoopBounds": "0x6237232c7c58-LoopBounds" - }, - { - "id": "0x6237232c7c58-LoopBounds", - "var": "0x6237232c7c58-Name", - "lower": "0x6237232c2780-Expr", - "upper": "0x6237232c78e0-Expr" - }, - { - "id": "0x6237232c7c58-Name", - "source": "i" - }, - { - "id": "0x6237232c2780-Expr", - "variantKey": "LiteralConstant", - "LiteralConstant": "0x6237232c27a0-LiteralConstant" - }, - { - "id": "0x6237232c27a0-LiteralConstant", - "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x6237232c27a0-IntLiteralConstant" - }, - { - "id": "0x6237232c27a0-IntLiteralConstant", - "CharBlock": "1" - }, - { - "id": "0x6237232c78e0-Expr", - "variantKey": "LiteralConstant", - "LiteralConstant": "0x6237232c7900-LiteralConstant" - }, - { - "id": "0x6237232c7900-LiteralConstant", - "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x6237232c7900-IntLiteralConstant" - }, - { - "id": "0x6237232c7900-IntLiteralConstant", - "CharBlock": "2" - }, - { - "id": "0x6237232c7c30-ExecutionPartConstruct" - }, - { - "id": "0x6237232c9ee0-ExecutionPartConstruct", - "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x6237232c9ee0-ExecutableConstruct" - }, - { - "id": "0x6237232c9ee0-ExecutableConstruct", - "variantKey": "Statement", - "Statement": "0x6237232c9ee0-Statement" - }, - { - "id": "0x6237232c9ee0-Statement", - "statement": "0x6237232c9ef0-ActionStmt", - "source": "total_sum = 1" - }, - { - "id": "0x6237232c9ef0-ActionStmt", - "variantKey": "AssignmentStmt", - "AssignmentStmt": "0x6237232c7a80-AssignmentStmt" - }, - { - "id": "0x6237232c7a80-AssignmentStmt", - "Variable": "0x6237232c7b60-Variable", - "Expr": "0x6237232c7a90-Expr" - }, - { - "id": "0x6237232c7b60-Variable", - "variantKey": "Designator", - "Designator": "0x6237232c79c0-Designator" - }, - { - "id": "0x6237232c79c0-Designator", - "variantKey": "DataRef", - "DataRef": "0x6237232c79d0-DataRef" - }, - { - "id": "0x6237232c79d0-DataRef", - "variantKey": "Name", - "Name": "0x6237232c79d0-Name" - }, - { - "id": "0x6237232c79d0-Name", - "source": "total_sum" - }, - { - "id": "0x6237232c7a90-Expr", - "variantKey": "LiteralConstant", - "LiteralConstant": "0x6237232c7ab0-LiteralConstant" - }, - { - "id": "0x6237232c7ab0-LiteralConstant", - "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x6237232c7ab0-IntLiteralConstant" - }, - { - "id": "0x6237232c7ab0-IntLiteralConstant", - "CharBlock": "1" - }, - { - "id": "0x6237232c7bf0-Statement", - "statement": "0x6237232c7c00-EndDoStmt", - "source": "end do" - }, - { - "id": "0x6237232c7c00-EndDoStmt" - }, - { - "id": "0x6237232c7d20-OmpEndLoopDirective", - "OmpDirectiveName": "0x6237232c7d98-OmpDirectiveName", - "OmpClauseList": "0x6237232c7d38-OmpClauseList", - "Flags = {}": "0x6237232c7d30-Flags = {}" - }, - { - "id": "0x6237232c7d98-OmpDirectiveName", - "directive": "parallel do" - }, - { - "id": "0x6237232c7d38-OmpClauseList" - }, - { - "id": "0x6237232c3100-Statement", - "statement": "0x6237232c3110-EndProgramStmt", - "source": "end program OPENMP_DEMO" - }, - { - "id": "0x6237232c3110-EndProgramStmt", - "Name": "0x6237232c3110-Name" - }, - { - "id": "0x6237232c3110-Name", - "source": "OPENMP_DEMO" - }], +{ + "fileExtension": "f90", + "nodes": [ + { + "id": "0x55ff4cb71f00-Program", + "ProgramUnit": [ + "0x55ff4cbae8c0-ProgramUnit" + ] + }, + { + "id": "0x55ff4cbae8c0-ProgramUnit", + "variantKey": "MainProgram", + "MainProgram": "0x55ff4cbaeb00-MainProgram" + }, + { + "id": "0x55ff4cbaeb00-MainProgram", + "Statement": "0x55ff4cbaec48-Statement", + "SpecificationPart": "0x55ff4cbaeba0-SpecificationPart", + "ExecutionPart": "0x55ff4cbaeb88-ExecutionPart", + "Statement": "0x55ff4cbaeb00-Statement" + }, + { + "id": "0x55ff4cbaec48-Statement", + "statement": "0x55ff4cbaec58-ProgramStmt", + "source": "program OPENMP_DEMO" + }, + { + "id": "0x55ff4cbaec58-ProgramStmt", + "Name": "0x55ff4cbaec58-Name" + }, + { + "id": "0x55ff4cbaec58-Name", + "source": "OPENMP_DEMO" + }, + { + "id": "0x55ff4cbaeba0-SpecificationPart", + "Statement": [ + "0x55ff4cba7520-Statement" + ], + "ImplicitPart": "0x55ff4cbaebb8-ImplicitPart", + "DeclarationConstruct": [ + "0x55ff4cb7f170-DeclarationConstruct", + "0x55ff4cb7eda0-DeclarationConstruct" + ] + }, + { + "id": "0x55ff4cba7520-Statement", + "statement": "0x55ff4cbb5a40-UseStmt", + "source": "use omp_lib" + }, + { + "id": "0x55ff4cbb5a40-UseStmt", + "moduleName": "0x55ff4cbb5a48-Name", + "variantKey": "Rename", + "Rename": [] + }, + { + "id": "0x55ff4cbb5a48-Name", + "source": "omp_lib" + }, + { + "id": "0x55ff4cbaebb8-ImplicitPart" + }, + { + "id": "0x55ff4cb7f170-DeclarationConstruct", + "variantKey": "SpecificationConstruct", + "SpecificationConstruct": "0x55ff4cb7f170-SpecificationConstruct" + }, + { + "id": "0x55ff4cb7f170-SpecificationConstruct", + "variantKey": "Statement", + "Statement": "0x55ff4cb7f170-Statement" + }, + { + "id": "0x55ff4cb7f170-Statement", + "statement": "0x55ff4cbac310-TypeDeclarationStmt", + "source": "integer :: i, thread_id, num_threads, total_sum" + }, + { + "id": "0x55ff4cbac310-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x55ff4cbac340-DeclarationTypeSpec", + "EntityDecl": [ + "0x55ff4cbac6f0-EntityDecl", + "0x55ff4cbac420-EntityDecl", + "0x55ff4cbac510-EntityDecl", + "0x55ff4cbac600-EntityDecl" + ] + }, + { + "id": "0x55ff4cbac340-DeclarationTypeSpec", + "variantKey": "IntrinsicTypeSpec", + "IntrinsicTypeSpec": "0x55ff4cbac340-IntrinsicTypeSpec" + }, + { + "id": "0x55ff4cbac340-IntrinsicTypeSpec", + "variantKey": "IntegerTypeSpec", + "IntegerTypeSpec": "0x55ff4cbac340-IntegerTypeSpec" + }, + { + "id": "0x55ff4cbac340-IntegerTypeSpec" + }, + { + "id": "0x55ff4cbac6f0-EntityDecl", + "Name": "0x55ff4cbac7a8-Name" + }, + { + "id": "0x55ff4cbac7a8-Name", + "source": "i" + }, + { + "id": "0x55ff4cbac420-EntityDecl", + "Name": "0x55ff4cbac4d8-Name" + }, + { + "id": "0x55ff4cbac4d8-Name", + "source": "thread_id" + }, + { + "id": "0x55ff4cbac510-EntityDecl", + "Name": "0x55ff4cbac5c8-Name" + }, + { + "id": "0x55ff4cbac5c8-Name", + "source": "num_threads" + }, + { + "id": "0x55ff4cbac600-EntityDecl", + "Name": "0x55ff4cbac6b8-Name" + }, + { + "id": "0x55ff4cbac6b8-Name", + "source": "total_sum" + }, + { + "id": "0x55ff4cb7eda0-DeclarationConstruct", + "variantKey": "SpecificationConstruct", + "SpecificationConstruct": "0x55ff4cb7eda0-SpecificationConstruct" + }, + { + "id": "0x55ff4cb7eda0-SpecificationConstruct", + "variantKey": "Statement", + "Statement": "0x55ff4cb7eda0-Statement" + }, + { + "id": "0x55ff4cb7eda0-Statement", + "statement": "0x55ff4cbac390-TypeDeclarationStmt", + "source": "integer :: shared_counter = 0" + }, + { + "id": "0x55ff4cbac390-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x55ff4cbac3c0-DeclarationTypeSpec", + "EntityDecl": [ + "0x55ff4cbac8d0-EntityDecl" + ] + }, + { + "id": "0x55ff4cbac3c0-DeclarationTypeSpec", + "variantKey": "IntrinsicTypeSpec", + "IntrinsicTypeSpec": "0x55ff4cbac3c0-IntrinsicTypeSpec" + }, + { + "id": "0x55ff4cbac3c0-IntrinsicTypeSpec", + "variantKey": "IntegerTypeSpec", + "IntegerTypeSpec": "0x55ff4cbac3c0-IntegerTypeSpec" + }, + { + "id": "0x55ff4cbac3c0-IntegerTypeSpec" + }, + { + "id": "0x55ff4cbac8d0-EntityDecl", + "Name": "0x55ff4cbac988-Name", + "Initialization": "0x55ff4cbac8d0-Initialization" + }, + { + "id": "0x55ff4cbac988-Name", + "source": "shared_counter" + }, + { + "id": "0x55ff4cbac8d0-Initialization", + "variantKey": "Expr", + "Expr": "0x55ff4cb11790-Expr" + }, + { + "id": "0x55ff4cb11790-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55ff4cb117b0-LiteralConstant" + }, + { + "id": "0x55ff4cb117b0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55ff4cb117b0-IntLiteralConstant" + }, + { + "id": "0x55ff4cb117b0-IntLiteralConstant", + "CharBlock": "0" + }, + { + "id": "0x55ff4cbaeb88-ExecutionPart", + "ExecutionPartConstruct": [ + "0x55ff4cbad7f0-ExecutionPartConstruct", + "0x55ff4cbadcc0-ExecutionPartConstruct" + ] + }, + { + "id": "0x55ff4cbaeb88-ExecutionPartConstruct" + }, + { + "id": "0x55ff4cbad7f0-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55ff4cbad7f0-ExecutableConstruct" + }, + { + "id": "0x55ff4cbad7f0-ExecutableConstruct", + "variantKey": "OpenMPConstruct", + "OpenMPConstruct": "0x55ff4cbadb00-OpenMPConstruct" + }, + { + "id": "0x55ff4cbadb00-OpenMPConstruct", + "variantKey": "OmpBlockConstruct", + "OmpBlockConstruct": "0x55ff4cbadb00-OmpBlockConstruct" + }, + { + "id": "0x55ff4cbadb00-OmpBlockConstruct", + "OmpBeginDirective": "0x55ff4cbadbc0-OmpBeginDirective", + "ExecutionPartConstruct": [ + "0x55ff4cbad680-ExecutionPartConstruct" + ], + "OmpEndDirective": "0x55ff4cbadb10-OmpEndDirective" + }, + { + "id": "0x55ff4cbadbc0-OmpBeginDirective", + "OmpDirectiveName": "0x55ff4cbadc38-OmpDirectiveName", + "OmpClauseList": "0x55ff4cbadbd8-OmpClauseList", + "Flags": "0x55ff4cbadbd0-Flags" + }, + { + "id": "0x55ff4cbadc38-OmpDirectiveName", + "directive": "parallel" + }, + { + "id": "0x55ff4cbadbd8-OmpClauseList" + }, + { + "id": "0x55ff4cbadba8-ExecutionPartConstruct" + }, + { + "id": "0x55ff4cbad680-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55ff4cbad680-ExecutableConstruct" + }, + { + "id": "0x55ff4cbad680-ExecutableConstruct", + "variantKey": "OpenMPConstruct", + "OpenMPConstruct": "0x55ff4cbad8b0-OpenMPConstruct" + }, + { + "id": "0x55ff4cbad8b0-OpenMPConstruct", + "variantKey": "OpenMPLoopConstruct", + "OpenMPLoopConstruct": "0x55ff4cbad8b0-OpenMPLoopConstruct" + }, + { + "id": "0x55ff4cbad8b0-OpenMPLoopConstruct", + "OmpBeginLoopDirective": "0x55ff4cbad970-OmpBeginLoopDirective", + "ExecutionPartConstruct": [ + "0x55ff4cbad520-ExecutionPartConstruct" + ], + "OmpEndLoopDirective": "0x55ff4cbad8c0-OmpEndLoopDirective" + }, + { + "id": "0x55ff4cbad970-OmpBeginLoopDirective", + "OmpDirectiveName": "0x55ff4cbad9e8-OmpDirectiveName", + "OmpClauseList": "0x55ff4cbad988-OmpClauseList", + "Flags": "0x55ff4cbad980-Flags" + }, + { + "id": "0x55ff4cbad9e8-OmpDirectiveName", + "directive": "do" + }, + { + "id": "0x55ff4cbad988-OmpClauseList" + }, + { + "id": "0x55ff4cbad958-ExecutionPartConstruct" + }, + { + "id": "0x55ff4cbad520-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55ff4cbad520-ExecutableConstruct" + }, + { + "id": "0x55ff4cbad520-ExecutableConstruct", + "variantKey": "DoConstruct", + "DoConstruct": "0x55ff4cb47780-DoConstruct" + }, + { + "id": "0x55ff4cb47780-DoConstruct", + "Statement": "0x55ff4cb477d8-Statement", + "ExecutionPartConstruct": [ + "0x55ff4cbad620-ExecutionPartConstruct" + ], + "Statement": "0x55ff4cb47780-Statement" + }, + { + "id": "0x55ff4cb477d8-Statement", + "statement": "0x55ff4cb477e8-NonLabelDoStmt", + "source": "do i = 1, 100" + }, + { + "id": "0x55ff4cb477e8-NonLabelDoStmt", + "LoopControl": "0x55ff4cb477e8-LoopControl" + }, + { + "id": "0x55ff4cb477e8-LoopControl", + "variantKey": "LoopBounds", + "LoopBounds": "0x55ff4cb477e8-LoopBounds" + }, + { + "id": "0x55ff4cb477e8-LoopBounds", + "var": "0x55ff4cb477e8-Name", + "lower": "0x55ff4cbacb10-Expr", + "upper": "0x55ff4cbad430-Expr" + }, + { + "id": "0x55ff4cb477e8-Name", + "source": "i" + }, + { + "id": "0x55ff4cbacb10-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55ff4cbacb30-LiteralConstant" + }, + { + "id": "0x55ff4cbacb30-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55ff4cbacb30-IntLiteralConstant" + }, + { + "id": "0x55ff4cbacb30-IntLiteralConstant", + "CharBlock": "1" + }, + { + "id": "0x55ff4cbad430-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55ff4cbad450-LiteralConstant" + }, + { + "id": "0x55ff4cbad450-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55ff4cbad450-IntLiteralConstant" + }, + { + "id": "0x55ff4cbad450-IntLiteralConstant", + "CharBlock": "100" + }, + { + "id": "0x55ff4cb477c0-ExecutionPartConstruct" + }, + { + "id": "0x55ff4cbad620-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55ff4cbad620-ExecutableConstruct" + }, + { + "id": "0x55ff4cbad620-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55ff4cbad620-Statement" + }, + { + "id": "0x55ff4cbad620-Statement", + "statement": "0x55ff4cbad630-ActionStmt", + "source": "total_sum = total_sum" + }, + { + "id": "0x55ff4cbad630-ActionStmt", + "variantKey": "AssignmentStmt", + "AssignmentStmt": "0x55ff4cbad6d0-AssignmentStmt" + }, + { + "id": "0x55ff4cbad6d0-AssignmentStmt", + "Variable": "0x55ff4cbad7b0-Variable", + "Expr": "0x55ff4cbad6e0-Expr" + }, + { + "id": "0x55ff4cbad7b0-Variable", + "variantKey": "Designator", + "Designator": "0x55ff4cba6930-Designator" + }, + { + "id": "0x55ff4cba6930-Designator", + "variantKey": "DataRef", + "DataRef": "0x55ff4cba6940-DataRef" + }, + { + "id": "0x55ff4cba6940-DataRef", + "variantKey": "Name", + "Name": "0x55ff4cba6940-Name" + }, + { + "id": "0x55ff4cba6940-Name", + "source": "total_sum" + }, + { + "id": "0x55ff4cbad6e0-Expr", + "variantKey": "Designator", + "Designator": "0x55ff4cba8c50-Designator" + }, + { + "id": "0x55ff4cba8c50-Designator", + "variantKey": "DataRef", + "DataRef": "0x55ff4cba8c60-DataRef" + }, + { + "id": "0x55ff4cba8c60-DataRef", + "variantKey": "Name", + "Name": "0x55ff4cba8c60-Name" + }, + { + "id": "0x55ff4cba8c60-Name", + "source": "total_sum" + }, + { + "id": "0x55ff4cb47780-Statement", + "statement": "0x55ff4cb47790-EndDoStmt", + "source": "end do" + }, + { + "id": "0x55ff4cb47790-EndDoStmt" + }, + { + "id": "0x55ff4cbad8c0-OmpEndLoopDirective", + "OmpDirectiveName": "0x55ff4cbad938-OmpDirectiveName", + "OmpClauseList": "0x55ff4cbad8d8-OmpClauseList", + "Flags": "0x55ff4cbad8d0-Flags" + }, + { + "id": "0x55ff4cbad938-OmpDirectiveName", + "directive": "do" + }, + { + "id": "0x55ff4cbad8d8-OmpClauseList" + }, + { + "id": "0x55ff4cbadb10-OmpEndDirective", + "OmpDirectiveName": "0x55ff4cbadb88-OmpDirectiveName", + "OmpClauseList": "0x55ff4cbadb28-OmpClauseList", + "Flags": "0x55ff4cbadb20-Flags" + }, + { + "id": "0x55ff4cbadb88-OmpDirectiveName", + "directive": "parallel" + }, + { + "id": "0x55ff4cbadb28-OmpClauseList" + }, + { + "id": "0x55ff4cbadcc0-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55ff4cbadcc0-ExecutableConstruct" + }, + { + "id": "0x55ff4cbadcc0-ExecutableConstruct", + "variantKey": "OpenMPConstruct", + "OpenMPConstruct": "0x55ff4cbb32e0-OpenMPConstruct" + }, + { + "id": "0x55ff4cbb32e0-OpenMPConstruct", + "variantKey": "OpenMPLoopConstruct", + "OpenMPLoopConstruct": "0x55ff4cbb32e0-OpenMPLoopConstruct" + }, + { + "id": "0x55ff4cbb32e0-OpenMPLoopConstruct", + "OmpBeginLoopDirective": "0x55ff4cbb33a0-OmpBeginLoopDirective", + "ExecutionPartConstruct": [ + "0x55ff4cbadf40-ExecutionPartConstruct" + ], + "OmpEndLoopDirective": "0x55ff4cbb32f0-OmpEndLoopDirective" + }, + { + "id": "0x55ff4cbb33a0-OmpBeginLoopDirective", + "OmpDirectiveName": "0x55ff4cbb3418-OmpDirectiveName", + "OmpClauseList": "0x55ff4cbb33b8-OmpClauseList", + "Flags": "0x55ff4cbb33b0-Flags" + }, + { + "id": "0x55ff4cbb3418-OmpDirectiveName", + "directive": "parallel do" + }, + { + "id": "0x55ff4cbb33b8-OmpClauseList" + }, + { + "id": "0x55ff4cbb3388-ExecutionPartConstruct" + }, + { + "id": "0x55ff4cbadf40-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55ff4cbadf40-ExecutableConstruct" + }, + { + "id": "0x55ff4cbadf40-ExecutableConstruct", + "variantKey": "DoConstruct", + "DoConstruct": "0x55ff4cbae100-DoConstruct" + }, + { + "id": "0x55ff4cbae100-DoConstruct", + "Statement": "0x55ff4cbae158-Statement", + "ExecutionPartConstruct": [ + "0x55ff4cba6ad0-ExecutionPartConstruct" + ], + "Statement": "0x55ff4cbae100-Statement" + }, + { + "id": "0x55ff4cbae158-Statement", + "statement": "0x55ff4cbae168-NonLabelDoStmt", + "source": "do i = 1, 2" + }, + { + "id": "0x55ff4cbae168-NonLabelDoStmt", + "LoopControl": "0x55ff4cbae168-LoopControl" + }, + { + "id": "0x55ff4cbae168-LoopControl", + "variantKey": "LoopBounds", + "LoopBounds": "0x55ff4cbae168-LoopBounds" + }, + { + "id": "0x55ff4cbae168-LoopBounds", + "var": "0x55ff4cbae168-Name", + "lower": "0x55ff4cbadd10-Expr", + "upper": "0x55ff4cbaddf0-Expr" + }, + { + "id": "0x55ff4cbae168-Name", + "source": "i" + }, + { + "id": "0x55ff4cbadd10-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55ff4cbadd30-LiteralConstant" + }, + { + "id": "0x55ff4cbadd30-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55ff4cbadd30-IntLiteralConstant" + }, + { + "id": "0x55ff4cbadd30-IntLiteralConstant", + "CharBlock": "1" + }, + { + "id": "0x55ff4cbaddf0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55ff4cbade10-LiteralConstant" + }, + { + "id": "0x55ff4cbade10-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55ff4cbade10-IntLiteralConstant" + }, + { + "id": "0x55ff4cbade10-IntLiteralConstant", + "CharBlock": "2" + }, + { + "id": "0x55ff4cbae140-ExecutionPartConstruct" + }, + { + "id": "0x55ff4cba6ad0-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55ff4cba6ad0-ExecutableConstruct" + }, + { + "id": "0x55ff4cba6ad0-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55ff4cba6ad0-Statement" + }, + { + "id": "0x55ff4cba6ad0-Statement", + "statement": "0x55ff4cba6ae0-ActionStmt", + "source": "total_sum = 1" + }, + { + "id": "0x55ff4cba6ae0-ActionStmt", + "variantKey": "AssignmentStmt", + "AssignmentStmt": "0x55ff4cbadf90-AssignmentStmt" + }, + { + "id": "0x55ff4cbadf90-AssignmentStmt", + "Variable": "0x55ff4cbae070-Variable", + "Expr": "0x55ff4cbadfa0-Expr" + }, + { + "id": "0x55ff4cbae070-Variable", + "variantKey": "Designator", + "Designator": "0x55ff4cbaded0-Designator" + }, + { + "id": "0x55ff4cbaded0-Designator", + "variantKey": "DataRef", + "DataRef": "0x55ff4cbadee0-DataRef" + }, + { + "id": "0x55ff4cbadee0-DataRef", + "variantKey": "Name", + "Name": "0x55ff4cbadee0-Name" + }, + { + "id": "0x55ff4cbadee0-Name", + "source": "total_sum" + }, + { + "id": "0x55ff4cbadfa0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55ff4cbadfc0-LiteralConstant" + }, + { + "id": "0x55ff4cbadfc0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55ff4cbadfc0-IntLiteralConstant" + }, + { + "id": "0x55ff4cbadfc0-IntLiteralConstant", + "CharBlock": "1" + }, + { + "id": "0x55ff4cbae100-Statement", + "statement": "0x55ff4cbae110-EndDoStmt", + "source": "end do" + }, + { + "id": "0x55ff4cbae110-EndDoStmt" + }, + { + "id": "0x55ff4cbb32f0-OmpEndLoopDirective", + "OmpDirectiveName": "0x55ff4cbb3368-OmpDirectiveName", + "OmpClauseList": "0x55ff4cbb3308-OmpClauseList", + "Flags": "0x55ff4cbb3300-Flags" + }, + { + "id": "0x55ff4cbb3368-OmpDirectiveName", + "directive": "parallel do" + }, + { + "id": "0x55ff4cbb3308-OmpClauseList" + }, + { + "id": "0x55ff4cbaeb00-Statement", + "statement": "0x55ff4cbaeb10-EndProgramStmt", + "source": "end program OPENMP_DEMO" + }, + { + "id": "0x55ff4cbaeb10-EndProgramStmt", + "Name": "0x55ff4cbaeb10-Name" + }, + { + "id": "0x55ff4cbaeb10-Name", + "source": "OPENMP_DEMO" + } + ], + "comments": [], "enums": { - "Fortran::common::CUDADataAttr": ["Constant", "Device", "Managed", "Pinned", "Shared", "Texture", "Unified"], - "Fortran::common::CUDASubprogramAttrs": ["Host", "Device", "HostDevice", "Global", "Grid_Global"], - "Fortran::common::ImportKind": ["Default", "Only", "None", "All"], - "Fortran::common::OmpDependenceKind": ["In", "Out", "Inout", "Inoutset", "Mutexinoutset", "Depobj"], - "Fortran::common::OmpMemoryOrderType": ["Acq_Rel", "Acquire", "Relaxed", "Release", "Seq_Cst"], - "Fortran::common::OpenACCDeviceType": ["Star", "Default", "Nvidia", "Radeon", "Host", "Multicore", "None"], - "Fortran::parser::AccDataModifier::Modifier": ["ReadOnly", "Zero"], - "Fortran::parser::AccessSpec::Kind": ["Public", "Private"], - "Fortran::parser::BindEntity::Kind": ["Object", "Common"], - "Fortran::parser::CompilerDirective::VectorLength::Kind": ["Auto", "Fixed", "Scalable"], - "Fortran::parser::ConnectSpec::CharExpr::Kind": ["Access", "Action", "Asynchronous", "Blank", "Decimal", "Delim", "Encoding", "Form", "Pad", "Position", "Round", "Sign", "Carriagecontrol", "Convert", "Dispose"], - "Fortran::parser::DefinedOperator::IntrinsicOperator": ["Power", "Multiply", "Divide", "Add", "Subtract", "Concat", "LT", "LE", "EQ", "NE", "GE", "GT", "NOT", "AND", "OR", "EQV", "NEQV"], - "Fortran::parser::ImplicitStmt::ImplicitNoneNameSpec": ["External", "Type"], - "Fortran::parser::InquireSpec::CharVar::Kind": ["Access", "Action", "Asynchronous", "Blank", "Decimal", "Delim", "Direct", "Encoding", "Form", "Formatted", "Iomsg", "Name", "Pad", "Position", "Read", "Readwrite", "Round", "Sequential", "Sign", "Stream", "Status", "Unformatted", "Write", "Carriagecontrol", "Convert", "Dispose"], - "Fortran::parser::InquireSpec::IntVar::Kind": ["Iostat", "Nextrec", "Number", "Pos", "Recl", "Size"], - "Fortran::parser::InquireSpec::LogVar::Kind": ["Exist", "Named", "Opened", "Pending"], - "Fortran::parser::IntentSpec::Intent": ["In", "Out", "InOut"], - "Fortran::parser::IoControlSpec::CharExpr::Kind": ["Advance", "Blank", "Decimal", "Delim", "Pad", "Round", "Sign"], - "Fortran::parser::ReductionOperator::Operator": ["Plus", "Multiply", "Max", "Min", "Iand", "Ior", "Ieor", "And", "Or", "Eqv", "Neqv"], - "Fortran::parser::OmpAccessGroup::Value": ["Cgroup"], - "Fortran::parser::OmpAdjustArgsClause::OmpAdjustOp::Value": ["Nothing", "Need_Device_Ptr"], - "Fortran::parser::OmpAlwaysModifier::Value": ["Always"], - "Fortran::parser::OmpAtClause::ActionTime": ["Compilation", "Execution"], - "Fortran::parser::OmpAttachModifier::Value": ["Always", "Never", "Auto"], - "Fortran::parser::OmpAutomapModifier::Value": ["Automap"], - "Fortran::parser::OmpBindClause::Binding": ["Parallel", "Teams", "Thread"], - "Fortran::parser::OmpChunkModifier::Value": ["Simd"], - "Fortran::parser::OmpCloseModifier::Value": ["Close"], - "Fortran::parser::OmpDefaultClause::DataSharingAttribute": ["Private", "Firstprivate", "Shared", "None"], - "Fortran::parser::OmpDefaultmapClause::ImplicitBehavior": ["Alloc", "To", "From", "Tofrom", "Firstprivate", "None", "Default", "Present"], - "Fortran::parser::OmpDeleteModifier::Value": ["Delete"], - "Fortran::parser::OmpDependenceType::Value": ["Sink", "Source"], - "Fortran::parser::OmpDeviceModifier::Value": ["Ancestor", "Device_Num"], - "Fortran::parser::OmpDeviceTypeClause::DeviceTypeDescription": ["Any", "Host", "Nohost"], - "Fortran::parser::OmpDirectiveSpecification::Flag": ["DeprecatedSyntax", "CrossesLabelDo"], - "Fortran::parser::OmpExpectation::Value": ["Present"], - "Fortran::parser::OmpInteropType::Value": ["Target", "Targetsync"], - "Fortran::parser::OmpLastprivateModifier::Value": ["Conditional"], - "Fortran::parser::OmpLinearModifier::Value": ["Ref", "Uval", "Val"], - "Fortran::parser::OmpMapType::Value": ["Alloc", "Delete", "From", "Release", "Storage", "To", "Tofrom"], - "Fortran::parser::OmpMapTypeModifier::Value": ["Always", "Close", "Present", "Ompx_Hold"], - "Fortran::parser::OmpObject::Invalid::Kind": ["BlankCommonBlock"], - "Fortran::parser::OmpOrderClause::Ordering": ["Concurrent"], - "Fortran::parser::OmpOrderingModifier::Value": ["Monotonic", "Nonmonotonic", "Simd"], - "Fortran::parser::OmpOrderModifier::Value": ["Reproducible", "Unconstrained"], - "Fortran::parser::OmpPrescriptiveness::Value": ["Strict"], - "Fortran::parser::OmpPresentModifier::Value": ["Present"], - "Fortran::parser::OmpProcBindClause::AffinityPolicy": ["Close", "Master", "Spread", "Primary"], - "Fortran::parser::OmpReductionModifier::Value": ["Default", "Inscan", "Task"], - "Fortran::parser::OmpRefModifier::Value": ["Ref_Ptee", "Ref_Ptr", "Ref_Ptr_Ptee"], - "Fortran::parser::OmpScheduleClause::Kind": ["Static", "Dynamic", "Guided", "Auto", "Runtime"], - "Fortran::parser::OmpSelfModifier::Value": ["Self"], - "Fortran::parser::OmpSeverityClause::SevLevel": ["Fatal", "Warning"], - "Fortran::parser::OmpThreadsetClause::ThreadsetPolicy": ["Omp_Pool", "Omp_Team"], - "Fortran::parser::OmpTraitSelectorName::Value": ["Arch", "Atomic_Default_Mem_Order", "Condition", "Device_Num", "Extension", "Isa", "Kind", "Requires", "Simd", "Uid", "Vendor"], - "Fortran::parser::OmpTraitSetSelectorName::Value": ["Construct", "Device", "Implementation", "Target_Device", "User"], - "Fortran::parser::OmpVariableCategory::Value": ["Aggregate", "All", "Allocatable", "Pointer", "Scalar"], - "Fortran::parser::OmpxHoldModifier::Value": ["Ompx_Hold"], - "Fortran::parser::ProcedureStmt::Kind": ["ModuleProcedure", "Procedure"], - "Fortran::parser::SavedEntity::Kind": ["Entity", "Common"], - "Fortran::parser::StopStmt::Kind": ["Stop", "ErrorStop"], - "Fortran::parser::UseStmt::ModuleNature": ["Intrinsic", "Non_Intrinsic"] + "Fortran::common::CUDADataAttr": [ + "Constant", + "Device", + "Managed", + "Pinned", + "Shared", + "Texture", + "Unified" + ], + "Fortran::common::CUDASubprogramAttrs": [ + "Host", + "Device", + "HostDevice", + "Global", + "Grid_Global" + ], + "Fortran::common::ImportKind": [ + "Default", + "Only", + "None", + "All" + ], + "Fortran::common::OmpDependenceKind": [ + "In", + "Out", + "Inout", + "Inoutset", + "Mutexinoutset", + "Depobj" + ], + "Fortran::common::OmpMemoryOrderType": [ + "Acq_Rel", + "Acquire", + "Relaxed", + "Release", + "Seq_Cst" + ], + "Fortran::common::OpenACCDeviceType": [ + "Star", + "Default", + "Nvidia", + "Radeon", + "Host", + "Multicore", + "None" + ], + "Fortran::parser::AccDataModifier::Modifier": [ + "ReadOnly", + "Zero" + ], + "Fortran::parser::AccessSpec::Kind": [ + "Public", + "Private" + ], + "Fortran::parser::BindEntity::Kind": [ + "Object", + "Common" + ], + "Fortran::parser::CompilerDirective::VectorLength::Kind": [ + "Auto", + "Fixed", + "Scalable" + ], + "Fortran::parser::ConnectSpec::CharExpr::Kind": [ + "Access", + "Action", + "Asynchronous", + "Blank", + "Decimal", + "Delim", + "Encoding", + "Form", + "Pad", + "Position", + "Round", + "Sign", + "Carriagecontrol", + "Convert", + "Dispose" + ], + "Fortran::parser::DefinedOperator::IntrinsicOperator": [ + "Power", + "Multiply", + "Divide", + "Add", + "Subtract", + "Concat", + "LT", + "LE", + "EQ", + "NE", + "GE", + "GT", + "NOT", + "AND", + "OR", + "EQV", + "NEQV" + ], + "Fortran::parser::ImplicitStmt::ImplicitNoneNameSpec": [ + "External", + "Type" + ], + "Fortran::parser::InquireSpec::CharVar::Kind": [ + "Access", + "Action", + "Asynchronous", + "Blank", + "Decimal", + "Delim", + "Direct", + "Encoding", + "Form", + "Formatted", + "Iomsg", + "Name", + "Pad", + "Position", + "Read", + "Readwrite", + "Round", + "Sequential", + "Sign", + "Stream", + "Status", + "Unformatted", + "Write", + "Carriagecontrol", + "Convert", + "Dispose" + ], + "Fortran::parser::InquireSpec::IntVar::Kind": [ + "Iostat", + "Nextrec", + "Number", + "Pos", + "Recl", + "Size" + ], + "Fortran::parser::InquireSpec::LogVar::Kind": [ + "Exist", + "Named", + "Opened", + "Pending" + ], + "Fortran::parser::IntentSpec::Intent": [ + "In", + "Out", + "InOut" + ], + "Fortran::parser::IoControlSpec::CharExpr::Kind": [ + "Advance", + "Blank", + "Decimal", + "Delim", + "Pad", + "Round", + "Sign" + ], + "Fortran::parser::ReductionOperator::Operator": [ + "Plus", + "Multiply", + "Max", + "Min", + "Iand", + "Ior", + "Ieor", + "And", + "Or", + "Eqv", + "Neqv" + ], + "Fortran::parser::OmpAccessGroup::Value": [ + "Cgroup" + ], + "Fortran::parser::OmpAdjustArgsClause::OmpAdjustOp::Value": [ + "Nothing", + "Need_Device_Ptr" + ], + "Fortran::parser::OmpAlwaysModifier::Value": [ + "Always" + ], + "Fortran::parser::OmpAtClause::ActionTime": [ + "Compilation", + "Execution" + ], + "Fortran::parser::OmpAttachModifier::Value": [ + "Always", + "Never", + "Auto" + ], + "Fortran::parser::OmpAutomapModifier::Value": [ + "Automap" + ], + "Fortran::parser::OmpBindClause::Binding": [ + "Parallel", + "Teams", + "Thread" + ], + "Fortran::parser::OmpChunkModifier::Value": [ + "Simd" + ], + "Fortran::parser::OmpCloseModifier::Value": [ + "Close" + ], + "Fortran::parser::OmpDefaultClause::DataSharingAttribute": [ + "Private", + "Firstprivate", + "Shared", + "None" + ], + "Fortran::parser::OmpDefaultmapClause::ImplicitBehavior": [ + "Alloc", + "To", + "From", + "Tofrom", + "Firstprivate", + "None", + "Default", + "Present" + ], + "Fortran::parser::OmpDeleteModifier::Value": [ + "Delete" + ], + "Fortran::parser::OmpDependenceType::Value": [ + "Sink", + "Source" + ], + "Fortran::parser::OmpDeviceModifier::Value": [ + "Ancestor", + "Device_Num" + ], + "Fortran::parser::OmpDeviceTypeClause::DeviceTypeDescription": [ + "Any", + "Host", + "Nohost" + ], + "Fortran::parser::OmpDirectiveSpecification::Flag": [ + "DeprecatedSyntax", + "CrossesLabelDo" + ], + "Fortran::parser::OmpExpectation::Value": [ + "Present" + ], + "Fortran::parser::OmpInteropType::Value": [ + "Target", + "Targetsync" + ], + "Fortran::parser::OmpLastprivateModifier::Value": [ + "Conditional" + ], + "Fortran::parser::OmpLinearModifier::Value": [ + "Ref", + "Uval", + "Val" + ], + "Fortran::parser::OmpMapType::Value": [ + "Alloc", + "Delete", + "From", + "Release", + "Storage", + "To", + "Tofrom" + ], + "Fortran::parser::OmpMapTypeModifier::Value": [ + "Always", + "Close", + "Present", + "Ompx_Hold" + ], + "Fortran::parser::OmpObject::Invalid::Kind": [ + "BlankCommonBlock" + ], + "Fortran::parser::OmpOrderClause::Ordering": [ + "Concurrent" + ], + "Fortran::parser::OmpOrderingModifier::Value": [ + "Monotonic", + "Nonmonotonic", + "Simd" + ], + "Fortran::parser::OmpOrderModifier::Value": [ + "Reproducible", + "Unconstrained" + ], + "Fortran::parser::OmpPrescriptiveness::Value": [ + "Strict" + ], + "Fortran::parser::OmpPresentModifier::Value": [ + "Present" + ], + "Fortran::parser::OmpProcBindClause::AffinityPolicy": [ + "Close", + "Master", + "Spread", + "Primary" + ], + "Fortran::parser::OmpReductionModifier::Value": [ + "Default", + "Inscan", + "Task" + ], + "Fortran::parser::OmpRefModifier::Value": [ + "Ref_Ptee", + "Ref_Ptr", + "Ref_Ptr_Ptee" + ], + "Fortran::parser::OmpScheduleClause::Kind": [ + "Static", + "Dynamic", + "Guided", + "Auto", + "Runtime" + ], + "Fortran::parser::OmpSelfModifier::Value": [ + "Self" + ], + "Fortran::parser::OmpSeverityClause::SevLevel": [ + "Fatal", + "Warning" + ], + "Fortran::parser::OmpThreadsetClause::ThreadsetPolicy": [ + "Omp_Pool", + "Omp_Team" + ], + "Fortran::parser::OmpTraitSelectorName::Value": [ + "Arch", + "Atomic_Default_Mem_Order", + "Condition", + "Device_Num", + "Extension", + "Isa", + "Kind", + "Requires", + "Simd", + "Uid", + "Vendor" + ], + "Fortran::parser::OmpTraitSetSelectorName::Value": [ + "Construct", + "Device", + "Implementation", + "Target_Device", + "User" + ], + "Fortran::parser::OmpVariableCategory::Value": [ + "Aggregate", + "All", + "Allocatable", + "Pointer", + "Scalar" + ], + "Fortran::parser::OmpxHoldModifier::Value": [ + "Ompx_Hold" + ], + "Fortran::parser::ProcedureStmt::Kind": [ + "ModuleProcedure", + "Procedure" + ], + "Fortran::parser::SavedEntity::Kind": [ + "Entity", + "Common" + ], + "Fortran::parser::StopStmt::Kind": [ + "Stop", + "ErrorStop" + ], + "Fortran::parser::UseStmt::ModuleNature": [ + "Intrinsic", + "Non_Intrinsic" + ] } -} \ No newline at end of file +} diff --git a/FortranParser/resources-test/fortran/parser/omp/omp_reduction.expected.f90 b/FortranParser/resources-test/fortran/parser/omp/omp_reduction.expected.f90 index db7a3799..0c5d8c78 100644 --- a/FortranParser/resources-test/fortran/parser/omp/omp_reduction.expected.f90 +++ b/FortranParser/resources-test/fortran/parser/omp/omp_reduction.expected.f90 @@ -1,5 +1,5 @@ PROGRAM OPENMP_DEMO - USE omp_lib + USE :: omp_lib INTEGER :: i, thread_id, num_threads, total_sum INTEGER :: shared_counter = 0 diff --git a/FortranParser/resources-test/fortran/parser/omp/omp_reduction.json b/FortranParser/resources-test/fortran/parser/omp/omp_reduction.json index 2522c259..a75499f6 100644 --- a/FortranParser/resources-test/fortran/parser/omp/omp_reduction.json +++ b/FortranParser/resources-test/fortran/parser/omp/omp_reduction.json @@ -1,553 +1,880 @@ -{"nodes": [ - { - "id": "0x649bca7a0640-Program", - "ProgramUnit": [ - "0x649bca7d50f0-ProgramUnit"] - }, - { - "id": "0x649bca7d50f0-ProgramUnit", - "variantKey": "MainProgram", - "MainProgram": "0x649bca7cbe30-MainProgram" - }, - { - "id": "0x649bca7cbe30-MainProgram", - "Statement": "0x649bca7cbf78-Statement", - "SpecificationPart": "0x649bca7cbed0-SpecificationPart", - "ExecutionPart": "0x649bca7cbeb8-ExecutionPart", - "Statement": "0x649bca7cbe30-Statement" - }, - { - "id": "0x649bca7cbf78-Statement", - "statement": "0x649bca7cbf88-ProgramStmt", - "source": "program OPENMP_DEMO" - }, - { - "id": "0x649bca7cbf88-ProgramStmt", - "Name": "0x649bca7cbf88-Name" - }, - { - "id": "0x649bca7cbf88-Name", - "source": "OPENMP_DEMO" - }, - { - "id": "0x649bca7cbed0-SpecificationPart", - "Statement": [ - "0x649bca7d55c0-Statement"], - "ImplicitPart": "0x649bca7cbee8-ImplicitPart", - "DeclarationConstruct": [ - "0x649bca7ad8b0-DeclarationConstruct", - "0x649bca7ad4e0-DeclarationConstruct"] - }, - { - "id": "0x649bca7d55c0-Statement", - "statement": "0x649bca7d7290-UseStmt", - "source": "use omp_lib" - }, - { - "id": "0x649bca7d7290-UseStmt", - "moduleName": "0x649bca7d7298-Name" - }, - { - "id": "0x649bca7d7298-Name", - "source": "omp_lib" - }, - { - "id": "0x649bca7cbee8-ImplicitPart" - }, - { - "id": "0x649bca7ad8b0-DeclarationConstruct", - "variantKey": "SpecificationConstruct", - "SpecificationConstruct": "0x649bca7ad8b0-SpecificationConstruct" - }, - { - "id": "0x649bca7ad8b0-SpecificationConstruct", - "variantKey": "Statement", - "Statement": "0x649bca7ad8b0-Statement" - }, - { - "id": "0x649bca7ad8b0-Statement", - "statement": "0x649bca7daa20-TypeDeclarationStmt", - "source": "integer :: i, thread_id, num_threads, total_sum" - }, - { - "id": "0x649bca7daa20-TypeDeclarationStmt", - "DeclarationTypeSpec": "0x649bca7daa50-DeclarationTypeSpec", - "EntityDecl": [ - "0x649bca7dae00-EntityDecl", - "0x649bca7dab30-EntityDecl", - "0x649bca7dac20-EntityDecl", - "0x649bca7dad10-EntityDecl"] - }, - { - "id": "0x649bca7daa50-DeclarationTypeSpec", - "variantKey": "IntrinsicTypeSpec", - "IntrinsicTypeSpec": "0x649bca7daa50-IntrinsicTypeSpec" - }, - { - "id": "0x649bca7daa50-IntrinsicTypeSpec", - "variantKey": "IntegerTypeSpec", - "IntegerTypeSpec": "0x649bca7daa50-IntegerTypeSpec" - }, - { - "id": "0x649bca7daa50-IntegerTypeSpec" - }, - { - "id": "0x649bca7dae00-EntityDecl", - "Name": "0x649bca7daeb8-Name" - }, - { - "id": "0x649bca7daeb8-Name", - "source": "i" - }, - { - "id": "0x649bca7dab30-EntityDecl", - "Name": "0x649bca7dabe8-Name" - }, - { - "id": "0x649bca7dabe8-Name", - "source": "thread_id" - }, - { - "id": "0x649bca7dac20-EntityDecl", - "Name": "0x649bca7dacd8-Name" - }, - { - "id": "0x649bca7dacd8-Name", - "source": "num_threads" - }, - { - "id": "0x649bca7dad10-EntityDecl", - "Name": "0x649bca7dadc8-Name" - }, - { - "id": "0x649bca7dadc8-Name", - "source": "total_sum" - }, - { - "id": "0x649bca7ad4e0-DeclarationConstruct", - "variantKey": "SpecificationConstruct", - "SpecificationConstruct": "0x649bca7ad4e0-SpecificationConstruct" - }, - { - "id": "0x649bca7ad4e0-SpecificationConstruct", - "variantKey": "Statement", - "Statement": "0x649bca7ad4e0-Statement" - }, - { - "id": "0x649bca7ad4e0-Statement", - "statement": "0x649bca7daaa0-TypeDeclarationStmt", - "source": "integer :: shared_counter = 0" - }, - { - "id": "0x649bca7daaa0-TypeDeclarationStmt", - "DeclarationTypeSpec": "0x649bca7daad0-DeclarationTypeSpec", - "EntityDecl": [ - "0x649bca7dafe0-EntityDecl"] - }, - { - "id": "0x649bca7daad0-DeclarationTypeSpec", - "variantKey": "IntrinsicTypeSpec", - "IntrinsicTypeSpec": "0x649bca7daad0-IntrinsicTypeSpec" - }, - { - "id": "0x649bca7daad0-IntrinsicTypeSpec", - "variantKey": "IntegerTypeSpec", - "IntegerTypeSpec": "0x649bca7daad0-IntegerTypeSpec" - }, - { - "id": "0x649bca7daad0-IntegerTypeSpec" - }, - { - "id": "0x649bca7dafe0-EntityDecl", - "Name": "0x649bca7db098-Name", - "Initialization": "0x649bca7dafe0-Initialization" - }, - { - "id": "0x649bca7db098-Name", - "source": "shared_counter" - }, - { - "id": "0x649bca7dafe0-Initialization", - "variantKey": "Expr", - "Expr": "0x649bca741790-Expr" - }, - { - "id": "0x649bca741790-Expr", - "variantKey": "LiteralConstant", - "LiteralConstant": "0x649bca7417b0-LiteralConstant" - }, - { - "id": "0x649bca7417b0-LiteralConstant", - "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x649bca7417b0-IntLiteralConstant" - }, - { - "id": "0x649bca7417b0-IntLiteralConstant", - "CharBlock": "0" - }, - { - "id": "0x649bca7cbeb8-ExecutionPart", - "ExecutionPartConstruct": [ - "0x649bca7d6100-ExecutionPartConstruct"] - }, - { - "id": "0x649bca7cbeb8-ExecutionPartConstruct" - }, - { - "id": "0x649bca7d6100-ExecutionPartConstruct", - "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x649bca7d6100-ExecutableConstruct" - }, - { - "id": "0x649bca7d6100-ExecutableConstruct", - "variantKey": "OpenMPConstruct", - "OpenMPConstruct": "0x649bca7d6dd0-OpenMPConstruct" - }, - { - "id": "0x649bca7d6dd0-OpenMPConstruct", - "variantKey": "OpenMPLoopConstruct", - "OpenMPLoopConstruct": "0x649bca7d6dd0-OpenMPLoopConstruct" - }, - { - "id": "0x649bca7d6dd0-OpenMPLoopConstruct", - "OmpBeginLoopDirective": "0x649bca7d6e90-OmpBeginLoopDirective", - "ExecutionPartConstruct": [ - "0x649bca7d6d10-ExecutionPartConstruct"], - "OmpEndLoopDirective": "0x649bca7d6de0-OmpEndLoopDirective" - }, - { - "id": "0x649bca7d6e90-OmpBeginLoopDirective", - "OmpDirectiveName": "0x649bca7d6f08-OmpDirectiveName", - "OmpClauseList": "0x649bca7d6ea8-OmpClauseList", - "Flags = {}": "0x649bca7d6ea0-Flags = {}" - }, - { - "id": "0x649bca7d6f08-OmpDirectiveName", - "directive": "parallel do" - }, - { - "id": "0x649bca7d6ea8-OmpClauseList", - "OmpClause": [ - "0x649bca7d57e0-OmpClause"] - }, - { - "id": "0x649bca7d57e0-OmpClause", - "variantKey": "Reduction", - "Reduction": "0x649bca7d57f0-Reduction" - }, - { - "id": "0x649bca7d57f0-Reduction", - "OmpReductionClause": "0x649bca7d57f0-OmpReductionClause", - "kind": "REDUCTION" - }, - { - "id": "0x649bca7d57f0-OmpReductionClause", - "Modifier": [ - "0x649bca7e3800-Modifier"], - "OmpObjectList": "0x649bca7d57f0-OmpObjectList" - }, - { - "id": "0x649bca7e3800-Modifier", - "variantKey": "OmpReductionIdentifier", - "OmpReductionIdentifier": "0x649bca7e3810-OmpReductionIdentifier" - }, - { - "id": "0x649bca7e3810-OmpReductionIdentifier", - "variantKey": "DefinedOperator", - "DefinedOperator": "0x649bca7e3810-DefinedOperator" - }, - { - "id": "0x649bca7e3810-DefinedOperator", - "op": "Add" - }, - { - "id": "0x649bca7e3810-IntrinsicOperator = Add", - "disambiguation": "Fortran::parser::DefinedOperator::IntrinsicOperator", - "value": "Add" - }, - { - "id": "0x649bca7d57f0-OmpObjectList", - "OmpObject": [ - "0x649bca7dc780-OmpObject"] - }, - { - "id": "0x649bca7dc780-OmpObject", - "variantKey": "Designator", - "Designator": "0x649bca7dc780-Designator" - }, - { - "id": "0x649bca7dc780-Designator", - "variantKey": "DataRef", - "DataRef": "0x649bca7dc790-DataRef" - }, - { - "id": "0x649bca7dc790-DataRef", - "variantKey": "Name", - "Name": "0x649bca7dc790-Name" - }, - { - "id": "0x649bca7dc790-Name", - "source": "total_sum" - }, - { - "id": "0x649bca7d6e78-ExecutionPartConstruct" - }, - { - "id": "0x649bca7d6d10-ExecutionPartConstruct", - "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x649bca7d6d10-ExecutableConstruct" - }, - { - "id": "0x649bca7d6d10-ExecutableConstruct", - "variantKey": "DoConstruct", - "DoConstruct": "0x649bca777780-DoConstruct" - }, - { - "id": "0x649bca777780-DoConstruct", - "Statement": "0x649bca7777d8-Statement", - "ExecutionPartConstruct": [ - "0x649bca7d5b10-ExecutionPartConstruct"], - "Statement": "0x649bca777780-Statement" - }, - { - "id": "0x649bca7777d8-Statement", - "statement": "0x649bca7777e8-NonLabelDoStmt", - "source": "do i = 1, 2" - }, - { - "id": "0x649bca7777e8-NonLabelDoStmt", - "LoopControl": "0x649bca7777e8-LoopControl" - }, - { - "id": "0x649bca7777e8-LoopControl", - "variantKey": "LoopBounds", - "LoopBounds": "0x649bca7777e8-LoopBounds" - }, - { - "id": "0x649bca7777e8-LoopBounds", - "var": "0x649bca7777e8-Name", - "lower": "0x649bca7d6b40-Expr", - "upper": "0x649bca7d6c20-Expr" - }, - { - "id": "0x649bca7777e8-Name", - "source": "i" - }, - { - "id": "0x649bca7d6b40-Expr", - "variantKey": "LiteralConstant", - "LiteralConstant": "0x649bca7d6b60-LiteralConstant" - }, - { - "id": "0x649bca7d6b60-LiteralConstant", - "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x649bca7d6b60-IntLiteralConstant" - }, - { - "id": "0x649bca7d6b60-IntLiteralConstant", - "CharBlock": "1" - }, - { - "id": "0x649bca7d6c20-Expr", - "variantKey": "LiteralConstant", - "LiteralConstant": "0x649bca7d6c40-LiteralConstant" - }, - { - "id": "0x649bca7d6c40-LiteralConstant", - "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x649bca7d6c40-IntLiteralConstant" - }, - { - "id": "0x649bca7d6c40-IntLiteralConstant", - "CharBlock": "2" - }, - { - "id": "0x649bca7777c0-ExecutionPartConstruct" - }, - { - "id": "0x649bca7d5b10-ExecutionPartConstruct", - "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x649bca7d5b10-ExecutableConstruct" - }, - { - "id": "0x649bca7d5b10-ExecutableConstruct", - "variantKey": "Statement", - "Statement": "0x649bca7d5b10-Statement" - }, - { - "id": "0x649bca7d5b10-Statement", - "statement": "0x649bca7d5b20-ActionStmt", - "source": "total_sum = total_sum + 1" - }, - { - "id": "0x649bca7d5b20-ActionStmt", - "variantKey": "AssignmentStmt", - "AssignmentStmt": "0x649bca7ae2e0-AssignmentStmt" - }, - { - "id": "0x649bca7ae2e0-AssignmentStmt", - "Variable": "0x649bca7ae3c0-Variable", - "Expr": "0x649bca7ae2f0-Expr" - }, - { - "id": "0x649bca7ae3c0-Variable", - "variantKey": "Designator", - "Designator": "0x649bca7d68c0-Designator" - }, - { - "id": "0x649bca7d68c0-Designator", - "variantKey": "DataRef", - "DataRef": "0x649bca7d68d0-DataRef" - }, - { - "id": "0x649bca7d68d0-DataRef", - "variantKey": "Name", - "Name": "0x649bca7d68d0-Name" - }, - { - "id": "0x649bca7d68d0-Name", - "source": "total_sum" - }, - { - "id": "0x649bca7ae2f0-Expr", - "variantKey": "Add", - "Add": "0x649bca7ae310-Add" - }, - { - "id": "0x649bca7ae310-Add", - "left": "0x649bca7d58d0-Expr", - "right": "0x649bca7db220-Expr", - "op": "ADD" - }, - { - "id": "0x649bca7d58d0-Expr", - "variantKey": "Designator", - "Designator": "0x649bca7d6a20-Designator" - }, - { - "id": "0x649bca7d6a20-Designator", - "variantKey": "DataRef", - "DataRef": "0x649bca7d6a30-DataRef" - }, - { - "id": "0x649bca7d6a30-DataRef", - "variantKey": "Name", - "Name": "0x649bca7d6a30-Name" - }, - { - "id": "0x649bca7d6a30-Name", - "source": "total_sum" - }, - { - "id": "0x649bca7db220-Expr", - "variantKey": "LiteralConstant", - "LiteralConstant": "0x649bca7db240-LiteralConstant" - }, - { - "id": "0x649bca7db240-LiteralConstant", - "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x649bca7db240-IntLiteralConstant" - }, - { - "id": "0x649bca7db240-IntLiteralConstant", - "CharBlock": "1" - }, - { - "id": "0x649bca777780-Statement", - "statement": "0x649bca777790-EndDoStmt", - "source": "end do" - }, - { - "id": "0x649bca777790-EndDoStmt" - }, - { - "id": "0x649bca7d6de0-OmpEndLoopDirective", - "OmpDirectiveName": "0x649bca7d6e58-OmpDirectiveName", - "OmpClauseList": "0x649bca7d6df8-OmpClauseList", - "Flags = {}": "0x649bca7d6df0-Flags = {}" - }, - { - "id": "0x649bca7d6e58-OmpDirectiveName", - "directive": "parallel do" - }, - { - "id": "0x649bca7d6df8-OmpClauseList" - }, - { - "id": "0x649bca7cbe30-Statement", - "statement": "0x649bca7cbe40-EndProgramStmt", - "source": "end program OPENMP_DEMO" - }, - { - "id": "0x649bca7cbe40-EndProgramStmt", - "Name": "0x649bca7cbe40-Name" - }, - { - "id": "0x649bca7cbe40-Name", - "source": "OPENMP_DEMO" - }], +{ + "fileExtension": "f90", + "nodes": [ + { + "id": "0x564fd27f4f00-Program", + "ProgramUnit": [ + "0x564fd2829b30-ProgramUnit" + ] + }, + { + "id": "0x564fd2829b30-ProgramUnit", + "variantKey": "MainProgram", + "MainProgram": "0x564fd2820240-MainProgram" + }, + { + "id": "0x564fd2820240-MainProgram", + "Statement": "0x564fd2820388-Statement", + "SpecificationPart": "0x564fd28202e0-SpecificationPart", + "ExecutionPart": "0x564fd28202c8-ExecutionPart", + "Statement": "0x564fd2820240-Statement" + }, + { + "id": "0x564fd2820388-Statement", + "statement": "0x564fd2820398-ProgramStmt", + "source": "program OPENMP_DEMO" + }, + { + "id": "0x564fd2820398-ProgramStmt", + "Name": "0x564fd2820398-Name" + }, + { + "id": "0x564fd2820398-Name", + "source": "OPENMP_DEMO" + }, + { + "id": "0x564fd28202e0-SpecificationPart", + "Statement": [ + "0x564fd2829c60-Statement" + ], + "ImplicitPart": "0x564fd28202f8-ImplicitPart", + "DeclarationConstruct": [ + "0x564fd2802170-DeclarationConstruct", + "0x564fd2801da0-DeclarationConstruct" + ] + }, + { + "id": "0x564fd2829c60-Statement", + "statement": "0x564fd28388f0-UseStmt", + "source": "use omp_lib" + }, + { + "id": "0x564fd28388f0-UseStmt", + "moduleName": "0x564fd28388f8-Name", + "variantKey": "Rename", + "Rename": [] + }, + { + "id": "0x564fd28388f8-Name", + "source": "omp_lib" + }, + { + "id": "0x564fd28202f8-ImplicitPart" + }, + { + "id": "0x564fd2802170-DeclarationConstruct", + "variantKey": "SpecificationConstruct", + "SpecificationConstruct": "0x564fd2802170-SpecificationConstruct" + }, + { + "id": "0x564fd2802170-SpecificationConstruct", + "variantKey": "Statement", + "Statement": "0x564fd2802170-Statement" + }, + { + "id": "0x564fd2802170-Statement", + "statement": "0x564fd282f140-TypeDeclarationStmt", + "source": "integer :: i, thread_id, num_threads, total_sum" + }, + { + "id": "0x564fd282f140-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x564fd282f170-DeclarationTypeSpec", + "EntityDecl": [ + "0x564fd282f520-EntityDecl", + "0x564fd282f250-EntityDecl", + "0x564fd282f340-EntityDecl", + "0x564fd282f430-EntityDecl" + ] + }, + { + "id": "0x564fd282f170-DeclarationTypeSpec", + "variantKey": "IntrinsicTypeSpec", + "IntrinsicTypeSpec": "0x564fd282f170-IntrinsicTypeSpec" + }, + { + "id": "0x564fd282f170-IntrinsicTypeSpec", + "variantKey": "IntegerTypeSpec", + "IntegerTypeSpec": "0x564fd282f170-IntegerTypeSpec" + }, + { + "id": "0x564fd282f170-IntegerTypeSpec" + }, + { + "id": "0x564fd282f520-EntityDecl", + "Name": "0x564fd282f5d8-Name" + }, + { + "id": "0x564fd282f5d8-Name", + "source": "i" + }, + { + "id": "0x564fd282f250-EntityDecl", + "Name": "0x564fd282f308-Name" + }, + { + "id": "0x564fd282f308-Name", + "source": "thread_id" + }, + { + "id": "0x564fd282f340-EntityDecl", + "Name": "0x564fd282f3f8-Name" + }, + { + "id": "0x564fd282f3f8-Name", + "source": "num_threads" + }, + { + "id": "0x564fd282f430-EntityDecl", + "Name": "0x564fd282f4e8-Name" + }, + { + "id": "0x564fd282f4e8-Name", + "source": "total_sum" + }, + { + "id": "0x564fd2801da0-DeclarationConstruct", + "variantKey": "SpecificationConstruct", + "SpecificationConstruct": "0x564fd2801da0-SpecificationConstruct" + }, + { + "id": "0x564fd2801da0-SpecificationConstruct", + "variantKey": "Statement", + "Statement": "0x564fd2801da0-Statement" + }, + { + "id": "0x564fd2801da0-Statement", + "statement": "0x564fd282f1c0-TypeDeclarationStmt", + "source": "integer :: shared_counter = 0" + }, + { + "id": "0x564fd282f1c0-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x564fd282f1f0-DeclarationTypeSpec", + "EntityDecl": [ + "0x564fd282f700-EntityDecl" + ] + }, + { + "id": "0x564fd282f1f0-DeclarationTypeSpec", + "variantKey": "IntrinsicTypeSpec", + "IntrinsicTypeSpec": "0x564fd282f1f0-IntrinsicTypeSpec" + }, + { + "id": "0x564fd282f1f0-IntrinsicTypeSpec", + "variantKey": "IntegerTypeSpec", + "IntegerTypeSpec": "0x564fd282f1f0-IntegerTypeSpec" + }, + { + "id": "0x564fd282f1f0-IntegerTypeSpec" + }, + { + "id": "0x564fd282f700-EntityDecl", + "Name": "0x564fd282f7b8-Name", + "Initialization": "0x564fd282f700-Initialization" + }, + { + "id": "0x564fd282f7b8-Name", + "source": "shared_counter" + }, + { + "id": "0x564fd282f700-Initialization", + "variantKey": "Expr", + "Expr": "0x564fd2794790-Expr" + }, + { + "id": "0x564fd2794790-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x564fd27947b0-LiteralConstant" + }, + { + "id": "0x564fd27947b0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x564fd27947b0-IntLiteralConstant" + }, + { + "id": "0x564fd27947b0-IntLiteralConstant", + "CharBlock": "0" + }, + { + "id": "0x564fd28202c8-ExecutionPart", + "ExecutionPartConstruct": [ + "0x564fd282ae00-ExecutionPartConstruct" + ] + }, + { + "id": "0x564fd28202c8-ExecutionPartConstruct" + }, + { + "id": "0x564fd282ae00-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x564fd282ae00-ExecutableConstruct" + }, + { + "id": "0x564fd282ae00-ExecutableConstruct", + "variantKey": "OpenMPConstruct", + "OpenMPConstruct": "0x564fd2830760-OpenMPConstruct" + }, + { + "id": "0x564fd2830760-OpenMPConstruct", + "variantKey": "OpenMPLoopConstruct", + "OpenMPLoopConstruct": "0x564fd2830760-OpenMPLoopConstruct" + }, + { + "id": "0x564fd2830760-OpenMPLoopConstruct", + "OmpBeginLoopDirective": "0x564fd2830820-OmpBeginLoopDirective", + "ExecutionPartConstruct": [ + "0x564fd28306a0-ExecutionPartConstruct" + ], + "OmpEndLoopDirective": "0x564fd2830770-OmpEndLoopDirective" + }, + { + "id": "0x564fd2830820-OmpBeginLoopDirective", + "OmpDirectiveName": "0x564fd2830898-OmpDirectiveName", + "OmpClauseList": "0x564fd2830838-OmpClauseList", + "Flags": "0x564fd2830830-Flags" + }, + { + "id": "0x564fd2830898-OmpDirectiveName", + "directive": "parallel do" + }, + { + "id": "0x564fd2830838-OmpClauseList", + "OmpClause": [ + "0x564fd2830160-OmpClause" + ] + }, + { + "id": "0x564fd2830160-OmpClause", + "variantKey": "Reduction", + "Reduction": "0x564fd2830170-Reduction" + }, + { + "id": "0x564fd2830170-Reduction", + "OmpReductionClause": "0x564fd2830170-OmpReductionClause", + "kind": "REDUCTION" + }, + { + "id": "0x564fd2830170-OmpReductionClause", + "Modifier": [ + "0x564fd28316a0-Modifier" + ], + "OmpObjectList": "0x564fd2830170-OmpObjectList" + }, + { + "id": "0x564fd28316a0-Modifier", + "variantKey": "OmpReductionIdentifier", + "OmpReductionIdentifier": "0x564fd28316b0-OmpReductionIdentifier" + }, + { + "id": "0x564fd28316b0-OmpReductionIdentifier", + "variantKey": "DefinedOperator", + "DefinedOperator": "0x564fd28316b0-DefinedOperator" + }, + { + "id": "0x564fd28316b0-DefinedOperator", + "op": "Add" + }, + { + "id": "0x564fd28316b0-IntrinsicOperator", + "disambiguation": "Fortran::parser::DefinedOperator::IntrinsicOperator", + "value": "Add" + }, + { + "id": "0x564fd2830170-OmpObjectList", + "OmpObject": [ + "0x564fd282a730-OmpObject" + ] + }, + { + "id": "0x564fd282a730-OmpObject", + "variantKey": "Designator", + "Designator": "0x564fd282a730-Designator" + }, + { + "id": "0x564fd282a730-Designator", + "variantKey": "DataRef", + "DataRef": "0x564fd282a740-DataRef" + }, + { + "id": "0x564fd282a740-DataRef", + "variantKey": "Name", + "Name": "0x564fd282a740-Name" + }, + { + "id": "0x564fd282a740-Name", + "source": "total_sum" + }, + { + "id": "0x564fd2830808-ExecutionPartConstruct" + }, + { + "id": "0x564fd28306a0-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x564fd28306a0-ExecutableConstruct" + }, + { + "id": "0x564fd28306a0-ExecutableConstruct", + "variantKey": "DoConstruct", + "DoConstruct": "0x564fd27ca780-DoConstruct" + }, + { + "id": "0x564fd27ca780-DoConstruct", + "Statement": "0x564fd27ca7d8-Statement", + "ExecutionPartConstruct": [ + "0x564fd2831640-ExecutionPartConstruct" + ], + "Statement": "0x564fd27ca780-Statement" + }, + { + "id": "0x564fd27ca7d8-Statement", + "statement": "0x564fd27ca7e8-NonLabelDoStmt", + "source": "do i = 1, 2" + }, + { + "id": "0x564fd27ca7e8-NonLabelDoStmt", + "LoopControl": "0x564fd27ca7e8-LoopControl" + }, + { + "id": "0x564fd27ca7e8-LoopControl", + "variantKey": "LoopBounds", + "LoopBounds": "0x564fd27ca7e8-LoopBounds" + }, + { + "id": "0x564fd27ca7e8-LoopBounds", + "var": "0x564fd27ca7e8-Name", + "lower": "0x564fd28304d0-Expr", + "upper": "0x564fd28305b0-Expr" + }, + { + "id": "0x564fd27ca7e8-Name", + "source": "i" + }, + { + "id": "0x564fd28304d0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x564fd28304f0-LiteralConstant" + }, + { + "id": "0x564fd28304f0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x564fd28304f0-IntLiteralConstant" + }, + { + "id": "0x564fd28304f0-IntLiteralConstant", + "CharBlock": "1" + }, + { + "id": "0x564fd28305b0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x564fd28305d0-LiteralConstant" + }, + { + "id": "0x564fd28305d0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x564fd28305d0-IntLiteralConstant" + }, + { + "id": "0x564fd28305d0-IntLiteralConstant", + "CharBlock": "2" + }, + { + "id": "0x564fd27ca7c0-ExecutionPartConstruct" + }, + { + "id": "0x564fd2831640-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x564fd2831640-ExecutableConstruct" + }, + { + "id": "0x564fd2831640-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x564fd2831640-Statement" + }, + { + "id": "0x564fd2831640-Statement", + "statement": "0x564fd2831650-ActionStmt", + "source": "total_sum = total_sum + 1" + }, + { + "id": "0x564fd2831650-ActionStmt", + "variantKey": "AssignmentStmt", + "AssignmentStmt": "0x564fd2802ce0-AssignmentStmt" + }, + { + "id": "0x564fd2802ce0-AssignmentStmt", + "Variable": "0x564fd2802dc0-Variable", + "Expr": "0x564fd2802cf0-Expr" + }, + { + "id": "0x564fd2802dc0-Variable", + "variantKey": "Designator", + "Designator": "0x564fd2829750-Designator" + }, + { + "id": "0x564fd2829750-Designator", + "variantKey": "DataRef", + "DataRef": "0x564fd2829760-DataRef" + }, + { + "id": "0x564fd2829760-DataRef", + "variantKey": "Name", + "Name": "0x564fd2829760-Name" + }, + { + "id": "0x564fd2829760-Name", + "source": "total_sum" + }, + { + "id": "0x564fd2802cf0-Expr", + "variantKey": "Add", + "Add": "0x564fd2802d10-Add" + }, + { + "id": "0x564fd2802d10-Add", + "left": "0x564fd2830250-Expr", + "right": "0x564fd282f940-Expr", + "op": "ADD" + }, + { + "id": "0x564fd2830250-Expr", + "variantKey": "Designator", + "Designator": "0x564fd28303b0-Designator" + }, + { + "id": "0x564fd28303b0-Designator", + "variantKey": "DataRef", + "DataRef": "0x564fd28303c0-DataRef" + }, + { + "id": "0x564fd28303c0-DataRef", + "variantKey": "Name", + "Name": "0x564fd28303c0-Name" + }, + { + "id": "0x564fd28303c0-Name", + "source": "total_sum" + }, + { + "id": "0x564fd282f940-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x564fd282f960-LiteralConstant" + }, + { + "id": "0x564fd282f960-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x564fd282f960-IntLiteralConstant" + }, + { + "id": "0x564fd282f960-IntLiteralConstant", + "CharBlock": "1" + }, + { + "id": "0x564fd27ca780-Statement", + "statement": "0x564fd27ca790-EndDoStmt", + "source": "end do" + }, + { + "id": "0x564fd27ca790-EndDoStmt" + }, + { + "id": "0x564fd2830770-OmpEndLoopDirective", + "OmpDirectiveName": "0x564fd28307e8-OmpDirectiveName", + "OmpClauseList": "0x564fd2830788-OmpClauseList", + "Flags": "0x564fd2830780-Flags" + }, + { + "id": "0x564fd28307e8-OmpDirectiveName", + "directive": "parallel do" + }, + { + "id": "0x564fd2830788-OmpClauseList" + }, + { + "id": "0x564fd2820240-Statement", + "statement": "0x564fd2820250-EndProgramStmt", + "source": "end program OPENMP_DEMO" + }, + { + "id": "0x564fd2820250-EndProgramStmt", + "Name": "0x564fd2820250-Name" + }, + { + "id": "0x564fd2820250-Name", + "source": "OPENMP_DEMO" + } + ], + "comments": [], "enums": { - "Fortran::common::CUDADataAttr": ["Constant", "Device", "Managed", "Pinned", "Shared", "Texture", "Unified"], - "Fortran::common::CUDASubprogramAttrs": ["Host", "Device", "HostDevice", "Global", "Grid_Global"], - "Fortran::common::ImportKind": ["Default", "Only", "None", "All"], - "Fortran::common::OmpDependenceKind": ["In", "Out", "Inout", "Inoutset", "Mutexinoutset", "Depobj"], - "Fortran::common::OmpMemoryOrderType": ["Acq_Rel", "Acquire", "Relaxed", "Release", "Seq_Cst"], - "Fortran::common::OpenACCDeviceType": ["Star", "Default", "Nvidia", "Radeon", "Host", "Multicore", "None"], - "Fortran::parser::AccDataModifier::Modifier": ["ReadOnly", "Zero"], - "Fortran::parser::AccessSpec::Kind": ["Public", "Private"], - "Fortran::parser::BindEntity::Kind": ["Object", "Common"], - "Fortran::parser::CompilerDirective::VectorLength::Kind": ["Auto", "Fixed", "Scalable"], - "Fortran::parser::ConnectSpec::CharExpr::Kind": ["Access", "Action", "Asynchronous", "Blank", "Decimal", "Delim", "Encoding", "Form", "Pad", "Position", "Round", "Sign", "Carriagecontrol", "Convert", "Dispose"], - "Fortran::parser::DefinedOperator::IntrinsicOperator": ["Power", "Multiply", "Divide", "Add", "Subtract", "Concat", "LT", "LE", "EQ", "NE", "GE", "GT", "NOT", "AND", "OR", "EQV", "NEQV"], - "Fortran::parser::ImplicitStmt::ImplicitNoneNameSpec": ["External", "Type"], - "Fortran::parser::InquireSpec::CharVar::Kind": ["Access", "Action", "Asynchronous", "Blank", "Decimal", "Delim", "Direct", "Encoding", "Form", "Formatted", "Iomsg", "Name", "Pad", "Position", "Read", "Readwrite", "Round", "Sequential", "Sign", "Stream", "Status", "Unformatted", "Write", "Carriagecontrol", "Convert", "Dispose"], - "Fortran::parser::InquireSpec::IntVar::Kind": ["Iostat", "Nextrec", "Number", "Pos", "Recl", "Size"], - "Fortran::parser::InquireSpec::LogVar::Kind": ["Exist", "Named", "Opened", "Pending"], - "Fortran::parser::IntentSpec::Intent": ["In", "Out", "InOut"], - "Fortran::parser::IoControlSpec::CharExpr::Kind": ["Advance", "Blank", "Decimal", "Delim", "Pad", "Round", "Sign"], - "Fortran::parser::ReductionOperator::Operator": ["Plus", "Multiply", "Max", "Min", "Iand", "Ior", "Ieor", "And", "Or", "Eqv", "Neqv"], - "Fortran::parser::OmpAccessGroup::Value": ["Cgroup"], - "Fortran::parser::OmpAdjustArgsClause::OmpAdjustOp::Value": ["Nothing", "Need_Device_Ptr"], - "Fortran::parser::OmpAlwaysModifier::Value": ["Always"], - "Fortran::parser::OmpAtClause::ActionTime": ["Compilation", "Execution"], - "Fortran::parser::OmpAttachModifier::Value": ["Always", "Never", "Auto"], - "Fortran::parser::OmpAutomapModifier::Value": ["Automap"], - "Fortran::parser::OmpBindClause::Binding": ["Parallel", "Teams", "Thread"], - "Fortran::parser::OmpChunkModifier::Value": ["Simd"], - "Fortran::parser::OmpCloseModifier::Value": ["Close"], - "Fortran::parser::OmpDefaultClause::DataSharingAttribute": ["Private", "Firstprivate", "Shared", "None"], - "Fortran::parser::OmpDefaultmapClause::ImplicitBehavior": ["Alloc", "To", "From", "Tofrom", "Firstprivate", "None", "Default", "Present"], - "Fortran::parser::OmpDeleteModifier::Value": ["Delete"], - "Fortran::parser::OmpDependenceType::Value": ["Sink", "Source"], - "Fortran::parser::OmpDeviceModifier::Value": ["Ancestor", "Device_Num"], - "Fortran::parser::OmpDeviceTypeClause::DeviceTypeDescription": ["Any", "Host", "Nohost"], - "Fortran::parser::OmpDirectiveSpecification::Flag": ["DeprecatedSyntax", "CrossesLabelDo"], - "Fortran::parser::OmpExpectation::Value": ["Present"], - "Fortran::parser::OmpInteropType::Value": ["Target", "Targetsync"], - "Fortran::parser::OmpLastprivateModifier::Value": ["Conditional"], - "Fortran::parser::OmpLinearModifier::Value": ["Ref", "Uval", "Val"], - "Fortran::parser::OmpMapType::Value": ["Alloc", "Delete", "From", "Release", "Storage", "To", "Tofrom"], - "Fortran::parser::OmpMapTypeModifier::Value": ["Always", "Close", "Present", "Ompx_Hold"], - "Fortran::parser::OmpObject::Invalid::Kind": ["BlankCommonBlock"], - "Fortran::parser::OmpOrderClause::Ordering": ["Concurrent"], - "Fortran::parser::OmpOrderingModifier::Value": ["Monotonic", "Nonmonotonic", "Simd"], - "Fortran::parser::OmpOrderModifier::Value": ["Reproducible", "Unconstrained"], - "Fortran::parser::OmpPrescriptiveness::Value": ["Strict"], - "Fortran::parser::OmpPresentModifier::Value": ["Present"], - "Fortran::parser::OmpProcBindClause::AffinityPolicy": ["Close", "Master", "Spread", "Primary"], - "Fortran::parser::OmpReductionModifier::Value": ["Default", "Inscan", "Task"], - "Fortran::parser::OmpRefModifier::Value": ["Ref_Ptee", "Ref_Ptr", "Ref_Ptr_Ptee"], - "Fortran::parser::OmpScheduleClause::Kind": ["Static", "Dynamic", "Guided", "Auto", "Runtime"], - "Fortran::parser::OmpSelfModifier::Value": ["Self"], - "Fortran::parser::OmpSeverityClause::SevLevel": ["Fatal", "Warning"], - "Fortran::parser::OmpThreadsetClause::ThreadsetPolicy": ["Omp_Pool", "Omp_Team"], - "Fortran::parser::OmpTraitSelectorName::Value": ["Arch", "Atomic_Default_Mem_Order", "Condition", "Device_Num", "Extension", "Isa", "Kind", "Requires", "Simd", "Uid", "Vendor"], - "Fortran::parser::OmpTraitSetSelectorName::Value": ["Construct", "Device", "Implementation", "Target_Device", "User"], - "Fortran::parser::OmpVariableCategory::Value": ["Aggregate", "All", "Allocatable", "Pointer", "Scalar"], - "Fortran::parser::OmpxHoldModifier::Value": ["Ompx_Hold"], - "Fortran::parser::ProcedureStmt::Kind": ["ModuleProcedure", "Procedure"], - "Fortran::parser::SavedEntity::Kind": ["Entity", "Common"], - "Fortran::parser::StopStmt::Kind": ["Stop", "ErrorStop"], - "Fortran::parser::UseStmt::ModuleNature": ["Intrinsic", "Non_Intrinsic"] + "Fortran::common::CUDADataAttr": [ + "Constant", + "Device", + "Managed", + "Pinned", + "Shared", + "Texture", + "Unified" + ], + "Fortran::common::CUDASubprogramAttrs": [ + "Host", + "Device", + "HostDevice", + "Global", + "Grid_Global" + ], + "Fortran::common::ImportKind": [ + "Default", + "Only", + "None", + "All" + ], + "Fortran::common::OmpDependenceKind": [ + "In", + "Out", + "Inout", + "Inoutset", + "Mutexinoutset", + "Depobj" + ], + "Fortran::common::OmpMemoryOrderType": [ + "Acq_Rel", + "Acquire", + "Relaxed", + "Release", + "Seq_Cst" + ], + "Fortran::common::OpenACCDeviceType": [ + "Star", + "Default", + "Nvidia", + "Radeon", + "Host", + "Multicore", + "None" + ], + "Fortran::parser::AccDataModifier::Modifier": [ + "ReadOnly", + "Zero" + ], + "Fortran::parser::AccessSpec::Kind": [ + "Public", + "Private" + ], + "Fortran::parser::BindEntity::Kind": [ + "Object", + "Common" + ], + "Fortran::parser::CompilerDirective::VectorLength::Kind": [ + "Auto", + "Fixed", + "Scalable" + ], + "Fortran::parser::ConnectSpec::CharExpr::Kind": [ + "Access", + "Action", + "Asynchronous", + "Blank", + "Decimal", + "Delim", + "Encoding", + "Form", + "Pad", + "Position", + "Round", + "Sign", + "Carriagecontrol", + "Convert", + "Dispose" + ], + "Fortran::parser::DefinedOperator::IntrinsicOperator": [ + "Power", + "Multiply", + "Divide", + "Add", + "Subtract", + "Concat", + "LT", + "LE", + "EQ", + "NE", + "GE", + "GT", + "NOT", + "AND", + "OR", + "EQV", + "NEQV" + ], + "Fortran::parser::ImplicitStmt::ImplicitNoneNameSpec": [ + "External", + "Type" + ], + "Fortran::parser::InquireSpec::CharVar::Kind": [ + "Access", + "Action", + "Asynchronous", + "Blank", + "Decimal", + "Delim", + "Direct", + "Encoding", + "Form", + "Formatted", + "Iomsg", + "Name", + "Pad", + "Position", + "Read", + "Readwrite", + "Round", + "Sequential", + "Sign", + "Stream", + "Status", + "Unformatted", + "Write", + "Carriagecontrol", + "Convert", + "Dispose" + ], + "Fortran::parser::InquireSpec::IntVar::Kind": [ + "Iostat", + "Nextrec", + "Number", + "Pos", + "Recl", + "Size" + ], + "Fortran::parser::InquireSpec::LogVar::Kind": [ + "Exist", + "Named", + "Opened", + "Pending" + ], + "Fortran::parser::IntentSpec::Intent": [ + "In", + "Out", + "InOut" + ], + "Fortran::parser::IoControlSpec::CharExpr::Kind": [ + "Advance", + "Blank", + "Decimal", + "Delim", + "Pad", + "Round", + "Sign" + ], + "Fortran::parser::ReductionOperator::Operator": [ + "Plus", + "Multiply", + "Max", + "Min", + "Iand", + "Ior", + "Ieor", + "And", + "Or", + "Eqv", + "Neqv" + ], + "Fortran::parser::OmpAccessGroup::Value": [ + "Cgroup" + ], + "Fortran::parser::OmpAdjustArgsClause::OmpAdjustOp::Value": [ + "Nothing", + "Need_Device_Ptr" + ], + "Fortran::parser::OmpAlwaysModifier::Value": [ + "Always" + ], + "Fortran::parser::OmpAtClause::ActionTime": [ + "Compilation", + "Execution" + ], + "Fortran::parser::OmpAttachModifier::Value": [ + "Always", + "Never", + "Auto" + ], + "Fortran::parser::OmpAutomapModifier::Value": [ + "Automap" + ], + "Fortran::parser::OmpBindClause::Binding": [ + "Parallel", + "Teams", + "Thread" + ], + "Fortran::parser::OmpChunkModifier::Value": [ + "Simd" + ], + "Fortran::parser::OmpCloseModifier::Value": [ + "Close" + ], + "Fortran::parser::OmpDefaultClause::DataSharingAttribute": [ + "Private", + "Firstprivate", + "Shared", + "None" + ], + "Fortran::parser::OmpDefaultmapClause::ImplicitBehavior": [ + "Alloc", + "To", + "From", + "Tofrom", + "Firstprivate", + "None", + "Default", + "Present" + ], + "Fortran::parser::OmpDeleteModifier::Value": [ + "Delete" + ], + "Fortran::parser::OmpDependenceType::Value": [ + "Sink", + "Source" + ], + "Fortran::parser::OmpDeviceModifier::Value": [ + "Ancestor", + "Device_Num" + ], + "Fortran::parser::OmpDeviceTypeClause::DeviceTypeDescription": [ + "Any", + "Host", + "Nohost" + ], + "Fortran::parser::OmpDirectiveSpecification::Flag": [ + "DeprecatedSyntax", + "CrossesLabelDo" + ], + "Fortran::parser::OmpExpectation::Value": [ + "Present" + ], + "Fortran::parser::OmpInteropType::Value": [ + "Target", + "Targetsync" + ], + "Fortran::parser::OmpLastprivateModifier::Value": [ + "Conditional" + ], + "Fortran::parser::OmpLinearModifier::Value": [ + "Ref", + "Uval", + "Val" + ], + "Fortran::parser::OmpMapType::Value": [ + "Alloc", + "Delete", + "From", + "Release", + "Storage", + "To", + "Tofrom" + ], + "Fortran::parser::OmpMapTypeModifier::Value": [ + "Always", + "Close", + "Present", + "Ompx_Hold" + ], + "Fortran::parser::OmpObject::Invalid::Kind": [ + "BlankCommonBlock" + ], + "Fortran::parser::OmpOrderClause::Ordering": [ + "Concurrent" + ], + "Fortran::parser::OmpOrderingModifier::Value": [ + "Monotonic", + "Nonmonotonic", + "Simd" + ], + "Fortran::parser::OmpOrderModifier::Value": [ + "Reproducible", + "Unconstrained" + ], + "Fortran::parser::OmpPrescriptiveness::Value": [ + "Strict" + ], + "Fortran::parser::OmpPresentModifier::Value": [ + "Present" + ], + "Fortran::parser::OmpProcBindClause::AffinityPolicy": [ + "Close", + "Master", + "Spread", + "Primary" + ], + "Fortran::parser::OmpReductionModifier::Value": [ + "Default", + "Inscan", + "Task" + ], + "Fortran::parser::OmpRefModifier::Value": [ + "Ref_Ptee", + "Ref_Ptr", + "Ref_Ptr_Ptee" + ], + "Fortran::parser::OmpScheduleClause::Kind": [ + "Static", + "Dynamic", + "Guided", + "Auto", + "Runtime" + ], + "Fortran::parser::OmpSelfModifier::Value": [ + "Self" + ], + "Fortran::parser::OmpSeverityClause::SevLevel": [ + "Fatal", + "Warning" + ], + "Fortran::parser::OmpThreadsetClause::ThreadsetPolicy": [ + "Omp_Pool", + "Omp_Team" + ], + "Fortran::parser::OmpTraitSelectorName::Value": [ + "Arch", + "Atomic_Default_Mem_Order", + "Condition", + "Device_Num", + "Extension", + "Isa", + "Kind", + "Requires", + "Simd", + "Uid", + "Vendor" + ], + "Fortran::parser::OmpTraitSetSelectorName::Value": [ + "Construct", + "Device", + "Implementation", + "Target_Device", + "User" + ], + "Fortran::parser::OmpVariableCategory::Value": [ + "Aggregate", + "All", + "Allocatable", + "Pointer", + "Scalar" + ], + "Fortran::parser::OmpxHoldModifier::Value": [ + "Ompx_Hold" + ], + "Fortran::parser::ProcedureStmt::Kind": [ + "ModuleProcedure", + "Procedure" + ], + "Fortran::parser::SavedEntity::Kind": [ + "Entity", + "Common" + ], + "Fortran::parser::StopStmt::Kind": [ + "Stop", + "ErrorStop" + ], + "Fortran::parser::UseStmt::ModuleNature": [ + "Intrinsic", + "Non_Intrinsic" + ] } -} \ No newline at end of file +} diff --git a/FortranParser/resources-test/fortran/parser/polybench/3mm.expected.f90 b/FortranParser/resources-test/fortran/parser/polybench/3mm.expected.f90 index 95349641..5f63f55b 100644 --- a/FortranParser/resources-test/fortran/parser/polybench/3mm.expected.f90 +++ b/FortranParser/resources-test/fortran/parser/polybench/3mm.expected.f90 @@ -19,19 +19,19 @@ PROGRAM THREE_MM DOUBLE PRECISION, DIMENSION(:, :), ALLOCATABLE :: g INTEGER :: i ! Allocation of Arrays -allocate(a(32 + 0, 32 + 0), STAT=i) +ALLOCATE(a(32 + 0, 32 + 0), STAT=i) CALL check_err(i) -allocate(b(32 + 0, 32 + 0), STAT=i) +ALLOCATE(b(32 + 0, 32 + 0), STAT=i) CALL check_err(i) -allocate(c(32 + 0, 32 + 0), STAT=i) +ALLOCATE(c(32 + 0, 32 + 0), STAT=i) CALL check_err(i) -allocate(d(32 + 0, 32 + 0), STAT=i) +ALLOCATE(d(32 + 0, 32 + 0), STAT=i) CALL check_err(i) -allocate(e(32 + 0, 32 + 0), STAT=i) +ALLOCATE(e(32 + 0, 32 + 0), STAT=i) CALL check_err(i) -allocate(f(32 + 0, 32 + 0), STAT=i) +ALLOCATE(f(32 + 0, 32 + 0), STAT=i) CALL check_err(i) -allocate(g(32 + 0, 32 + 0), STAT=i) +ALLOCATE(g(32 + 0, 32 + 0), STAT=i) CALL check_err(i) ! Initialization CALL init_array(32, 32, 32, 32, 32, a, b, c, d) @@ -44,14 +44,14 @@ PROGRAM THREE_MM ! by the function call in argument. CALL print_array(32, 32, g) ! Deallocation of Arrays -deallocate(a) -deallocate(b) -deallocate(c) -deallocate(d) -deallocate(e) -deallocate(f) -deallocate(g) -contains +DEALLOCATE(a) +DEALLOCATE(b) +DEALLOCATE(c) +DEALLOCATE(d) +DEALLOCATE(e) +DEALLOCATE(f) +DEALLOCATE(g) +CONTAINS SUBROUTINE init_array(ni, nj, nk, nl, nm, a, b, c, d) DOUBLE PRECISION, DIMENSION(nk, ni) :: a DOUBLE PRECISION, DIMENSION(nj, nk) :: b @@ -86,7 +86,7 @@ SUBROUTINE print_array(ni, nl, g) INTEGER :: i, j DO i = 1, ni DO j = 1, nl -WRITE(0, "(f0.2,1x)", advance="no") g(j, i) +WRITE(0, "(f0.2,1x)", ADVANCE="no") g(j, i) IF (mod(((i - 1) * ni) + j - 1, 20) == 0) THEN WRITE(0, *) END IF diff --git a/FortranParser/resources-test/fortran/parser/polybench/3mm.json b/FortranParser/resources-test/fortran/parser/polybench/3mm.json index e47f66e4..70b5c2db 100644 --- a/FortranParser/resources-test/fortran/parser/polybench/3mm.json +++ b/FortranParser/resources-test/fortran/parser/polybench/3mm.json @@ -1,10534 +1,10534 @@ { + "fileExtension": "f90", "nodes": [ { - "id": "0x55eadb461f00-Program", + "id": "0x55dbc10b3f00-Program", "ProgramUnit": [ - "0x55eadb4aef80-ProgramUnit" + "0x55dbc11016c0-ProgramUnit" ] }, { - "id": "0x55eadb4aef80-ProgramUnit", + "id": "0x55dbc11016c0-ProgramUnit", "variantKey": "MainProgram", - "MainProgram": "0x55eadb4a00a0-MainProgram" + "MainProgram": "0x55dbc10f2030-MainProgram" }, { - "id": "0x55eadb4a00a0-MainProgram", - "Statement": "0x55eadb4a01e8-Statement", - "SpecificationPart": "0x55eadb4a0140-SpecificationPart", - "ExecutionPart": "0x55eadb4a0128-ExecutionPart", - "InternalSubprogramPart": "0x55eadb4a00e0-InternalSubprogramPart", - "Statement": "0x55eadb4a00a0-Statement" + "id": "0x55dbc10f2030-MainProgram", + "Statement": "0x55dbc10f2178-Statement", + "SpecificationPart": "0x55dbc10f20d0-SpecificationPart", + "ExecutionPart": "0x55dbc10f20b8-ExecutionPart", + "InternalSubprogramPart": "0x55dbc10f2070-InternalSubprogramPart", + "Statement": "0x55dbc10f2030-Statement" }, { - "id": "0x55eadb4a01e8-Statement", - "statement": "0x55eadb4a01f8-ProgramStmt", + "id": "0x55dbc10f2178-Statement", + "statement": "0x55dbc10f2188-ProgramStmt", "source": "program THREE_MM" }, { - "id": "0x55eadb4a01f8-ProgramStmt", - "Name": "0x55eadb4a01f8-Name" + "id": "0x55dbc10f2188-ProgramStmt", + "Name": "0x55dbc10f2188-Name" }, { - "id": "0x55eadb4a01f8-Name", + "id": "0x55dbc10f2188-Name", "source": "THREE_MM" }, { - "id": "0x55eadb4a0140-SpecificationPart", - "ImplicitPart": "0x55eadb4a0158-ImplicitPart", + "id": "0x55dbc10f20d0-SpecificationPart", + "ImplicitPart": "0x55dbc10f20e8-ImplicitPart", "DeclarationConstruct": [ - "0x55eadb46f110-DeclarationConstruct", - "0x55eadb46eda0-DeclarationConstruct", - "0x55eadb4a47b0-DeclarationConstruct", - "0x55eadb4172e0-DeclarationConstruct", - "0x55eadb48c9c0-DeclarationConstruct", - "0x55eadb48cc30-DeclarationConstruct", - "0x55eadb48cea0-DeclarationConstruct", - "0x55eadb46f170-DeclarationConstruct" + "0x55dbc10c1110-DeclarationConstruct", + "0x55dbc10c0da0-DeclarationConstruct", + "0x55dbc10f6700-DeclarationConstruct", + "0x55dbc10f6760-DeclarationConstruct", + "0x55dbc10de870-DeclarationConstruct", + "0x55dbc10deb60-DeclarationConstruct", + "0x55dbc10dedd0-DeclarationConstruct", + "0x55dbc10c1170-DeclarationConstruct" ] }, { - "id": "0x55eadb4a0158-ImplicitPart" + "id": "0x55dbc10f20e8-ImplicitPart" }, { - "id": "0x55eadb46f110-DeclarationConstruct", + "id": "0x55dbc10c1110-DeclarationConstruct", "variantKey": "SpecificationConstruct", - "SpecificationConstruct": "0x55eadb46f110-SpecificationConstruct" + "SpecificationConstruct": "0x55dbc10c1110-SpecificationConstruct" }, { - "id": "0x55eadb46f110-SpecificationConstruct", + "id": "0x55dbc10c1110-SpecificationConstruct", "variantKey": "Statement", - "Statement": "0x55eadb46f110-Statement" + "Statement": "0x55dbc10c1110-Statement" }, { - "id": "0x55eadb46f110-Statement", - "statement": "0x55eadb4a3f50-TypeDeclarationStmt", + "id": "0x55dbc10c1110-Statement", + "statement": "0x55dbc10f5ea0-TypeDeclarationStmt", "source": "double precision, dimension(:, :), allocatable :: a" }, { - "id": "0x55eadb4a3f50-TypeDeclarationStmt", - "DeclarationTypeSpec": "0x55eadb4a3f80-DeclarationTypeSpec", + "id": "0x55dbc10f5ea0-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x55dbc10f5ed0-DeclarationTypeSpec", "AttrSpec": [ - "0x55eadb4a6ff0-AttrSpec", - "0x55eadb496460-AttrSpec" + "0x55dbc10f1e20-AttrSpec", + "0x55dbc10f8f80-AttrSpec" ], "EntityDecl": [ - "0x55eadb4a4300-EntityDecl" + "0x55dbc10f6250-EntityDecl" ] }, { - "id": "0x55eadb4a3f80-DeclarationTypeSpec", + "id": "0x55dbc10f5ed0-DeclarationTypeSpec", "variantKey": "IntrinsicTypeSpec", - "IntrinsicTypeSpec": "0x55eadb4a3f80-IntrinsicTypeSpec" + "IntrinsicTypeSpec": "0x55dbc10f5ed0-IntrinsicTypeSpec" }, { - "id": "0x55eadb4a3f80-IntrinsicTypeSpec", + "id": "0x55dbc10f5ed0-IntrinsicTypeSpec", "variantKey": "DoublePrecision", - "DoublePrecision": "0x55eadb4a3f80-DoublePrecision" + "DoublePrecision": "0x55dbc10f5ed0-DoublePrecision" }, { - "id": "0x55eadb4a3f80-DoublePrecision" + "id": "0x55dbc10f5ed0-DoublePrecision" }, { - "id": "0x55eadb4a6ff0-AttrSpec", + "id": "0x55dbc10f1e20-AttrSpec", "variantKey": "ArraySpec", - "ArraySpec": "0x55eadb4a6ff0-ArraySpec" + "ArraySpec": "0x55dbc10f1e20-ArraySpec" }, { - "id": "0x55eadb4a6ff0-ArraySpec", + "id": "0x55dbc10f1e20-ArraySpec", "variantKey": "DeferredShapeSpecList", - "DeferredShapeSpecList": "0x55eadb4a6ff0-DeferredShapeSpecList" + "DeferredShapeSpecList": "0x55dbc10f1e20-DeferredShapeSpecList" }, { - "id": "0x55eadb4a6ff0-DeferredShapeSpecList", + "id": "0x55dbc10f1e20-DeferredShapeSpecList", "int": "2" }, { - "id": "0x55eadb496460-AttrSpec", + "id": "0x55dbc10f8f80-AttrSpec", "variantKey": "Allocatable", - "Allocatable": "0x55eadb496460-Allocatable" + "Allocatable": "0x55dbc10f8f80-Allocatable" }, { - "id": "0x55eadb496460-Allocatable", + "id": "0x55dbc10f8f80-Allocatable", "keyword": "Allocatable" }, { - "id": "0x55eadb4a4300-EntityDecl", - "Name": "0x55eadb4a43b8-Name" + "id": "0x55dbc10f6250-EntityDecl", + "Name": "0x55dbc10f6308-Name" }, { - "id": "0x55eadb4a43b8-Name", + "id": "0x55dbc10f6308-Name", "source": "a" }, { - "id": "0x55eadb46eda0-DeclarationConstruct", + "id": "0x55dbc10c0da0-DeclarationConstruct", "variantKey": "SpecificationConstruct", - "SpecificationConstruct": "0x55eadb46eda0-SpecificationConstruct" + "SpecificationConstruct": "0x55dbc10c0da0-SpecificationConstruct" }, { - "id": "0x55eadb46eda0-SpecificationConstruct", + "id": "0x55dbc10c0da0-SpecificationConstruct", "variantKey": "Statement", - "Statement": "0x55eadb46eda0-Statement" + "Statement": "0x55dbc10c0da0-Statement" }, { - "id": "0x55eadb46eda0-Statement", - "statement": "0x55eadb4a3fd0-TypeDeclarationStmt", + "id": "0x55dbc10c0da0-Statement", + "statement": "0x55dbc10f5f20-TypeDeclarationStmt", "source": "double precision, dimension(:, :), allocatable :: b" }, { - "id": "0x55eadb4a3fd0-TypeDeclarationStmt", - "DeclarationTypeSpec": "0x55eadb4a4000-DeclarationTypeSpec", + "id": "0x55dbc10f5f20-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x55dbc10f5f50-DeclarationTypeSpec", "AttrSpec": [ - "0x55eadb498210-AttrSpec", - "0x55eadb49fe90-AttrSpec" + "0x55dbc10ea1a0-AttrSpec", + "0x55dbc10ccc80-AttrSpec" ], "EntityDecl": [ - "0x55eadb4a4550-EntityDecl" + "0x55dbc10f64a0-EntityDecl" ] }, { - "id": "0x55eadb4a4000-DeclarationTypeSpec", + "id": "0x55dbc10f5f50-DeclarationTypeSpec", "variantKey": "IntrinsicTypeSpec", - "IntrinsicTypeSpec": "0x55eadb4a4000-IntrinsicTypeSpec" + "IntrinsicTypeSpec": "0x55dbc10f5f50-IntrinsicTypeSpec" }, { - "id": "0x55eadb4a4000-IntrinsicTypeSpec", + "id": "0x55dbc10f5f50-IntrinsicTypeSpec", "variantKey": "DoublePrecision", - "DoublePrecision": "0x55eadb4a4000-DoublePrecision" + "DoublePrecision": "0x55dbc10f5f50-DoublePrecision" }, { - "id": "0x55eadb4a4000-DoublePrecision" + "id": "0x55dbc10f5f50-DoublePrecision" }, { - "id": "0x55eadb498210-AttrSpec", + "id": "0x55dbc10ea1a0-AttrSpec", "variantKey": "ArraySpec", - "ArraySpec": "0x55eadb498210-ArraySpec" + "ArraySpec": "0x55dbc10ea1a0-ArraySpec" }, { - "id": "0x55eadb498210-ArraySpec", + "id": "0x55dbc10ea1a0-ArraySpec", "variantKey": "DeferredShapeSpecList", - "DeferredShapeSpecList": "0x55eadb498210-DeferredShapeSpecList" + "DeferredShapeSpecList": "0x55dbc10ea1a0-DeferredShapeSpecList" }, { - "id": "0x55eadb498210-DeferredShapeSpecList", + "id": "0x55dbc10ea1a0-DeferredShapeSpecList", "int": "2" }, { - "id": "0x55eadb49fe90-AttrSpec", + "id": "0x55dbc10ccc80-AttrSpec", "variantKey": "Allocatable", - "Allocatable": "0x55eadb49fe90-Allocatable" + "Allocatable": "0x55dbc10ccc80-Allocatable" }, { - "id": "0x55eadb49fe90-Allocatable", + "id": "0x55dbc10ccc80-Allocatable", "keyword": "Allocatable" }, { - "id": "0x55eadb4a4550-EntityDecl", - "Name": "0x55eadb4a4608-Name" + "id": "0x55dbc10f64a0-EntityDecl", + "Name": "0x55dbc10f6558-Name" }, { - "id": "0x55eadb4a4608-Name", + "id": "0x55dbc10f6558-Name", "source": "b" }, { - "id": "0x55eadb4a47b0-DeclarationConstruct", + "id": "0x55dbc10f6700-DeclarationConstruct", "variantKey": "SpecificationConstruct", - "SpecificationConstruct": "0x55eadb4a47b0-SpecificationConstruct" + "SpecificationConstruct": "0x55dbc10f6700-SpecificationConstruct" }, { - "id": "0x55eadb4a47b0-SpecificationConstruct", + "id": "0x55dbc10f6700-SpecificationConstruct", "variantKey": "Statement", - "Statement": "0x55eadb4a47b0-Statement" + "Statement": "0x55dbc10f6700-Statement" }, { - "id": "0x55eadb4a47b0-Statement", - "statement": "0x55eadb4a44c0-TypeDeclarationStmt", + "id": "0x55dbc10f6700-Statement", + "statement": "0x55dbc10f6410-TypeDeclarationStmt", "source": "double precision, dimension(:, :), allocatable :: c" }, { - "id": "0x55eadb4a44c0-TypeDeclarationStmt", - "DeclarationTypeSpec": "0x55eadb4a44f0-DeclarationTypeSpec", + "id": "0x55dbc10f6410-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x55dbc10f6440-DeclarationTypeSpec", "AttrSpec": [ - "0x55eadb49a330-AttrSpec", - "0x55eadb4a65f0-AttrSpec" + "0x55dbc10ec2c0-AttrSpec", + "0x55dbc10f8580-AttrSpec" ], "EntityDecl": [ - "0x55eadb4a46c0-EntityDecl" + "0x55dbc10f6610-EntityDecl" ] }, { - "id": "0x55eadb4a44f0-DeclarationTypeSpec", + "id": "0x55dbc10f6440-DeclarationTypeSpec", "variantKey": "IntrinsicTypeSpec", - "IntrinsicTypeSpec": "0x55eadb4a44f0-IntrinsicTypeSpec" + "IntrinsicTypeSpec": "0x55dbc10f6440-IntrinsicTypeSpec" }, { - "id": "0x55eadb4a44f0-IntrinsicTypeSpec", + "id": "0x55dbc10f6440-IntrinsicTypeSpec", "variantKey": "DoublePrecision", - "DoublePrecision": "0x55eadb4a44f0-DoublePrecision" + "DoublePrecision": "0x55dbc10f6440-DoublePrecision" }, { - "id": "0x55eadb4a44f0-DoublePrecision" + "id": "0x55dbc10f6440-DoublePrecision" }, { - "id": "0x55eadb49a330-AttrSpec", + "id": "0x55dbc10ec2c0-AttrSpec", "variantKey": "ArraySpec", - "ArraySpec": "0x55eadb49a330-ArraySpec" + "ArraySpec": "0x55dbc10ec2c0-ArraySpec" }, { - "id": "0x55eadb49a330-ArraySpec", + "id": "0x55dbc10ec2c0-ArraySpec", "variantKey": "DeferredShapeSpecList", - "DeferredShapeSpecList": "0x55eadb49a330-DeferredShapeSpecList" + "DeferredShapeSpecList": "0x55dbc10ec2c0-DeferredShapeSpecList" }, { - "id": "0x55eadb49a330-DeferredShapeSpecList", + "id": "0x55dbc10ec2c0-DeferredShapeSpecList", "int": "2" }, { - "id": "0x55eadb4a65f0-AttrSpec", + "id": "0x55dbc10f8580-AttrSpec", "variantKey": "Allocatable", - "Allocatable": "0x55eadb4a65f0-Allocatable" + "Allocatable": "0x55dbc10f8580-Allocatable" }, { - "id": "0x55eadb4a65f0-Allocatable", + "id": "0x55dbc10f8580-Allocatable", "keyword": "Allocatable" }, { - "id": "0x55eadb4a46c0-EntityDecl", - "Name": "0x55eadb4a4778-Name" + "id": "0x55dbc10f6610-EntityDecl", + "Name": "0x55dbc10f66c8-Name" }, { - "id": "0x55eadb4a4778-Name", + "id": "0x55dbc10f66c8-Name", "source": "c" }, { - "id": "0x55eadb4172e0-DeclarationConstruct", + "id": "0x55dbc10f6760-DeclarationConstruct", "variantKey": "SpecificationConstruct", - "SpecificationConstruct": "0x55eadb4172e0-SpecificationConstruct" + "SpecificationConstruct": "0x55dbc10f6760-SpecificationConstruct" }, { - "id": "0x55eadb4172e0-SpecificationConstruct", + "id": "0x55dbc10f6760-SpecificationConstruct", "variantKey": "Statement", - "Statement": "0x55eadb4172e0-Statement" + "Statement": "0x55dbc10f6760-Statement" }, { - "id": "0x55eadb4172e0-Statement", - "statement": "0x55eadb4a4630-TypeDeclarationStmt", + "id": "0x55dbc10f6760-Statement", + "statement": "0x55dbc10f6580-TypeDeclarationStmt", "source": "double precision, dimension(:, :), allocatable :: d" }, { - "id": "0x55eadb4a4630-TypeDeclarationStmt", - "DeclarationTypeSpec": "0x55eadb4a4660-DeclarationTypeSpec", + "id": "0x55dbc10f6580-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x55dbc10f65b0-DeclarationTypeSpec", "AttrSpec": [ - "0x55eadb4a3cd0-AttrSpec", - "0x55eadb4a0380-AttrSpec" + "0x55dbc10f8530-AttrSpec", + "0x55dbc10f2310-AttrSpec" ], "EntityDecl": [ - "0x55eadb49fc70-EntityDecl" + "0x55dbc10f1c00-EntityDecl" ] }, { - "id": "0x55eadb4a4660-DeclarationTypeSpec", + "id": "0x55dbc10f65b0-DeclarationTypeSpec", "variantKey": "IntrinsicTypeSpec", - "IntrinsicTypeSpec": "0x55eadb4a4660-IntrinsicTypeSpec" + "IntrinsicTypeSpec": "0x55dbc10f65b0-IntrinsicTypeSpec" }, { - "id": "0x55eadb4a4660-IntrinsicTypeSpec", + "id": "0x55dbc10f65b0-IntrinsicTypeSpec", "variantKey": "DoublePrecision", - "DoublePrecision": "0x55eadb4a4660-DoublePrecision" + "DoublePrecision": "0x55dbc10f65b0-DoublePrecision" }, { - "id": "0x55eadb4a4660-DoublePrecision" + "id": "0x55dbc10f65b0-DoublePrecision" }, { - "id": "0x55eadb4a3cd0-AttrSpec", + "id": "0x55dbc10f8530-AttrSpec", "variantKey": "ArraySpec", - "ArraySpec": "0x55eadb4a3cd0-ArraySpec" + "ArraySpec": "0x55dbc10f8530-ArraySpec" }, { - "id": "0x55eadb4a3cd0-ArraySpec", + "id": "0x55dbc10f8530-ArraySpec", "variantKey": "DeferredShapeSpecList", - "DeferredShapeSpecList": "0x55eadb4a3cd0-DeferredShapeSpecList" + "DeferredShapeSpecList": "0x55dbc10f8530-DeferredShapeSpecList" }, { - "id": "0x55eadb4a3cd0-DeferredShapeSpecList", + "id": "0x55dbc10f8530-DeferredShapeSpecList", "int": "2" }, { - "id": "0x55eadb4a0380-AttrSpec", + "id": "0x55dbc10f2310-AttrSpec", "variantKey": "Allocatable", - "Allocatable": "0x55eadb4a0380-Allocatable" + "Allocatable": "0x55dbc10f2310-Allocatable" }, { - "id": "0x55eadb4a0380-Allocatable", + "id": "0x55dbc10f2310-Allocatable", "keyword": "Allocatable" }, { - "id": "0x55eadb49fc70-EntityDecl", - "Name": "0x55eadb49fd28-Name" + "id": "0x55dbc10f1c00-EntityDecl", + "Name": "0x55dbc10f1cb8-Name" }, { - "id": "0x55eadb49fd28-Name", + "id": "0x55dbc10f1cb8-Name", "source": "d" }, { - "id": "0x55eadb48c9c0-DeclarationConstruct", + "id": "0x55dbc10de870-DeclarationConstruct", "variantKey": "SpecificationConstruct", - "SpecificationConstruct": "0x55eadb48c9c0-SpecificationConstruct" + "SpecificationConstruct": "0x55dbc10de870-SpecificationConstruct" }, { - "id": "0x55eadb48c9c0-SpecificationConstruct", + "id": "0x55dbc10de870-SpecificationConstruct", "variantKey": "Statement", - "Statement": "0x55eadb48c9c0-Statement" + "Statement": "0x55dbc10de870-Statement" }, { - "id": "0x55eadb48c9c0-Statement", - "statement": "0x55eadb48c770-TypeDeclarationStmt", + "id": "0x55dbc10de870-Statement", + "statement": "0x55dbc10692d0-TypeDeclarationStmt", "source": "double precision, dimension(:, :), allocatable :: e" }, { - "id": "0x55eadb48c770-TypeDeclarationStmt", - "DeclarationTypeSpec": "0x55eadb48c7a0-DeclarationTypeSpec", + "id": "0x55dbc10692d0-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x55dbc1069300-DeclarationTypeSpec", "AttrSpec": [ - "0x55eadb48c880-AttrSpec", - "0x55eadb417340-AttrSpec" + "0x55dbc10e83f0-AttrSpec", + "0x55dbc10db100-AttrSpec" ], "EntityDecl": [ - "0x55eadb48c8d0-EntityDecl" + "0x55dbc10de780-EntityDecl" ] }, { - "id": "0x55eadb48c7a0-DeclarationTypeSpec", + "id": "0x55dbc1069300-DeclarationTypeSpec", "variantKey": "IntrinsicTypeSpec", - "IntrinsicTypeSpec": "0x55eadb48c7a0-IntrinsicTypeSpec" + "IntrinsicTypeSpec": "0x55dbc1069300-IntrinsicTypeSpec" }, { - "id": "0x55eadb48c7a0-IntrinsicTypeSpec", + "id": "0x55dbc1069300-IntrinsicTypeSpec", "variantKey": "DoublePrecision", - "DoublePrecision": "0x55eadb48c7a0-DoublePrecision" + "DoublePrecision": "0x55dbc1069300-DoublePrecision" }, { - "id": "0x55eadb48c7a0-DoublePrecision" + "id": "0x55dbc1069300-DoublePrecision" }, { - "id": "0x55eadb48c880-AttrSpec", + "id": "0x55dbc10e83f0-AttrSpec", "variantKey": "ArraySpec", - "ArraySpec": "0x55eadb48c880-ArraySpec" + "ArraySpec": "0x55dbc10e83f0-ArraySpec" }, { - "id": "0x55eadb48c880-ArraySpec", + "id": "0x55dbc10e83f0-ArraySpec", "variantKey": "DeferredShapeSpecList", - "DeferredShapeSpecList": "0x55eadb48c880-DeferredShapeSpecList" + "DeferredShapeSpecList": "0x55dbc10e83f0-DeferredShapeSpecList" }, { - "id": "0x55eadb48c880-DeferredShapeSpecList", + "id": "0x55dbc10e83f0-DeferredShapeSpecList", "int": "2" }, { - "id": "0x55eadb417340-AttrSpec", + "id": "0x55dbc10db100-AttrSpec", "variantKey": "Allocatable", - "Allocatable": "0x55eadb417340-Allocatable" + "Allocatable": "0x55dbc10db100-Allocatable" }, { - "id": "0x55eadb417340-Allocatable", + "id": "0x55dbc10db100-Allocatable", "keyword": "Allocatable" }, { - "id": "0x55eadb48c8d0-EntityDecl", - "Name": "0x55eadb48c988-Name" + "id": "0x55dbc10de780-EntityDecl", + "Name": "0x55dbc10de838-Name" }, { - "id": "0x55eadb48c988-Name", + "id": "0x55dbc10de838-Name", "source": "e" }, { - "id": "0x55eadb48cc30-DeclarationConstruct", + "id": "0x55dbc10deb60-DeclarationConstruct", "variantKey": "SpecificationConstruct", - "SpecificationConstruct": "0x55eadb48cc30-SpecificationConstruct" + "SpecificationConstruct": "0x55dbc10deb60-SpecificationConstruct" }, { - "id": "0x55eadb48cc30-SpecificationConstruct", + "id": "0x55dbc10deb60-SpecificationConstruct", "variantKey": "Statement", - "Statement": "0x55eadb48cc30-Statement" + "Statement": "0x55dbc10deb60-Statement" }, { - "id": "0x55eadb48cc30-Statement", - "statement": "0x55eadb48c7f0-TypeDeclarationStmt", + "id": "0x55dbc10deb60-Statement", + "statement": "0x55dbc10de8c0-TypeDeclarationStmt", "source": "double precision, dimension(:, :), allocatable :: f" }, { - "id": "0x55eadb48c7f0-TypeDeclarationStmt", - "DeclarationTypeSpec": "0x55eadb48c820-DeclarationTypeSpec", + "id": "0x55dbc10de8c0-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x55dbc10de8f0-DeclarationTypeSpec", "AttrSpec": [ - "0x55eadb48caf0-AttrSpec", - "0x55eadb48caa0-AttrSpec" + "0x55dbc10dea20-AttrSpec", + "0x55dbc10de9d0-AttrSpec" ], "EntityDecl": [ - "0x55eadb48cb40-EntityDecl" + "0x55dbc10dea70-EntityDecl" ] }, { - "id": "0x55eadb48c820-DeclarationTypeSpec", + "id": "0x55dbc10de8f0-DeclarationTypeSpec", "variantKey": "IntrinsicTypeSpec", - "IntrinsicTypeSpec": "0x55eadb48c820-IntrinsicTypeSpec" + "IntrinsicTypeSpec": "0x55dbc10de8f0-IntrinsicTypeSpec" }, { - "id": "0x55eadb48c820-IntrinsicTypeSpec", + "id": "0x55dbc10de8f0-IntrinsicTypeSpec", "variantKey": "DoublePrecision", - "DoublePrecision": "0x55eadb48c820-DoublePrecision" + "DoublePrecision": "0x55dbc10de8f0-DoublePrecision" }, { - "id": "0x55eadb48c820-DoublePrecision" + "id": "0x55dbc10de8f0-DoublePrecision" }, { - "id": "0x55eadb48caf0-AttrSpec", + "id": "0x55dbc10dea20-AttrSpec", "variantKey": "ArraySpec", - "ArraySpec": "0x55eadb48caf0-ArraySpec" + "ArraySpec": "0x55dbc10dea20-ArraySpec" }, { - "id": "0x55eadb48caf0-ArraySpec", + "id": "0x55dbc10dea20-ArraySpec", "variantKey": "DeferredShapeSpecList", - "DeferredShapeSpecList": "0x55eadb48caf0-DeferredShapeSpecList" + "DeferredShapeSpecList": "0x55dbc10dea20-DeferredShapeSpecList" }, { - "id": "0x55eadb48caf0-DeferredShapeSpecList", + "id": "0x55dbc10dea20-DeferredShapeSpecList", "int": "2" }, { - "id": "0x55eadb48caa0-AttrSpec", + "id": "0x55dbc10de9d0-AttrSpec", "variantKey": "Allocatable", - "Allocatable": "0x55eadb48caa0-Allocatable" + "Allocatable": "0x55dbc10de9d0-Allocatable" }, { - "id": "0x55eadb48caa0-Allocatable", + "id": "0x55dbc10de9d0-Allocatable", "keyword": "Allocatable" }, { - "id": "0x55eadb48cb40-EntityDecl", - "Name": "0x55eadb48cbf8-Name" + "id": "0x55dbc10dea70-EntityDecl", + "Name": "0x55dbc10deb28-Name" }, { - "id": "0x55eadb48cbf8-Name", + "id": "0x55dbc10deb28-Name", "source": "f" }, { - "id": "0x55eadb48cea0-DeclarationConstruct", + "id": "0x55dbc10dedd0-DeclarationConstruct", "variantKey": "SpecificationConstruct", - "SpecificationConstruct": "0x55eadb48cea0-SpecificationConstruct" + "SpecificationConstruct": "0x55dbc10dedd0-SpecificationConstruct" }, { - "id": "0x55eadb48cea0-SpecificationConstruct", + "id": "0x55dbc10dedd0-SpecificationConstruct", "variantKey": "Statement", - "Statement": "0x55eadb48cea0-Statement" + "Statement": "0x55dbc10dedd0-Statement" }, { - "id": "0x55eadb48cea0-Statement", - "statement": "0x55eadb48ca10-TypeDeclarationStmt", + "id": "0x55dbc10dedd0-Statement", + "statement": "0x55dbc10de940-TypeDeclarationStmt", "source": "double precision, dimension(:, :), allocatable :: g" }, { - "id": "0x55eadb48ca10-TypeDeclarationStmt", - "DeclarationTypeSpec": "0x55eadb48ca40-DeclarationTypeSpec", + "id": "0x55dbc10de940-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x55dbc10de970-DeclarationTypeSpec", "AttrSpec": [ - "0x55eadb48cd60-AttrSpec", - "0x55eadb48cd10-AttrSpec" + "0x55dbc10dec90-AttrSpec", + "0x55dbc10dec40-AttrSpec" ], "EntityDecl": [ - "0x55eadb48cdb0-EntityDecl" + "0x55dbc10dece0-EntityDecl" ] }, { - "id": "0x55eadb48ca40-DeclarationTypeSpec", + "id": "0x55dbc10de970-DeclarationTypeSpec", "variantKey": "IntrinsicTypeSpec", - "IntrinsicTypeSpec": "0x55eadb48ca40-IntrinsicTypeSpec" + "IntrinsicTypeSpec": "0x55dbc10de970-IntrinsicTypeSpec" }, { - "id": "0x55eadb48ca40-IntrinsicTypeSpec", + "id": "0x55dbc10de970-IntrinsicTypeSpec", "variantKey": "DoublePrecision", - "DoublePrecision": "0x55eadb48ca40-DoublePrecision" + "DoublePrecision": "0x55dbc10de970-DoublePrecision" }, { - "id": "0x55eadb48ca40-DoublePrecision" + "id": "0x55dbc10de970-DoublePrecision" }, { - "id": "0x55eadb48cd60-AttrSpec", + "id": "0x55dbc10dec90-AttrSpec", "variantKey": "ArraySpec", - "ArraySpec": "0x55eadb48cd60-ArraySpec" + "ArraySpec": "0x55dbc10dec90-ArraySpec" }, { - "id": "0x55eadb48cd60-ArraySpec", + "id": "0x55dbc10dec90-ArraySpec", "variantKey": "DeferredShapeSpecList", - "DeferredShapeSpecList": "0x55eadb48cd60-DeferredShapeSpecList" + "DeferredShapeSpecList": "0x55dbc10dec90-DeferredShapeSpecList" }, { - "id": "0x55eadb48cd60-DeferredShapeSpecList", + "id": "0x55dbc10dec90-DeferredShapeSpecList", "int": "2" }, { - "id": "0x55eadb48cd10-AttrSpec", + "id": "0x55dbc10dec40-AttrSpec", "variantKey": "Allocatable", - "Allocatable": "0x55eadb48cd10-Allocatable" + "Allocatable": "0x55dbc10dec40-Allocatable" }, { - "id": "0x55eadb48cd10-Allocatable", + "id": "0x55dbc10dec40-Allocatable", "keyword": "Allocatable" }, { - "id": "0x55eadb48cdb0-EntityDecl", - "Name": "0x55eadb48ce68-Name" + "id": "0x55dbc10dece0-EntityDecl", + "Name": "0x55dbc10ded98-Name" }, { - "id": "0x55eadb48ce68-Name", + "id": "0x55dbc10ded98-Name", "source": "g" }, { - "id": "0x55eadb46f170-DeclarationConstruct", + "id": "0x55dbc10c1170-DeclarationConstruct", "variantKey": "SpecificationConstruct", - "SpecificationConstruct": "0x55eadb46f170-SpecificationConstruct" + "SpecificationConstruct": "0x55dbc10c1170-SpecificationConstruct" }, { - "id": "0x55eadb46f170-SpecificationConstruct", + "id": "0x55dbc10c1170-SpecificationConstruct", "variantKey": "Statement", - "Statement": "0x55eadb46f170-Statement" + "Statement": "0x55dbc10c1170-Statement" }, { - "id": "0x55eadb46f170-Statement", - "statement": "0x55eadb48cc80-TypeDeclarationStmt", + "id": "0x55dbc10c1170-Statement", + "statement": "0x55dbc10debb0-TypeDeclarationStmt", "source": "integer :: i" }, { - "id": "0x55eadb48cc80-TypeDeclarationStmt", - "DeclarationTypeSpec": "0x55eadb48ccb0-DeclarationTypeSpec", + "id": "0x55dbc10debb0-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x55dbc10debe0-DeclarationTypeSpec", "EntityDecl": [ - "0x55eadb48cf80-EntityDecl" + "0x55dbc10deeb0-EntityDecl" ] }, { - "id": "0x55eadb48ccb0-DeclarationTypeSpec", + "id": "0x55dbc10debe0-DeclarationTypeSpec", "variantKey": "IntrinsicTypeSpec", - "IntrinsicTypeSpec": "0x55eadb48ccb0-IntrinsicTypeSpec" + "IntrinsicTypeSpec": "0x55dbc10debe0-IntrinsicTypeSpec" }, { - "id": "0x55eadb48ccb0-IntrinsicTypeSpec", + "id": "0x55dbc10debe0-IntrinsicTypeSpec", "variantKey": "IntegerTypeSpec", - "IntegerTypeSpec": "0x55eadb48ccb0-IntegerTypeSpec" + "IntegerTypeSpec": "0x55dbc10debe0-IntegerTypeSpec" }, { - "id": "0x55eadb48ccb0-IntegerTypeSpec" + "id": "0x55dbc10debe0-IntegerTypeSpec" }, { - "id": "0x55eadb48cf80-EntityDecl", - "Name": "0x55eadb48d038-Name" + "id": "0x55dbc10deeb0-EntityDecl", + "Name": "0x55dbc10def68-Name" }, { - "id": "0x55eadb48d038-Name", + "id": "0x55dbc10def68-Name", "source": "i" }, { - "id": "0x55eadb4a0128-ExecutionPart", + "id": "0x55dbc10f20b8-ExecutionPart", "ExecutionPartConstruct": [ - "0x55eadb48e510-ExecutionPartConstruct", - "0x55eadb48e3d0-ExecutionPartConstruct", - "0x55eadb48edb0-ExecutionPartConstruct", - "0x55eadb48ed50-ExecutionPartConstruct", - "0x55eadb48f820-ExecutionPartConstruct", - "0x55eadb48f7c0-ExecutionPartConstruct", - "0x55eadb490290-ExecutionPartConstruct", - "0x55eadb490230-ExecutionPartConstruct", - "0x55eadb490d00-ExecutionPartConstruct", - "0x55eadb490ca0-ExecutionPartConstruct", - "0x55eadb491770-ExecutionPartConstruct", - "0x55eadb491710-ExecutionPartConstruct", - "0x55eadb4921e0-ExecutionPartConstruct", - "0x55eadb492180-ExecutionPartConstruct", - "0x55eadb494fa0-ExecutionPartConstruct", - "0x55eadb493e60-ExecutionPartConstruct", - "0x55eadb4a8720-ExecutionPartConstruct", - "0x55eadb4a72a0-ExecutionPartConstruct", - "0x55eadb4a7710-ExecutionPartConstruct", - "0x55eadb493820-ExecutionPartConstruct", - "0x55eadb4a74c0-ExecutionPartConstruct", - "0x55eadb492fc0-ExecutionPartConstruct", - "0x55eadb493c40-ExecutionPartConstruct", - "0x55eadb490be0-ExecutionPartConstruct", - "0x55eadb48d9e0-ExecutionPartConstruct", - "0x55eadb495df0-ExecutionPartConstruct", - "0x55eadb48e080-ExecutionPartConstruct" + "0x55dbc10e1030-ExecutionPartConstruct", + "0x55dbc10e0ef0-ExecutionPartConstruct", + "0x55dbc10e18d0-ExecutionPartConstruct", + "0x55dbc10e1870-ExecutionPartConstruct", + "0x55dbc10e2340-ExecutionPartConstruct", + "0x55dbc10e22e0-ExecutionPartConstruct", + "0x55dbc10e2db0-ExecutionPartConstruct", + "0x55dbc10e2d50-ExecutionPartConstruct", + "0x55dbc10e3820-ExecutionPartConstruct", + "0x55dbc10e37c0-ExecutionPartConstruct", + "0x55dbc10e4290-ExecutionPartConstruct", + "0x55dbc10e4230-ExecutionPartConstruct", + "0x55dbc10e4d00-ExecutionPartConstruct", + "0x55dbc10e4ca0-ExecutionPartConstruct", + "0x55dbc10e7ac0-ExecutionPartConstruct", + "0x55dbc10e6980-ExecutionPartConstruct", + "0x55dbc10fa6f0-ExecutionPartConstruct", + "0x55dbc10f92c0-ExecutionPartConstruct", + "0x55dbc10f96e0-ExecutionPartConstruct", + "0x55dbc10e6340-ExecutionPartConstruct", + "0x55dbc10f94e0-ExecutionPartConstruct", + "0x55dbc10e5ae0-ExecutionPartConstruct", + "0x55dbc10e6760-ExecutionPartConstruct", + "0x55dbc10e3700-ExecutionPartConstruct", + "0x55dbc10e0290-ExecutionPartConstruct", + "0x55dbc10df280-ExecutionPartConstruct", + "0x55dbc10e0ba0-ExecutionPartConstruct" ] }, { - "id": "0x55eadb4a0128-ExecutionPartConstruct" + "id": "0x55dbc10f20b8-ExecutionPartConstruct" }, { - "id": "0x55eadb48e510-ExecutionPartConstruct", + "id": "0x55dbc10e1030-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x55eadb48e510-ExecutableConstruct" + "ExecutableConstruct": "0x55dbc10e1030-ExecutableConstruct" }, { - "id": "0x55eadb48e510-ExecutableConstruct", + "id": "0x55dbc10e1030-ExecutableConstruct", "variantKey": "Statement", - "Statement": "0x55eadb48e510-Statement" + "Statement": "0x55dbc10e1030-Statement" }, { - "id": "0x55eadb48e510-Statement", - "statement": "0x55eadb48e520-ActionStmt", + "id": "0x55dbc10e1030-Statement", + "statement": "0x55dbc10e1040-ActionStmt", "source": "allocate(a(32 + 0, 32 + 0), stat = i)" }, { - "id": "0x55eadb48e520-ActionStmt", + "id": "0x55dbc10e1040-ActionStmt", "variantKey": "AllocateStmt", - "AllocateStmt": "0x55eadb4a3d10-AllocateStmt" + "AllocateStmt": "0x55dbc10dfde0-AllocateStmt" }, { - "id": "0x55eadb4a3d10-AllocateStmt", + "id": "0x55dbc10dfde0-AllocateStmt", "Allocation": [ - "0x55eadb3feb10-Allocation" + "0x55dbc1050b10-Allocation" ], "AllocOpt": [ - "0x55eadb48db10-AllocOpt" + "0x55dbc10e07b0-AllocOpt" ] }, { - "id": "0x55eadb3feb10-Allocation", - "AllocateObject": "0x55eadb3feb58-AllocateObject", + "id": "0x55dbc1050b10-Allocation", + "AllocateObject": "0x55dbc1050b58-AllocateObject", "AllocateShapeSpec": [ - "0x55eadb4980c0-AllocateShapeSpec", - "0x55eadb498090-AllocateShapeSpec" + "0x55dbc10ea010-AllocateShapeSpec", + "0x55dbc10e9fe0-AllocateShapeSpec" ] }, { - "id": "0x55eadb3feb58-AllocateObject", + "id": "0x55dbc1050b58-AllocateObject", "variantKey": "Name", - "Name": "0x55eadb3feb68-Name" + "Name": "0x55dbc1050b68-Name" }, { - "id": "0x55eadb3feb68-Name", + "id": "0x55dbc1050b68-Name", "source": "a" }, { - "id": "0x55eadb4980c0-AllocateShapeSpec", - "upper_bound": "0x55eadb48d500-Expr" + "id": "0x55dbc10ea010-AllocateShapeSpec", + "upper_bound": "0x55dbc10e06c0-Expr" }, { - "id": "0x55eadb48d500-Expr", + "id": "0x55dbc10e06c0-Expr", "variantKey": "Add", - "Add": "0x55eadb48d520-Add" + "Add": "0x55dbc10e06e0-Add" }, { - "id": "0x55eadb48d520-Add", - "left": "0x55eadb48d420-Expr", - "right": "0x55eadb48d340-Expr", + "id": "0x55dbc10e06e0-Add", + "left": "0x55dbc10e05e0-Expr", + "right": "0x55dbc10e0500-Expr", "op": "ADD" }, { - "id": "0x55eadb48d420-Expr", + "id": "0x55dbc10e05e0-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55eadb48d440-LiteralConstant" + "LiteralConstant": "0x55dbc10e0600-LiteralConstant" }, { - "id": "0x55eadb48d440-LiteralConstant", + "id": "0x55dbc10e0600-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55eadb48d440-IntLiteralConstant" + "IntLiteralConstant": "0x55dbc10e0600-IntLiteralConstant" }, { - "id": "0x55eadb48d440-IntLiteralConstant", + "id": "0x55dbc10e0600-IntLiteralConstant", "CharBlock": "32" }, { - "id": "0x55eadb48d340-Expr", + "id": "0x55dbc10e0500-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55eadb48d360-LiteralConstant" + "LiteralConstant": "0x55dbc10e0520-LiteralConstant" }, { - "id": "0x55eadb48d360-LiteralConstant", + "id": "0x55dbc10e0520-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55eadb48d360-IntLiteralConstant" + "IntLiteralConstant": "0x55dbc10e0520-IntLiteralConstant" }, { - "id": "0x55eadb48d360-IntLiteralConstant", + "id": "0x55dbc10e0520-IntLiteralConstant", "CharBlock": "0" }, { - "id": "0x55eadb498090-AllocateShapeSpec", - "upper_bound": "0x55eadb48d8f0-Expr" + "id": "0x55dbc10e9fe0-AllocateShapeSpec", + "upper_bound": "0x55dbc10e01a0-Expr" }, { - "id": "0x55eadb48d8f0-Expr", + "id": "0x55dbc10e01a0-Expr", "variantKey": "Add", - "Add": "0x55eadb48d910-Add" + "Add": "0x55dbc10e01c0-Add" }, { - "id": "0x55eadb48d910-Add", - "left": "0x55eadb49fb40-Expr", - "right": "0x55eadb401790-Expr", + "id": "0x55dbc10e01c0-Add", + "left": "0x55dbc10e00c0-Expr", + "right": "0x55dbc1053790-Expr", "op": "ADD" }, { - "id": "0x55eadb49fb40-Expr", + "id": "0x55dbc10e00c0-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55eadb49fb60-LiteralConstant" + "LiteralConstant": "0x55dbc10e00e0-LiteralConstant" }, { - "id": "0x55eadb49fb60-LiteralConstant", + "id": "0x55dbc10e00e0-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55eadb49fb60-IntLiteralConstant" + "IntLiteralConstant": "0x55dbc10e00e0-IntLiteralConstant" }, { - "id": "0x55eadb49fb60-IntLiteralConstant", + "id": "0x55dbc10e00e0-IntLiteralConstant", "CharBlock": "32" }, { - "id": "0x55eadb401790-Expr", + "id": "0x55dbc1053790-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55eadb4017b0-LiteralConstant" + "LiteralConstant": "0x55dbc10537b0-LiteralConstant" }, { - "id": "0x55eadb4017b0-LiteralConstant", + "id": "0x55dbc10537b0-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55eadb4017b0-IntLiteralConstant" + "IntLiteralConstant": "0x55dbc10537b0-IntLiteralConstant" }, { - "id": "0x55eadb4017b0-IntLiteralConstant", + "id": "0x55dbc10537b0-IntLiteralConstant", "CharBlock": "0" }, { - "id": "0x55eadb48db10-AllocOpt", + "id": "0x55dbc10e07b0-AllocOpt", "variantKey": "StatOrErrmsg", - "StatOrErrmsg": "0x55eadb48db10-StatOrErrmsg" + "StatOrErrmsg": "0x55dbc10e07b0-StatOrErrmsg" }, { - "id": "0x55eadb48db10-StatOrErrmsg", + "id": "0x55dbc10e07b0-StatOrErrmsg", "variantKey": "StatVariable", - "StatVariable": "0x55eadb48db10-StatVariable" + "StatVariable": "0x55dbc10e07b0-StatVariable" }, { - "id": "0x55eadb48db10-StatVariable", - "Expr": "0x55eadb48db10-Variable" + "id": "0x55dbc10e07b0-StatVariable", + "Variable": "0x55dbc10e07b0-Variable" }, { - "id": "0x55eadb48db10-Variable", + "id": "0x55dbc10e07b0-Variable", "variantKey": "Designator", - "Designator": "0x55eadb4604d0-Designator" + "Designator": "0x55dbc10b24d0-Designator" }, { - "id": "0x55eadb4604d0-Designator", + "id": "0x55dbc10b24d0-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4604e0-DataRef" + "DataRef": "0x55dbc10b24e0-DataRef" }, { - "id": "0x55eadb4604e0-DataRef", + "id": "0x55dbc10b24e0-DataRef", "variantKey": "Name", - "Name": "0x55eadb4604e0-Name" + "Name": "0x55dbc10b24e0-Name" }, { - "id": "0x55eadb4604e0-Name", + "id": "0x55dbc10b24e0-Name", "source": "i" }, { - "id": "0x55eadb48e3d0-ExecutionPartConstruct", + "id": "0x55dbc10e0ef0-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x55eadb48e3d0-ExecutableConstruct" + "ExecutableConstruct": "0x55dbc10e0ef0-ExecutableConstruct" }, { - "id": "0x55eadb48e3d0-ExecutableConstruct", + "id": "0x55dbc10e0ef0-ExecutableConstruct", "variantKey": "Statement", - "Statement": "0x55eadb48e3d0-Statement" + "Statement": "0x55dbc10e0ef0-Statement" }, { - "id": "0x55eadb48e3d0-Statement", - "statement": "0x55eadb48e3e0-ActionStmt", + "id": "0x55dbc10e0ef0-Statement", + "statement": "0x55dbc10e0f00-ActionStmt", "source": "call check_err(i)" }, { - "id": "0x55eadb48e3e0-ActionStmt", + "id": "0x55dbc10e0f00-ActionStmt", "variantKey": "CallStmt", - "CallStmt": "0x55eadb498e90-CallStmt" + "CallStmt": "0x55dbc10eae20-CallStmt" }, { - "id": "0x55eadb498e90-CallStmt", - "call": "0x55eadb498e90-Call" + "id": "0x55dbc10eae20-CallStmt", + "call": "0x55dbc10eae20-Call" }, { - "id": "0x55eadb498e90-Call", - "ProcedureDesignator": "0x55eadb498ea8-ProcedureDesignator", + "id": "0x55dbc10eae20-Call", + "ProcedureDesignator": "0x55dbc10eae38-ProcedureDesignator", "ActualArgSpec": [ - "0x55eadb46fcf0-ActualArgSpec" + "0x55dbc10c1cf0-ActualArgSpec" ] }, { - "id": "0x55eadb498ea8-ProcedureDesignator", + "id": "0x55dbc10eae38-ProcedureDesignator", "variantKey": "Name", - "Name": "0x55eadb498ea8-Name" + "Name": "0x55dbc10eae38-Name" }, { - "id": "0x55eadb498ea8-Name", + "id": "0x55dbc10eae38-Name", "source": "check_err" }, { - "id": "0x55eadb46fcf0-ActualArgSpec", - "ActualArg": "0x55eadb46fcf0-ActualArg" + "id": "0x55dbc10c1cf0-ActualArgSpec", + "ActualArg": "0x55dbc10c1cf0-ActualArg" }, { - "id": "0x55eadb46fcf0-ActualArg", + "id": "0x55dbc10c1cf0-ActualArg", "variantKey": "Expr", - "Expr": "0x55eadb48e560-Expr" + "Expr": "0x55dbc10e1080-Expr" }, { - "id": "0x55eadb48e560-Expr", + "id": "0x55dbc10e1080-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4a3da0-Designator" + "Designator": "0x55dbc10e0060-Designator" }, { - "id": "0x55eadb4a3da0-Designator", + "id": "0x55dbc10e0060-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4a3db0-DataRef" + "DataRef": "0x55dbc10e0070-DataRef" }, { - "id": "0x55eadb4a3db0-DataRef", + "id": "0x55dbc10e0070-DataRef", "variantKey": "Name", - "Name": "0x55eadb4a3db0-Name" + "Name": "0x55dbc10e0070-Name" }, { - "id": "0x55eadb4a3db0-Name", + "id": "0x55dbc10e0070-Name", "source": "i" }, { - "id": "0x55eadb48edb0-ExecutionPartConstruct", + "id": "0x55dbc10e18d0-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x55eadb48edb0-ExecutableConstruct" + "ExecutableConstruct": "0x55dbc10e18d0-ExecutableConstruct" }, { - "id": "0x55eadb48edb0-ExecutableConstruct", + "id": "0x55dbc10e18d0-ExecutableConstruct", "variantKey": "Statement", - "Statement": "0x55eadb48edb0-Statement" + "Statement": "0x55dbc10e18d0-Statement" }, { - "id": "0x55eadb48edb0-Statement", - "statement": "0x55eadb48edc0-ActionStmt", + "id": "0x55dbc10e18d0-Statement", + "statement": "0x55dbc10e18e0-ActionStmt", "source": "allocate(b(32 + 0, 32 + 0), stat = i)" }, { - "id": "0x55eadb48edc0-ActionStmt", + "id": "0x55dbc10e18e0-ActionStmt", "variantKey": "AllocateStmt", - "AllocateStmt": "0x55eadb48dd00-AllocateStmt" + "AllocateStmt": "0x55dbc10df9f0-AllocateStmt" }, { - "id": "0x55eadb48dd00-AllocateStmt", + "id": "0x55dbc10df9f0-AllocateStmt", "Allocation": [ - "0x55eadb48ebe0-Allocation" + "0x55dbc10e1700-Allocation" ], "AllocOpt": [ - "0x55eadb48d5f0-AllocOpt" + "0x55dbc10e0800-AllocOpt" ] }, { - "id": "0x55eadb48ebe0-Allocation", - "AllocateObject": "0x55eadb48ec28-AllocateObject", + "id": "0x55dbc10e1700-Allocation", + "AllocateObject": "0x55dbc10e1748-AllocateObject", "AllocateShapeSpec": [ - "0x55eadb498140-AllocateShapeSpec", - "0x55eadb4980f0-AllocateShapeSpec" + "0x55dbc10ea090-AllocateShapeSpec", + "0x55dbc10ea040-AllocateShapeSpec" ] }, { - "id": "0x55eadb48ec28-AllocateObject", + "id": "0x55dbc10e1748-AllocateObject", "variantKey": "Name", - "Name": "0x55eadb48ec38-Name" + "Name": "0x55dbc10e1758-Name" }, { - "id": "0x55eadb48ec38-Name", + "id": "0x55dbc10e1758-Name", "source": "b" }, { - "id": "0x55eadb498140-AllocateShapeSpec", - "upper_bound": "0x55eadb48e720-Expr" + "id": "0x55dbc10ea090-AllocateShapeSpec", + "upper_bound": "0x55dbc10e1240-Expr" }, { - "id": "0x55eadb48e720-Expr", + "id": "0x55dbc10e1240-Expr", "variantKey": "Add", - "Add": "0x55eadb48e740-Add" + "Add": "0x55dbc10e1260-Add" }, { - "id": "0x55eadb48e740-Add", - "left": "0x55eadb48e640-Expr", - "right": "0x55eadb48e800-Expr", + "id": "0x55dbc10e1260-Add", + "left": "0x55dbc10e1160-Expr", + "right": "0x55dbc10e1320-Expr", "op": "ADD" }, { - "id": "0x55eadb48e640-Expr", + "id": "0x55dbc10e1160-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55eadb48e660-LiteralConstant" + "LiteralConstant": "0x55dbc10e1180-LiteralConstant" }, { - "id": "0x55eadb48e660-LiteralConstant", + "id": "0x55dbc10e1180-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55eadb48e660-IntLiteralConstant" + "IntLiteralConstant": "0x55dbc10e1180-IntLiteralConstant" }, { - "id": "0x55eadb48e660-IntLiteralConstant", + "id": "0x55dbc10e1180-IntLiteralConstant", "CharBlock": "32" }, { - "id": "0x55eadb48e800-Expr", + "id": "0x55dbc10e1320-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55eadb48e820-LiteralConstant" + "LiteralConstant": "0x55dbc10e1340-LiteralConstant" }, { - "id": "0x55eadb48e820-LiteralConstant", + "id": "0x55dbc10e1340-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55eadb48e820-IntLiteralConstant" + "IntLiteralConstant": "0x55dbc10e1340-IntLiteralConstant" }, { - "id": "0x55eadb48e820-IntLiteralConstant", + "id": "0x55dbc10e1340-IntLiteralConstant", "CharBlock": "0" }, { - "id": "0x55eadb4980f0-AllocateShapeSpec", - "upper_bound": "0x55eadb48e9c0-Expr" + "id": "0x55dbc10ea040-AllocateShapeSpec", + "upper_bound": "0x55dbc10e14e0-Expr" }, { - "id": "0x55eadb48e9c0-Expr", + "id": "0x55dbc10e14e0-Expr", "variantKey": "Add", - "Add": "0x55eadb48e9e0-Add" + "Add": "0x55dbc10e1500-Add" }, { - "id": "0x55eadb48e9e0-Add", - "left": "0x55eadb48e8e0-Expr", - "right": "0x55eadb48eaa0-Expr", + "id": "0x55dbc10e1500-Add", + "left": "0x55dbc10e1400-Expr", + "right": "0x55dbc10e15c0-Expr", "op": "ADD" }, { - "id": "0x55eadb48e8e0-Expr", + "id": "0x55dbc10e1400-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55eadb48e900-LiteralConstant" + "LiteralConstant": "0x55dbc10e1420-LiteralConstant" }, { - "id": "0x55eadb48e900-LiteralConstant", + "id": "0x55dbc10e1420-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55eadb48e900-IntLiteralConstant" + "IntLiteralConstant": "0x55dbc10e1420-IntLiteralConstant" }, { - "id": "0x55eadb48e900-IntLiteralConstant", + "id": "0x55dbc10e1420-IntLiteralConstant", "CharBlock": "32" }, { - "id": "0x55eadb48eaa0-Expr", + "id": "0x55dbc10e15c0-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55eadb48eac0-LiteralConstant" + "LiteralConstant": "0x55dbc10e15e0-LiteralConstant" }, { - "id": "0x55eadb48eac0-LiteralConstant", + "id": "0x55dbc10e15e0-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55eadb48eac0-IntLiteralConstant" + "IntLiteralConstant": "0x55dbc10e15e0-IntLiteralConstant" }, { - "id": "0x55eadb48eac0-IntLiteralConstant", + "id": "0x55dbc10e15e0-IntLiteralConstant", "CharBlock": "0" }, { - "id": "0x55eadb48d5f0-AllocOpt", + "id": "0x55dbc10e0800-AllocOpt", "variantKey": "StatOrErrmsg", - "StatOrErrmsg": "0x55eadb48d5f0-StatOrErrmsg" + "StatOrErrmsg": "0x55dbc10e0800-StatOrErrmsg" }, { - "id": "0x55eadb48d5f0-StatOrErrmsg", + "id": "0x55dbc10e0800-StatOrErrmsg", "variantKey": "StatVariable", - "StatVariable": "0x55eadb48d5f0-StatVariable" + "StatVariable": "0x55dbc10e0800-StatVariable" }, { - "id": "0x55eadb48d5f0-StatVariable", - "Expr": "0x55eadb48d5f0-Variable" + "id": "0x55dbc10e0800-StatVariable", + "Variable": "0x55dbc10e0800-Variable" }, { - "id": "0x55eadb48d5f0-Variable", + "id": "0x55dbc10e0800-Variable", "variantKey": "Designator", - "Designator": "0x55eadb48ece0-Designator" + "Designator": "0x55dbc10e1800-Designator" }, { - "id": "0x55eadb48ece0-Designator", + "id": "0x55dbc10e1800-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb48ecf0-DataRef" + "DataRef": "0x55dbc10e1810-DataRef" }, { - "id": "0x55eadb48ecf0-DataRef", + "id": "0x55dbc10e1810-DataRef", "variantKey": "Name", - "Name": "0x55eadb48ecf0-Name" + "Name": "0x55dbc10e1810-Name" }, { - "id": "0x55eadb48ecf0-Name", + "id": "0x55dbc10e1810-Name", "source": "i" }, { - "id": "0x55eadb48ed50-ExecutionPartConstruct", + "id": "0x55dbc10e1870-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x55eadb48ed50-ExecutableConstruct" + "ExecutableConstruct": "0x55dbc10e1870-ExecutableConstruct" }, { - "id": "0x55eadb48ed50-ExecutableConstruct", + "id": "0x55dbc10e1870-ExecutableConstruct", "variantKey": "Statement", - "Statement": "0x55eadb48ed50-Statement" + "Statement": "0x55dbc10e1870-Statement" }, { - "id": "0x55eadb48ed50-Statement", - "statement": "0x55eadb48ed60-ActionStmt", + "id": "0x55dbc10e1870-Statement", + "statement": "0x55dbc10e1880-ActionStmt", "source": "call check_err(i)" }, { - "id": "0x55eadb48ed60-ActionStmt", + "id": "0x55dbc10e1880-ActionStmt", "variantKey": "CallStmt", - "CallStmt": "0x55eadb48eff0-CallStmt" + "CallStmt": "0x55dbc10e1b10-CallStmt" }, { - "id": "0x55eadb48eff0-CallStmt", - "call": "0x55eadb48eff0-Call" + "id": "0x55dbc10e1b10-CallStmt", + "call": "0x55dbc10e1b10-Call" }, { - "id": "0x55eadb48eff0-Call", - "ProcedureDesignator": "0x55eadb48f008-ProcedureDesignator", + "id": "0x55dbc10e1b10-Call", + "ProcedureDesignator": "0x55dbc10e1b28-ProcedureDesignator", "ActualArgSpec": [ - "0x55eadb48eef0-ActualArgSpec" + "0x55dbc10e1a10-ActualArgSpec" ] }, { - "id": "0x55eadb48f008-ProcedureDesignator", + "id": "0x55dbc10e1b28-ProcedureDesignator", "variantKey": "Name", - "Name": "0x55eadb48f008-Name" + "Name": "0x55dbc10e1b28-Name" }, { - "id": "0x55eadb48f008-Name", + "id": "0x55dbc10e1b28-Name", "source": "check_err" }, { - "id": "0x55eadb48eef0-ActualArgSpec", - "ActualArg": "0x55eadb48eef0-ActualArg" + "id": "0x55dbc10e1a10-ActualArgSpec", + "ActualArg": "0x55dbc10e1a10-ActualArg" }, { - "id": "0x55eadb48eef0-ActualArg", + "id": "0x55dbc10e1a10-ActualArg", "variantKey": "Expr", - "Expr": "0x55eadb48ee00-Expr" + "Expr": "0x55dbc10e1920-Expr" }, { - "id": "0x55eadb48ee00-Expr", + "id": "0x55dbc10e1920-Expr", "variantKey": "Designator", - "Designator": "0x55eadb48ded0-Designator" + "Designator": "0x55dbc10e09f0-Designator" }, { - "id": "0x55eadb48ded0-Designator", + "id": "0x55dbc10e09f0-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb48dee0-DataRef" + "DataRef": "0x55dbc10e0a00-DataRef" }, { - "id": "0x55eadb48dee0-DataRef", + "id": "0x55dbc10e0a00-DataRef", "variantKey": "Name", - "Name": "0x55eadb48dee0-Name" + "Name": "0x55dbc10e0a00-Name" }, { - "id": "0x55eadb48dee0-Name", + "id": "0x55dbc10e0a00-Name", "source": "i" }, { - "id": "0x55eadb48f820-ExecutionPartConstruct", + "id": "0x55dbc10e2340-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x55eadb48f820-ExecutableConstruct" + "ExecutableConstruct": "0x55dbc10e2340-ExecutableConstruct" }, { - "id": "0x55eadb48f820-ExecutableConstruct", + "id": "0x55dbc10e2340-ExecutableConstruct", "variantKey": "Statement", - "Statement": "0x55eadb48f820-Statement" + "Statement": "0x55dbc10e2340-Statement" }, { - "id": "0x55eadb48f820-Statement", - "statement": "0x55eadb48f830-ActionStmt", + "id": "0x55dbc10e2340-Statement", + "statement": "0x55dbc10e2350-ActionStmt", "source": "allocate(c(32 + 0, 32 + 0), stat = i)" }, { - "id": "0x55eadb48f830-ActionStmt", + "id": "0x55dbc10e2350-ActionStmt", "variantKey": "AllocateStmt", - "AllocateStmt": "0x55eadb48db50-AllocateStmt" + "AllocateStmt": "0x55dbc10dfe70-AllocateStmt" }, { - "id": "0x55eadb48db50-AllocateStmt", + "id": "0x55dbc10dfe70-AllocateStmt", "Allocation": [ - "0x55eadb48f650-Allocation" + "0x55dbc10e2170-Allocation" ], "AllocOpt": [ - "0x55eadb48eb90-AllocOpt" + "0x55dbc10e16b0-AllocOpt" ] }, { - "id": "0x55eadb48f650-Allocation", - "AllocateObject": "0x55eadb48f698-AllocateObject", + "id": "0x55dbc10e2170-Allocation", + "AllocateObject": "0x55dbc10e21b8-AllocateObject", "AllocateShapeSpec": [ - "0x55eadb49c440-AllocateShapeSpec", - "0x55eadb49c410-AllocateShapeSpec" + "0x55dbc10ee390-AllocateShapeSpec", + "0x55dbc10ee360-AllocateShapeSpec" ] }, { - "id": "0x55eadb48f698-AllocateObject", + "id": "0x55dbc10e21b8-AllocateObject", "variantKey": "Name", - "Name": "0x55eadb48f6a8-Name" + "Name": "0x55dbc10e21c8-Name" }, { - "id": "0x55eadb48f6a8-Name", + "id": "0x55dbc10e21c8-Name", "source": "c" }, { - "id": "0x55eadb49c440-AllocateShapeSpec", - "upper_bound": "0x55eadb48f190-Expr" + "id": "0x55dbc10ee390-AllocateShapeSpec", + "upper_bound": "0x55dbc10e1cb0-Expr" }, { - "id": "0x55eadb48f190-Expr", + "id": "0x55dbc10e1cb0-Expr", "variantKey": "Add", - "Add": "0x55eadb48f1b0-Add" + "Add": "0x55dbc10e1cd0-Add" }, { - "id": "0x55eadb48f1b0-Add", - "left": "0x55eadb48f0b0-Expr", - "right": "0x55eadb48f270-Expr", + "id": "0x55dbc10e1cd0-Add", + "left": "0x55dbc10e1bd0-Expr", + "right": "0x55dbc10e1d90-Expr", "op": "ADD" }, { - "id": "0x55eadb48f0b0-Expr", + "id": "0x55dbc10e1bd0-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55eadb48f0d0-LiteralConstant" + "LiteralConstant": "0x55dbc10e1bf0-LiteralConstant" }, { - "id": "0x55eadb48f0d0-LiteralConstant", + "id": "0x55dbc10e1bf0-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55eadb48f0d0-IntLiteralConstant" + "IntLiteralConstant": "0x55dbc10e1bf0-IntLiteralConstant" }, { - "id": "0x55eadb48f0d0-IntLiteralConstant", + "id": "0x55dbc10e1bf0-IntLiteralConstant", "CharBlock": "32" }, { - "id": "0x55eadb48f270-Expr", + "id": "0x55dbc10e1d90-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55eadb48f290-LiteralConstant" + "LiteralConstant": "0x55dbc10e1db0-LiteralConstant" }, { - "id": "0x55eadb48f290-LiteralConstant", + "id": "0x55dbc10e1db0-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55eadb48f290-IntLiteralConstant" + "IntLiteralConstant": "0x55dbc10e1db0-IntLiteralConstant" }, { - "id": "0x55eadb48f290-IntLiteralConstant", + "id": "0x55dbc10e1db0-IntLiteralConstant", "CharBlock": "0" }, { - "id": "0x55eadb49c410-AllocateShapeSpec", - "upper_bound": "0x55eadb48f430-Expr" + "id": "0x55dbc10ee360-AllocateShapeSpec", + "upper_bound": "0x55dbc10e1f50-Expr" }, { - "id": "0x55eadb48f430-Expr", + "id": "0x55dbc10e1f50-Expr", "variantKey": "Add", - "Add": "0x55eadb48f450-Add" + "Add": "0x55dbc10e1f70-Add" }, { - "id": "0x55eadb48f450-Add", - "left": "0x55eadb48f350-Expr", - "right": "0x55eadb48f510-Expr", + "id": "0x55dbc10e1f70-Add", + "left": "0x55dbc10e1e70-Expr", + "right": "0x55dbc10e2030-Expr", "op": "ADD" }, { - "id": "0x55eadb48f350-Expr", + "id": "0x55dbc10e1e70-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55eadb48f370-LiteralConstant" + "LiteralConstant": "0x55dbc10e1e90-LiteralConstant" }, { - "id": "0x55eadb48f370-LiteralConstant", + "id": "0x55dbc10e1e90-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55eadb48f370-IntLiteralConstant" + "IntLiteralConstant": "0x55dbc10e1e90-IntLiteralConstant" }, { - "id": "0x55eadb48f370-IntLiteralConstant", + "id": "0x55dbc10e1e90-IntLiteralConstant", "CharBlock": "32" }, { - "id": "0x55eadb48f510-Expr", + "id": "0x55dbc10e2030-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55eadb48f530-LiteralConstant" + "LiteralConstant": "0x55dbc10e2050-LiteralConstant" }, { - "id": "0x55eadb48f530-LiteralConstant", + "id": "0x55dbc10e2050-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55eadb48f530-IntLiteralConstant" + "IntLiteralConstant": "0x55dbc10e2050-IntLiteralConstant" }, { - "id": "0x55eadb48f530-IntLiteralConstant", + "id": "0x55dbc10e2050-IntLiteralConstant", "CharBlock": "0" }, { - "id": "0x55eadb48eb90-AllocOpt", + "id": "0x55dbc10e16b0-AllocOpt", "variantKey": "StatOrErrmsg", - "StatOrErrmsg": "0x55eadb48eb90-StatOrErrmsg" + "StatOrErrmsg": "0x55dbc10e16b0-StatOrErrmsg" }, { - "id": "0x55eadb48eb90-StatOrErrmsg", + "id": "0x55dbc10e16b0-StatOrErrmsg", "variantKey": "StatVariable", - "StatVariable": "0x55eadb48eb90-StatVariable" + "StatVariable": "0x55dbc10e16b0-StatVariable" }, { - "id": "0x55eadb48eb90-StatVariable", - "Expr": "0x55eadb48eb90-Variable" + "id": "0x55dbc10e16b0-StatVariable", + "Variable": "0x55dbc10e16b0-Variable" }, { - "id": "0x55eadb48eb90-Variable", + "id": "0x55dbc10e16b0-Variable", "variantKey": "Designator", - "Designator": "0x55eadb48f750-Designator" + "Designator": "0x55dbc10e2270-Designator" }, { - "id": "0x55eadb48f750-Designator", + "id": "0x55dbc10e2270-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb48f760-DataRef" + "DataRef": "0x55dbc10e2280-DataRef" }, { - "id": "0x55eadb48f760-DataRef", + "id": "0x55dbc10e2280-DataRef", "variantKey": "Name", - "Name": "0x55eadb48f760-Name" + "Name": "0x55dbc10e2280-Name" }, { - "id": "0x55eadb48f760-Name", + "id": "0x55dbc10e2280-Name", "source": "i" }, { - "id": "0x55eadb48f7c0-ExecutionPartConstruct", + "id": "0x55dbc10e22e0-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x55eadb48f7c0-ExecutableConstruct" + "ExecutableConstruct": "0x55dbc10e22e0-ExecutableConstruct" }, { - "id": "0x55eadb48f7c0-ExecutableConstruct", + "id": "0x55dbc10e22e0-ExecutableConstruct", "variantKey": "Statement", - "Statement": "0x55eadb48f7c0-Statement" + "Statement": "0x55dbc10e22e0-Statement" }, { - "id": "0x55eadb48f7c0-Statement", - "statement": "0x55eadb48f7d0-ActionStmt", + "id": "0x55dbc10e22e0-Statement", + "statement": "0x55dbc10e22f0-ActionStmt", "source": "call check_err(i)" }, { - "id": "0x55eadb48f7d0-ActionStmt", + "id": "0x55dbc10e22f0-ActionStmt", "variantKey": "CallStmt", - "CallStmt": "0x55eadb48fa60-CallStmt" + "CallStmt": "0x55dbc10e2580-CallStmt" }, { - "id": "0x55eadb48fa60-CallStmt", - "call": "0x55eadb48fa60-Call" + "id": "0x55dbc10e2580-CallStmt", + "call": "0x55dbc10e2580-Call" }, { - "id": "0x55eadb48fa60-Call", - "ProcedureDesignator": "0x55eadb48fa78-ProcedureDesignator", + "id": "0x55dbc10e2580-Call", + "ProcedureDesignator": "0x55dbc10e2598-ProcedureDesignator", "ActualArgSpec": [ - "0x55eadb48f960-ActualArgSpec" + "0x55dbc10e2480-ActualArgSpec" ] }, { - "id": "0x55eadb48fa78-ProcedureDesignator", + "id": "0x55dbc10e2598-ProcedureDesignator", "variantKey": "Name", - "Name": "0x55eadb48fa78-Name" + "Name": "0x55dbc10e2598-Name" }, { - "id": "0x55eadb48fa78-Name", + "id": "0x55dbc10e2598-Name", "source": "check_err" }, { - "id": "0x55eadb48f960-ActualArgSpec", - "ActualArg": "0x55eadb48f960-ActualArg" + "id": "0x55dbc10e2480-ActualArgSpec", + "ActualArg": "0x55dbc10e2480-ActualArg" }, { - "id": "0x55eadb48f960-ActualArg", + "id": "0x55dbc10e2480-ActualArg", "variantKey": "Expr", - "Expr": "0x55eadb48f870-Expr" + "Expr": "0x55dbc10e2390-Expr" }, { - "id": "0x55eadb48f870-Expr", + "id": "0x55dbc10e2390-Expr", "variantKey": "Designator", - "Designator": "0x55eadb48dd90-Designator" + "Designator": "0x55dbc10e08b0-Designator" }, { - "id": "0x55eadb48dd90-Designator", + "id": "0x55dbc10e08b0-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb48dda0-DataRef" + "DataRef": "0x55dbc10e08c0-DataRef" }, { - "id": "0x55eadb48dda0-DataRef", + "id": "0x55dbc10e08c0-DataRef", "variantKey": "Name", - "Name": "0x55eadb48dda0-Name" + "Name": "0x55dbc10e08c0-Name" }, { - "id": "0x55eadb48dda0-Name", + "id": "0x55dbc10e08c0-Name", "source": "i" }, { - "id": "0x55eadb490290-ExecutionPartConstruct", + "id": "0x55dbc10e2db0-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x55eadb490290-ExecutableConstruct" + "ExecutableConstruct": "0x55dbc10e2db0-ExecutableConstruct" }, { - "id": "0x55eadb490290-ExecutableConstruct", + "id": "0x55dbc10e2db0-ExecutableConstruct", "variantKey": "Statement", - "Statement": "0x55eadb490290-Statement" + "Statement": "0x55dbc10e2db0-Statement" }, { - "id": "0x55eadb490290-Statement", - "statement": "0x55eadb4902a0-ActionStmt", + "id": "0x55dbc10e2db0-Statement", + "statement": "0x55dbc10e2dc0-ActionStmt", "source": "allocate(d(32 + 0, 32 + 0), stat = i)" }, { - "id": "0x55eadb4902a0-ActionStmt", + "id": "0x55dbc10e2dc0-ActionStmt", "variantKey": "AllocateStmt", - "AllocateStmt": "0x55eadb48d760-AllocateStmt" + "AllocateStmt": "0x55dbc10f19b0-AllocateStmt" }, { - "id": "0x55eadb48d760-AllocateStmt", + "id": "0x55dbc10f19b0-AllocateStmt", "Allocation": [ - "0x55eadb4900c0-Allocation" + "0x55dbc10e2be0-Allocation" ], "AllocOpt": [ - "0x55eadb48f600-AllocOpt" + "0x55dbc10e2120-AllocOpt" ] }, { - "id": "0x55eadb4900c0-Allocation", - "AllocateObject": "0x55eadb490108-AllocateObject", + "id": "0x55dbc10e2be0-Allocation", + "AllocateObject": "0x55dbc10e2c28-AllocateObject", "AllocateShapeSpec": [ - "0x55eadb496b30-AllocateShapeSpec", - "0x55eadb49c490-AllocateShapeSpec" + "0x55dbc10e8a80-AllocateShapeSpec", + "0x55dbc10ee3e0-AllocateShapeSpec" ] }, { - "id": "0x55eadb490108-AllocateObject", + "id": "0x55dbc10e2c28-AllocateObject", "variantKey": "Name", - "Name": "0x55eadb490118-Name" + "Name": "0x55dbc10e2c38-Name" }, { - "id": "0x55eadb490118-Name", + "id": "0x55dbc10e2c38-Name", "source": "d" }, { - "id": "0x55eadb496b30-AllocateShapeSpec", - "upper_bound": "0x55eadb48fc00-Expr" + "id": "0x55dbc10e8a80-AllocateShapeSpec", + "upper_bound": "0x55dbc10e2720-Expr" }, { - "id": "0x55eadb48fc00-Expr", + "id": "0x55dbc10e2720-Expr", "variantKey": "Add", - "Add": "0x55eadb48fc20-Add" + "Add": "0x55dbc10e2740-Add" }, { - "id": "0x55eadb48fc20-Add", - "left": "0x55eadb48fb20-Expr", - "right": "0x55eadb48fce0-Expr", + "id": "0x55dbc10e2740-Add", + "left": "0x55dbc10e2640-Expr", + "right": "0x55dbc10e2800-Expr", "op": "ADD" }, { - "id": "0x55eadb48fb20-Expr", + "id": "0x55dbc10e2640-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55eadb48fb40-LiteralConstant" + "LiteralConstant": "0x55dbc10e2660-LiteralConstant" }, { - "id": "0x55eadb48fb40-LiteralConstant", + "id": "0x55dbc10e2660-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55eadb48fb40-IntLiteralConstant" + "IntLiteralConstant": "0x55dbc10e2660-IntLiteralConstant" }, { - "id": "0x55eadb48fb40-IntLiteralConstant", + "id": "0x55dbc10e2660-IntLiteralConstant", "CharBlock": "32" }, { - "id": "0x55eadb48fce0-Expr", + "id": "0x55dbc10e2800-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55eadb48fd00-LiteralConstant" + "LiteralConstant": "0x55dbc10e2820-LiteralConstant" }, { - "id": "0x55eadb48fd00-LiteralConstant", + "id": "0x55dbc10e2820-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55eadb48fd00-IntLiteralConstant" + "IntLiteralConstant": "0x55dbc10e2820-IntLiteralConstant" }, { - "id": "0x55eadb48fd00-IntLiteralConstant", + "id": "0x55dbc10e2820-IntLiteralConstant", "CharBlock": "0" }, { - "id": "0x55eadb49c490-AllocateShapeSpec", - "upper_bound": "0x55eadb48fea0-Expr" + "id": "0x55dbc10ee3e0-AllocateShapeSpec", + "upper_bound": "0x55dbc10e29c0-Expr" }, { - "id": "0x55eadb48fea0-Expr", + "id": "0x55dbc10e29c0-Expr", "variantKey": "Add", - "Add": "0x55eadb48fec0-Add" + "Add": "0x55dbc10e29e0-Add" }, { - "id": "0x55eadb48fec0-Add", - "left": "0x55eadb48fdc0-Expr", - "right": "0x55eadb48ff80-Expr", + "id": "0x55dbc10e29e0-Add", + "left": "0x55dbc10e28e0-Expr", + "right": "0x55dbc10e2aa0-Expr", "op": "ADD" }, { - "id": "0x55eadb48fdc0-Expr", + "id": "0x55dbc10e28e0-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55eadb48fde0-LiteralConstant" + "LiteralConstant": "0x55dbc10e2900-LiteralConstant" }, { - "id": "0x55eadb48fde0-LiteralConstant", + "id": "0x55dbc10e2900-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55eadb48fde0-IntLiteralConstant" + "IntLiteralConstant": "0x55dbc10e2900-IntLiteralConstant" }, { - "id": "0x55eadb48fde0-IntLiteralConstant", + "id": "0x55dbc10e2900-IntLiteralConstant", "CharBlock": "32" }, { - "id": "0x55eadb48ff80-Expr", + "id": "0x55dbc10e2aa0-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55eadb48ffa0-LiteralConstant" + "LiteralConstant": "0x55dbc10e2ac0-LiteralConstant" }, { - "id": "0x55eadb48ffa0-LiteralConstant", + "id": "0x55dbc10e2ac0-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55eadb48ffa0-IntLiteralConstant" + "IntLiteralConstant": "0x55dbc10e2ac0-IntLiteralConstant" }, { - "id": "0x55eadb48ffa0-IntLiteralConstant", + "id": "0x55dbc10e2ac0-IntLiteralConstant", "CharBlock": "0" }, { - "id": "0x55eadb48f600-AllocOpt", + "id": "0x55dbc10e2120-AllocOpt", "variantKey": "StatOrErrmsg", - "StatOrErrmsg": "0x55eadb48f600-StatOrErrmsg" + "StatOrErrmsg": "0x55dbc10e2120-StatOrErrmsg" }, { - "id": "0x55eadb48f600-StatOrErrmsg", + "id": "0x55dbc10e2120-StatOrErrmsg", "variantKey": "StatVariable", - "StatVariable": "0x55eadb48f600-StatVariable" + "StatVariable": "0x55dbc10e2120-StatVariable" }, { - "id": "0x55eadb48f600-StatVariable", - "Expr": "0x55eadb48f600-Variable" + "id": "0x55dbc10e2120-StatVariable", + "Variable": "0x55dbc10e2120-Variable" }, { - "id": "0x55eadb48f600-Variable", + "id": "0x55dbc10e2120-Variable", "variantKey": "Designator", - "Designator": "0x55eadb4901c0-Designator" + "Designator": "0x55dbc10e2ce0-Designator" }, { - "id": "0x55eadb4901c0-Designator", + "id": "0x55dbc10e2ce0-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4901d0-DataRef" + "DataRef": "0x55dbc10e2cf0-DataRef" }, { - "id": "0x55eadb4901d0-DataRef", + "id": "0x55dbc10e2cf0-DataRef", "variantKey": "Name", - "Name": "0x55eadb4901d0-Name" + "Name": "0x55dbc10e2cf0-Name" }, { - "id": "0x55eadb4901d0-Name", + "id": "0x55dbc10e2cf0-Name", "source": "i" }, { - "id": "0x55eadb490230-ExecutionPartConstruct", + "id": "0x55dbc10e2d50-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x55eadb490230-ExecutableConstruct" + "ExecutableConstruct": "0x55dbc10e2d50-ExecutableConstruct" }, { - "id": "0x55eadb490230-ExecutableConstruct", + "id": "0x55dbc10e2d50-ExecutableConstruct", "variantKey": "Statement", - "Statement": "0x55eadb490230-Statement" + "Statement": "0x55dbc10e2d50-Statement" }, { - "id": "0x55eadb490230-Statement", - "statement": "0x55eadb490240-ActionStmt", + "id": "0x55dbc10e2d50-Statement", + "statement": "0x55dbc10e2d60-ActionStmt", "source": "call check_err(i)" }, { - "id": "0x55eadb490240-ActionStmt", + "id": "0x55dbc10e2d60-ActionStmt", "variantKey": "CallStmt", - "CallStmt": "0x55eadb4904d0-CallStmt" + "CallStmt": "0x55dbc10e2ff0-CallStmt" }, { - "id": "0x55eadb4904d0-CallStmt", - "call": "0x55eadb4904d0-Call" + "id": "0x55dbc10e2ff0-CallStmt", + "call": "0x55dbc10e2ff0-Call" }, { - "id": "0x55eadb4904d0-Call", - "ProcedureDesignator": "0x55eadb4904e8-ProcedureDesignator", + "id": "0x55dbc10e2ff0-Call", + "ProcedureDesignator": "0x55dbc10e3008-ProcedureDesignator", "ActualArgSpec": [ - "0x55eadb4903d0-ActualArgSpec" + "0x55dbc10e2ef0-ActualArgSpec" ] }, { - "id": "0x55eadb4904e8-ProcedureDesignator", + "id": "0x55dbc10e3008-ProcedureDesignator", "variantKey": "Name", - "Name": "0x55eadb4904e8-Name" + "Name": "0x55dbc10e3008-Name" }, { - "id": "0x55eadb4904e8-Name", + "id": "0x55dbc10e3008-Name", "source": "check_err" }, { - "id": "0x55eadb4903d0-ActualArgSpec", - "ActualArg": "0x55eadb4903d0-ActualArg" + "id": "0x55dbc10e2ef0-ActualArgSpec", + "ActualArg": "0x55dbc10e2ef0-ActualArg" }, { - "id": "0x55eadb4903d0-ActualArg", + "id": "0x55dbc10e2ef0-ActualArg", "variantKey": "Expr", - "Expr": "0x55eadb4902e0-Expr" + "Expr": "0x55dbc10e2e00-Expr" }, { - "id": "0x55eadb4902e0-Expr", + "id": "0x55dbc10e2e00-Expr", "variantKey": "Designator", - "Designator": "0x55eadb48e2f0-Designator" + "Designator": "0x55dbc10e0e10-Designator" }, { - "id": "0x55eadb48e2f0-Designator", + "id": "0x55dbc10e0e10-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb48e300-DataRef" + "DataRef": "0x55dbc10e0e20-DataRef" }, { - "id": "0x55eadb48e300-DataRef", + "id": "0x55dbc10e0e20-DataRef", "variantKey": "Name", - "Name": "0x55eadb48e300-Name" + "Name": "0x55dbc10e0e20-Name" }, { - "id": "0x55eadb48e300-Name", + "id": "0x55dbc10e0e20-Name", "source": "i" }, { - "id": "0x55eadb490d00-ExecutionPartConstruct", + "id": "0x55dbc10e3820-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x55eadb490d00-ExecutableConstruct" + "ExecutableConstruct": "0x55dbc10e3820-ExecutableConstruct" }, { - "id": "0x55eadb490d00-ExecutableConstruct", + "id": "0x55dbc10e3820-ExecutableConstruct", "variantKey": "Statement", - "Statement": "0x55eadb490d00-Statement" + "Statement": "0x55dbc10e3820-Statement" }, { - "id": "0x55eadb490d00-Statement", - "statement": "0x55eadb490d10-ActionStmt", + "id": "0x55dbc10e3820-Statement", + "statement": "0x55dbc10e3830-ActionStmt", "source": "allocate(e(32 + 0, 32 + 0), stat = i)" }, { - "id": "0x55eadb490d10-ActionStmt", + "id": "0x55dbc10e3830-ActionStmt", "variantKey": "AllocateStmt", - "AllocateStmt": "0x55eadb49fa20-AllocateStmt" + "AllocateStmt": "0x55dbc10dfd50-AllocateStmt" }, { - "id": "0x55eadb49fa20-AllocateStmt", + "id": "0x55dbc10dfd50-AllocateStmt", "Allocation": [ - "0x55eadb490b30-Allocation" + "0x55dbc10e3650-Allocation" ], "AllocOpt": [ - "0x55eadb490070-AllocOpt" + "0x55dbc10e2b90-AllocOpt" ] }, { - "id": "0x55eadb490b30-Allocation", - "AllocateObject": "0x55eadb490b78-AllocateObject", + "id": "0x55dbc10e3650-Allocation", + "AllocateObject": "0x55dbc10e3698-AllocateObject", "AllocateShapeSpec": [ - "0x55eadb4a6550-AllocateShapeSpec", - "0x55eadb4a64a0-AllocateShapeSpec" + "0x55dbc10f83f0-AllocateShapeSpec", + "0x55dbc10f8200-AllocateShapeSpec" ] }, { - "id": "0x55eadb490b78-AllocateObject", + "id": "0x55dbc10e3698-AllocateObject", "variantKey": "Name", - "Name": "0x55eadb490b88-Name" + "Name": "0x55dbc10e36a8-Name" }, { - "id": "0x55eadb490b88-Name", + "id": "0x55dbc10e36a8-Name", "source": "e" }, { - "id": "0x55eadb4a6550-AllocateShapeSpec", - "upper_bound": "0x55eadb490670-Expr" + "id": "0x55dbc10f83f0-AllocateShapeSpec", + "upper_bound": "0x55dbc10e3190-Expr" }, { - "id": "0x55eadb490670-Expr", + "id": "0x55dbc10e3190-Expr", "variantKey": "Add", - "Add": "0x55eadb490690-Add" + "Add": "0x55dbc10e31b0-Add" }, { - "id": "0x55eadb490690-Add", - "left": "0x55eadb490590-Expr", - "right": "0x55eadb490750-Expr", + "id": "0x55dbc10e31b0-Add", + "left": "0x55dbc10e30b0-Expr", + "right": "0x55dbc10e3270-Expr", "op": "ADD" }, { - "id": "0x55eadb490590-Expr", + "id": "0x55dbc10e30b0-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55eadb4905b0-LiteralConstant" + "LiteralConstant": "0x55dbc10e30d0-LiteralConstant" }, { - "id": "0x55eadb4905b0-LiteralConstant", + "id": "0x55dbc10e30d0-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55eadb4905b0-IntLiteralConstant" + "IntLiteralConstant": "0x55dbc10e30d0-IntLiteralConstant" }, { - "id": "0x55eadb4905b0-IntLiteralConstant", + "id": "0x55dbc10e30d0-IntLiteralConstant", "CharBlock": "32" }, { - "id": "0x55eadb490750-Expr", + "id": "0x55dbc10e3270-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55eadb490770-LiteralConstant" + "LiteralConstant": "0x55dbc10e3290-LiteralConstant" }, { - "id": "0x55eadb490770-LiteralConstant", + "id": "0x55dbc10e3290-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55eadb490770-IntLiteralConstant" + "IntLiteralConstant": "0x55dbc10e3290-IntLiteralConstant" }, { - "id": "0x55eadb490770-IntLiteralConstant", + "id": "0x55dbc10e3290-IntLiteralConstant", "CharBlock": "0" }, { - "id": "0x55eadb4a64a0-AllocateShapeSpec", - "upper_bound": "0x55eadb490910-Expr" + "id": "0x55dbc10f8200-AllocateShapeSpec", + "upper_bound": "0x55dbc10e3430-Expr" }, { - "id": "0x55eadb490910-Expr", + "id": "0x55dbc10e3430-Expr", "variantKey": "Add", - "Add": "0x55eadb490930-Add" + "Add": "0x55dbc10e3450-Add" }, { - "id": "0x55eadb490930-Add", - "left": "0x55eadb490830-Expr", - "right": "0x55eadb4909f0-Expr", + "id": "0x55dbc10e3450-Add", + "left": "0x55dbc10e3350-Expr", + "right": "0x55dbc10e3510-Expr", "op": "ADD" }, { - "id": "0x55eadb490830-Expr", + "id": "0x55dbc10e3350-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55eadb490850-LiteralConstant" + "LiteralConstant": "0x55dbc10e3370-LiteralConstant" }, { - "id": "0x55eadb490850-LiteralConstant", + "id": "0x55dbc10e3370-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55eadb490850-IntLiteralConstant" + "IntLiteralConstant": "0x55dbc10e3370-IntLiteralConstant" }, { - "id": "0x55eadb490850-IntLiteralConstant", + "id": "0x55dbc10e3370-IntLiteralConstant", "CharBlock": "32" }, { - "id": "0x55eadb4909f0-Expr", + "id": "0x55dbc10e3510-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55eadb490a10-LiteralConstant" + "LiteralConstant": "0x55dbc10e3530-LiteralConstant" }, { - "id": "0x55eadb490a10-LiteralConstant", + "id": "0x55dbc10e3530-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55eadb490a10-IntLiteralConstant" + "IntLiteralConstant": "0x55dbc10e3530-IntLiteralConstant" }, { - "id": "0x55eadb490a10-IntLiteralConstant", + "id": "0x55dbc10e3530-IntLiteralConstant", "CharBlock": "0" }, { - "id": "0x55eadb490070-AllocOpt", + "id": "0x55dbc10e2b90-AllocOpt", "variantKey": "StatOrErrmsg", - "StatOrErrmsg": "0x55eadb490070-StatOrErrmsg" + "StatOrErrmsg": "0x55dbc10e2b90-StatOrErrmsg" }, { - "id": "0x55eadb490070-StatOrErrmsg", + "id": "0x55dbc10e2b90-StatOrErrmsg", "variantKey": "StatVariable", - "StatVariable": "0x55eadb490070-StatVariable" + "StatVariable": "0x55dbc10e2b90-StatVariable" }, { - "id": "0x55eadb490070-StatVariable", - "Expr": "0x55eadb490070-Variable" + "id": "0x55dbc10e2b90-StatVariable", + "Variable": "0x55dbc10e2b90-Variable" }, { - "id": "0x55eadb490070-Variable", + "id": "0x55dbc10e2b90-Variable", "variantKey": "Designator", - "Designator": "0x55eadb490c30-Designator" + "Designator": "0x55dbc10e3750-Designator" }, { - "id": "0x55eadb490c30-Designator", + "id": "0x55dbc10e3750-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb490c40-DataRef" + "DataRef": "0x55dbc10e3760-DataRef" }, { - "id": "0x55eadb490c40-DataRef", + "id": "0x55dbc10e3760-DataRef", "variantKey": "Name", - "Name": "0x55eadb490c40-Name" + "Name": "0x55dbc10e3760-Name" }, { - "id": "0x55eadb490c40-Name", + "id": "0x55dbc10e3760-Name", "source": "i" }, { - "id": "0x55eadb490ca0-ExecutionPartConstruct", + "id": "0x55dbc10e37c0-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x55eadb490ca0-ExecutableConstruct" + "ExecutableConstruct": "0x55dbc10e37c0-ExecutableConstruct" }, { - "id": "0x55eadb490ca0-ExecutableConstruct", + "id": "0x55dbc10e37c0-ExecutableConstruct", "variantKey": "Statement", - "Statement": "0x55eadb490ca0-Statement" + "Statement": "0x55dbc10e37c0-Statement" }, { - "id": "0x55eadb490ca0-Statement", - "statement": "0x55eadb490cb0-ActionStmt", + "id": "0x55dbc10e37c0-Statement", + "statement": "0x55dbc10e37d0-ActionStmt", "source": "call check_err(i)" }, { - "id": "0x55eadb490cb0-ActionStmt", + "id": "0x55dbc10e37d0-ActionStmt", "variantKey": "CallStmt", - "CallStmt": "0x55eadb490f40-CallStmt" + "CallStmt": "0x55dbc10e3a60-CallStmt" }, { - "id": "0x55eadb490f40-CallStmt", - "call": "0x55eadb490f40-Call" + "id": "0x55dbc10e3a60-CallStmt", + "call": "0x55dbc10e3a60-Call" }, { - "id": "0x55eadb490f40-Call", - "ProcedureDesignator": "0x55eadb490f58-ProcedureDesignator", + "id": "0x55dbc10e3a60-Call", + "ProcedureDesignator": "0x55dbc10e3a78-ProcedureDesignator", "ActualArgSpec": [ - "0x55eadb490e40-ActualArgSpec" + "0x55dbc10e3960-ActualArgSpec" ] }, { - "id": "0x55eadb490f58-ProcedureDesignator", + "id": "0x55dbc10e3a78-ProcedureDesignator", "variantKey": "Name", - "Name": "0x55eadb490f58-Name" + "Name": "0x55dbc10e3a78-Name" }, { - "id": "0x55eadb490f58-Name", + "id": "0x55dbc10e3a78-Name", "source": "check_err" }, { - "id": "0x55eadb490e40-ActualArgSpec", - "ActualArg": "0x55eadb490e40-ActualArg" + "id": "0x55dbc10e3960-ActualArgSpec", + "ActualArg": "0x55dbc10e3960-ActualArg" }, { - "id": "0x55eadb490e40-ActualArg", + "id": "0x55dbc10e3960-ActualArg", "variantKey": "Expr", - "Expr": "0x55eadb490d50-Expr" + "Expr": "0x55dbc10e3870-Expr" }, { - "id": "0x55eadb490d50-Expr", + "id": "0x55dbc10e3870-Expr", "variantKey": "Designator", - "Designator": "0x55eadb48dfa0-Designator" + "Designator": "0x55dbc10e0ac0-Designator" }, { - "id": "0x55eadb48dfa0-Designator", + "id": "0x55dbc10e0ac0-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb48dfb0-DataRef" + "DataRef": "0x55dbc10e0ad0-DataRef" }, { - "id": "0x55eadb48dfb0-DataRef", + "id": "0x55dbc10e0ad0-DataRef", "variantKey": "Name", - "Name": "0x55eadb48dfb0-Name" + "Name": "0x55dbc10e0ad0-Name" }, { - "id": "0x55eadb48dfb0-Name", + "id": "0x55dbc10e0ad0-Name", "source": "i" }, { - "id": "0x55eadb491770-ExecutionPartConstruct", + "id": "0x55dbc10e4290-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x55eadb491770-ExecutableConstruct" + "ExecutableConstruct": "0x55dbc10e4290-ExecutableConstruct" }, { - "id": "0x55eadb491770-ExecutableConstruct", + "id": "0x55dbc10e4290-ExecutableConstruct", "variantKey": "Statement", - "Statement": "0x55eadb491770-Statement" + "Statement": "0x55dbc10e4290-Statement" }, { - "id": "0x55eadb491770-Statement", - "statement": "0x55eadb491780-ActionStmt", + "id": "0x55dbc10e4290-Statement", + "statement": "0x55dbc10e42a0-ActionStmt", "source": "allocate(f(32 + 0, 32 + 0), stat = i)" }, { - "id": "0x55eadb491780-ActionStmt", + "id": "0x55dbc10e42a0-ActionStmt", "variantKey": "AllocateStmt", - "AllocateStmt": "0x55eadb4171d0-AllocateStmt" + "AllocateStmt": "0x55dbc10690b0-AllocateStmt" }, { - "id": "0x55eadb4171d0-AllocateStmt", + "id": "0x55dbc10690b0-AllocateStmt", "Allocation": [ - "0x55eadb4915a0-Allocation" + "0x55dbc10e40c0-Allocation" ], "AllocOpt": [ - "0x55eadb490ae0-AllocOpt" + "0x55dbc10e3600-AllocOpt" ] }, { - "id": "0x55eadb4915a0-Allocation", - "AllocateObject": "0x55eadb4915e8-AllocateObject", + "id": "0x55dbc10e40c0-Allocation", + "AllocateObject": "0x55dbc10e4108-AllocateObject", "AllocateShapeSpec": [ - "0x55eadb496530-AllocateShapeSpec", - "0x55eadb4a65c0-AllocateShapeSpec" + "0x55dbc10e8480-AllocateShapeSpec", + "0x55dbc10f84a0-AllocateShapeSpec" ] }, { - "id": "0x55eadb4915e8-AllocateObject", + "id": "0x55dbc10e4108-AllocateObject", "variantKey": "Name", - "Name": "0x55eadb4915f8-Name" + "Name": "0x55dbc10e4118-Name" }, { - "id": "0x55eadb4915f8-Name", + "id": "0x55dbc10e4118-Name", "source": "f" }, { - "id": "0x55eadb496530-AllocateShapeSpec", - "upper_bound": "0x55eadb4910e0-Expr" + "id": "0x55dbc10e8480-AllocateShapeSpec", + "upper_bound": "0x55dbc10e3c00-Expr" }, { - "id": "0x55eadb4910e0-Expr", + "id": "0x55dbc10e3c00-Expr", "variantKey": "Add", - "Add": "0x55eadb491100-Add" + "Add": "0x55dbc10e3c20-Add" }, { - "id": "0x55eadb491100-Add", - "left": "0x55eadb491000-Expr", - "right": "0x55eadb4911c0-Expr", + "id": "0x55dbc10e3c20-Add", + "left": "0x55dbc10e3b20-Expr", + "right": "0x55dbc10e3ce0-Expr", "op": "ADD" }, { - "id": "0x55eadb491000-Expr", + "id": "0x55dbc10e3b20-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55eadb491020-LiteralConstant" + "LiteralConstant": "0x55dbc10e3b40-LiteralConstant" }, { - "id": "0x55eadb491020-LiteralConstant", + "id": "0x55dbc10e3b40-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55eadb491020-IntLiteralConstant" + "IntLiteralConstant": "0x55dbc10e3b40-IntLiteralConstant" }, { - "id": "0x55eadb491020-IntLiteralConstant", + "id": "0x55dbc10e3b40-IntLiteralConstant", "CharBlock": "32" }, { - "id": "0x55eadb4911c0-Expr", + "id": "0x55dbc10e3ce0-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55eadb4911e0-LiteralConstant" + "LiteralConstant": "0x55dbc10e3d00-LiteralConstant" }, { - "id": "0x55eadb4911e0-LiteralConstant", + "id": "0x55dbc10e3d00-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55eadb4911e0-IntLiteralConstant" + "IntLiteralConstant": "0x55dbc10e3d00-IntLiteralConstant" }, { - "id": "0x55eadb4911e0-IntLiteralConstant", + "id": "0x55dbc10e3d00-IntLiteralConstant", "CharBlock": "0" }, { - "id": "0x55eadb4a65c0-AllocateShapeSpec", - "upper_bound": "0x55eadb491380-Expr" + "id": "0x55dbc10f84a0-AllocateShapeSpec", + "upper_bound": "0x55dbc10e3ea0-Expr" }, { - "id": "0x55eadb491380-Expr", + "id": "0x55dbc10e3ea0-Expr", "variantKey": "Add", - "Add": "0x55eadb4913a0-Add" + "Add": "0x55dbc10e3ec0-Add" }, { - "id": "0x55eadb4913a0-Add", - "left": "0x55eadb4912a0-Expr", - "right": "0x55eadb491460-Expr", + "id": "0x55dbc10e3ec0-Add", + "left": "0x55dbc10e3dc0-Expr", + "right": "0x55dbc10e3f80-Expr", "op": "ADD" }, { - "id": "0x55eadb4912a0-Expr", + "id": "0x55dbc10e3dc0-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55eadb4912c0-LiteralConstant" + "LiteralConstant": "0x55dbc10e3de0-LiteralConstant" }, { - "id": "0x55eadb4912c0-LiteralConstant", + "id": "0x55dbc10e3de0-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55eadb4912c0-IntLiteralConstant" + "IntLiteralConstant": "0x55dbc10e3de0-IntLiteralConstant" }, { - "id": "0x55eadb4912c0-IntLiteralConstant", + "id": "0x55dbc10e3de0-IntLiteralConstant", "CharBlock": "32" }, { - "id": "0x55eadb491460-Expr", + "id": "0x55dbc10e3f80-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55eadb491480-LiteralConstant" + "LiteralConstant": "0x55dbc10e3fa0-LiteralConstant" }, { - "id": "0x55eadb491480-LiteralConstant", + "id": "0x55dbc10e3fa0-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55eadb491480-IntLiteralConstant" + "IntLiteralConstant": "0x55dbc10e3fa0-IntLiteralConstant" }, { - "id": "0x55eadb491480-IntLiteralConstant", + "id": "0x55dbc10e3fa0-IntLiteralConstant", "CharBlock": "0" }, { - "id": "0x55eadb490ae0-AllocOpt", + "id": "0x55dbc10e3600-AllocOpt", "variantKey": "StatOrErrmsg", - "StatOrErrmsg": "0x55eadb490ae0-StatOrErrmsg" + "StatOrErrmsg": "0x55dbc10e3600-StatOrErrmsg" }, { - "id": "0x55eadb490ae0-StatOrErrmsg", + "id": "0x55dbc10e3600-StatOrErrmsg", "variantKey": "StatVariable", - "StatVariable": "0x55eadb490ae0-StatVariable" + "StatVariable": "0x55dbc10e3600-StatVariable" }, { - "id": "0x55eadb490ae0-StatVariable", - "Expr": "0x55eadb490ae0-Variable" + "id": "0x55dbc10e3600-StatVariable", + "Variable": "0x55dbc10e3600-Variable" }, { - "id": "0x55eadb490ae0-Variable", + "id": "0x55dbc10e3600-Variable", "variantKey": "Designator", - "Designator": "0x55eadb4916a0-Designator" + "Designator": "0x55dbc10e41c0-Designator" }, { - "id": "0x55eadb4916a0-Designator", + "id": "0x55dbc10e41c0-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4916b0-DataRef" + "DataRef": "0x55dbc10e41d0-DataRef" }, { - "id": "0x55eadb4916b0-DataRef", + "id": "0x55dbc10e41d0-DataRef", "variantKey": "Name", - "Name": "0x55eadb4916b0-Name" + "Name": "0x55dbc10e41d0-Name" }, { - "id": "0x55eadb4916b0-Name", + "id": "0x55dbc10e41d0-Name", "source": "i" }, { - "id": "0x55eadb491710-ExecutionPartConstruct", + "id": "0x55dbc10e4230-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x55eadb491710-ExecutableConstruct" + "ExecutableConstruct": "0x55dbc10e4230-ExecutableConstruct" }, { - "id": "0x55eadb491710-ExecutableConstruct", + "id": "0x55dbc10e4230-ExecutableConstruct", "variantKey": "Statement", - "Statement": "0x55eadb491710-Statement" + "Statement": "0x55dbc10e4230-Statement" }, { - "id": "0x55eadb491710-Statement", - "statement": "0x55eadb491720-ActionStmt", + "id": "0x55dbc10e4230-Statement", + "statement": "0x55dbc10e4240-ActionStmt", "source": "call check_err(i)" }, { - "id": "0x55eadb491720-ActionStmt", + "id": "0x55dbc10e4240-ActionStmt", "variantKey": "CallStmt", - "CallStmt": "0x55eadb4919b0-CallStmt" + "CallStmt": "0x55dbc10e44d0-CallStmt" }, { - "id": "0x55eadb4919b0-CallStmt", - "call": "0x55eadb4919b0-Call" + "id": "0x55dbc10e44d0-CallStmt", + "call": "0x55dbc10e44d0-Call" }, { - "id": "0x55eadb4919b0-Call", - "ProcedureDesignator": "0x55eadb4919c8-ProcedureDesignator", + "id": "0x55dbc10e44d0-Call", + "ProcedureDesignator": "0x55dbc10e44e8-ProcedureDesignator", "ActualArgSpec": [ - "0x55eadb4918b0-ActualArgSpec" + "0x55dbc10e43d0-ActualArgSpec" ] }, { - "id": "0x55eadb4919c8-ProcedureDesignator", + "id": "0x55dbc10e44e8-ProcedureDesignator", "variantKey": "Name", - "Name": "0x55eadb4919c8-Name" + "Name": "0x55dbc10e44e8-Name" }, { - "id": "0x55eadb4919c8-Name", + "id": "0x55dbc10e44e8-Name", "source": "check_err" }, { - "id": "0x55eadb4918b0-ActualArgSpec", - "ActualArg": "0x55eadb4918b0-ActualArg" + "id": "0x55dbc10e43d0-ActualArgSpec", + "ActualArg": "0x55dbc10e43d0-ActualArg" }, { - "id": "0x55eadb4918b0-ActualArg", + "id": "0x55dbc10e43d0-ActualArg", "variantKey": "Expr", - "Expr": "0x55eadb4917c0-Expr" + "Expr": "0x55dbc10e42e0-Expr" }, { - "id": "0x55eadb4917c0-Expr", + "id": "0x55dbc10e42e0-Expr", "variantKey": "Designator", - "Designator": "0x55eadb48dc70-Designator" + "Designator": "0x55dbc10e0000-Designator" }, { - "id": "0x55eadb48dc70-Designator", + "id": "0x55dbc10e0000-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb48dc80-DataRef" + "DataRef": "0x55dbc10e0010-DataRef" }, { - "id": "0x55eadb48dc80-DataRef", + "id": "0x55dbc10e0010-DataRef", "variantKey": "Name", - "Name": "0x55eadb48dc80-Name" + "Name": "0x55dbc10e0010-Name" }, { - "id": "0x55eadb48dc80-Name", + "id": "0x55dbc10e0010-Name", "source": "i" }, { - "id": "0x55eadb4921e0-ExecutionPartConstruct", + "id": "0x55dbc10e4d00-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x55eadb4921e0-ExecutableConstruct" + "ExecutableConstruct": "0x55dbc10e4d00-ExecutableConstruct" }, { - "id": "0x55eadb4921e0-ExecutableConstruct", + "id": "0x55dbc10e4d00-ExecutableConstruct", "variantKey": "Statement", - "Statement": "0x55eadb4921e0-Statement" + "Statement": "0x55dbc10e4d00-Statement" }, { - "id": "0x55eadb4921e0-Statement", - "statement": "0x55eadb4921f0-ActionStmt", + "id": "0x55dbc10e4d00-Statement", + "statement": "0x55dbc10e4d10-ActionStmt", "source": "allocate(g(32 + 0, 32 + 0), stat = i)" }, { - "id": "0x55eadb4921f0-ActionStmt", + "id": "0x55dbc10e4d10-ActionStmt", "variantKey": "AllocateStmt", - "AllocateStmt": "0x55eadb4170b0-AllocateStmt" + "AllocateStmt": "0x55dbc10691d0-AllocateStmt" }, { - "id": "0x55eadb4170b0-AllocateStmt", + "id": "0x55dbc10691d0-AllocateStmt", "Allocation": [ - "0x55eadb492010-Allocation" + "0x55dbc10e4b30-Allocation" ], "AllocOpt": [ - "0x55eadb491550-AllocOpt" + "0x55dbc10e4070-AllocOpt" ] }, { - "id": "0x55eadb492010-Allocation", - "AllocateObject": "0x55eadb492058-AllocateObject", + "id": "0x55dbc10e4b30-Allocation", + "AllocateObject": "0x55dbc10e4b78-AllocateObject", "AllocateShapeSpec": [ - "0x55eadb496730-AllocateShapeSpec", - "0x55eadb4966c0-AllocateShapeSpec" + "0x55dbc10e8680-AllocateShapeSpec", + "0x55dbc10e8610-AllocateShapeSpec" ] }, { - "id": "0x55eadb492058-AllocateObject", + "id": "0x55dbc10e4b78-AllocateObject", "variantKey": "Name", - "Name": "0x55eadb492068-Name" + "Name": "0x55dbc10e4b88-Name" }, { - "id": "0x55eadb492068-Name", + "id": "0x55dbc10e4b88-Name", "source": "g" }, { - "id": "0x55eadb496730-AllocateShapeSpec", - "upper_bound": "0x55eadb491b50-Expr" + "id": "0x55dbc10e8680-AllocateShapeSpec", + "upper_bound": "0x55dbc10e4670-Expr" }, { - "id": "0x55eadb491b50-Expr", + "id": "0x55dbc10e4670-Expr", "variantKey": "Add", - "Add": "0x55eadb491b70-Add" + "Add": "0x55dbc10e4690-Add" }, { - "id": "0x55eadb491b70-Add", - "left": "0x55eadb491a70-Expr", - "right": "0x55eadb491c30-Expr", + "id": "0x55dbc10e4690-Add", + "left": "0x55dbc10e4590-Expr", + "right": "0x55dbc10e4750-Expr", "op": "ADD" }, { - "id": "0x55eadb491a70-Expr", + "id": "0x55dbc10e4590-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55eadb491a90-LiteralConstant" + "LiteralConstant": "0x55dbc10e45b0-LiteralConstant" }, { - "id": "0x55eadb491a90-LiteralConstant", + "id": "0x55dbc10e45b0-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55eadb491a90-IntLiteralConstant" + "IntLiteralConstant": "0x55dbc10e45b0-IntLiteralConstant" }, { - "id": "0x55eadb491a90-IntLiteralConstant", + "id": "0x55dbc10e45b0-IntLiteralConstant", "CharBlock": "32" }, { - "id": "0x55eadb491c30-Expr", + "id": "0x55dbc10e4750-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55eadb491c50-LiteralConstant" + "LiteralConstant": "0x55dbc10e4770-LiteralConstant" }, { - "id": "0x55eadb491c50-LiteralConstant", + "id": "0x55dbc10e4770-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55eadb491c50-IntLiteralConstant" + "IntLiteralConstant": "0x55dbc10e4770-IntLiteralConstant" }, { - "id": "0x55eadb491c50-IntLiteralConstant", + "id": "0x55dbc10e4770-IntLiteralConstant", "CharBlock": "0" }, { - "id": "0x55eadb4966c0-AllocateShapeSpec", - "upper_bound": "0x55eadb491df0-Expr" + "id": "0x55dbc10e8610-AllocateShapeSpec", + "upper_bound": "0x55dbc10e4910-Expr" }, { - "id": "0x55eadb491df0-Expr", + "id": "0x55dbc10e4910-Expr", "variantKey": "Add", - "Add": "0x55eadb491e10-Add" + "Add": "0x55dbc10e4930-Add" }, { - "id": "0x55eadb491e10-Add", - "left": "0x55eadb491d10-Expr", - "right": "0x55eadb491ed0-Expr", + "id": "0x55dbc10e4930-Add", + "left": "0x55dbc10e4830-Expr", + "right": "0x55dbc10e49f0-Expr", "op": "ADD" }, { - "id": "0x55eadb491d10-Expr", + "id": "0x55dbc10e4830-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55eadb491d30-LiteralConstant" + "LiteralConstant": "0x55dbc10e4850-LiteralConstant" }, { - "id": "0x55eadb491d30-LiteralConstant", + "id": "0x55dbc10e4850-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55eadb491d30-IntLiteralConstant" + "IntLiteralConstant": "0x55dbc10e4850-IntLiteralConstant" }, { - "id": "0x55eadb491d30-IntLiteralConstant", + "id": "0x55dbc10e4850-IntLiteralConstant", "CharBlock": "32" }, { - "id": "0x55eadb491ed0-Expr", + "id": "0x55dbc10e49f0-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55eadb491ef0-LiteralConstant" + "LiteralConstant": "0x55dbc10e4a10-LiteralConstant" }, { - "id": "0x55eadb491ef0-LiteralConstant", + "id": "0x55dbc10e4a10-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55eadb491ef0-IntLiteralConstant" + "IntLiteralConstant": "0x55dbc10e4a10-IntLiteralConstant" }, { - "id": "0x55eadb491ef0-IntLiteralConstant", + "id": "0x55dbc10e4a10-IntLiteralConstant", "CharBlock": "0" }, { - "id": "0x55eadb491550-AllocOpt", + "id": "0x55dbc10e4070-AllocOpt", "variantKey": "StatOrErrmsg", - "StatOrErrmsg": "0x55eadb491550-StatOrErrmsg" + "StatOrErrmsg": "0x55dbc10e4070-StatOrErrmsg" }, { - "id": "0x55eadb491550-StatOrErrmsg", + "id": "0x55dbc10e4070-StatOrErrmsg", "variantKey": "StatVariable", - "StatVariable": "0x55eadb491550-StatVariable" + "StatVariable": "0x55dbc10e4070-StatVariable" }, { - "id": "0x55eadb491550-StatVariable", - "Expr": "0x55eadb491550-Variable" + "id": "0x55dbc10e4070-StatVariable", + "Variable": "0x55dbc10e4070-Variable" }, { - "id": "0x55eadb491550-Variable", + "id": "0x55dbc10e4070-Variable", "variantKey": "Designator", - "Designator": "0x55eadb492110-Designator" + "Designator": "0x55dbc10e4c30-Designator" }, { - "id": "0x55eadb492110-Designator", + "id": "0x55dbc10e4c30-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb492120-DataRef" + "DataRef": "0x55dbc10e4c40-DataRef" }, { - "id": "0x55eadb492120-DataRef", + "id": "0x55dbc10e4c40-DataRef", "variantKey": "Name", - "Name": "0x55eadb492120-Name" + "Name": "0x55dbc10e4c40-Name" }, { - "id": "0x55eadb492120-Name", + "id": "0x55dbc10e4c40-Name", "source": "i" }, { - "id": "0x55eadb492180-ExecutionPartConstruct", + "id": "0x55dbc10e4ca0-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x55eadb492180-ExecutableConstruct" + "ExecutableConstruct": "0x55dbc10e4ca0-ExecutableConstruct" }, { - "id": "0x55eadb492180-ExecutableConstruct", + "id": "0x55dbc10e4ca0-ExecutableConstruct", "variantKey": "Statement", - "Statement": "0x55eadb492180-Statement" + "Statement": "0x55dbc10e4ca0-Statement" }, { - "id": "0x55eadb492180-Statement", - "statement": "0x55eadb492190-ActionStmt", + "id": "0x55dbc10e4ca0-Statement", + "statement": "0x55dbc10e4cb0-ActionStmt", "source": "call check_err(i)" }, { - "id": "0x55eadb492190-ActionStmt", + "id": "0x55dbc10e4cb0-ActionStmt", "variantKey": "CallStmt", - "CallStmt": "0x55eadb492420-CallStmt" + "CallStmt": "0x55dbc10e4f40-CallStmt" }, { - "id": "0x55eadb492420-CallStmt", - "call": "0x55eadb492420-Call" + "id": "0x55dbc10e4f40-CallStmt", + "call": "0x55dbc10e4f40-Call" }, { - "id": "0x55eadb492420-Call", - "ProcedureDesignator": "0x55eadb492438-ProcedureDesignator", + "id": "0x55dbc10e4f40-Call", + "ProcedureDesignator": "0x55dbc10e4f58-ProcedureDesignator", "ActualArgSpec": [ - "0x55eadb492320-ActualArgSpec" + "0x55dbc10e4e40-ActualArgSpec" ] }, { - "id": "0x55eadb492438-ProcedureDesignator", + "id": "0x55dbc10e4f58-ProcedureDesignator", "variantKey": "Name", - "Name": "0x55eadb492438-Name" + "Name": "0x55dbc10e4f58-Name" }, { - "id": "0x55eadb492438-Name", + "id": "0x55dbc10e4f58-Name", "source": "check_err" }, { - "id": "0x55eadb492320-ActualArgSpec", - "ActualArg": "0x55eadb492320-ActualArg" + "id": "0x55dbc10e4e40-ActualArgSpec", + "ActualArg": "0x55dbc10e4e40-ActualArg" }, { - "id": "0x55eadb492320-ActualArg", + "id": "0x55dbc10e4e40-ActualArg", "variantKey": "Expr", - "Expr": "0x55eadb492230-Expr" + "Expr": "0x55dbc10e4d50-Expr" }, { - "id": "0x55eadb492230-Expr", + "id": "0x55dbc10e4d50-Expr", "variantKey": "Designator", - "Designator": "0x55eadb48ec80-Designator" + "Designator": "0x55dbc10e17a0-Designator" }, { - "id": "0x55eadb48ec80-Designator", + "id": "0x55dbc10e17a0-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb48ec90-DataRef" + "DataRef": "0x55dbc10e17b0-DataRef" }, { - "id": "0x55eadb48ec90-DataRef", + "id": "0x55dbc10e17b0-DataRef", "variantKey": "Name", - "Name": "0x55eadb48ec90-Name" + "Name": "0x55dbc10e17b0-Name" }, { - "id": "0x55eadb48ec90-Name", + "id": "0x55dbc10e17b0-Name", "source": "i" }, { - "id": "0x55eadb494fa0-ExecutionPartConstruct", + "id": "0x55dbc10e7ac0-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x55eadb494fa0-ExecutableConstruct" + "ExecutableConstruct": "0x55dbc10e7ac0-ExecutableConstruct" }, { - "id": "0x55eadb494fa0-ExecutableConstruct", + "id": "0x55dbc10e7ac0-ExecutableConstruct", "variantKey": "Statement", - "Statement": "0x55eadb494fa0-Statement" + "Statement": "0x55dbc10e7ac0-Statement" }, { - "id": "0x55eadb494fa0-Statement", - "statement": "0x55eadb494fb0-ActionStmt", + "id": "0x55dbc10e7ac0-Statement", + "statement": "0x55dbc10e7ad0-ActionStmt", "source": "call init_array(32, 32, 32, 32, 32, a, b, c, d)" }, { - "id": "0x55eadb494fb0-ActionStmt", + "id": "0x55dbc10e7ad0-ActionStmt", "variantKey": "CallStmt", - "CallStmt": "0x55eadb494e60-CallStmt" + "CallStmt": "0x55dbc10e7980-CallStmt" }, { - "id": "0x55eadb494e60-CallStmt", - "call": "0x55eadb494e60-Call" + "id": "0x55dbc10e7980-CallStmt", + "call": "0x55dbc10e7980-Call" }, { - "id": "0x55eadb494e60-Call", - "ProcedureDesignator": "0x55eadb494e78-ProcedureDesignator", + "id": "0x55dbc10e7980-Call", + "ProcedureDesignator": "0x55dbc10e7998-ProcedureDesignator", "ActualArgSpec": [ - "0x55eadb494cf0-ActualArgSpec", - "0x55eadb494410-ActualArgSpec", - "0x55eadb494520-ActualArgSpec", - "0x55eadb494630-ActualArgSpec", - "0x55eadb494740-ActualArgSpec", - "0x55eadb494850-ActualArgSpec", - "0x55eadb494960-ActualArgSpec", - "0x55eadb494a70-ActualArgSpec", - "0x55eadb494be0-ActualArgSpec" + "0x55dbc10e7810-ActualArgSpec", + "0x55dbc10e6f30-ActualArgSpec", + "0x55dbc10e7040-ActualArgSpec", + "0x55dbc10e7150-ActualArgSpec", + "0x55dbc10e7260-ActualArgSpec", + "0x55dbc10e7370-ActualArgSpec", + "0x55dbc10e7480-ActualArgSpec", + "0x55dbc10e7590-ActualArgSpec", + "0x55dbc10e7700-ActualArgSpec" ] }, { - "id": "0x55eadb494e78-ProcedureDesignator", + "id": "0x55dbc10e7998-ProcedureDesignator", "variantKey": "Name", - "Name": "0x55eadb494e78-Name" + "Name": "0x55dbc10e7998-Name" }, { - "id": "0x55eadb494e78-Name", + "id": "0x55dbc10e7998-Name", "source": "init_array" }, { - "id": "0x55eadb494cf0-ActualArgSpec", - "ActualArg": "0x55eadb494cf0-ActualArg" + "id": "0x55dbc10e7810-ActualArgSpec", + "ActualArg": "0x55dbc10e7810-ActualArg" }, { - "id": "0x55eadb494cf0-ActualArg", + "id": "0x55dbc10e7810-ActualArg", "variantKey": "Expr", - "Expr": "0x55eadb4934c0-Expr" + "Expr": "0x55dbc10e5fe0-Expr" }, { - "id": "0x55eadb4934c0-Expr", + "id": "0x55dbc10e5fe0-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55eadb4934e0-LiteralConstant" + "LiteralConstant": "0x55dbc10e6000-LiteralConstant" }, { - "id": "0x55eadb4934e0-LiteralConstant", + "id": "0x55dbc10e6000-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55eadb4934e0-IntLiteralConstant" + "IntLiteralConstant": "0x55dbc10e6000-IntLiteralConstant" }, { - "id": "0x55eadb4934e0-IntLiteralConstant", + "id": "0x55dbc10e6000-IntLiteralConstant", "CharBlock": "32" }, { - "id": "0x55eadb494410-ActualArgSpec", - "ActualArg": "0x55eadb494410-ActualArg" + "id": "0x55dbc10e6f30-ActualArgSpec", + "ActualArg": "0x55dbc10e6f30-ActualArg" }, { - "id": "0x55eadb494410-ActualArg", + "id": "0x55dbc10e6f30-ActualArg", "variantKey": "Expr", - "Expr": "0x55eadb492e80-Expr" + "Expr": "0x55dbc10e59a0-Expr" }, { - "id": "0x55eadb492e80-Expr", + "id": "0x55dbc10e59a0-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55eadb492ea0-LiteralConstant" + "LiteralConstant": "0x55dbc10e59c0-LiteralConstant" }, { - "id": "0x55eadb492ea0-LiteralConstant", + "id": "0x55dbc10e59c0-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55eadb492ea0-IntLiteralConstant" + "IntLiteralConstant": "0x55dbc10e59c0-IntLiteralConstant" }, { - "id": "0x55eadb492ea0-IntLiteralConstant", + "id": "0x55dbc10e59c0-IntLiteralConstant", "CharBlock": "32" }, { - "id": "0x55eadb494520-ActualArgSpec", - "ActualArg": "0x55eadb494520-ActualArg" + "id": "0x55dbc10e7040-ActualArgSpec", + "ActualArg": "0x55dbc10e7040-ActualArg" }, { - "id": "0x55eadb494520-ActualArg", + "id": "0x55dbc10e7040-ActualArg", "variantKey": "Expr", - "Expr": "0x55eadb492900-Expr" + "Expr": "0x55dbc10e5420-Expr" }, { - "id": "0x55eadb492900-Expr", + "id": "0x55dbc10e5420-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55eadb492920-LiteralConstant" + "LiteralConstant": "0x55dbc10e5440-LiteralConstant" }, { - "id": "0x55eadb492920-LiteralConstant", + "id": "0x55dbc10e5440-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55eadb492920-IntLiteralConstant" + "IntLiteralConstant": "0x55dbc10e5440-IntLiteralConstant" }, { - "id": "0x55eadb492920-IntLiteralConstant", + "id": "0x55dbc10e5440-IntLiteralConstant", "CharBlock": "32" }, { - "id": "0x55eadb494630-ActualArgSpec", - "ActualArg": "0x55eadb494630-ActualArg" + "id": "0x55dbc10e7150-ActualArgSpec", + "ActualArg": "0x55dbc10e7150-ActualArg" }, { - "id": "0x55eadb494630-ActualArg", + "id": "0x55dbc10e7150-ActualArg", "variantKey": "Expr", - "Expr": "0x55eadb4927d0-Expr" + "Expr": "0x55dbc10e52f0-Expr" }, { - "id": "0x55eadb4927d0-Expr", + "id": "0x55dbc10e52f0-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55eadb4927f0-LiteralConstant" + "LiteralConstant": "0x55dbc10e5310-LiteralConstant" }, { - "id": "0x55eadb4927f0-LiteralConstant", + "id": "0x55dbc10e5310-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55eadb4927f0-IntLiteralConstant" + "IntLiteralConstant": "0x55dbc10e5310-IntLiteralConstant" }, { - "id": "0x55eadb4927f0-IntLiteralConstant", + "id": "0x55dbc10e5310-IntLiteralConstant", "CharBlock": "32" }, { - "id": "0x55eadb494740-ActualArgSpec", - "ActualArg": "0x55eadb494740-ActualArg" + "id": "0x55dbc10e7260-ActualArgSpec", + "ActualArg": "0x55dbc10e7260-ActualArg" }, { - "id": "0x55eadb494740-ActualArg", + "id": "0x55dbc10e7260-ActualArg", "variantKey": "Expr", - "Expr": "0x55eadb4926a0-Expr" + "Expr": "0x55dbc10e51c0-Expr" }, { - "id": "0x55eadb4926a0-Expr", + "id": "0x55dbc10e51c0-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55eadb4926c0-LiteralConstant" + "LiteralConstant": "0x55dbc10e51e0-LiteralConstant" }, { - "id": "0x55eadb4926c0-LiteralConstant", + "id": "0x55dbc10e51e0-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55eadb4926c0-IntLiteralConstant" + "IntLiteralConstant": "0x55dbc10e51e0-IntLiteralConstant" }, { - "id": "0x55eadb4926c0-IntLiteralConstant", + "id": "0x55dbc10e51e0-IntLiteralConstant", "CharBlock": "32" }, { - "id": "0x55eadb494850-ActualArgSpec", - "ActualArg": "0x55eadb494850-ActualArg" + "id": "0x55dbc10e7370-ActualArgSpec", + "ActualArg": "0x55dbc10e7370-ActualArg" }, { - "id": "0x55eadb494850-ActualArg", + "id": "0x55dbc10e7370-ActualArg", "variantKey": "Expr", - "Expr": "0x55eadb4925c0-Expr" + "Expr": "0x55dbc10e50e0-Expr" }, { - "id": "0x55eadb4925c0-Expr", + "id": "0x55dbc10e50e0-Expr", "variantKey": "Designator", - "Designator": "0x55eadb493a30-Designator" + "Designator": "0x55dbc10e6550-Designator" }, { - "id": "0x55eadb493a30-Designator", + "id": "0x55dbc10e6550-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb493a40-DataRef" + "DataRef": "0x55dbc10e6560-DataRef" }, { - "id": "0x55eadb493a40-DataRef", + "id": "0x55dbc10e6560-DataRef", "variantKey": "Name", - "Name": "0x55eadb493a40-Name" + "Name": "0x55dbc10e6560-Name" }, { - "id": "0x55eadb493a40-Name", + "id": "0x55dbc10e6560-Name", "source": "a" }, { - "id": "0x55eadb494960-ActualArgSpec", - "ActualArg": "0x55eadb494960-ActualArg" + "id": "0x55dbc10e7480-ActualArgSpec", + "ActualArg": "0x55dbc10e7480-ActualArg" }, { - "id": "0x55eadb494960-ActualArg", + "id": "0x55dbc10e7480-ActualArg", "variantKey": "Expr", - "Expr": "0x55eadb4924e0-Expr" + "Expr": "0x55dbc10e5000-Expr" }, { - "id": "0x55eadb4924e0-Expr", + "id": "0x55dbc10e5000-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4933f0-Designator" + "Designator": "0x55dbc10e5f10-Designator" }, { - "id": "0x55eadb4933f0-Designator", + "id": "0x55dbc10e5f10-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb493400-DataRef" + "DataRef": "0x55dbc10e5f20-DataRef" }, { - "id": "0x55eadb493400-DataRef", + "id": "0x55dbc10e5f20-DataRef", "variantKey": "Name", - "Name": "0x55eadb493400-Name" + "Name": "0x55dbc10e5f20-Name" }, { - "id": "0x55eadb493400-Name", + "id": "0x55dbc10e5f20-Name", "source": "b" }, { - "id": "0x55eadb494a70-ActualArgSpec", - "ActualArg": "0x55eadb494a70-ActualArg" + "id": "0x55dbc10e7590-ActualArgSpec", + "ActualArg": "0x55dbc10e7590-ActualArg" }, { - "id": "0x55eadb494a70-ActualArg", + "id": "0x55dbc10e7590-ActualArg", "variantKey": "Expr", - "Expr": "0x55eadb493b00-Expr" + "Expr": "0x55dbc10e6620-Expr" }, { - "id": "0x55eadb493b00-Expr", + "id": "0x55dbc10e6620-Expr", "variantKey": "Designator", - "Designator": "0x55eadb492db0-Designator" + "Designator": "0x55dbc10e58d0-Designator" }, { - "id": "0x55eadb492db0-Designator", + "id": "0x55dbc10e58d0-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb492dc0-DataRef" + "DataRef": "0x55dbc10e58e0-DataRef" }, { - "id": "0x55eadb492dc0-DataRef", + "id": "0x55dbc10e58e0-DataRef", "variantKey": "Name", - "Name": "0x55eadb492dc0-Name" + "Name": "0x55dbc10e58e0-Name" }, { - "id": "0x55eadb492dc0-Name", + "id": "0x55dbc10e58e0-Name", "source": "c" }, { - "id": "0x55eadb494be0-ActualArgSpec", - "ActualArg": "0x55eadb494be0-ActualArg" + "id": "0x55dbc10e7700-ActualArgSpec", + "ActualArg": "0x55dbc10e7700-ActualArg" }, { - "id": "0x55eadb494be0-ActualArg", + "id": "0x55dbc10e7700-ActualArg", "variantKey": "Expr", - "Expr": "0x55eadb494140-Expr" + "Expr": "0x55dbc10e6c60-Expr" }, { - "id": "0x55eadb494140-Expr", + "id": "0x55dbc10e6c60-Expr", "variantKey": "Designator", - "Designator": "0x55eadb494b70-Designator" + "Designator": "0x55dbc10e7690-Designator" }, { - "id": "0x55eadb494b70-Designator", + "id": "0x55dbc10e7690-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb494b80-DataRef" + "DataRef": "0x55dbc10e76a0-DataRef" }, { - "id": "0x55eadb494b80-DataRef", + "id": "0x55dbc10e76a0-DataRef", "variantKey": "Name", - "Name": "0x55eadb494b80-Name" + "Name": "0x55dbc10e76a0-Name" }, { - "id": "0x55eadb494b80-Name", + "id": "0x55dbc10e76a0-Name", "source": "d" }, { - "id": "0x55eadb493e60-ExecutionPartConstruct", + "id": "0x55dbc10e6980-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x55eadb493e60-ExecutableConstruct" + "ExecutableConstruct": "0x55dbc10e6980-ExecutableConstruct" }, { - "id": "0x55eadb493e60-ExecutableConstruct", + "id": "0x55dbc10e6980-ExecutableConstruct", "variantKey": "Statement", - "Statement": "0x55eadb493e60-Statement" + "Statement": "0x55dbc10e6980-Statement" }, { - "id": "0x55eadb493e60-Statement", - "statement": "0x55eadb493e70-ActionStmt", + "id": "0x55dbc10e6980-Statement", + "statement": "0x55dbc10e6990-ActionStmt", "source": "call polybench_timer_start()" }, { - "id": "0x55eadb493e70-ActionStmt", + "id": "0x55dbc10e6990-ActionStmt", "variantKey": "CallStmt", - "CallStmt": "0x55eadb494ff0-CallStmt" + "CallStmt": "0x55dbc10e7b10-CallStmt" }, { - "id": "0x55eadb494ff0-CallStmt", - "call": "0x55eadb494ff0-Call" + "id": "0x55dbc10e7b10-CallStmt", + "call": "0x55dbc10e7b10-Call" }, { - "id": "0x55eadb494ff0-Call", - "ProcedureDesignator": "0x55eadb495008-ProcedureDesignator" + "id": "0x55dbc10e7b10-Call", + "ProcedureDesignator": "0x55dbc10e7b28-ProcedureDesignator" }, { - "id": "0x55eadb495008-ProcedureDesignator", + "id": "0x55dbc10e7b28-ProcedureDesignator", "variantKey": "Name", - "Name": "0x55eadb495008-Name" + "Name": "0x55dbc10e7b28-Name" }, { - "id": "0x55eadb495008-Name", + "id": "0x55dbc10e7b28-Name", "source": "polybench_timer_start" }, { - "id": "0x55eadb4a8720-ExecutionPartConstruct", + "id": "0x55dbc10fa6f0-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x55eadb4a8720-ExecutableConstruct" + "ExecutableConstruct": "0x55dbc10fa6f0-ExecutableConstruct" }, { - "id": "0x55eadb4a8720-ExecutableConstruct", + "id": "0x55dbc10fa6f0-ExecutableConstruct", "variantKey": "Statement", - "Statement": "0x55eadb4a8720-Statement" + "Statement": "0x55dbc10fa6f0-Statement" }, { - "id": "0x55eadb4a8720-Statement", - "statement": "0x55eadb4a8730-ActionStmt", + "id": "0x55dbc10fa6f0-Statement", + "statement": "0x55dbc10fa700-ActionStmt", "source": "call kernel_3mm(32, 32, 32, 32, 32, e, a, b, f, c, d, g)" }, { - "id": "0x55eadb4a8730-ActionStmt", + "id": "0x55dbc10fa700-ActionStmt", "variantKey": "CallStmt", - "CallStmt": "0x55eadb4a85e0-CallStmt" + "CallStmt": "0x55dbc10fa5b0-CallStmt" }, { - "id": "0x55eadb4a85e0-CallStmt", - "call": "0x55eadb4a85e0-Call" + "id": "0x55dbc10fa5b0-CallStmt", + "call": "0x55dbc10fa5b0-Call" }, { - "id": "0x55eadb4a85e0-Call", - "ProcedureDesignator": "0x55eadb4a85f8-ProcedureDesignator", + "id": "0x55dbc10fa5b0-Call", + "ProcedureDesignator": "0x55dbc10fa5c8-ProcedureDesignator", "ActualArgSpec": [ - "0x55eadb4a8470-ActualArgSpec", - "0x55eadb4a77e0-ActualArgSpec", - "0x55eadb4a78f0-ActualArgSpec", - "0x55eadb4a7a00-ActualArgSpec", - "0x55eadb4a7b10-ActualArgSpec", - "0x55eadb4a7c20-ActualArgSpec", - "0x55eadb4a7d30-ActualArgSpec", - "0x55eadb4a7e40-ActualArgSpec", - "0x55eadb4a7f50-ActualArgSpec", - "0x55eadb4a8060-ActualArgSpec", - "0x55eadb4a8170-ActualArgSpec", - "0x55eadb4a8360-ActualArgSpec" + "0x55dbc10fa440-ActualArgSpec", + "0x55dbc10f97b0-ActualArgSpec", + "0x55dbc10f98c0-ActualArgSpec", + "0x55dbc10f99d0-ActualArgSpec", + "0x55dbc10f9ae0-ActualArgSpec", + "0x55dbc10f9bf0-ActualArgSpec", + "0x55dbc10f9d00-ActualArgSpec", + "0x55dbc10f9e10-ActualArgSpec", + "0x55dbc10f9f20-ActualArgSpec", + "0x55dbc10fa030-ActualArgSpec", + "0x55dbc10fa140-ActualArgSpec", + "0x55dbc10fa330-ActualArgSpec" ] }, { - "id": "0x55eadb4a85f8-ProcedureDesignator", + "id": "0x55dbc10fa5c8-ProcedureDesignator", "variantKey": "Name", - "Name": "0x55eadb4a85f8-Name" + "Name": "0x55dbc10fa5c8-Name" }, { - "id": "0x55eadb4a85f8-Name", + "id": "0x55dbc10fa5c8-Name", "source": "kernel_3mm" }, { - "id": "0x55eadb4a8470-ActualArgSpec", - "ActualArg": "0x55eadb4a8470-ActualArg" + "id": "0x55dbc10fa440-ActualArgSpec", + "ActualArg": "0x55dbc10fa440-ActualArg" }, { - "id": "0x55eadb4a8470-ActualArg", + "id": "0x55dbc10fa440-ActualArg", "variantKey": "Expr", - "Expr": "0x55eadb4955f0-Expr" + "Expr": "0x55dbc10e8110-Expr" }, { - "id": "0x55eadb4955f0-Expr", + "id": "0x55dbc10e8110-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55eadb495610-LiteralConstant" + "LiteralConstant": "0x55dbc10e8130-LiteralConstant" }, { - "id": "0x55eadb495610-LiteralConstant", + "id": "0x55dbc10e8130-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55eadb495610-IntLiteralConstant" + "IntLiteralConstant": "0x55dbc10e8130-IntLiteralConstant" }, { - "id": "0x55eadb495610-IntLiteralConstant", + "id": "0x55dbc10e8130-IntLiteralConstant", "CharBlock": "32" }, { - "id": "0x55eadb4a77e0-ActualArgSpec", - "ActualArg": "0x55eadb4a77e0-ActualArg" + "id": "0x55dbc10f97b0-ActualArgSpec", + "ActualArg": "0x55dbc10f97b0-ActualArg" }, { - "id": "0x55eadb4a77e0-ActualArg", + "id": "0x55dbc10f97b0-ActualArg", "variantKey": "Expr", - "Expr": "0x55eadb495510-Expr" + "Expr": "0x55dbc10e8030-Expr" }, { - "id": "0x55eadb495510-Expr", + "id": "0x55dbc10e8030-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55eadb495530-LiteralConstant" + "LiteralConstant": "0x55dbc10e8050-LiteralConstant" }, { - "id": "0x55eadb495530-LiteralConstant", + "id": "0x55dbc10e8050-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55eadb495530-IntLiteralConstant" + "IntLiteralConstant": "0x55dbc10e8050-IntLiteralConstant" }, { - "id": "0x55eadb495530-IntLiteralConstant", + "id": "0x55dbc10e8050-IntLiteralConstant", "CharBlock": "32" }, { - "id": "0x55eadb4a78f0-ActualArgSpec", - "ActualArg": "0x55eadb4a78f0-ActualArg" + "id": "0x55dbc10f98c0-ActualArgSpec", + "ActualArg": "0x55dbc10f98c0-ActualArg" }, { - "id": "0x55eadb4a78f0-ActualArg", + "id": "0x55dbc10f98c0-ActualArg", "variantKey": "Expr", - "Expr": "0x55eadb495430-Expr" + "Expr": "0x55dbc10e7f50-Expr" }, { - "id": "0x55eadb495430-Expr", + "id": "0x55dbc10e7f50-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55eadb495450-LiteralConstant" + "LiteralConstant": "0x55dbc10e7f70-LiteralConstant" }, { - "id": "0x55eadb495450-LiteralConstant", + "id": "0x55dbc10e7f70-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55eadb495450-IntLiteralConstant" + "IntLiteralConstant": "0x55dbc10e7f70-IntLiteralConstant" }, { - "id": "0x55eadb495450-IntLiteralConstant", + "id": "0x55dbc10e7f70-IntLiteralConstant", "CharBlock": "32" }, { - "id": "0x55eadb4a7a00-ActualArgSpec", - "ActualArg": "0x55eadb4a7a00-ActualArg" + "id": "0x55dbc10f99d0-ActualArgSpec", + "ActualArg": "0x55dbc10f99d0-ActualArg" }, { - "id": "0x55eadb4a7a00-ActualArg", + "id": "0x55dbc10f99d0-ActualArg", "variantKey": "Expr", - "Expr": "0x55eadb495350-Expr" + "Expr": "0x55dbc10e7e70-Expr" }, { - "id": "0x55eadb495350-Expr", + "id": "0x55dbc10e7e70-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55eadb495370-LiteralConstant" + "LiteralConstant": "0x55dbc10e7e90-LiteralConstant" }, { - "id": "0x55eadb495370-LiteralConstant", + "id": "0x55dbc10e7e90-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55eadb495370-IntLiteralConstant" + "IntLiteralConstant": "0x55dbc10e7e90-IntLiteralConstant" }, { - "id": "0x55eadb495370-IntLiteralConstant", + "id": "0x55dbc10e7e90-IntLiteralConstant", "CharBlock": "32" }, { - "id": "0x55eadb4a7b10-ActualArgSpec", - "ActualArg": "0x55eadb4a7b10-ActualArg" + "id": "0x55dbc10f9ae0-ActualArgSpec", + "ActualArg": "0x55dbc10f9ae0-ActualArg" }, { - "id": "0x55eadb4a7b10-ActualArg", + "id": "0x55dbc10f9ae0-ActualArg", "variantKey": "Expr", - "Expr": "0x55eadb495270-Expr" + "Expr": "0x55dbc10e7d90-Expr" }, { - "id": "0x55eadb495270-Expr", + "id": "0x55dbc10e7d90-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55eadb495290-LiteralConstant" + "LiteralConstant": "0x55dbc10e7db0-LiteralConstant" }, { - "id": "0x55eadb495290-LiteralConstant", + "id": "0x55dbc10e7db0-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55eadb495290-IntLiteralConstant" + "IntLiteralConstant": "0x55dbc10e7db0-IntLiteralConstant" }, { - "id": "0x55eadb495290-IntLiteralConstant", + "id": "0x55dbc10e7db0-IntLiteralConstant", "CharBlock": "32" }, { - "id": "0x55eadb4a7c20-ActualArgSpec", - "ActualArg": "0x55eadb4a7c20-ActualArg" + "id": "0x55dbc10f9bf0-ActualArgSpec", + "ActualArg": "0x55dbc10f9bf0-ActualArg" }, { - "id": "0x55eadb4a7c20-ActualArg", + "id": "0x55dbc10f9bf0-ActualArg", "variantKey": "Expr", - "Expr": "0x55eadb495190-Expr" + "Expr": "0x55dbc10e7cb0-Expr" }, { - "id": "0x55eadb495190-Expr", + "id": "0x55dbc10e7cb0-Expr", "variantKey": "Designator", - "Designator": "0x55eadb496220-Designator" + "Designator": "0x55dbc10df6e0-Designator" }, { - "id": "0x55eadb496220-Designator", + "id": "0x55dbc10df6e0-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb496230-DataRef" + "DataRef": "0x55dbc10df6f0-DataRef" }, { - "id": "0x55eadb496230-DataRef", + "id": "0x55dbc10df6f0-DataRef", "variantKey": "Name", - "Name": "0x55eadb496230-Name" + "Name": "0x55dbc10df6f0-Name" }, { - "id": "0x55eadb496230-Name", + "id": "0x55dbc10df6f0-Name", "source": "e" }, { - "id": "0x55eadb4a7d30-ActualArgSpec", - "ActualArg": "0x55eadb4a7d30-ActualArg" + "id": "0x55dbc10f9d00-ActualArgSpec", + "ActualArg": "0x55dbc10f9d00-ActualArg" }, { - "id": "0x55eadb4a7d30-ActualArg", + "id": "0x55dbc10f9d00-ActualArg", "variantKey": "Expr", - "Expr": "0x55eadb4950b0-Expr" + "Expr": "0x55dbc10e7bd0-Expr" }, { - "id": "0x55eadb4950b0-Expr", + "id": "0x55dbc10e7bd0-Expr", "variantKey": "Designator", - "Designator": "0x55eadb495c30-Designator" + "Designator": "0x55dbc10dfbd0-Designator" }, { - "id": "0x55eadb495c30-Designator", + "id": "0x55dbc10dfbd0-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb495c40-DataRef" + "DataRef": "0x55dbc10dfbe0-DataRef" }, { - "id": "0x55eadb495c40-DataRef", + "id": "0x55dbc10dfbe0-DataRef", "variantKey": "Name", - "Name": "0x55eadb495c40-Name" + "Name": "0x55dbc10dfbe0-Name" }, { - "id": "0x55eadb495c40-Name", + "id": "0x55dbc10dfbe0-Name", "source": "a" }, { - "id": "0x55eadb4a7e40-ActualArgSpec", - "ActualArg": "0x55eadb4a7e40-ActualArg" + "id": "0x55dbc10f9e10-ActualArgSpec", + "ActualArg": "0x55dbc10f9e10-ActualArg" }, { - "id": "0x55eadb4a7e40-ActualArg", + "id": "0x55dbc10f9e10-ActualArg", "variantKey": "Expr", - "Expr": "0x55eadb4958d0-Expr" + "Expr": "0x55dbc10f5c10-Expr" }, { - "id": "0x55eadb4958d0-Expr", + "id": "0x55dbc10f5c10-Expr", "variantKey": "Designator", - "Designator": "0x55eadb495870-Designator" + "Designator": "0x55dbc10f1ad0-Designator" }, { - "id": "0x55eadb495870-Designator", + "id": "0x55dbc10f1ad0-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb495880-DataRef" + "DataRef": "0x55dbc10f1ae0-DataRef" }, { - "id": "0x55eadb495880-DataRef", + "id": "0x55dbc10f1ae0-DataRef", "variantKey": "Name", - "Name": "0x55eadb495880-Name" + "Name": "0x55dbc10f1ae0-Name" }, { - "id": "0x55eadb495880-Name", + "id": "0x55dbc10f1ae0-Name", "source": "b" }, { - "id": "0x55eadb4a7f50-ActualArgSpec", - "ActualArg": "0x55eadb4a7f50-ActualArg" + "id": "0x55dbc10f9f20-ActualArgSpec", + "ActualArg": "0x55dbc10f9f20-ActualArg" }, { - "id": "0x55eadb4a7f50-ActualArg", + "id": "0x55dbc10f9f20-ActualArg", "variantKey": "Expr", - "Expr": "0x55eadb4a7580-Expr" + "Expr": "0x55dbc10f95a0-Expr" }, { - "id": "0x55eadb4a7580-Expr", + "id": "0x55dbc10f95a0-Expr", "variantKey": "Designator", - "Designator": "0x55eadb48f6f0-Designator" + "Designator": "0x55dbc10e2210-Designator" }, { - "id": "0x55eadb48f6f0-Designator", + "id": "0x55dbc10e2210-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb48f700-DataRef" + "DataRef": "0x55dbc10e2220-DataRef" }, { - "id": "0x55eadb48f700-DataRef", + "id": "0x55dbc10e2220-DataRef", "variantKey": "Name", - "Name": "0x55eadb48f700-Name" + "Name": "0x55dbc10e2220-Name" }, { - "id": "0x55eadb48f700-Name", + "id": "0x55dbc10e2220-Name", "source": "f" }, { - "id": "0x55eadb4a8060-ActualArgSpec", - "ActualArg": "0x55eadb4a8060-ActualArg" + "id": "0x55dbc10fa030-ActualArgSpec", + "ActualArg": "0x55dbc10fa030-ActualArg" }, { - "id": "0x55eadb4a8060-ActualArg", + "id": "0x55dbc10fa030-ActualArg", "variantKey": "Expr", - "Expr": "0x55eadb4962f0-Expr" + "Expr": "0x55dbc10df7b0-Expr" }, { - "id": "0x55eadb4962f0-Expr", + "id": "0x55dbc10df7b0-Expr", "variantKey": "Designator", - "Designator": "0x55eadb494070-Designator" + "Designator": "0x55dbc10e6b90-Designator" }, { - "id": "0x55eadb494070-Designator", + "id": "0x55dbc10e6b90-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb494080-DataRef" + "DataRef": "0x55dbc10e6ba0-DataRef" }, { - "id": "0x55eadb494080-DataRef", + "id": "0x55dbc10e6ba0-DataRef", "variantKey": "Name", - "Name": "0x55eadb494080-Name" + "Name": "0x55dbc10e6ba0-Name" }, { - "id": "0x55eadb494080-Name", + "id": "0x55dbc10e6ba0-Name", "source": "c" }, { - "id": "0x55eadb4a8170-ActualArgSpec", - "ActualArg": "0x55eadb4a8170-ActualArg" + "id": "0x55dbc10fa140-ActualArgSpec", + "ActualArg": "0x55dbc10fa140-ActualArg" }, { - "id": "0x55eadb4a8170-ActualArg", + "id": "0x55dbc10fa140-ActualArg", "variantKey": "Expr", - "Expr": "0x55eadb495d00-Expr" + "Expr": "0x55dbc10df190-Expr" }, { - "id": "0x55eadb495d00-Expr", + "id": "0x55dbc10df190-Expr", "variantKey": "Designator", - "Designator": "0x55eadb490160-Designator" + "Designator": "0x55dbc10e2c80-Designator" }, { - "id": "0x55eadb490160-Designator", + "id": "0x55dbc10e2c80-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb490170-DataRef" + "DataRef": "0x55dbc10e2c90-DataRef" }, { - "id": "0x55eadb490170-DataRef", + "id": "0x55dbc10e2c90-DataRef", "variantKey": "Name", - "Name": "0x55eadb490170-Name" + "Name": "0x55dbc10e2c90-Name" }, { - "id": "0x55eadb490170-Name", + "id": "0x55dbc10e2c90-Name", "source": "d" }, { - "id": "0x55eadb4a8360-ActualArgSpec", - "ActualArg": "0x55eadb4a8360-ActualArg" + "id": "0x55dbc10fa330-ActualArgSpec", + "ActualArg": "0x55dbc10fa330-ActualArg" }, { - "id": "0x55eadb4a8360-ActualArg", + "id": "0x55dbc10fa330-ActualArg", "variantKey": "Expr", - "Expr": "0x55eadb4a8270-Expr" + "Expr": "0x55dbc10fa240-Expr" }, { - "id": "0x55eadb4a8270-Expr", + "id": "0x55dbc10fa240-Expr", "variantKey": "Designator", - "Designator": "0x55eadb495740-Designator" + "Designator": "0x55dbc10e8260-Designator" }, { - "id": "0x55eadb495740-Designator", + "id": "0x55dbc10e8260-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb495750-DataRef" + "DataRef": "0x55dbc10e8270-DataRef" }, { - "id": "0x55eadb495750-DataRef", + "id": "0x55dbc10e8270-DataRef", "variantKey": "Name", - "Name": "0x55eadb495750-Name" + "Name": "0x55dbc10e8270-Name" }, { - "id": "0x55eadb495750-Name", + "id": "0x55dbc10e8270-Name", "source": "g" }, { - "id": "0x55eadb4a72a0-ExecutionPartConstruct", + "id": "0x55dbc10f92c0-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x55eadb4a72a0-ExecutableConstruct" + "ExecutableConstruct": "0x55dbc10f92c0-ExecutableConstruct" }, { - "id": "0x55eadb4a72a0-ExecutableConstruct", + "id": "0x55dbc10f92c0-ExecutableConstruct", "variantKey": "Statement", - "Statement": "0x55eadb4a72a0-Statement" + "Statement": "0x55dbc10f92c0-Statement" }, { - "id": "0x55eadb4a72a0-Statement", - "statement": "0x55eadb4a72b0-ActionStmt", + "id": "0x55dbc10f92c0-Statement", + "statement": "0x55dbc10f92d0-ActionStmt", "source": "call polybench_timer_stop()" }, { - "id": "0x55eadb4a72b0-ActionStmt", + "id": "0x55dbc10f92d0-ActionStmt", "variantKey": "CallStmt", - "CallStmt": "0x55eadb4a8770-CallStmt" + "CallStmt": "0x55dbc10fa740-CallStmt" }, { - "id": "0x55eadb4a8770-CallStmt", - "call": "0x55eadb4a8770-Call" + "id": "0x55dbc10fa740-CallStmt", + "call": "0x55dbc10fa740-Call" }, { - "id": "0x55eadb4a8770-Call", - "ProcedureDesignator": "0x55eadb4a8788-ProcedureDesignator" + "id": "0x55dbc10fa740-Call", + "ProcedureDesignator": "0x55dbc10fa758-ProcedureDesignator" }, { - "id": "0x55eadb4a8788-ProcedureDesignator", + "id": "0x55dbc10fa758-ProcedureDesignator", "variantKey": "Name", - "Name": "0x55eadb4a8788-Name" + "Name": "0x55dbc10fa758-Name" }, { - "id": "0x55eadb4a8788-Name", + "id": "0x55dbc10fa758-Name", "source": "polybench_timer_stop" }, { - "id": "0x55eadb4a7710-ExecutionPartConstruct", + "id": "0x55dbc10f96e0-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x55eadb4a7710-ExecutableConstruct" + "ExecutableConstruct": "0x55dbc10f96e0-ExecutableConstruct" }, { - "id": "0x55eadb4a7710-ExecutableConstruct", + "id": "0x55dbc10f96e0-ExecutableConstruct", "variantKey": "Statement", - "Statement": "0x55eadb4a7710-Statement" + "Statement": "0x55dbc10f96e0-Statement" }, { - "id": "0x55eadb4a7710-Statement", - "statement": "0x55eadb4a7720-ActionStmt", + "id": "0x55dbc10f96e0-Statement", + "statement": "0x55dbc10f96f0-ActionStmt", "source": "call polybench_timer_print()" }, { - "id": "0x55eadb4a7720-ActionStmt", + "id": "0x55dbc10f96f0-ActionStmt", "variantKey": "CallStmt", - "CallStmt": "0x55eadb4a8830-CallStmt" + "CallStmt": "0x55dbc10fa800-CallStmt" }, { - "id": "0x55eadb4a8830-CallStmt", - "call": "0x55eadb4a8830-Call" + "id": "0x55dbc10fa800-CallStmt", + "call": "0x55dbc10fa800-Call" }, { - "id": "0x55eadb4a8830-Call", - "ProcedureDesignator": "0x55eadb4a8848-ProcedureDesignator" + "id": "0x55dbc10fa800-Call", + "ProcedureDesignator": "0x55dbc10fa818-ProcedureDesignator" }, { - "id": "0x55eadb4a8848-ProcedureDesignator", + "id": "0x55dbc10fa818-ProcedureDesignator", "variantKey": "Name", - "Name": "0x55eadb4a8848-Name" + "Name": "0x55dbc10fa818-Name" }, { - "id": "0x55eadb4a8848-Name", + "id": "0x55dbc10fa818-Name", "source": "polybench_timer_print" }, { - "id": "0x55eadb493820-ExecutionPartConstruct", + "id": "0x55dbc10e6340-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x55eadb493820-ExecutableConstruct" + "ExecutableConstruct": "0x55dbc10e6340-ExecutableConstruct" }, { - "id": "0x55eadb493820-ExecutableConstruct", + "id": "0x55dbc10e6340-ExecutableConstruct", "variantKey": "Statement", - "Statement": "0x55eadb493820-Statement" + "Statement": "0x55dbc10e6340-Statement" }, { - "id": "0x55eadb493820-Statement", - "statement": "0x55eadb493830-ActionStmt", + "id": "0x55dbc10e6340-Statement", + "statement": "0x55dbc10e6350-ActionStmt", "source": "call print_array(32, 32, g)" }, { - "id": "0x55eadb493830-ActionStmt", + "id": "0x55dbc10e6350-ActionStmt", "variantKey": "CallStmt", - "CallStmt": "0x55eadb4a8ec0-CallStmt" + "CallStmt": "0x55dbc10fae90-CallStmt" }, { - "id": "0x55eadb4a8ec0-CallStmt", - "call": "0x55eadb4a8ec0-Call" + "id": "0x55dbc10fae90-CallStmt", + "call": "0x55dbc10fae90-Call" }, { - "id": "0x55eadb4a8ec0-Call", - "ProcedureDesignator": "0x55eadb4a8ed8-ProcedureDesignator", + "id": "0x55dbc10fae90-Call", + "ProcedureDesignator": "0x55dbc10faea8-ProcedureDesignator", "ActualArgSpec": [ - "0x55eadb4a8dc0-ActualArgSpec", - "0x55eadb4a8ba0-ActualArgSpec", - "0x55eadb4a8cb0-ActualArgSpec" + "0x55dbc10fad90-ActualArgSpec", + "0x55dbc10fab70-ActualArgSpec", + "0x55dbc10fac80-ActualArgSpec" ] }, { - "id": "0x55eadb4a8ed8-ProcedureDesignator", + "id": "0x55dbc10faea8-ProcedureDesignator", "variantKey": "Name", - "Name": "0x55eadb4a8ed8-Name" + "Name": "0x55dbc10faea8-Name" }, { - "id": "0x55eadb4a8ed8-Name", + "id": "0x55dbc10faea8-Name", "source": "print_array" }, { - "id": "0x55eadb4a8dc0-ActualArgSpec", - "ActualArg": "0x55eadb4a8dc0-ActualArg" + "id": "0x55dbc10fad90-ActualArgSpec", + "ActualArg": "0x55dbc10fad90-ActualArg" }, { - "id": "0x55eadb4a8dc0-ActualArg", + "id": "0x55dbc10fad90-ActualArg", "variantKey": "Expr", - "Expr": "0x55eadb4a8ab0-Expr" + "Expr": "0x55dbc10faa80-Expr" }, { - "id": "0x55eadb4a8ab0-Expr", + "id": "0x55dbc10faa80-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55eadb4a8ad0-LiteralConstant" + "LiteralConstant": "0x55dbc10faaa0-LiteralConstant" }, { - "id": "0x55eadb4a8ad0-LiteralConstant", + "id": "0x55dbc10faaa0-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55eadb4a8ad0-IntLiteralConstant" + "IntLiteralConstant": "0x55dbc10faaa0-IntLiteralConstant" }, { - "id": "0x55eadb4a8ad0-IntLiteralConstant", + "id": "0x55dbc10faaa0-IntLiteralConstant", "CharBlock": "32" }, { - "id": "0x55eadb4a8ba0-ActualArgSpec", - "ActualArg": "0x55eadb4a8ba0-ActualArg" + "id": "0x55dbc10fab70-ActualArgSpec", + "ActualArg": "0x55dbc10fab70-ActualArg" }, { - "id": "0x55eadb4a8ba0-ActualArg", + "id": "0x55dbc10fab70-ActualArg", "variantKey": "Expr", - "Expr": "0x55eadb4a89d0-Expr" + "Expr": "0x55dbc10fa9a0-Expr" }, { - "id": "0x55eadb4a89d0-Expr", + "id": "0x55dbc10fa9a0-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55eadb4a89f0-LiteralConstant" + "LiteralConstant": "0x55dbc10fa9c0-LiteralConstant" }, { - "id": "0x55eadb4a89f0-LiteralConstant", + "id": "0x55dbc10fa9c0-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55eadb4a89f0-IntLiteralConstant" + "IntLiteralConstant": "0x55dbc10fa9c0-IntLiteralConstant" }, { - "id": "0x55eadb4a89f0-IntLiteralConstant", + "id": "0x55dbc10fa9c0-IntLiteralConstant", "CharBlock": "32" }, { - "id": "0x55eadb4a8cb0-ActualArgSpec", - "ActualArg": "0x55eadb4a8cb0-ActualArg" + "id": "0x55dbc10fac80-ActualArgSpec", + "ActualArg": "0x55dbc10fac80-ActualArg" }, { - "id": "0x55eadb4a8cb0-ActualArg", + "id": "0x55dbc10fac80-ActualArg", "variantKey": "Expr", - "Expr": "0x55eadb4a88f0-Expr" + "Expr": "0x55dbc10fa8c0-Expr" }, { - "id": "0x55eadb4a88f0-Expr", + "id": "0x55dbc10fa8c0-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4935f0-Designator" + "Designator": "0x55dbc10e6110-Designator" }, { - "id": "0x55eadb4935f0-Designator", + "id": "0x55dbc10e6110-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb493600-DataRef" + "DataRef": "0x55dbc10e6120-DataRef" }, { - "id": "0x55eadb493600-DataRef", + "id": "0x55dbc10e6120-DataRef", "variantKey": "Name", - "Name": "0x55eadb493600-Name" + "Name": "0x55dbc10e6120-Name" }, { - "id": "0x55eadb493600-Name", + "id": "0x55dbc10e6120-Name", "source": "g" }, { - "id": "0x55eadb4a74c0-ExecutionPartConstruct", + "id": "0x55dbc10f94e0-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x55eadb4a74c0-ExecutableConstruct" + "ExecutableConstruct": "0x55dbc10f94e0-ExecutableConstruct" }, { - "id": "0x55eadb4a74c0-ExecutableConstruct", + "id": "0x55dbc10f94e0-ExecutableConstruct", "variantKey": "Statement", - "Statement": "0x55eadb4a74c0-Statement" + "Statement": "0x55dbc10f94e0-Statement" }, { - "id": "0x55eadb4a74c0-Statement", - "statement": "0x55eadb4a74d0-ActionStmt", + "id": "0x55dbc10f94e0-Statement", + "statement": "0x55dbc10f94f0-ActionStmt", "source": "deallocate(a)" }, { - "id": "0x55eadb4a74d0-ActionStmt", + "id": "0x55dbc10f94f0-ActionStmt", "variantKey": "DeallocateStmt", - "DeallocateStmt": "0x55eadb496d90-DeallocateStmt" + "DeallocateStmt": "0x55dbc10e8ce0-DeallocateStmt" }, { - "id": "0x55eadb496d90-DeallocateStmt", + "id": "0x55dbc10e8ce0-DeallocateStmt", "AllocateObject": [ - "0x55eadb494e00-AllocateObject" + "0x55dbc10e7920-AllocateObject" ] }, { - "id": "0x55eadb494e00-AllocateObject", + "id": "0x55dbc10e7920-AllocateObject", "variantKey": "Name", - "Name": "0x55eadb494e10-Name" + "Name": "0x55dbc10e7930-Name" }, { - "id": "0x55eadb494e10-Name", + "id": "0x55dbc10e7930-Name", "source": "a" }, { - "id": "0x55eadb492fc0-ExecutionPartConstruct", + "id": "0x55dbc10e5ae0-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x55eadb492fc0-ExecutableConstruct" + "ExecutableConstruct": "0x55dbc10e5ae0-ExecutableConstruct" }, { - "id": "0x55eadb492fc0-ExecutableConstruct", + "id": "0x55dbc10e5ae0-ExecutableConstruct", "variantKey": "Statement", - "Statement": "0x55eadb492fc0-Statement" + "Statement": "0x55dbc10e5ae0-Statement" }, { - "id": "0x55eadb492fc0-Statement", - "statement": "0x55eadb492fd0-ActionStmt", + "id": "0x55dbc10e5ae0-Statement", + "statement": "0x55dbc10e5af0-ActionStmt", "source": "deallocate(b)" }, { - "id": "0x55eadb492fd0-ActionStmt", + "id": "0x55dbc10e5af0-ActionStmt", "variantKey": "DeallocateStmt", - "DeallocateStmt": "0x55eadb497470-DeallocateStmt" + "DeallocateStmt": "0x55dbc10e93c0-DeallocateStmt" }, { - "id": "0x55eadb497470-DeallocateStmt", + "id": "0x55dbc10e93c0-DeallocateStmt", "AllocateObject": [ - "0x55eadb48d270-AllocateObject" + "0x55dbc10e0430-AllocateObject" ] }, { - "id": "0x55eadb48d270-AllocateObject", + "id": "0x55dbc10e0430-AllocateObject", "variantKey": "Name", - "Name": "0x55eadb48d280-Name" + "Name": "0x55dbc10e0440-Name" }, { - "id": "0x55eadb48d280-Name", + "id": "0x55dbc10e0440-Name", "source": "b" }, { - "id": "0x55eadb493c40-ExecutionPartConstruct", + "id": "0x55dbc10e6760-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x55eadb493c40-ExecutableConstruct" + "ExecutableConstruct": "0x55dbc10e6760-ExecutableConstruct" }, { - "id": "0x55eadb493c40-ExecutableConstruct", + "id": "0x55dbc10e6760-ExecutableConstruct", "variantKey": "Statement", - "Statement": "0x55eadb493c40-Statement" + "Statement": "0x55dbc10e6760-Statement" }, { - "id": "0x55eadb493c40-Statement", - "statement": "0x55eadb493c50-ActionStmt", + "id": "0x55dbc10e6760-Statement", + "statement": "0x55dbc10e6770-ActionStmt", "source": "deallocate(c)" }, { - "id": "0x55eadb493c50-ActionStmt", + "id": "0x55dbc10e6770-ActionStmt", "variantKey": "DeallocateStmt", - "DeallocateStmt": "0x55eadb497530-DeallocateStmt" + "DeallocateStmt": "0x55dbc10e9480-DeallocateStmt" }, { - "id": "0x55eadb497530-DeallocateStmt", + "id": "0x55dbc10e9480-DeallocateStmt", "AllocateObject": [ - "0x55eadb494f30-AllocateObject" + "0x55dbc10e7a50-AllocateObject" ] }, { - "id": "0x55eadb494f30-AllocateObject", + "id": "0x55dbc10e7a50-AllocateObject", "variantKey": "Name", - "Name": "0x55eadb494f40-Name" + "Name": "0x55dbc10e7a60-Name" }, { - "id": "0x55eadb494f40-Name", + "id": "0x55dbc10e7a60-Name", "source": "c" }, { - "id": "0x55eadb490be0-ExecutionPartConstruct", + "id": "0x55dbc10e3700-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x55eadb490be0-ExecutableConstruct" + "ExecutableConstruct": "0x55dbc10e3700-ExecutableConstruct" }, { - "id": "0x55eadb490be0-ExecutableConstruct", + "id": "0x55dbc10e3700-ExecutableConstruct", "variantKey": "Statement", - "Statement": "0x55eadb490be0-Statement" + "Statement": "0x55dbc10e3700-Statement" }, { - "id": "0x55eadb490be0-Statement", - "statement": "0x55eadb490bf0-ActionStmt", + "id": "0x55dbc10e3700-Statement", + "statement": "0x55dbc10e3710-ActionStmt", "source": "deallocate(d)" }, { - "id": "0x55eadb490bf0-ActionStmt", + "id": "0x55dbc10e3710-ActionStmt", "variantKey": "DeallocateStmt", - "DeallocateStmt": "0x55eadb497930-DeallocateStmt" + "DeallocateStmt": "0x55dbc10e9880-DeallocateStmt" }, { - "id": "0x55eadb497930-DeallocateStmt", + "id": "0x55dbc10e9880-DeallocateStmt", "AllocateObject": [ - "0x55eadb4a3ef0-AllocateObject" + "0x55dbc10f5e40-AllocateObject" ] }, { - "id": "0x55eadb4a3ef0-AllocateObject", + "id": "0x55dbc10f5e40-AllocateObject", "variantKey": "Name", - "Name": "0x55eadb4a3f00-Name" + "Name": "0x55dbc10f5e50-Name" }, { - "id": "0x55eadb4a3f00-Name", + "id": "0x55dbc10f5e50-Name", "source": "d" }, { - "id": "0x55eadb48d9e0-ExecutionPartConstruct", + "id": "0x55dbc10e0290-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x55eadb48d9e0-ExecutableConstruct" + "ExecutableConstruct": "0x55dbc10e0290-ExecutableConstruct" }, { - "id": "0x55eadb48d9e0-ExecutableConstruct", + "id": "0x55dbc10e0290-ExecutableConstruct", "variantKey": "Statement", - "Statement": "0x55eadb48d9e0-Statement" + "Statement": "0x55dbc10e0290-Statement" }, { - "id": "0x55eadb48d9e0-Statement", - "statement": "0x55eadb48d9f0-ActionStmt", + "id": "0x55dbc10e0290-Statement", + "statement": "0x55dbc10e02a0-ActionStmt", "source": "deallocate(e)" }, { - "id": "0x55eadb48d9f0-ActionStmt", + "id": "0x55dbc10e02a0-ActionStmt", "variantKey": "DeallocateStmt", - "DeallocateStmt": "0x55eadb498160-DeallocateStmt" + "DeallocateStmt": "0x55dbc10ea0b0-DeallocateStmt" }, { - "id": "0x55eadb498160-DeallocateStmt", + "id": "0x55dbc10ea0b0-DeallocateStmt", "AllocateObject": [ - "0x55eadb493df0-AllocateObject" + "0x55dbc10e6910-AllocateObject" ] }, { - "id": "0x55eadb493df0-AllocateObject", + "id": "0x55dbc10e6910-AllocateObject", "variantKey": "Name", - "Name": "0x55eadb493e00-Name" + "Name": "0x55dbc10e6920-Name" }, { - "id": "0x55eadb493e00-Name", + "id": "0x55dbc10e6920-Name", "source": "e" }, { - "id": "0x55eadb495df0-ExecutionPartConstruct", + "id": "0x55dbc10df280-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x55eadb495df0-ExecutableConstruct" + "ExecutableConstruct": "0x55dbc10df280-ExecutableConstruct" }, { - "id": "0x55eadb495df0-ExecutableConstruct", + "id": "0x55dbc10df280-ExecutableConstruct", "variantKey": "Statement", - "Statement": "0x55eadb495df0-Statement" + "Statement": "0x55dbc10df280-Statement" }, { - "id": "0x55eadb495df0-Statement", - "statement": "0x55eadb495e00-ActionStmt", + "id": "0x55dbc10df280-Statement", + "statement": "0x55dbc10df290-ActionStmt", "source": "deallocate(f)" }, { - "id": "0x55eadb495e00-ActionStmt", + "id": "0x55dbc10df290-ActionStmt", "variantKey": "DeallocateStmt", - "DeallocateStmt": "0x55eadb4981c0-DeallocateStmt" + "DeallocateStmt": "0x55dbc10ea110-DeallocateStmt" }, { - "id": "0x55eadb4981c0-DeallocateStmt", + "id": "0x55dbc10ea110-DeallocateStmt", "AllocateObject": [ - "0x55eadb493ec0-AllocateObject" + "0x55dbc10e69e0-AllocateObject" ] }, { - "id": "0x55eadb493ec0-AllocateObject", + "id": "0x55dbc10e69e0-AllocateObject", "variantKey": "Name", - "Name": "0x55eadb493ed0-Name" + "Name": "0x55dbc10e69f0-Name" }, { - "id": "0x55eadb493ed0-Name", + "id": "0x55dbc10e69f0-Name", "source": "f" }, { - "id": "0x55eadb48e080-ExecutionPartConstruct", + "id": "0x55dbc10e0ba0-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x55eadb48e080-ExecutableConstruct" + "ExecutableConstruct": "0x55dbc10e0ba0-ExecutableConstruct" }, { - "id": "0x55eadb48e080-ExecutableConstruct", + "id": "0x55dbc10e0ba0-ExecutableConstruct", "variantKey": "Statement", - "Statement": "0x55eadb48e080-Statement" + "Statement": "0x55dbc10e0ba0-Statement" }, { - "id": "0x55eadb48e080-Statement", - "statement": "0x55eadb48e090-ActionStmt", + "id": "0x55dbc10e0ba0-Statement", + "statement": "0x55dbc10e0bb0-ActionStmt", "source": "deallocate(g)" }, { - "id": "0x55eadb48e090-ActionStmt", + "id": "0x55dbc10e0bb0-ActionStmt", "variantKey": "DeallocateStmt", - "DeallocateStmt": "0x55eadb49c3c0-DeallocateStmt" + "DeallocateStmt": "0x55dbc10ea150-DeallocateStmt" }, { - "id": "0x55eadb49c3c0-DeallocateStmt", + "id": "0x55dbc10ea150-DeallocateStmt", "AllocateObject": [ - "0x55eadb4a7230-AllocateObject" + "0x55dbc10f9250-AllocateObject" ] }, { - "id": "0x55eadb4a7230-AllocateObject", + "id": "0x55dbc10f9250-AllocateObject", "variantKey": "Name", - "Name": "0x55eadb4a7240-Name" + "Name": "0x55dbc10f9260-Name" }, { - "id": "0x55eadb4a7240-Name", + "id": "0x55dbc10f9260-Name", "source": "g" }, { - "id": "0x55eadb4a00e0-InternalSubprogramPart", - "Statement": "0x55eadb4a00f8-Statement", + "id": "0x55dbc10f2070-InternalSubprogramPart", + "Statement": "0x55dbc10f2088-Statement", "InternalSubprogram": [ - "0x55eadb4a6200-InternalSubprogram", - "0x55eadb49a300-InternalSubprogram", - "0x55eadb4af2b0-InternalSubprogram" + "0x55dbc10f7de0-InternalSubprogram", + "0x55dbc10f8120-InternalSubprogram", + "0x55dbc1107240-InternalSubprogram" ] }, { - "id": "0x55eadb4a00f8-Statement", - "statement": "0x55eadb4a0108-ContainsStmt", + "id": "0x55dbc10f2088-Statement", + "statement": "0x55dbc10f2098-ContainsStmt", "source": "contains" }, { - "id": "0x55eadb4a0108-ContainsStmt" + "id": "0x55dbc10f2098-ContainsStmt" }, { - "id": "0x55eadb4a6200-InternalSubprogram", + "id": "0x55dbc10f7de0-InternalSubprogram", "variantKey": "SubroutineSubprogram", - "SubroutineSubprogram": "0x55eadb4aeb50-SubroutineSubprogram" + "SubroutineSubprogram": "0x55dbc1100bb0-SubroutineSubprogram" }, { - "id": "0x55eadb4aeb50-SubroutineSubprogram", - "Statement": "0x55eadb4aec98-Statement", - "SpecificationPart": "0x55eadb4aebf0-SpecificationPart", - "ExecutionPart": "0x55eadb4aebd8-ExecutionPart", - "Statement": "0x55eadb4aeb50-Statement" + "id": "0x55dbc1100bb0-SubroutineSubprogram", + "Statement": "0x55dbc1100cf8-Statement", + "SpecificationPart": "0x55dbc1100c50-SpecificationPart", + "ExecutionPart": "0x55dbc1100c38-ExecutionPart", + "Statement": "0x55dbc1100bb0-Statement" }, { - "id": "0x55eadb4aec98-Statement", - "statement": "0x55eadb4aeca8-SubroutineStmt", + "id": "0x55dbc1100cf8-Statement", + "statement": "0x55dbc1100d08-SubroutineStmt", "source": "subroutine init_array(ni, nj, nk, nl, nm, a, b, c, d)" }, { - "id": "0x55eadb4aeca8-SubroutineStmt", - "Name": "0x55eadb4aece0-Name", + "id": "0x55dbc1100d08-SubroutineStmt", + "Name": "0x55dbc1100d40-Name", "DummyArg": [ - "0x55eadb496ab0-DummyArg", - "0x55eadb496d20-DummyArg", - "0x55eadb496af0-DummyArg", - "0x55eadb496ba0-DummyArg", - "0x55eadb496b60-DummyArg", - "0x55eadb496be0-DummyArg", - "0x55eadb496c40-DummyArg", - "0x55eadb496c80-DummyArg", - "0x55eadb496ce0-DummyArg" + "0x55dbc10e8a00-DummyArg", + "0x55dbc10e8c70-DummyArg", + "0x55dbc10e8a40-DummyArg", + "0x55dbc10e8af0-DummyArg", + "0x55dbc10e8ab0-DummyArg", + "0x55dbc10e8b30-DummyArg", + "0x55dbc10e8b90-DummyArg", + "0x55dbc10e8bd0-DummyArg", + "0x55dbc10e8c30-DummyArg" ] }, { - "id": "0x55eadb4aece0-Name", + "id": "0x55dbc1100d40-Name", "source": "init_array" }, { - "id": "0x55eadb496ab0-DummyArg", + "id": "0x55dbc10e8a00-DummyArg", "variantKey": "Name", - "Name": "0x55eadb496ab0-Name" + "Name": "0x55dbc10e8a00-Name" }, { - "id": "0x55eadb496ab0-Name", + "id": "0x55dbc10e8a00-Name", "source": "ni" }, { - "id": "0x55eadb496d20-DummyArg", + "id": "0x55dbc10e8c70-DummyArg", "variantKey": "Name", - "Name": "0x55eadb496d20-Name" + "Name": "0x55dbc10e8c70-Name" }, { - "id": "0x55eadb496d20-Name", + "id": "0x55dbc10e8c70-Name", "source": "nj" }, { - "id": "0x55eadb496af0-DummyArg", + "id": "0x55dbc10e8a40-DummyArg", "variantKey": "Name", - "Name": "0x55eadb496af0-Name" + "Name": "0x55dbc10e8a40-Name" }, { - "id": "0x55eadb496af0-Name", + "id": "0x55dbc10e8a40-Name", "source": "nk" }, { - "id": "0x55eadb496ba0-DummyArg", + "id": "0x55dbc10e8af0-DummyArg", "variantKey": "Name", - "Name": "0x55eadb496ba0-Name" + "Name": "0x55dbc10e8af0-Name" }, { - "id": "0x55eadb496ba0-Name", + "id": "0x55dbc10e8af0-Name", "source": "nl" }, { - "id": "0x55eadb496b60-DummyArg", + "id": "0x55dbc10e8ab0-DummyArg", "variantKey": "Name", - "Name": "0x55eadb496b60-Name" + "Name": "0x55dbc10e8ab0-Name" }, { - "id": "0x55eadb496b60-Name", + "id": "0x55dbc10e8ab0-Name", "source": "nm" }, { - "id": "0x55eadb496be0-DummyArg", + "id": "0x55dbc10e8b30-DummyArg", "variantKey": "Name", - "Name": "0x55eadb496be0-Name" + "Name": "0x55dbc10e8b30-Name" }, { - "id": "0x55eadb496be0-Name", + "id": "0x55dbc10e8b30-Name", "source": "a" }, { - "id": "0x55eadb496c40-DummyArg", + "id": "0x55dbc10e8b90-DummyArg", "variantKey": "Name", - "Name": "0x55eadb496c40-Name" + "Name": "0x55dbc10e8b90-Name" }, { - "id": "0x55eadb496c40-Name", + "id": "0x55dbc10e8b90-Name", "source": "b" }, { - "id": "0x55eadb496c80-DummyArg", + "id": "0x55dbc10e8bd0-DummyArg", "variantKey": "Name", - "Name": "0x55eadb496c80-Name" + "Name": "0x55dbc10e8bd0-Name" }, { - "id": "0x55eadb496c80-Name", + "id": "0x55dbc10e8bd0-Name", "source": "c" }, { - "id": "0x55eadb496ce0-DummyArg", + "id": "0x55dbc10e8c30-DummyArg", "variantKey": "Name", - "Name": "0x55eadb496ce0-Name" + "Name": "0x55dbc10e8c30-Name" }, { - "id": "0x55eadb496ce0-Name", + "id": "0x55dbc10e8c30-Name", "source": "d" }, { - "id": "0x55eadb4aebf0-SpecificationPart", - "ImplicitPart": "0x55eadb4aec08-ImplicitPart", + "id": "0x55dbc1100c50-SpecificationPart", + "ImplicitPart": "0x55dbc1100c68-ImplicitPart", "DeclarationConstruct": [ - "0x55eadb491650-DeclarationConstruct", - "0x55eadb4959c0-DeclarationConstruct", - "0x55eadb4ab230-DeclarationConstruct", - "0x55eadb4a94f0-DeclarationConstruct", - "0x55eadb4942d0-DeclarationConstruct", - "0x55eadb495820-DeclarationConstruct" + "0x55dbc10e0c70-DeclarationConstruct", + "0x55dbc10e8340-DeclarationConstruct", + "0x55dbc10fd260-DeclarationConstruct", + "0x55dbc10fb4c0-DeclarationConstruct", + "0x55dbc10e02f0-DeclarationConstruct", + "0x55dbc10e6df0-DeclarationConstruct" ] }, { - "id": "0x55eadb4aec08-ImplicitPart" + "id": "0x55dbc1100c68-ImplicitPart" }, { - "id": "0x55eadb491650-DeclarationConstruct", + "id": "0x55dbc10e0c70-DeclarationConstruct", "variantKey": "SpecificationConstruct", - "SpecificationConstruct": "0x55eadb491650-SpecificationConstruct" + "SpecificationConstruct": "0x55dbc10e0c70-SpecificationConstruct" }, { - "id": "0x55eadb491650-SpecificationConstruct", + "id": "0x55dbc10e0c70-SpecificationConstruct", "variantKey": "Statement", - "Statement": "0x55eadb491650-Statement" + "Statement": "0x55dbc10e0c70-Statement" }, { - "id": "0x55eadb491650-Statement", - "statement": "0x55eadb4a97a0-TypeDeclarationStmt", + "id": "0x55dbc10e0c70-Statement", + "statement": "0x55dbc10fb770-TypeDeclarationStmt", "source": "double precision, dimension(nk, ni) :: a" }, { - "id": "0x55eadb4a97a0-TypeDeclarationStmt", - "DeclarationTypeSpec": "0x55eadb4a97d0-DeclarationTypeSpec", + "id": "0x55dbc10fb770-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x55dbc10fb7a0-DeclarationTypeSpec", "AttrSpec": [ - "0x55eadb492790-AttrSpec" + "0x55dbc10e52b0-AttrSpec" ], "EntityDecl": [ - "0x55eadb4a9940-EntityDecl" + "0x55dbc10fb910-EntityDecl" ] }, { - "id": "0x55eadb4a97d0-DeclarationTypeSpec", + "id": "0x55dbc10fb7a0-DeclarationTypeSpec", "variantKey": "IntrinsicTypeSpec", - "IntrinsicTypeSpec": "0x55eadb4a97d0-IntrinsicTypeSpec" + "IntrinsicTypeSpec": "0x55dbc10fb7a0-IntrinsicTypeSpec" }, { - "id": "0x55eadb4a97d0-IntrinsicTypeSpec", + "id": "0x55dbc10fb7a0-IntrinsicTypeSpec", "variantKey": "DoublePrecision", - "DoublePrecision": "0x55eadb4a97d0-DoublePrecision" + "DoublePrecision": "0x55dbc10fb7a0-DoublePrecision" }, { - "id": "0x55eadb4a97d0-DoublePrecision" + "id": "0x55dbc10fb7a0-DoublePrecision" }, { - "id": "0x55eadb492790-AttrSpec", + "id": "0x55dbc10e52b0-AttrSpec", "variantKey": "ArraySpec", - "ArraySpec": "0x55eadb492790-ArraySpec" + "ArraySpec": "0x55dbc10e52b0-ArraySpec" }, { - "id": "0x55eadb492790-ArraySpec", + "id": "0x55dbc10e52b0-ArraySpec", "variantKey": "ExplicitShapeSpec", "ExplicitShapeSpec": [ - "0x55eadb4a62b0-ExplicitShapeSpec", - "0x55eadb4969a0-ExplicitShapeSpec" + "0x55dbc10f8150-ExplicitShapeSpec", + "0x55dbc10e88f0-ExplicitShapeSpec" ] }, { - "id": "0x55eadb4a62b0-ExplicitShapeSpec", - "upper_bound": "0x55eadb4a62b0-SpecificationExpr" + "id": "0x55dbc10f8150-ExplicitShapeSpec", + "upper_bound": "0x55dbc10f8150-SpecificationExpr" }, { - "id": "0x55eadb4a62b0-SpecificationExpr", - "Expr": "0x55eadb4a8f80-Expr" + "id": "0x55dbc10f8150-SpecificationExpr", + "Expr": "0x55dbc10faf50-Expr" }, { - "id": "0x55eadb4a8f80-Expr", + "id": "0x55dbc10faf50-Expr", "variantKey": "Designator", - "Designator": "0x55eadb495a10-Designator" + "Designator": "0x55dbc10f5cf0-Designator" }, { - "id": "0x55eadb495a10-Designator", + "id": "0x55dbc10f5cf0-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb495a20-DataRef" + "DataRef": "0x55dbc10f5d00-DataRef" }, { - "id": "0x55eadb495a20-DataRef", + "id": "0x55dbc10f5d00-DataRef", "variantKey": "Name", - "Name": "0x55eadb495a20-Name" + "Name": "0x55dbc10f5d00-Name" }, { - "id": "0x55eadb495a20-Name", + "id": "0x55dbc10f5d00-Name", "source": "nk" }, { - "id": "0x55eadb4969a0-ExplicitShapeSpec", - "upper_bound": "0x55eadb4969a0-SpecificationExpr" + "id": "0x55dbc10e88f0-ExplicitShapeSpec", + "upper_bound": "0x55dbc10e88f0-SpecificationExpr" }, { - "id": "0x55eadb4969a0-SpecificationExpr", - "Expr": "0x55eadb4ab480-Expr" + "id": "0x55dbc10e88f0-SpecificationExpr", + "Expr": "0x55dbc10fd450-Expr" }, { - "id": "0x55eadb4ab480-Expr", + "id": "0x55dbc10fd450-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4957b0-Designator" + "Designator": "0x55dbc10e4160-Designator" }, { - "id": "0x55eadb4957b0-Designator", + "id": "0x55dbc10e4160-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4957c0-DataRef" + "DataRef": "0x55dbc10e4170-DataRef" }, { - "id": "0x55eadb4957c0-DataRef", + "id": "0x55dbc10e4170-DataRef", "variantKey": "Name", - "Name": "0x55eadb4957c0-Name" + "Name": "0x55dbc10e4170-Name" }, { - "id": "0x55eadb4957c0-Name", + "id": "0x55dbc10e4170-Name", "source": "ni" }, { - "id": "0x55eadb4a9940-EntityDecl", - "Name": "0x55eadb4a99f8-Name" + "id": "0x55dbc10fb910-EntityDecl", + "Name": "0x55dbc10fb9c8-Name" }, { - "id": "0x55eadb4a99f8-Name", + "id": "0x55dbc10fb9c8-Name", "source": "a" }, { - "id": "0x55eadb4959c0-DeclarationConstruct", + "id": "0x55dbc10e8340-DeclarationConstruct", "variantKey": "SpecificationConstruct", - "SpecificationConstruct": "0x55eadb4959c0-SpecificationConstruct" + "SpecificationConstruct": "0x55dbc10e8340-SpecificationConstruct" }, { - "id": "0x55eadb4959c0-SpecificationConstruct", + "id": "0x55dbc10e8340-SpecificationConstruct", "variantKey": "Statement", - "Statement": "0x55eadb4959c0-Statement" + "Statement": "0x55dbc10e8340-Statement" }, { - "id": "0x55eadb4959c0-Statement", - "statement": "0x55eadb49ff10-TypeDeclarationStmt", + "id": "0x55dbc10e8340-Statement", + "statement": "0x55dbc10f1ea0-TypeDeclarationStmt", "source": "double precision, dimension(nj, nk) :: b" }, { - "id": "0x55eadb49ff10-TypeDeclarationStmt", - "DeclarationTypeSpec": "0x55eadb49ff40-DeclarationTypeSpec", + "id": "0x55dbc10f1ea0-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x55dbc10f1ed0-DeclarationTypeSpec", "AttrSpec": [ - "0x55eadb491fc0-AttrSpec" + "0x55dbc10e4ae0-AttrSpec" ], "EntityDecl": [ - "0x55eadb4abed0-EntityDecl" + "0x55dbc10fdea0-EntityDecl" ] }, { - "id": "0x55eadb49ff40-DeclarationTypeSpec", + "id": "0x55dbc10f1ed0-DeclarationTypeSpec", "variantKey": "IntrinsicTypeSpec", - "IntrinsicTypeSpec": "0x55eadb49ff40-IntrinsicTypeSpec" + "IntrinsicTypeSpec": "0x55dbc10f1ed0-IntrinsicTypeSpec" }, { - "id": "0x55eadb49ff40-IntrinsicTypeSpec", + "id": "0x55dbc10f1ed0-IntrinsicTypeSpec", "variantKey": "DoublePrecision", - "DoublePrecision": "0x55eadb49ff40-DoublePrecision" + "DoublePrecision": "0x55dbc10f1ed0-DoublePrecision" }, { - "id": "0x55eadb49ff40-DoublePrecision" + "id": "0x55dbc10f1ed0-DoublePrecision" }, { - "id": "0x55eadb491fc0-AttrSpec", + "id": "0x55dbc10e4ae0-AttrSpec", "variantKey": "ArraySpec", - "ArraySpec": "0x55eadb491fc0-ArraySpec" + "ArraySpec": "0x55dbc10e4ae0-ArraySpec" }, { - "id": "0x55eadb491fc0-ArraySpec", + "id": "0x55dbc10e4ae0-ArraySpec", "variantKey": "ExplicitShapeSpec", "ExplicitShapeSpec": [ - "0x55eadb4a59b0-ExplicitShapeSpec", - "0x55eadb4a5760-ExplicitShapeSpec" + "0x55dbc10f76b0-ExplicitShapeSpec", + "0x55dbc10f7520-ExplicitShapeSpec" ] }, { - "id": "0x55eadb4a59b0-ExplicitShapeSpec", - "upper_bound": "0x55eadb4a59b0-SpecificationExpr" + "id": "0x55dbc10f76b0-ExplicitShapeSpec", + "upper_bound": "0x55dbc10f76b0-SpecificationExpr" }, { - "id": "0x55eadb4a59b0-SpecificationExpr", - "Expr": "0x55eadb4abd00-Expr" + "id": "0x55dbc10f76b0-SpecificationExpr", + "Expr": "0x55dbc10fdcd0-Expr" }, { - "id": "0x55eadb4abd00-Expr", + "id": "0x55dbc10fdcd0-Expr", "variantKey": "Designator", - "Designator": "0x55eadb48e140-Designator" + "Designator": "0x55dbc10e82d0-Designator" }, { - "id": "0x55eadb48e140-Designator", + "id": "0x55dbc10e82d0-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb48e150-DataRef" + "DataRef": "0x55dbc10e82e0-DataRef" }, { - "id": "0x55eadb48e150-DataRef", + "id": "0x55dbc10e82e0-DataRef", "variantKey": "Name", - "Name": "0x55eadb48e150-Name" + "Name": "0x55dbc10e82e0-Name" }, { - "id": "0x55eadb48e150-Name", + "id": "0x55dbc10e82e0-Name", "source": "nj" }, { - "id": "0x55eadb4a5760-ExplicitShapeSpec", - "upper_bound": "0x55eadb4a5760-SpecificationExpr" + "id": "0x55dbc10f7520-ExplicitShapeSpec", + "upper_bound": "0x55dbc10f7520-SpecificationExpr" }, { - "id": "0x55eadb4a5760-SpecificationExpr", - "Expr": "0x55eadb4abde0-Expr" + "id": "0x55dbc10f7520-SpecificationExpr", + "Expr": "0x55dbc10fddb0-Expr" }, { - "id": "0x55eadb4abde0-Expr", + "id": "0x55dbc10fddb0-Expr", "variantKey": "Designator", - "Designator": "0x55eadb48dbe0-Designator" + "Designator": "0x55dbc10df890-Designator" }, { - "id": "0x55eadb48dbe0-Designator", + "id": "0x55dbc10df890-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb48dbf0-DataRef" + "DataRef": "0x55dbc10df8a0-DataRef" }, { - "id": "0x55eadb48dbf0-DataRef", + "id": "0x55dbc10df8a0-DataRef", "variantKey": "Name", - "Name": "0x55eadb48dbf0-Name" + "Name": "0x55dbc10df8a0-Name" }, { - "id": "0x55eadb48dbf0-Name", + "id": "0x55dbc10df8a0-Name", "source": "nk" }, { - "id": "0x55eadb4abed0-EntityDecl", - "Name": "0x55eadb4abf88-Name" + "id": "0x55dbc10fdea0-EntityDecl", + "Name": "0x55dbc10fdf58-Name" }, { - "id": "0x55eadb4abf88-Name", + "id": "0x55dbc10fdf58-Name", "source": "b" }, { - "id": "0x55eadb4ab230-DeclarationConstruct", + "id": "0x55dbc10fd260-DeclarationConstruct", "variantKey": "SpecificationConstruct", - "SpecificationConstruct": "0x55eadb4ab230-SpecificationConstruct" + "SpecificationConstruct": "0x55dbc10fd260-SpecificationConstruct" }, { - "id": "0x55eadb4ab230-SpecificationConstruct", + "id": "0x55dbc10fd260-SpecificationConstruct", "variantKey": "Statement", - "Statement": "0x55eadb4ab230-Statement" + "Statement": "0x55dbc10fd260-Statement" }, { - "id": "0x55eadb4ab230-Statement", - "statement": "0x55eadb48d1e0-TypeDeclarationStmt", + "id": "0x55dbc10fd260-Statement", + "statement": "0x55dbc10df110-TypeDeclarationStmt", "source": "double precision, dimension(nm, nj) :: c" }, { - "id": "0x55eadb48d1e0-TypeDeclarationStmt", - "DeclarationTypeSpec": "0x55eadb48d210-DeclarationTypeSpec", + "id": "0x55dbc10df110-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x55dbc10df140-DeclarationTypeSpec", "AttrSpec": [ - "0x55eadb4928c0-AttrSpec" + "0x55dbc10e53e0-AttrSpec" ], "EntityDecl": [ - "0x55eadb4ab140-EntityDecl" + "0x55dbc10fd170-EntityDecl" ] }, { - "id": "0x55eadb48d210-DeclarationTypeSpec", + "id": "0x55dbc10df140-DeclarationTypeSpec", "variantKey": "IntrinsicTypeSpec", - "IntrinsicTypeSpec": "0x55eadb48d210-IntrinsicTypeSpec" + "IntrinsicTypeSpec": "0x55dbc10df140-IntrinsicTypeSpec" }, { - "id": "0x55eadb48d210-IntrinsicTypeSpec", + "id": "0x55dbc10df140-IntrinsicTypeSpec", "variantKey": "DoublePrecision", - "DoublePrecision": "0x55eadb48d210-DoublePrecision" + "DoublePrecision": "0x55dbc10df140-DoublePrecision" }, { - "id": "0x55eadb48d210-DoublePrecision" + "id": "0x55dbc10df140-DoublePrecision" }, { - "id": "0x55eadb4928c0-AttrSpec", + "id": "0x55dbc10e53e0-AttrSpec", "variantKey": "ArraySpec", - "ArraySpec": "0x55eadb4928c0-ArraySpec" + "ArraySpec": "0x55dbc10e53e0-ArraySpec" }, { - "id": "0x55eadb4928c0-ArraySpec", + "id": "0x55dbc10e53e0-ArraySpec", "variantKey": "ExplicitShapeSpec", "ExplicitShapeSpec": [ - "0x55eadb4a5b10-ExplicitShapeSpec", - "0x55eadb4a5aa0-ExplicitShapeSpec" + "0x55dbc10f79f0-ExplicitShapeSpec", + "0x55dbc10f7900-ExplicitShapeSpec" ] }, { - "id": "0x55eadb4a5b10-ExplicitShapeSpec", - "upper_bound": "0x55eadb4a5b10-SpecificationExpr" + "id": "0x55dbc10f79f0-ExplicitShapeSpec", + "upper_bound": "0x55dbc10f79f0-SpecificationExpr" }, { - "id": "0x55eadb4a5b10-SpecificationExpr", - "Expr": "0x55eadb4aaf10-Expr" + "id": "0x55dbc10f79f0-SpecificationExpr", + "Expr": "0x55dbc10fcee0-Expr" }, { - "id": "0x55eadb4aaf10-Expr", + "id": "0x55dbc10fcee0-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4931d0-Designator" + "Designator": "0x55dbc10e5cf0-Designator" }, { - "id": "0x55eadb4931d0-Designator", + "id": "0x55dbc10e5cf0-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4931e0-DataRef" + "DataRef": "0x55dbc10e5d00-DataRef" }, { - "id": "0x55eadb4931e0-DataRef", + "id": "0x55dbc10e5d00-DataRef", "variantKey": "Name", - "Name": "0x55eadb4931e0-Name" + "Name": "0x55dbc10e5d00-Name" }, { - "id": "0x55eadb4931e0-Name", + "id": "0x55dbc10e5d00-Name", "source": "nm" }, { - "id": "0x55eadb4a5aa0-ExplicitShapeSpec", - "upper_bound": "0x55eadb4a5aa0-SpecificationExpr" + "id": "0x55dbc10f7900-ExplicitShapeSpec", + "upper_bound": "0x55dbc10f7900-SpecificationExpr" }, { - "id": "0x55eadb4a5aa0-SpecificationExpr", - "Expr": "0x55eadb4ab050-Expr" + "id": "0x55dbc10f7900-SpecificationExpr", + "Expr": "0x55dbc10fd080-Expr" }, { - "id": "0x55eadb4ab050-Expr", + "id": "0x55dbc10fd080-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4aaff0-Designator" + "Designator": "0x55dbc10fd020-Designator" }, { - "id": "0x55eadb4aaff0-Designator", + "id": "0x55dbc10fd020-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4ab000-DataRef" + "DataRef": "0x55dbc10fd030-DataRef" }, { - "id": "0x55eadb4ab000-DataRef", + "id": "0x55dbc10fd030-DataRef", "variantKey": "Name", - "Name": "0x55eadb4ab000-Name" + "Name": "0x55dbc10fd030-Name" }, { - "id": "0x55eadb4ab000-Name", + "id": "0x55dbc10fd030-Name", "source": "nj" }, { - "id": "0x55eadb4ab140-EntityDecl", - "Name": "0x55eadb4ab1f8-Name" + "id": "0x55dbc10fd170-EntityDecl", + "Name": "0x55dbc10fd228-Name" }, { - "id": "0x55eadb4ab1f8-Name", + "id": "0x55dbc10fd228-Name", "source": "c" }, { - "id": "0x55eadb4a94f0-DeclarationConstruct", + "id": "0x55dbc10fb4c0-DeclarationConstruct", "variantKey": "SpecificationConstruct", - "SpecificationConstruct": "0x55eadb4a94f0-SpecificationConstruct" + "SpecificationConstruct": "0x55dbc10fb4c0-SpecificationConstruct" }, { - "id": "0x55eadb4a94f0-SpecificationConstruct", + "id": "0x55dbc10fb4c0-SpecificationConstruct", "variantKey": "Statement", - "Statement": "0x55eadb4a94f0-Statement" + "Statement": "0x55dbc10fb4c0-Statement" }, { - "id": "0x55eadb4a94f0-Statement", - "statement": "0x55eadb4ab5a0-TypeDeclarationStmt", + "id": "0x55dbc10fb4c0-Statement", + "statement": "0x55dbc10fd570-TypeDeclarationStmt", "source": "double precision, dimension(nl, nm) :: d" }, { - "id": "0x55eadb4ab5a0-TypeDeclarationStmt", - "DeclarationTypeSpec": "0x55eadb4ab5d0-DeclarationTypeSpec", + "id": "0x55dbc10fd570-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x55dbc10fd5a0-DeclarationTypeSpec", "AttrSpec": [ - "0x55eadb4929f0-AttrSpec" + "0x55dbc10e5510-AttrSpec" ], "EntityDecl": [ - "0x55eadb4a9400-EntityDecl" + "0x55dbc10fb3d0-EntityDecl" ] }, { - "id": "0x55eadb4ab5d0-DeclarationTypeSpec", + "id": "0x55dbc10fd5a0-DeclarationTypeSpec", "variantKey": "IntrinsicTypeSpec", - "IntrinsicTypeSpec": "0x55eadb4ab5d0-IntrinsicTypeSpec" + "IntrinsicTypeSpec": "0x55dbc10fd5a0-IntrinsicTypeSpec" }, { - "id": "0x55eadb4ab5d0-IntrinsicTypeSpec", + "id": "0x55dbc10fd5a0-IntrinsicTypeSpec", "variantKey": "DoublePrecision", - "DoublePrecision": "0x55eadb4ab5d0-DoublePrecision" + "DoublePrecision": "0x55dbc10fd5a0-DoublePrecision" }, { - "id": "0x55eadb4ab5d0-DoublePrecision" + "id": "0x55dbc10fd5a0-DoublePrecision" }, { - "id": "0x55eadb4929f0-AttrSpec", + "id": "0x55dbc10e5510-AttrSpec", "variantKey": "ArraySpec", - "ArraySpec": "0x55eadb4929f0-ArraySpec" + "ArraySpec": "0x55dbc10e5510-ArraySpec" }, { - "id": "0x55eadb4929f0-ArraySpec", + "id": "0x55dbc10e5510-ArraySpec", "variantKey": "ExplicitShapeSpec", "ExplicitShapeSpec": [ - "0x55eadb4a5e90-ExplicitShapeSpec", - "0x55eadb4a5c80-ExplicitShapeSpec" + "0x55dbc10f7bd0-ExplicitShapeSpec", + "0x55dbc10f7a60-ExplicitShapeSpec" ] }, { - "id": "0x55eadb4a5e90-ExplicitShapeSpec", - "upper_bound": "0x55eadb4a5e90-SpecificationExpr" + "id": "0x55dbc10f7bd0-ExplicitShapeSpec", + "upper_bound": "0x55dbc10f7bd0-SpecificationExpr" }, { - "id": "0x55eadb4a5e90-SpecificationExpr", - "Expr": "0x55eadb4a9170-Expr" + "id": "0x55dbc10f7bd0-SpecificationExpr", + "Expr": "0x55dbc10fb140-Expr" }, { - "id": "0x55eadb4a9170-Expr", + "id": "0x55dbc10fb140-Expr", "variantKey": "Designator", - "Designator": "0x55eadb496000-Designator" + "Designator": "0x55dbc10df490-Designator" }, { - "id": "0x55eadb496000-Designator", + "id": "0x55dbc10df490-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb496010-DataRef" + "DataRef": "0x55dbc10df4a0-DataRef" }, { - "id": "0x55eadb496010-DataRef", + "id": "0x55dbc10df4a0-DataRef", "variantKey": "Name", - "Name": "0x55eadb496010-Name" + "Name": "0x55dbc10df4a0-Name" }, { - "id": "0x55eadb496010-Name", + "id": "0x55dbc10df4a0-Name", "source": "nl" }, { - "id": "0x55eadb4a5c80-ExplicitShapeSpec", - "upper_bound": "0x55eadb4a5c80-SpecificationExpr" + "id": "0x55dbc10f7a60-ExplicitShapeSpec", + "upper_bound": "0x55dbc10f7a60-SpecificationExpr" }, { - "id": "0x55eadb4a5c80-SpecificationExpr", - "Expr": "0x55eadb4a9310-Expr" + "id": "0x55dbc10f7a60-SpecificationExpr", + "Expr": "0x55dbc10fb2e0-Expr" }, { - "id": "0x55eadb4a9310-Expr", + "id": "0x55dbc10fb2e0-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4a92b0-Designator" + "Designator": "0x55dbc10fb280-Designator" }, { - "id": "0x55eadb4a92b0-Designator", + "id": "0x55dbc10fb280-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4a92c0-DataRef" + "DataRef": "0x55dbc10fb290-DataRef" }, { - "id": "0x55eadb4a92c0-DataRef", + "id": "0x55dbc10fb290-DataRef", "variantKey": "Name", - "Name": "0x55eadb4a92c0-Name" + "Name": "0x55dbc10fb290-Name" }, { - "id": "0x55eadb4a92c0-Name", + "id": "0x55dbc10fb290-Name", "source": "nm" }, { - "id": "0x55eadb4a9400-EntityDecl", - "Name": "0x55eadb4a94b8-Name" + "id": "0x55dbc10fb3d0-EntityDecl", + "Name": "0x55dbc10fb488-Name" }, { - "id": "0x55eadb4a94b8-Name", + "id": "0x55dbc10fb488-Name", "source": "d" }, { - "id": "0x55eadb4942d0-DeclarationConstruct", + "id": "0x55dbc10e02f0-DeclarationConstruct", "variantKey": "SpecificationConstruct", - "SpecificationConstruct": "0x55eadb4942d0-SpecificationConstruct" + "SpecificationConstruct": "0x55dbc10e02f0-SpecificationConstruct" }, { - "id": "0x55eadb4942d0-SpecificationConstruct", + "id": "0x55dbc10e02f0-SpecificationConstruct", "variantKey": "Statement", - "Statement": "0x55eadb4942d0-Statement" + "Statement": "0x55dbc10e02f0-Statement" }, { - "id": "0x55eadb4942d0-Statement", - "statement": "0x55eadb4aa610-TypeDeclarationStmt", + "id": "0x55dbc10e02f0-Statement", + "statement": "0x55dbc10fc5e0-TypeDeclarationStmt", "source": "integer :: ni, nj, nk, nl, nm" }, { - "id": "0x55eadb4aa610-TypeDeclarationStmt", - "DeclarationTypeSpec": "0x55eadb4aa640-DeclarationTypeSpec", + "id": "0x55dbc10fc5e0-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x55dbc10fc610-DeclarationTypeSpec", "EntityDecl": [ - "0x55eadb4ac780-EntityDecl", - "0x55eadb4a9550-EntityDecl", - "0x55eadb4a9640-EntityDecl", - "0x55eadb4ac5a0-EntityDecl", - "0x55eadb4ac690-EntityDecl" + "0x55dbc10fe750-EntityDecl", + "0x55dbc10fb520-EntityDecl", + "0x55dbc10fb610-EntityDecl", + "0x55dbc10fe570-EntityDecl", + "0x55dbc10fe660-EntityDecl" ] }, { - "id": "0x55eadb4aa640-DeclarationTypeSpec", + "id": "0x55dbc10fc610-DeclarationTypeSpec", "variantKey": "IntrinsicTypeSpec", - "IntrinsicTypeSpec": "0x55eadb4aa640-IntrinsicTypeSpec" + "IntrinsicTypeSpec": "0x55dbc10fc610-IntrinsicTypeSpec" }, { - "id": "0x55eadb4aa640-IntrinsicTypeSpec", + "id": "0x55dbc10fc610-IntrinsicTypeSpec", "variantKey": "IntegerTypeSpec", - "IntegerTypeSpec": "0x55eadb4aa640-IntegerTypeSpec" + "IntegerTypeSpec": "0x55dbc10fc610-IntegerTypeSpec" }, { - "id": "0x55eadb4aa640-IntegerTypeSpec" + "id": "0x55dbc10fc610-IntegerTypeSpec" }, { - "id": "0x55eadb4ac780-EntityDecl", - "Name": "0x55eadb4ac838-Name" + "id": "0x55dbc10fe750-EntityDecl", + "Name": "0x55dbc10fe808-Name" }, { - "id": "0x55eadb4ac838-Name", + "id": "0x55dbc10fe808-Name", "source": "ni" }, { - "id": "0x55eadb4a9550-EntityDecl", - "Name": "0x55eadb4a9608-Name" + "id": "0x55dbc10fb520-EntityDecl", + "Name": "0x55dbc10fb5d8-Name" }, { - "id": "0x55eadb4a9608-Name", + "id": "0x55dbc10fb5d8-Name", "source": "nj" }, { - "id": "0x55eadb4a9640-EntityDecl", - "Name": "0x55eadb4a96f8-Name" + "id": "0x55dbc10fb610-EntityDecl", + "Name": "0x55dbc10fb6c8-Name" }, { - "id": "0x55eadb4a96f8-Name", + "id": "0x55dbc10fb6c8-Name", "source": "nk" }, { - "id": "0x55eadb4ac5a0-EntityDecl", - "Name": "0x55eadb4ac658-Name" + "id": "0x55dbc10fe570-EntityDecl", + "Name": "0x55dbc10fe628-Name" }, { - "id": "0x55eadb4ac658-Name", + "id": "0x55dbc10fe628-Name", "source": "nl" }, { - "id": "0x55eadb4ac690-EntityDecl", - "Name": "0x55eadb4ac748-Name" + "id": "0x55dbc10fe660-EntityDecl", + "Name": "0x55dbc10fe718-Name" }, { - "id": "0x55eadb4ac748-Name", + "id": "0x55dbc10fe718-Name", "source": "nm" }, { - "id": "0x55eadb495820-DeclarationConstruct", + "id": "0x55dbc10e6df0-DeclarationConstruct", "variantKey": "SpecificationConstruct", - "SpecificationConstruct": "0x55eadb495820-SpecificationConstruct" + "SpecificationConstruct": "0x55dbc10e6df0-SpecificationConstruct" }, { - "id": "0x55eadb495820-SpecificationConstruct", + "id": "0x55dbc10e6df0-SpecificationConstruct", "variantKey": "Statement", - "Statement": "0x55eadb495820-Statement" + "Statement": "0x55dbc10e6df0-Statement" }, { - "id": "0x55eadb495820-Statement", - "statement": "0x55eadb4ab400-TypeDeclarationStmt", + "id": "0x55dbc10e6df0-Statement", + "statement": "0x55dbc10fd3d0-TypeDeclarationStmt", "source": "integer :: i, j" }, { - "id": "0x55eadb4ab400-TypeDeclarationStmt", - "DeclarationTypeSpec": "0x55eadb4ab430-DeclarationTypeSpec", + "id": "0x55dbc10fd3d0-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x55dbc10fd400-DeclarationTypeSpec", "EntityDecl": [ - "0x55eadb4ac960-EntityDecl", - "0x55eadb4ac870-EntityDecl" + "0x55dbc10fe930-EntityDecl", + "0x55dbc10fe840-EntityDecl" ] }, { - "id": "0x55eadb4ab430-DeclarationTypeSpec", + "id": "0x55dbc10fd400-DeclarationTypeSpec", "variantKey": "IntrinsicTypeSpec", - "IntrinsicTypeSpec": "0x55eadb4ab430-IntrinsicTypeSpec" + "IntrinsicTypeSpec": "0x55dbc10fd400-IntrinsicTypeSpec" }, { - "id": "0x55eadb4ab430-IntrinsicTypeSpec", + "id": "0x55dbc10fd400-IntrinsicTypeSpec", "variantKey": "IntegerTypeSpec", - "IntegerTypeSpec": "0x55eadb4ab430-IntegerTypeSpec" + "IntegerTypeSpec": "0x55dbc10fd400-IntegerTypeSpec" }, { - "id": "0x55eadb4ab430-IntegerTypeSpec" + "id": "0x55dbc10fd400-IntegerTypeSpec" }, { - "id": "0x55eadb4ac960-EntityDecl", - "Name": "0x55eadb4aca18-Name" + "id": "0x55dbc10fe930-EntityDecl", + "Name": "0x55dbc10fe9e8-Name" }, { - "id": "0x55eadb4aca18-Name", + "id": "0x55dbc10fe9e8-Name", "source": "i" }, { - "id": "0x55eadb4ac870-EntityDecl", - "Name": "0x55eadb4ac928-Name" + "id": "0x55dbc10fe840-EntityDecl", + "Name": "0x55dbc10fe8f8-Name" }, { - "id": "0x55eadb4ac928-Name", + "id": "0x55dbc10fe8f8-Name", "source": "j" }, { - "id": "0x55eadb4aebd8-ExecutionPart", + "id": "0x55dbc1100c38-ExecutionPart", "ExecutionPartConstruct": [ - "0x55eadb4936d0-ExecutionPartConstruct", - "0x55eadb4aa870-ExecutionPartConstruct", - "0x55eadb4a6bd0-ExecutionPartConstruct", - "0x55eadb498bf0-ExecutionPartConstruct" + "0x55dbc10fbb30-ExecutionPartConstruct", + "0x55dbc10fc070-ExecutionPartConstruct", + "0x55dbc10f8860-ExecutionPartConstruct", + "0x55dbc10f73f0-ExecutionPartConstruct" ] }, { - "id": "0x55eadb4aebd8-ExecutionPartConstruct" + "id": "0x55dbc1100c38-ExecutionPartConstruct" }, { - "id": "0x55eadb4936d0-ExecutionPartConstruct", + "id": "0x55dbc10fbb30-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x55eadb4936d0-ExecutableConstruct" + "ExecutableConstruct": "0x55dbc10fbb30-ExecutableConstruct" }, { - "id": "0x55eadb4936d0-ExecutableConstruct", + "id": "0x55dbc10fbb30-ExecutableConstruct", "variantKey": "DoConstruct", - "DoConstruct": "0x55eadb4a4050-DoConstruct" + "DoConstruct": "0x55dbc10e5710-DoConstruct" }, { - "id": "0x55eadb4a4050-DoConstruct", - "Statement": "0x55eadb4a40a8-Statement", + "id": "0x55dbc10e5710-DoConstruct", + "Statement": "0x55dbc10e5768-Statement", "ExecutionPartConstruct": [ - "0x55eadb493240-ExecutionPartConstruct" + "0x55dbc10f7630-ExecutionPartConstruct" ], - "Statement": "0x55eadb4a4050-Statement" + "Statement": "0x55dbc10e5710-Statement" }, { - "id": "0x55eadb4a40a8-Statement", - "statement": "0x55eadb4a40b8-NonLabelDoStmt", + "id": "0x55dbc10e5768-Statement", + "statement": "0x55dbc10e5778-NonLabelDoStmt", "source": "do i = 1, ni" }, { - "id": "0x55eadb4a40b8-NonLabelDoStmt", - "LoopControl": "0x55eadb4a40b8-LoopControl" + "id": "0x55dbc10e5778-NonLabelDoStmt", + "LoopControl": "0x55dbc10e5778-LoopControl" }, { - "id": "0x55eadb4a40b8-LoopControl", + "id": "0x55dbc10e5778-LoopControl", "variantKey": "LoopBounds", - "LoopBounds": "0x55eadb4a40b8-LoopBounds" + "LoopBounds": "0x55dbc10e5778-LoopBounds" }, { - "id": "0x55eadb4a40b8-LoopBounds", - "var": "0x55eadb4a40b8-Name", - "lower": "0x55eadb494320-Expr", - "upper": "0x55eadb492a30-Expr" + "id": "0x55dbc10e5778-LoopBounds", + "var": "0x55dbc10e5778-Name", + "lower": "0x55dbc10e6e40-Expr", + "upper": "0x55dbc10df600-Expr" }, { - "id": "0x55eadb4a40b8-Name", + "id": "0x55dbc10e5778-Name", "source": "i" }, { - "id": "0x55eadb494320-Expr", + "id": "0x55dbc10e6e40-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55eadb494340-LiteralConstant" + "LiteralConstant": "0x55dbc10e6e60-LiteralConstant" }, { - "id": "0x55eadb494340-LiteralConstant", + "id": "0x55dbc10e6e60-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55eadb494340-IntLiteralConstant" + "IntLiteralConstant": "0x55dbc10e6e60-IntLiteralConstant" }, { - "id": "0x55eadb494340-IntLiteralConstant", + "id": "0x55dbc10e6e60-IntLiteralConstant", "CharBlock": "1" }, { - "id": "0x55eadb492a30-Expr", + "id": "0x55dbc10df600-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4ab620-Designator" + "Designator": "0x55dbc10f84c0-Designator" }, { - "id": "0x55eadb4ab620-Designator", + "id": "0x55dbc10f84c0-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4ab630-DataRef" + "DataRef": "0x55dbc10f84d0-DataRef" }, { - "id": "0x55eadb4ab630-DataRef", + "id": "0x55dbc10f84d0-DataRef", "variantKey": "Name", - "Name": "0x55eadb4ab630-Name" + "Name": "0x55dbc10f84d0-Name" }, { - "id": "0x55eadb4ab630-Name", + "id": "0x55dbc10f84d0-Name", "source": "ni" }, { - "id": "0x55eadb4a4090-ExecutionPartConstruct" + "id": "0x55dbc10e5750-ExecutionPartConstruct" }, { - "id": "0x55eadb493240-ExecutionPartConstruct", + "id": "0x55dbc10f7630-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x55eadb493240-ExecutableConstruct" + "ExecutableConstruct": "0x55dbc10f7630-ExecutableConstruct" }, { - "id": "0x55eadb493240-ExecutableConstruct", + "id": "0x55dbc10f7630-ExecutableConstruct", "variantKey": "DoConstruct", - "DoConstruct": "0x55eadb437780-DoConstruct" + "DoConstruct": "0x55dbc1089780-DoConstruct" }, { - "id": "0x55eadb437780-DoConstruct", - "Statement": "0x55eadb4377d8-Statement", + "id": "0x55dbc1089780-DoConstruct", + "Statement": "0x55dbc10897d8-Statement", "ExecutionPartConstruct": [ - "0x55eadb4a6160-ExecutionPartConstruct" + "0x55dbc10f78a0-ExecutionPartConstruct" ], - "Statement": "0x55eadb437780-Statement" + "Statement": "0x55dbc1089780-Statement" }, { - "id": "0x55eadb4377d8-Statement", - "statement": "0x55eadb4377e8-NonLabelDoStmt", + "id": "0x55dbc10897d8-Statement", + "statement": "0x55dbc10897e8-NonLabelDoStmt", "source": "do j = 1, nk" }, { - "id": "0x55eadb4377e8-NonLabelDoStmt", - "LoopControl": "0x55eadb4377e8-LoopControl" + "id": "0x55dbc10897e8-NonLabelDoStmt", + "LoopControl": "0x55dbc10897e8-LoopControl" }, { - "id": "0x55eadb4377e8-LoopControl", + "id": "0x55dbc10897e8-LoopControl", "variantKey": "LoopBounds", - "LoopBounds": "0x55eadb4377e8-LoopBounds" + "LoopBounds": "0x55dbc10897e8-LoopBounds" }, { - "id": "0x55eadb4377e8-LoopBounds", - "var": "0x55eadb4377e8-Name", - "lower": "0x55eadb48e210-Expr", - "upper": "0x55eadb48ddf0-Expr" + "id": "0x55dbc10897e8-LoopBounds", + "var": "0x55dbc10897e8-Name", + "lower": "0x55dbc10f5d50-Expr", + "upper": "0x55dbc10e5550-Expr" }, { - "id": "0x55eadb4377e8-Name", + "id": "0x55dbc10897e8-Name", "source": "j" }, { - "id": "0x55eadb48e210-Expr", + "id": "0x55dbc10f5d50-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55eadb48e230-LiteralConstant" + "LiteralConstant": "0x55dbc10f5d70-LiteralConstant" }, { - "id": "0x55eadb48e230-LiteralConstant", + "id": "0x55dbc10f5d70-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55eadb48e230-IntLiteralConstant" + "IntLiteralConstant": "0x55dbc10f5d70-IntLiteralConstant" }, { - "id": "0x55eadb48e230-IntLiteralConstant", + "id": "0x55dbc10f5d70-IntLiteralConstant", "CharBlock": "1" }, { - "id": "0x55eadb48ddf0-Expr", + "id": "0x55dbc10e5550-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4920b0-Designator" + "Designator": "0x55dbc10fcfc0-Designator" }, { - "id": "0x55eadb4920b0-Designator", + "id": "0x55dbc10fcfc0-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4920c0-DataRef" + "DataRef": "0x55dbc10fcfd0-DataRef" }, { - "id": "0x55eadb4920c0-DataRef", + "id": "0x55dbc10fcfd0-DataRef", "variantKey": "Name", - "Name": "0x55eadb4920c0-Name" + "Name": "0x55dbc10fcfd0-Name" }, { - "id": "0x55eadb4920c0-Name", + "id": "0x55dbc10fcfd0-Name", "source": "nk" }, { - "id": "0x55eadb4377c0-ExecutionPartConstruct" + "id": "0x55dbc10897c0-ExecutionPartConstruct" }, { - "id": "0x55eadb4a6160-ExecutionPartConstruct", + "id": "0x55dbc10f78a0-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x55eadb4a6160-ExecutableConstruct" + "ExecutableConstruct": "0x55dbc10f78a0-ExecutableConstruct" }, { - "id": "0x55eadb4a6160-ExecutableConstruct", + "id": "0x55dbc10f78a0-ExecutableConstruct", "variantKey": "Statement", - "Statement": "0x55eadb4a6160-Statement" + "Statement": "0x55dbc10f78a0-Statement" }, { - "id": "0x55eadb4a6160-Statement", - "statement": "0x55eadb4a6170-ActionStmt", + "id": "0x55dbc10f78a0-Statement", + "statement": "0x55dbc10f78b0-ActionStmt", "source": "a(j, i) = dble(i - 1) * dble(j - 1) / ni" }, { - "id": "0x55eadb4a6170-ActionStmt", + "id": "0x55dbc10f78b0-ActionStmt", "variantKey": "AssignmentStmt", - "AssignmentStmt": "0x55eadb4a9820-AssignmentStmt" + "AssignmentStmt": "0x55dbc10fb7f0-AssignmentStmt" }, { - "id": "0x55eadb4a9820-AssignmentStmt", - "Variable": "0x55eadb4a9900-Variable", - "Expr": "0x55eadb4a9830-Expr" + "id": "0x55dbc10fb7f0-AssignmentStmt", + "Variable": "0x55dbc10fb8d0-Variable", + "Expr": "0x55dbc10fb800-Expr" }, { - "id": "0x55eadb4a9900-Variable", + "id": "0x55dbc10fb8d0-Variable", "variantKey": "Designator", - "Designator": "0x55eadb49f510-Designator" + "Designator": "0x55dbc1122030-Designator" }, { - "id": "0x55eadb49f510-Designator", + "id": "0x55dbc1122030-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb49f520-DataRef" + "DataRef": "0x55dbc1122040-DataRef" }, { - "id": "0x55eadb49f520-DataRef", + "id": "0x55dbc1122040-DataRef", "variantKey": "ArrayElement", - "ArrayElement": "0x55eadb4c25a0-ArrayElement" + "ArrayElement": "0x55dbc1114800-ArrayElement" }, { - "id": "0x55eadb4c25a0-ArrayElement", - "base": "0x55eadb4c25a0-DataRef", + "id": "0x55dbc1114800-ArrayElement", + "base": "0x55dbc1114800-DataRef", "subscripts": [ - "0x55eadb49f1d0-SectionSubscript", - "0x55eadb4d7830-SectionSubscript" + "0x55dbc10f1640-SectionSubscript", + "0x55dbc1129a90-SectionSubscript" ] }, { - "id": "0x55eadb4c25a0-DataRef", + "id": "0x55dbc1114800-DataRef", "variantKey": "Name", - "Name": "0x55eadb4c25a0-Name" + "Name": "0x55dbc1114800-Name" }, { - "id": "0x55eadb4c25a0-Name", + "id": "0x55dbc1114800-Name", "source": "a" }, { - "id": "0x55eadb49f1d0-SectionSubscript", + "id": "0x55dbc10f1640-SectionSubscript", "variantKey": "Expr", - "Expr": "0x55eadb4e4ac0-Expr" + "Expr": "0x55dbc1136d20-Expr" }, { - "id": "0x55eadb4e4ac0-Expr", + "id": "0x55dbc1136d20-Expr", "variantKey": "Designator", - "Designator": "0x55eadb49f7f0-Designator" + "Designator": "0x55dbc10f7980-Designator" }, { - "id": "0x55eadb49f7f0-Designator", + "id": "0x55dbc10f7980-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb49f800-DataRef" + "DataRef": "0x55dbc10f7990-DataRef" }, { - "id": "0x55eadb49f800-DataRef", + "id": "0x55dbc10f7990-DataRef", "variantKey": "Name", - "Name": "0x55eadb49f800-Name" + "Name": "0x55dbc10f7990-Name" }, { - "id": "0x55eadb49f800-Name", + "id": "0x55dbc10f7990-Name", "source": "j" }, { - "id": "0x55eadb4d7830-SectionSubscript", + "id": "0x55dbc1129a90-SectionSubscript", "variantKey": "Expr", - "Expr": "0x55eadb4c0500-Expr" + "Expr": "0x55dbc11127c0-Expr" }, { - "id": "0x55eadb4c0500-Expr", + "id": "0x55dbc11127c0-Expr", "variantKey": "Designator", - "Designator": "0x55eadb48d870-Designator" + "Designator": "0x55dbc10eac50-Designator" }, { - "id": "0x55eadb48d870-Designator", + "id": "0x55dbc10eac50-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb48d880-DataRef" + "DataRef": "0x55dbc10eac60-DataRef" }, { - "id": "0x55eadb48d880-DataRef", + "id": "0x55dbc10eac60-DataRef", "variantKey": "Name", - "Name": "0x55eadb48d880-Name" + "Name": "0x55dbc10eac60-Name" }, { - "id": "0x55eadb48d880-Name", + "id": "0x55dbc10eac60-Name", "source": "i" }, { - "id": "0x55eadb4a9830-Expr", + "id": "0x55dbc10fb800-Expr", "variantKey": "Divide", - "Divide": "0x55eadb4a9850-Divide" + "Divide": "0x55dbc10fb820-Divide" }, { - "id": "0x55eadb4a9850-Divide", - "left": "0x55eadb4a5f90-Expr", - "right": "0x55eadb492cc0-Expr", + "id": "0x55dbc10fb820-Divide", + "left": "0x55dbc10f77b0-Expr", + "right": "0x55dbc10f76d0-Expr", "op": "DIVIDE" }, { - "id": "0x55eadb4a5f90-Expr", + "id": "0x55dbc10f77b0-Expr", "variantKey": "Multiply", - "Multiply": "0x55eadb4a5fb0-Multiply" + "Multiply": "0x55dbc10f77d0-Multiply" }, { - "id": "0x55eadb4a5fb0-Multiply", - "left": "0x55eadb4aac70-Expr", - "right": "0x55eadb4a5d10-Expr", + "id": "0x55dbc10f77d0-Multiply", + "left": "0x55dbc10f7bf0-Expr", + "right": "0x55dbc10f9380-Expr", "op": "MULTIPLY" }, { - "id": "0x55eadb4aac70-Expr", + "id": "0x55dbc10f7bf0-Expr", "variantKey": "FunctionReference", - "FunctionReference": "0x55eadb4a9b50-FunctionReference" + "FunctionReference": "0x55dbc10dfb60-FunctionReference" }, { - "id": "0x55eadb4a9b50-FunctionReference", - "Call": "0x55eadb4a9b50-Call" + "id": "0x55dbc10dfb60-FunctionReference", + "Call": "0x55dbc10dfb60-Call" }, { - "id": "0x55eadb4a9b50-Call", - "ProcedureDesignator": "0x55eadb4a9b68-ProcedureDesignator", + "id": "0x55dbc10dfb60-Call", + "ProcedureDesignator": "0x55dbc10dfb78-ProcedureDesignator", "ActualArgSpec": [ - "0x55eadb4aa1e0-ActualArgSpec" + "0x55dbc10fc1b0-ActualArgSpec" ] }, { - "id": "0x55eadb4a9b68-ProcedureDesignator", + "id": "0x55dbc10dfb78-ProcedureDesignator", "variantKey": "Name", - "Name": "0x55eadb4a9b68-Name" + "Name": "0x55dbc10dfb78-Name" }, { - "id": "0x55eadb4a9b68-Name", + "id": "0x55dbc10dfb78-Name", "source": "dble" }, { - "id": "0x55eadb4aa1e0-ActualArgSpec", - "ActualArg": "0x55eadb4aa1e0-ActualArg" + "id": "0x55dbc10fc1b0-ActualArgSpec", + "ActualArg": "0x55dbc10fc1b0-ActualArg" }, { - "id": "0x55eadb4aa1e0-ActualArg", + "id": "0x55dbc10fc1b0-ActualArg", "variantKey": "Expr", - "Expr": "0x55eadb496550-Expr" + "Expr": "0x55dbc10e0910-Expr" }, { - "id": "0x55eadb496550-Expr", + "id": "0x55dbc10e0910-Expr", "variantKey": "Subtract", - "Subtract": "0x55eadb496570-Subtract" + "Subtract": "0x55dbc10e0930-Subtract" }, { - "id": "0x55eadb496570-Subtract", - "left": "0x55eadb4ab8c0-Expr", - "right": "0x55eadb4a6330-Expr", + "id": "0x55dbc10e0930-Subtract", + "left": "0x55dbc10e67b0-Expr", + "right": "0x55dbc10f21c0-Expr", "op": "SUBTRACT" }, { - "id": "0x55eadb4ab8c0-Expr", + "id": "0x55dbc10e67b0-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4a5c10-Designator" + "Designator": "0x55dbc10f80b0-Designator" }, { - "id": "0x55eadb4a5c10-Designator", + "id": "0x55dbc10f80b0-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4a5c20-DataRef" + "DataRef": "0x55dbc10f80c0-DataRef" }, { - "id": "0x55eadb4a5c20-DataRef", + "id": "0x55dbc10f80c0-DataRef", "variantKey": "Name", - "Name": "0x55eadb4a5c20-Name" + "Name": "0x55dbc10f80c0-Name" }, { - "id": "0x55eadb4a5c20-Name", + "id": "0x55dbc10f80c0-Name", "source": "i" }, { - "id": "0x55eadb4a6330-Expr", + "id": "0x55dbc10f21c0-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55eadb4a6350-LiteralConstant" + "LiteralConstant": "0x55dbc10f21e0-LiteralConstant" }, { - "id": "0x55eadb4a6350-LiteralConstant", + "id": "0x55dbc10f21e0-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55eadb4a6350-IntLiteralConstant" + "IntLiteralConstant": "0x55dbc10f21e0-IntLiteralConstant" }, { - "id": "0x55eadb4a6350-IntLiteralConstant", + "id": "0x55dbc10f21e0-IntLiteralConstant", "CharBlock": "1" }, { - "id": "0x55eadb4a5d10-Expr", + "id": "0x55dbc10f9380-Expr", "variantKey": "FunctionReference", - "FunctionReference": "0x55eadb4a7440-FunctionReference" + "FunctionReference": "0x55dbc10df420-FunctionReference" }, { - "id": "0x55eadb4a7440-FunctionReference", - "Call": "0x55eadb4a7440-Call" + "id": "0x55dbc10df420-FunctionReference", + "Call": "0x55dbc10df420-Call" }, { - "id": "0x55eadb4a7440-Call", - "ProcedureDesignator": "0x55eadb4a7458-ProcedureDesignator", + "id": "0x55dbc10df420-Call", + "ProcedureDesignator": "0x55dbc10df438-ProcedureDesignator", "ActualArgSpec": [ - "0x55eadb4aa510-ActualArgSpec" + "0x55dbc10fc4e0-ActualArgSpec" ] }, { - "id": "0x55eadb4a7458-ProcedureDesignator", + "id": "0x55dbc10df438-ProcedureDesignator", "variantKey": "Name", - "Name": "0x55eadb4a7458-Name" + "Name": "0x55dbc10df438-Name" }, { - "id": "0x55eadb4a7458-Name", + "id": "0x55dbc10df438-Name", "source": "dble" }, { - "id": "0x55eadb4aa510-ActualArgSpec", - "ActualArg": "0x55eadb4aa510-ActualArg" + "id": "0x55dbc10fc4e0-ActualArgSpec", + "ActualArg": "0x55dbc10fc4e0-ActualArg" }, { - "id": "0x55eadb4aa510-ActualArg", + "id": "0x55dbc10fc4e0-ActualArg", "variantKey": "Expr", - "Expr": "0x55eadb495eb0-Expr" + "Expr": "0x55dbc10e61e0-Expr" }, { - "id": "0x55eadb495eb0-Expr", + "id": "0x55dbc10e61e0-Expr", "variantKey": "Subtract", - "Subtract": "0x55eadb495ed0-Subtract" + "Subtract": "0x55dbc10e6200-Subtract" }, { - "id": "0x55eadb495ed0-Subtract", - "left": "0x55eadb496140-Expr", - "right": "0x55eadb496060-Expr", + "id": "0x55dbc10e6200-Subtract", + "left": "0x55dbc10e6470-Expr", + "right": "0x55dbc10e6390-Expr", "op": "SUBTRACT" }, { - "id": "0x55eadb496140-Expr", + "id": "0x55dbc10e6470-Expr", "variantKey": "Designator", - "Designator": "0x55eadb493950-Designator" + "Designator": "0x55dbc10fbbf0-Designator" }, { - "id": "0x55eadb493950-Designator", + "id": "0x55dbc10fbbf0-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb493960-DataRef" + "DataRef": "0x55dbc10fbc00-DataRef" }, { - "id": "0x55eadb493960-DataRef", + "id": "0x55dbc10fbc00-DataRef", "variantKey": "Name", - "Name": "0x55eadb493960-Name" + "Name": "0x55dbc10fbc00-Name" }, { - "id": "0x55eadb493960-Name", + "id": "0x55dbc10fbc00-Name", "source": "j" }, { - "id": "0x55eadb496060-Expr", + "id": "0x55dbc10e6390-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55eadb496080-LiteralConstant" + "LiteralConstant": "0x55dbc10e63b0-LiteralConstant" }, { - "id": "0x55eadb496080-LiteralConstant", + "id": "0x55dbc10e63b0-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55eadb496080-IntLiteralConstant" + "IntLiteralConstant": "0x55dbc10e63b0-IntLiteralConstant" }, { - "id": "0x55eadb496080-IntLiteralConstant", + "id": "0x55dbc10e63b0-IntLiteralConstant", "CharBlock": "1" }, { - "id": "0x55eadb492cc0-Expr", + "id": "0x55dbc10f76d0-Expr", "variantKey": "Designator", - "Designator": "0x55eadb492bf0-Designator" + "Designator": "0x55dbc10f7ee0-Designator" }, { - "id": "0x55eadb492bf0-Designator", + "id": "0x55dbc10f7ee0-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb492c00-DataRef" + "DataRef": "0x55dbc10f7ef0-DataRef" }, { - "id": "0x55eadb492c00-DataRef", + "id": "0x55dbc10f7ef0-DataRef", "variantKey": "Name", - "Name": "0x55eadb492c00-Name" + "Name": "0x55dbc10f7ef0-Name" }, { - "id": "0x55eadb492c00-Name", + "id": "0x55dbc10f7ef0-Name", "source": "ni" }, { - "id": "0x55eadb437780-Statement", - "statement": "0x55eadb437790-EndDoStmt", + "id": "0x55dbc1089780-Statement", + "statement": "0x55dbc1089790-EndDoStmt", "source": "end do" }, { - "id": "0x55eadb437790-EndDoStmt" + "id": "0x55dbc1089790-EndDoStmt" }, { - "id": "0x55eadb4a4050-Statement", - "statement": "0x55eadb4a4060-EndDoStmt", + "id": "0x55dbc10e5710-Statement", + "statement": "0x55dbc10e5720-EndDoStmt", "source": "end do" }, { - "id": "0x55eadb4a4060-EndDoStmt" + "id": "0x55dbc10e5720-EndDoStmt" }, { - "id": "0x55eadb4aa870-ExecutionPartConstruct", + "id": "0x55dbc10fc070-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x55eadb4aa870-ExecutableConstruct" + "ExecutableConstruct": "0x55dbc10fc070-ExecutableConstruct" }, { - "id": "0x55eadb4aa870-ExecutableConstruct", + "id": "0x55dbc10fc070-ExecutableConstruct", "variantKey": "DoConstruct", - "DoConstruct": "0x55eadb497dc0-DoConstruct" + "DoConstruct": "0x55dbc10e99e0-DoConstruct" }, { - "id": "0x55eadb497dc0-DoConstruct", - "Statement": "0x55eadb497e18-Statement", + "id": "0x55dbc10e99e0-DoConstruct", + "Statement": "0x55dbc10e9a38-Statement", "ExecutionPartConstruct": [ - "0x55eadb4aa810-ExecutionPartConstruct" + "0x55dbc10fc010-ExecutionPartConstruct" ], - "Statement": "0x55eadb497dc0-Statement" + "Statement": "0x55dbc10e99e0-Statement" }, { - "id": "0x55eadb497e18-Statement", - "statement": "0x55eadb497e28-NonLabelDoStmt", + "id": "0x55dbc10e9a38-Statement", + "statement": "0x55dbc10e9a48-NonLabelDoStmt", "source": "do i = 1, nk" }, { - "id": "0x55eadb497e28-NonLabelDoStmt", - "LoopControl": "0x55eadb497e28-LoopControl" + "id": "0x55dbc10e9a48-NonLabelDoStmt", + "LoopControl": "0x55dbc10e9a48-LoopControl" }, { - "id": "0x55eadb497e28-LoopControl", + "id": "0x55dbc10e9a48-LoopControl", "variantKey": "LoopBounds", - "LoopBounds": "0x55eadb497e28-LoopBounds" + "LoopBounds": "0x55dbc10e9a48-LoopBounds" }, { - "id": "0x55eadb497e28-LoopBounds", - "var": "0x55eadb497e28-Name", - "lower": "0x55eadb4a4170-Expr", - "upper": "0x55eadb4ac0d0-Expr" + "id": "0x55dbc10e9a48-LoopBounds", + "var": "0x55dbc10e9a48-Name", + "lower": "0x55dbc10f5fa0-Expr", + "upper": "0x55dbc10f6080-Expr" }, { - "id": "0x55eadb497e28-Name", + "id": "0x55dbc10e9a48-Name", "source": "i" }, { - "id": "0x55eadb4a4170-Expr", + "id": "0x55dbc10f5fa0-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55eadb4a4190-LiteralConstant" + "LiteralConstant": "0x55dbc10f5fc0-LiteralConstant" }, { - "id": "0x55eadb4a4190-LiteralConstant", + "id": "0x55dbc10f5fc0-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55eadb4a4190-IntLiteralConstant" + "IntLiteralConstant": "0x55dbc10f5fc0-IntLiteralConstant" }, { - "id": "0x55eadb4a4190-IntLiteralConstant", + "id": "0x55dbc10f5fc0-IntLiteralConstant", "CharBlock": "1" }, { - "id": "0x55eadb4ac0d0-Expr", + "id": "0x55dbc10f6080-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4aad50-Designator" + "Designator": "0x55dbc10f7cd0-Designator" }, { - "id": "0x55eadb4aad50-Designator", + "id": "0x55dbc10f7cd0-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4aad60-DataRef" + "DataRef": "0x55dbc10f7ce0-DataRef" }, { - "id": "0x55eadb4aad60-DataRef", + "id": "0x55dbc10f7ce0-DataRef", "variantKey": "Name", - "Name": "0x55eadb4aad60-Name" + "Name": "0x55dbc10f7ce0-Name" }, { - "id": "0x55eadb4aad60-Name", + "id": "0x55dbc10f7ce0-Name", "source": "nk" }, { - "id": "0x55eadb497e00-ExecutionPartConstruct" + "id": "0x55dbc10e9a20-ExecutionPartConstruct" }, { - "id": "0x55eadb4aa810-ExecutionPartConstruct", + "id": "0x55dbc10fc010-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x55eadb4aa810-ExecutableConstruct" + "ExecutableConstruct": "0x55dbc10fc010-ExecutableConstruct" }, { - "id": "0x55eadb4aa810-ExecutableConstruct", + "id": "0x55dbc10fc010-ExecutableConstruct", "variantKey": "DoConstruct", - "DoConstruct": "0x55eadb497ca0-DoConstruct" + "DoConstruct": "0x55dbc10e98c0-DoConstruct" }, { - "id": "0x55eadb497ca0-DoConstruct", - "Statement": "0x55eadb497cf8-Statement", + "id": "0x55dbc10e98c0-DoConstruct", + "Statement": "0x55dbc10e9918-Statement", "ExecutionPartConstruct": [ - "0x55eadb497c50-ExecutionPartConstruct" + "0x55dbc10f2c50-ExecutionPartConstruct" ], - "Statement": "0x55eadb497ca0-Statement" + "Statement": "0x55dbc10e98c0-Statement" }, { - "id": "0x55eadb497cf8-Statement", - "statement": "0x55eadb497d08-NonLabelDoStmt", + "id": "0x55dbc10e9918-Statement", + "statement": "0x55dbc10e9928-NonLabelDoStmt", "source": "do j = 1, nj" }, { - "id": "0x55eadb497d08-NonLabelDoStmt", - "LoopControl": "0x55eadb497d08-LoopControl" + "id": "0x55dbc10e9928-NonLabelDoStmt", + "LoopControl": "0x55dbc10e9928-LoopControl" }, { - "id": "0x55eadb497d08-LoopControl", + "id": "0x55dbc10e9928-LoopControl", "variantKey": "LoopBounds", - "LoopBounds": "0x55eadb497d08-LoopBounds" + "LoopBounds": "0x55dbc10e9928-LoopBounds" }, { - "id": "0x55eadb497d08-LoopBounds", - "var": "0x55eadb497d08-Name", - "lower": "0x55eadb4ac1b0-Expr", - "upper": "0x55eadb4ac290-Expr" + "id": "0x55dbc10e9928-LoopBounds", + "var": "0x55dbc10e9928-Name", + "lower": "0x55dbc10f6160-Expr", + "upper": "0x55dbc10fe0a0-Expr" }, { - "id": "0x55eadb497d08-Name", + "id": "0x55dbc10e9928-Name", "source": "j" }, { - "id": "0x55eadb4ac1b0-Expr", + "id": "0x55dbc10f6160-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55eadb4ac1d0-LiteralConstant" + "LiteralConstant": "0x55dbc10f6180-LiteralConstant" }, { - "id": "0x55eadb4ac1d0-LiteralConstant", + "id": "0x55dbc10f6180-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55eadb4ac1d0-IntLiteralConstant" + "IntLiteralConstant": "0x55dbc10f6180-IntLiteralConstant" }, { - "id": "0x55eadb4ac1d0-IntLiteralConstant", + "id": "0x55dbc10f6180-IntLiteralConstant", "CharBlock": "1" }, { - "id": "0x55eadb4ac290-Expr", + "id": "0x55dbc10fe0a0-Expr", "variantKey": "Designator", - "Designator": "0x55eadb48d630-Designator" + "Designator": "0x55dbc10f7920-Designator" }, { - "id": "0x55eadb48d630-Designator", + "id": "0x55dbc10f7920-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb48d640-DataRef" + "DataRef": "0x55dbc10f7930-DataRef" }, { - "id": "0x55eadb48d640-DataRef", + "id": "0x55dbc10f7930-DataRef", "variantKey": "Name", - "Name": "0x55eadb48d640-Name" + "Name": "0x55dbc10f7930-Name" }, { - "id": "0x55eadb48d640-Name", + "id": "0x55dbc10f7930-Name", "source": "nj" }, { - "id": "0x55eadb497ce0-ExecutionPartConstruct" + "id": "0x55dbc10e9900-ExecutionPartConstruct" }, { - "id": "0x55eadb497c50-ExecutionPartConstruct", + "id": "0x55dbc10f2c50-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x55eadb497c50-ExecutableConstruct" + "ExecutableConstruct": "0x55dbc10f2c50-ExecutableConstruct" }, { - "id": "0x55eadb497c50-ExecutableConstruct", + "id": "0x55dbc10f2c50-ExecutableConstruct", "variantKey": "Statement", - "Statement": "0x55eadb497c50-Statement" + "Statement": "0x55dbc10f2c50-Statement" }, { - "id": "0x55eadb497c50-Statement", - "statement": "0x55eadb497c60-ActionStmt", + "id": "0x55dbc10f2c50-Statement", + "statement": "0x55dbc10f2c60-ActionStmt", "source": "b(j, i) =(dble(i - 1) * dble(j))/ nj" }, { - "id": "0x55eadb497c60-ActionStmt", + "id": "0x55dbc10f2c60-ActionStmt", "variantKey": "AssignmentStmt", - "AssignmentStmt": "0x55eadb497ac0-AssignmentStmt" + "AssignmentStmt": "0x55dbc10f2ac0-AssignmentStmt" }, { - "id": "0x55eadb497ac0-AssignmentStmt", - "Variable": "0x55eadb497ba0-Variable", - "Expr": "0x55eadb497ad0-Expr" + "id": "0x55dbc10f2ac0-AssignmentStmt", + "Variable": "0x55dbc10f2ba0-Variable", + "Expr": "0x55dbc10f2ad0-Expr" }, { - "id": "0x55eadb497ba0-Variable", + "id": "0x55dbc10f2ba0-Variable", "variantKey": "Designator", - "Designator": "0x55eadb4c9b10-Designator" + "Designator": "0x55dbc11102a0-Designator" }, { - "id": "0x55eadb4c9b10-Designator", + "id": "0x55dbc11102a0-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4c9b20-DataRef" + "DataRef": "0x55dbc11102b0-DataRef" }, { - "id": "0x55eadb4c9b20-DataRef", + "id": "0x55dbc11102b0-DataRef", "variantKey": "ArrayElement", - "ArrayElement": "0x55eadb4c1b30-ArrayElement" + "ArrayElement": "0x55dbc1113d90-ArrayElement" }, { - "id": "0x55eadb4c1b30-ArrayElement", - "base": "0x55eadb4c1b30-DataRef", + "id": "0x55dbc1113d90-ArrayElement", + "base": "0x55dbc1113d90-DataRef", "subscripts": [ - "0x55eadb568220-SectionSubscript", - "0x55eadb568270-SectionSubscript" + "0x55dbc11ba2d0-SectionSubscript", + "0x55dbc11ba320-SectionSubscript" ] }, { - "id": "0x55eadb4c1b30-DataRef", + "id": "0x55dbc1113d90-DataRef", "variantKey": "Name", - "Name": "0x55eadb4c1b30-Name" + "Name": "0x55dbc1113d90-Name" }, { - "id": "0x55eadb4c1b30-Name", + "id": "0x55dbc1113d90-Name", "source": "b" }, { - "id": "0x55eadb568220-SectionSubscript", + "id": "0x55dbc11ba2d0-SectionSubscript", "variantKey": "Expr", - "Expr": "0x55eadb4a3e00-Expr" + "Expr": "0x55dbc10e0340-Expr" }, { - "id": "0x55eadb4a3e00-Expr", + "id": "0x55dbc10e0340-Expr", "variantKey": "Designator", - "Designator": "0x55eadb494220-Designator" + "Designator": "0x55dbc10f1780-Designator" }, { - "id": "0x55eadb494220-Designator", + "id": "0x55dbc10f1780-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb494230-DataRef" + "DataRef": "0x55dbc10f1790-DataRef" }, { - "id": "0x55eadb494230-DataRef", + "id": "0x55dbc10f1790-DataRef", "variantKey": "Name", - "Name": "0x55eadb494230-Name" + "Name": "0x55dbc10f1790-Name" }, { - "id": "0x55eadb494230-Name", + "id": "0x55dbc10f1790-Name", "source": "j" }, { - "id": "0x55eadb568270-SectionSubscript", + "id": "0x55dbc11ba320-SectionSubscript", "variantKey": "Expr", - "Expr": "0x55eadb489040-Expr" + "Expr": "0x55dbc10e0d30-Expr" }, { - "id": "0x55eadb489040-Expr", + "id": "0x55dbc10e0d30-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4a5f10-Designator" + "Designator": "0x55dbc10db090-Designator" }, { - "id": "0x55eadb4a5f10-Designator", + "id": "0x55dbc10db090-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4a5f20-DataRef" + "DataRef": "0x55dbc10db0a0-DataRef" }, { - "id": "0x55eadb4a5f20-DataRef", + "id": "0x55dbc10db0a0-DataRef", "variantKey": "Name", - "Name": "0x55eadb4a5f20-Name" + "Name": "0x55dbc10db0a0-Name" }, { - "id": "0x55eadb4a5f20-Name", + "id": "0x55dbc10db0a0-Name", "source": "i" }, { - "id": "0x55eadb497ad0-Expr", + "id": "0x55dbc10f2ad0-Expr", "variantKey": "Divide", - "Divide": "0x55eadb497af0-Divide" + "Divide": "0x55dbc10f2af0-Divide" }, { - "id": "0x55eadb497af0-Divide", - "left": "0x55eadb497970-Expr", - "right": "0x55eadb4a0c70-Expr", + "id": "0x55dbc10f2af0-Divide", + "left": "0x55dbc10f2970-Expr", + "right": "0x55dbc10f2890-Expr", "op": "DIVIDE" }, { - "id": "0x55eadb497970-Expr", + "id": "0x55dbc10f2970-Expr", "variantKey": "Parentheses", - "Parentheses": "0x55eadb497990-Parentheses" + "Parentheses": "0x55dbc10f2990-Parentheses" }, { - "id": "0x55eadb497990-Parentheses", - "Expr": "0x55eadb4a07d0-Expr", + "id": "0x55dbc10f2990-Parentheses", + "Expr": "0x55dbc10fca70-Expr", "op": "PARENTHESES" }, { - "id": "0x55eadb4a07d0-Expr", + "id": "0x55dbc10fca70-Expr", "variantKey": "Multiply", - "Multiply": "0x55eadb4a07f0-Multiply" + "Multiply": "0x55dbc10fca90-Multiply" }, { - "id": "0x55eadb4a07f0-Multiply", - "left": "0x55eadb4a06f0-Expr", - "right": "0x55eadb497840-Expr", + "id": "0x55dbc10fca90-Multiply", + "left": "0x55dbc10fc990-Expr", + "right": "0x55dbc10fc8b0-Expr", "op": "MULTIPLY" }, { - "id": "0x55eadb4a06f0-Expr", + "id": "0x55dbc10fc990-Expr", "variantKey": "FunctionReference", - "FunctionReference": "0x55eadb4a5ca0-FunctionReference" + "FunctionReference": "0x55dbc10f7540-FunctionReference" }, { - "id": "0x55eadb4a5ca0-FunctionReference", - "Call": "0x55eadb4a5ca0-Call" + "id": "0x55dbc10f7540-FunctionReference", + "Call": "0x55dbc10f7540-Call" }, { - "id": "0x55eadb4a5ca0-Call", - "ProcedureDesignator": "0x55eadb4a5cb8-ProcedureDesignator", + "id": "0x55dbc10f7540-Call", + "ProcedureDesignator": "0x55dbc10f7558-ProcedureDesignator", "ActualArgSpec": [ - "0x55eadb4aa6a0-ActualArgSpec" + "0x55dbc10fbea0-ActualArgSpec" ] }, { - "id": "0x55eadb4a5cb8-ProcedureDesignator", + "id": "0x55dbc10f7558-ProcedureDesignator", "variantKey": "Name", - "Name": "0x55eadb4a5cb8-Name" + "Name": "0x55dbc10f7558-Name" }, { - "id": "0x55eadb4a5cb8-Name", + "id": "0x55dbc10f7558-Name", "source": "dble" }, { - "id": "0x55eadb4aa6a0-ActualArgSpec", - "ActualArg": "0x55eadb4aa6a0-ActualArg" + "id": "0x55dbc10fbea0-ActualArgSpec", + "ActualArg": "0x55dbc10fbea0-ActualArg" }, { - "id": "0x55eadb4aa6a0-ActualArg", + "id": "0x55dbc10fbea0-ActualArg", "variantKey": "Expr", - "Expr": "0x55eadb4a9e70-Expr" + "Expr": "0x55dbc10e9740-Expr" }, { - "id": "0x55eadb4a9e70-Expr", + "id": "0x55dbc10e9740-Expr", "variantKey": "Subtract", - "Subtract": "0x55eadb4a9e90-Subtract" + "Subtract": "0x55dbc10e9760-Subtract" }, { - "id": "0x55eadb4a9e90-Subtract", - "left": "0x55eadb4aa030-Expr", - "right": "0x55eadb4a9f50-Expr", + "id": "0x55dbc10e9760-Subtract", + "left": "0x55dbc10fbdb0-Expr", + "right": "0x55dbc10fbcd0-Expr", "op": "SUBTRACT" }, { - "id": "0x55eadb4aa030-Expr", + "id": "0x55dbc10fbdb0-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4a57f0-Designator" + "Designator": "0x55dbc10fcd20-Designator" }, { - "id": "0x55eadb4a57f0-Designator", + "id": "0x55dbc10fcd20-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4a5800-DataRef" + "DataRef": "0x55dbc10fcd30-DataRef" }, { - "id": "0x55eadb4a5800-DataRef", + "id": "0x55dbc10fcd30-DataRef", "variantKey": "Name", - "Name": "0x55eadb4a5800-Name" + "Name": "0x55dbc10fcd30-Name" }, { - "id": "0x55eadb4a5800-Name", + "id": "0x55dbc10fcd30-Name", "source": "i" }, { - "id": "0x55eadb4a9f50-Expr", + "id": "0x55dbc10fbcd0-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55eadb4a9f70-LiteralConstant" + "LiteralConstant": "0x55dbc10fbcf0-LiteralConstant" }, { - "id": "0x55eadb4a9f70-LiteralConstant", + "id": "0x55dbc10fbcf0-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55eadb4a9f70-IntLiteralConstant" + "IntLiteralConstant": "0x55dbc10fbcf0-IntLiteralConstant" }, { - "id": "0x55eadb4a9f70-IntLiteralConstant", + "id": "0x55dbc10fbcf0-IntLiteralConstant", "CharBlock": "1" }, { - "id": "0x55eadb497840-Expr", + "id": "0x55dbc10fc8b0-Expr", "variantKey": "FunctionReference", - "FunctionReference": "0x55eadb4a72f0-FunctionReference" + "FunctionReference": "0x55dbc10e5db0-FunctionReference" }, { - "id": "0x55eadb4a72f0-FunctionReference", - "Call": "0x55eadb4a72f0-Call" + "id": "0x55dbc10e5db0-FunctionReference", + "Call": "0x55dbc10e5db0-Call" }, { - "id": "0x55eadb4a72f0-Call", - "ProcedureDesignator": "0x55eadb4a7308-ProcedureDesignator", + "id": "0x55dbc10e5db0-Call", + "ProcedureDesignator": "0x55dbc10e5dc8-ProcedureDesignator", "ActualArgSpec": [ - "0x55eadb4aaa70-ActualArgSpec" + "0x55dbc10fc7b0-ActualArgSpec" ] }, { - "id": "0x55eadb4a7308-ProcedureDesignator", + "id": "0x55dbc10e5dc8-ProcedureDesignator", "variantKey": "Name", - "Name": "0x55eadb4a7308-Name" + "Name": "0x55dbc10e5dc8-Name" }, { - "id": "0x55eadb4a7308-Name", + "id": "0x55dbc10e5dc8-Name", "source": "dble" }, { - "id": "0x55eadb4aaa70-ActualArgSpec", - "ActualArg": "0x55eadb4aaa70-ActualArg" + "id": "0x55dbc10fc7b0-ActualArgSpec", + "ActualArg": "0x55dbc10fc7b0-ActualArg" }, { - "id": "0x55eadb4aaa70-ActualArg", + "id": "0x55dbc10fc7b0-ActualArg", "variantKey": "Expr", - "Expr": "0x55eadb4aa920-Expr" + "Expr": "0x55dbc10fc660-Expr" }, { - "id": "0x55eadb4aa920-Expr", + "id": "0x55dbc10fc660-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4aa8c0-Designator" + "Designator": "0x55dbc10e5830-Designator" }, { - "id": "0x55eadb4aa8c0-Designator", + "id": "0x55dbc10e5830-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4aa8d0-DataRef" + "DataRef": "0x55dbc10e5840-DataRef" }, { - "id": "0x55eadb4aa8d0-DataRef", + "id": "0x55dbc10e5840-DataRef", "variantKey": "Name", - "Name": "0x55eadb4aa8d0-Name" + "Name": "0x55dbc10e5840-Name" }, { - "id": "0x55eadb4aa8d0-Name", + "id": "0x55dbc10e5840-Name", "source": "j" }, { - "id": "0x55eadb4a0c70-Expr", + "id": "0x55dbc10f2890-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4a0ba0-Designator" + "Designator": "0x55dbc10f27c0-Designator" }, { - "id": "0x55eadb4a0ba0-Designator", + "id": "0x55dbc10f27c0-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4a0bb0-DataRef" + "DataRef": "0x55dbc10f27d0-DataRef" }, { - "id": "0x55eadb4a0bb0-DataRef", + "id": "0x55dbc10f27d0-DataRef", "variantKey": "Name", - "Name": "0x55eadb4a0bb0-Name" + "Name": "0x55dbc10f27d0-Name" }, { - "id": "0x55eadb4a0bb0-Name", + "id": "0x55dbc10f27d0-Name", "source": "nj" }, { - "id": "0x55eadb497ca0-Statement", - "statement": "0x55eadb497cb0-EndDoStmt", + "id": "0x55dbc10e98c0-Statement", + "statement": "0x55dbc10e98d0-EndDoStmt", "source": "end do" }, { - "id": "0x55eadb497cb0-EndDoStmt" + "id": "0x55dbc10e98d0-EndDoStmt" }, { - "id": "0x55eadb497dc0-Statement", - "statement": "0x55eadb497dd0-EndDoStmt", + "id": "0x55dbc10e99e0-Statement", + "statement": "0x55dbc10e99f0-EndDoStmt", "source": "end do" }, { - "id": "0x55eadb497dd0-EndDoStmt" + "id": "0x55dbc10e99f0-EndDoStmt" }, { - "id": "0x55eadb4a6bd0-ExecutionPartConstruct", + "id": "0x55dbc10f8860-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x55eadb4a6bd0-ExecutableConstruct" + "ExecutableConstruct": "0x55dbc10f8860-ExecutableConstruct" }, { - "id": "0x55eadb4a6bd0-ExecutableConstruct", + "id": "0x55dbc10f8860-ExecutableConstruct", "variantKey": "DoConstruct", - "DoConstruct": "0x55eadb4a4b80-DoConstruct" + "DoConstruct": "0x55dbc10eaa60-DoConstruct" }, { - "id": "0x55eadb4a4b80-DoConstruct", - "Statement": "0x55eadb4a4bd8-Statement", + "id": "0x55dbc10eaa60-DoConstruct", + "Statement": "0x55dbc10eaab8-Statement", "ExecutionPartConstruct": [ - "0x55eadb4a6b10-ExecutionPartConstruct" + "0x55dbc10f87a0-ExecutionPartConstruct" ], - "Statement": "0x55eadb4a4b80-Statement" + "Statement": "0x55dbc10eaa60-Statement" }, { - "id": "0x55eadb4a4bd8-Statement", - "statement": "0x55eadb4a4be8-NonLabelDoStmt", + "id": "0x55dbc10eaab8-Statement", + "statement": "0x55dbc10eaac8-NonLabelDoStmt", "source": "do i = 1, nj" }, { - "id": "0x55eadb4a4be8-NonLabelDoStmt", - "LoopControl": "0x55eadb4a4be8-LoopControl" + "id": "0x55dbc10eaac8-NonLabelDoStmt", + "LoopControl": "0x55dbc10eaac8-LoopControl" }, { - "id": "0x55eadb4a4be8-LoopControl", + "id": "0x55dbc10eaac8-LoopControl", "variantKey": "LoopBounds", - "LoopBounds": "0x55eadb4a4be8-LoopBounds" + "LoopBounds": "0x55dbc10eaac8-LoopBounds" }, { - "id": "0x55eadb4a4be8-LoopBounds", - "var": "0x55eadb4a4be8-Name", - "lower": "0x55eadb497ee0-Expr", - "upper": "0x55eadb496dd0-Expr" + "id": "0x55dbc10eaac8-LoopBounds", + "var": "0x55dbc10eaac8-Name", + "lower": "0x55dbc10e9b00-Expr", + "upper": "0x55dbc10e9be0-Expr" }, { - "id": "0x55eadb4a4be8-Name", + "id": "0x55dbc10eaac8-Name", "source": "i" }, { - "id": "0x55eadb497ee0-Expr", + "id": "0x55dbc10e9b00-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55eadb497f00-LiteralConstant" + "LiteralConstant": "0x55dbc10e9b20-LiteralConstant" }, { - "id": "0x55eadb497f00-LiteralConstant", + "id": "0x55dbc10e9b20-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55eadb497f00-IntLiteralConstant" + "IntLiteralConstant": "0x55dbc10e9b20-IntLiteralConstant" }, { - "id": "0x55eadb497f00-IntLiteralConstant", + "id": "0x55dbc10e9b20-IntLiteralConstant", "CharBlock": "1" }, { - "id": "0x55eadb496dd0-Expr", + "id": "0x55dbc10e9be0-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4a08b0-Designator" + "Designator": "0x55dbc10fcb50-Designator" }, { - "id": "0x55eadb4a08b0-Designator", + "id": "0x55dbc10fcb50-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4a08c0-DataRef" + "DataRef": "0x55dbc10fcb60-DataRef" }, { - "id": "0x55eadb4a08c0-DataRef", + "id": "0x55dbc10fcb60-DataRef", "variantKey": "Name", - "Name": "0x55eadb4a08c0-Name" + "Name": "0x55dbc10fcb60-Name" }, { - "id": "0x55eadb4a08c0-Name", + "id": "0x55dbc10fcb60-Name", "source": "nj" }, { - "id": "0x55eadb4a4bc0-ExecutionPartConstruct" + "id": "0x55dbc10eaaa0-ExecutionPartConstruct" }, { - "id": "0x55eadb4a6b10-ExecutionPartConstruct", + "id": "0x55dbc10f87a0-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x55eadb4a6b10-ExecutableConstruct" + "ExecutableConstruct": "0x55dbc10f87a0-ExecutableConstruct" }, { - "id": "0x55eadb4a6b10-ExecutableConstruct", + "id": "0x55dbc10f87a0-ExecutableConstruct", "variantKey": "DoConstruct", - "DoConstruct": "0x55eadb4a4a60-DoConstruct" + "DoConstruct": "0x55dbc10ea940-DoConstruct" }, { - "id": "0x55eadb4a4a60-DoConstruct", - "Statement": "0x55eadb4a4ab8-Statement", + "id": "0x55dbc10ea940-DoConstruct", + "Statement": "0x55dbc10ea998-Statement", "ExecutionPartConstruct": [ - "0x55eadb4a4a10-ExecutionPartConstruct" + "0x55dbc10ea8f0-ExecutionPartConstruct" ], - "Statement": "0x55eadb4a4a60-Statement" + "Statement": "0x55dbc10ea940-Statement" }, { - "id": "0x55eadb4a4ab8-Statement", - "statement": "0x55eadb4a4ac8-NonLabelDoStmt", + "id": "0x55dbc10ea998-Statement", + "statement": "0x55dbc10ea9a8-NonLabelDoStmt", "source": "do j = 1, nm" }, { - "id": "0x55eadb4a4ac8-NonLabelDoStmt", - "LoopControl": "0x55eadb4a4ac8-LoopControl" + "id": "0x55dbc10ea9a8-NonLabelDoStmt", + "LoopControl": "0x55dbc10ea9a8-LoopControl" }, { - "id": "0x55eadb4a4ac8-LoopControl", + "id": "0x55dbc10ea9a8-LoopControl", "variantKey": "LoopBounds", - "LoopBounds": "0x55eadb4a4ac8-LoopBounds" + "LoopBounds": "0x55dbc10ea9a8-LoopBounds" }, { - "id": "0x55eadb4a4ac8-LoopBounds", - "var": "0x55eadb4a4ac8-Name", - "lower": "0x55eadb496eb0-Expr", - "upper": "0x55eadb496f90-Expr" + "id": "0x55dbc10ea9a8-LoopBounds", + "var": "0x55dbc10ea9a8-Name", + "lower": "0x55dbc10e9cc0-Expr", + "upper": "0x55dbc10e9da0-Expr" }, { - "id": "0x55eadb4a4ac8-Name", + "id": "0x55dbc10ea9a8-Name", "source": "j" }, { - "id": "0x55eadb496eb0-Expr", + "id": "0x55dbc10e9cc0-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55eadb496ed0-LiteralConstant" + "LiteralConstant": "0x55dbc10e9ce0-LiteralConstant" }, { - "id": "0x55eadb496ed0-LiteralConstant", + "id": "0x55dbc10e9ce0-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55eadb496ed0-IntLiteralConstant" + "IntLiteralConstant": "0x55dbc10e9ce0-IntLiteralConstant" }, { - "id": "0x55eadb496ed0-IntLiteralConstant", + "id": "0x55dbc10e9ce0-IntLiteralConstant", "CharBlock": "1" }, { - "id": "0x55eadb496f90-Expr", + "id": "0x55dbc10e9da0-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4a9250-Designator" + "Designator": "0x55dbc10fb220-Designator" }, { - "id": "0x55eadb4a9250-Designator", + "id": "0x55dbc10fb220-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4a9260-DataRef" + "DataRef": "0x55dbc10fb230-DataRef" }, { - "id": "0x55eadb4a9260-DataRef", + "id": "0x55dbc10fb230-DataRef", "variantKey": "Name", - "Name": "0x55eadb4a9260-Name" + "Name": "0x55dbc10fb230-Name" }, { - "id": "0x55eadb4a9260-Name", + "id": "0x55dbc10fb230-Name", "source": "nm" }, { - "id": "0x55eadb4a4aa0-ExecutionPartConstruct" + "id": "0x55dbc10ea980-ExecutionPartConstruct" }, { - "id": "0x55eadb4a4a10-ExecutionPartConstruct", + "id": "0x55dbc10ea8f0-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x55eadb4a4a10-ExecutableConstruct" + "ExecutableConstruct": "0x55dbc10ea8f0-ExecutableConstruct" }, { - "id": "0x55eadb4a4a10-ExecutableConstruct", + "id": "0x55dbc10ea8f0-ExecutableConstruct", "variantKey": "Statement", - "Statement": "0x55eadb4a4a10-Statement" + "Statement": "0x55dbc10ea8f0-Statement" }, { - "id": "0x55eadb4a4a10-Statement", - "statement": "0x55eadb4a4a20-ActionStmt", + "id": "0x55dbc10ea8f0-Statement", + "statement": "0x55dbc10ea900-ActionStmt", "source": "c(j, i) =(dble(i - 1) * dble(j + 2))/ nl" }, { - "id": "0x55eadb4a4a20-ActionStmt", + "id": "0x55dbc10ea900-ActionStmt", "variantKey": "AssignmentStmt", - "AssignmentStmt": "0x55eadb4a4880-AssignmentStmt" + "AssignmentStmt": "0x55dbc10ea760-AssignmentStmt" }, { - "id": "0x55eadb4a4880-AssignmentStmt", - "Variable": "0x55eadb4a4960-Variable", - "Expr": "0x55eadb4a4890-Expr" + "id": "0x55dbc10ea760-AssignmentStmt", + "Variable": "0x55dbc10ea840-Variable", + "Expr": "0x55dbc10ea770-Expr" }, { - "id": "0x55eadb4a4960-Variable", + "id": "0x55dbc10ea840-Variable", "variantKey": "Designator", - "Designator": "0x55eadb4cfdd0-Designator" + "Designator": "0x55dbc1110340-Designator" }, { - "id": "0x55eadb4cfdd0-Designator", + "id": "0x55dbc1110340-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4cfde0-DataRef" + "DataRef": "0x55dbc1110350-DataRef" }, { - "id": "0x55eadb4cfde0-DataRef", + "id": "0x55dbc1110350-DataRef", "variantKey": "ArrayElement", - "ArrayElement": "0x55eadb49f680-ArrayElement" + "ArrayElement": "0x55dbc1110300-ArrayElement" }, { - "id": "0x55eadb49f680-ArrayElement", - "base": "0x55eadb49f680-DataRef", + "id": "0x55dbc1110300-ArrayElement", + "base": "0x55dbc1110300-DataRef", "subscripts": [ - "0x55eadb5682c0-SectionSubscript", - "0x55eadb568310-SectionSubscript" + "0x55dbc11ba370-SectionSubscript", + "0x55dbc11ba3c0-SectionSubscript" ] }, { - "id": "0x55eadb49f680-DataRef", + "id": "0x55dbc1110300-DataRef", "variantKey": "Name", - "Name": "0x55eadb49f680-Name" + "Name": "0x55dbc1110300-Name" }, { - "id": "0x55eadb49f680-Name", + "id": "0x55dbc1110300-Name", "source": "c" }, { - "id": "0x55eadb5682c0-SectionSubscript", + "id": "0x55dbc11ba370-SectionSubscript", "variantKey": "Expr", - "Expr": "0x55eadb497570-Expr" + "Expr": "0x55dbc10fe180-Expr" }, { - "id": "0x55eadb497570-Expr", + "id": "0x55dbc10fe180-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4a9e10-Designator" + "Designator": "0x55dbc10e96e0-Designator" }, { - "id": "0x55eadb4a9e10-Designator", + "id": "0x55dbc10e96e0-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4a9e20-DataRef" + "DataRef": "0x55dbc10e96f0-DataRef" }, { - "id": "0x55eadb4a9e20-DataRef", + "id": "0x55dbc10e96f0-DataRef", "variantKey": "Name", - "Name": "0x55eadb4a9e20-Name" + "Name": "0x55dbc10e96f0-Name" }, { - "id": "0x55eadb4a9e20-Name", + "id": "0x55dbc10e96f0-Name", "source": "j" }, { - "id": "0x55eadb568310-SectionSubscript", + "id": "0x55dbc11ba3c0-SectionSubscript", "variantKey": "Expr", - "Expr": "0x55eadb497650-Expr" + "Expr": "0x55dbc10fe260-Expr" }, { - "id": "0x55eadb497650-Expr", + "id": "0x55dbc10fe260-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4a5a30-Designator" + "Designator": "0x55dbc10f1b90-Designator" }, { - "id": "0x55eadb4a5a30-Designator", + "id": "0x55dbc10f1b90-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4a5a40-DataRef" + "DataRef": "0x55dbc10f1ba0-DataRef" }, { - "id": "0x55eadb4a5a40-DataRef", + "id": "0x55dbc10f1ba0-DataRef", "variantKey": "Name", - "Name": "0x55eadb4a5a40-Name" + "Name": "0x55dbc10f1ba0-Name" }, { - "id": "0x55eadb4a5a40-Name", + "id": "0x55dbc10f1ba0-Name", "source": "i" }, { - "id": "0x55eadb4a4890-Expr", + "id": "0x55dbc10ea770-Expr", "variantKey": "Divide", - "Divide": "0x55eadb4a48b0-Divide" + "Divide": "0x55dbc10ea790-Divide" }, { - "id": "0x55eadb4a48b0-Divide", - "left": "0x55eadb498a30-Expr", - "right": "0x55eadb498950-Expr", + "id": "0x55dbc10ea790-Divide", + "left": "0x55dbc10ea610-Expr", + "right": "0x55dbc10ea530-Expr", "op": "DIVIDE" }, { - "id": "0x55eadb498a30-Expr", + "id": "0x55dbc10ea610-Expr", "variantKey": "Parentheses", - "Parentheses": "0x55eadb498a50-Parentheses" + "Parentheses": "0x55dbc10ea630-Parentheses" }, { - "id": "0x55eadb498a50-Parentheses", - "Expr": "0x55eadb498520-Expr", + "id": "0x55dbc10ea630-Parentheses", + "Expr": "0x55dbc10f8e80-Expr", "op": "PARENTHESES" }, { - "id": "0x55eadb498520-Expr", + "id": "0x55dbc10f8e80-Expr", "variantKey": "Multiply", - "Multiply": "0x55eadb498540-Multiply" + "Multiply": "0x55dbc10f8ea0-Multiply" }, { - "id": "0x55eadb498540-Multiply", - "left": "0x55eadb498440-Expr", - "right": "0x55eadb498360-Expr", + "id": "0x55dbc10f8ea0-Multiply", + "left": "0x55dbc10f8da0-Expr", + "right": "0x55dbc10f8cc0-Expr", "op": "MULTIPLY" }, { - "id": "0x55eadb498440-Expr", + "id": "0x55dbc10f8da0-Expr", "variantKey": "FunctionReference", - "FunctionReference": "0x55eadb4a7510-FunctionReference" + "FunctionReference": "0x55dbc10e86a0-FunctionReference" }, { - "id": "0x55eadb4a7510-FunctionReference", - "Call": "0x55eadb4a7510-Call" + "id": "0x55dbc10e86a0-FunctionReference", + "Call": "0x55dbc10e86a0-Call" }, { - "id": "0x55eadb4a7510-Call", - "ProcedureDesignator": "0x55eadb4a7528-ProcedureDesignator", + "id": "0x55dbc10e86a0-Call", + "ProcedureDesignator": "0x55dbc10e86b8-ProcedureDesignator", "ActualArgSpec": [ - "0x55eadb4a6940-ActualArgSpec" + "0x55dbc10f85d0-ActualArgSpec" ] }, { - "id": "0x55eadb4a7528-ProcedureDesignator", + "id": "0x55dbc10e86b8-ProcedureDesignator", "variantKey": "Name", - "Name": "0x55eadb4a7528-Name" + "Name": "0x55dbc10e86b8-Name" }, { - "id": "0x55eadb4a7528-Name", + "id": "0x55dbc10e86b8-Name", "source": "dble" }, { - "id": "0x55eadb4a6940-ActualArgSpec", - "ActualArg": "0x55eadb4a6940-ActualArg" + "id": "0x55dbc10f85d0-ActualArgSpec", + "ActualArg": "0x55dbc10f85d0-ActualArg" }, { - "id": "0x55eadb4a6940-ActualArg", + "id": "0x55dbc10f85d0-ActualArg", "variantKey": "Expr", - "Expr": "0x55eadb4a6630-Expr" + "Expr": "0x55dbc10e9100-Expr" }, { - "id": "0x55eadb4a6630-Expr", + "id": "0x55dbc10e9100-Expr", "variantKey": "Subtract", - "Subtract": "0x55eadb4a6650-Subtract" + "Subtract": "0x55dbc10e9120-Subtract" }, { - "id": "0x55eadb4a6650-Subtract", - "left": "0x55eadb4a67f0-Expr", - "right": "0x55eadb4a6710-Expr", + "id": "0x55dbc10e9120-Subtract", + "left": "0x55dbc10e92c0-Expr", + "right": "0x55dbc10e91e0-Expr", "op": "SUBTRACT" }, { - "id": "0x55eadb4a67f0-Expr", + "id": "0x55dbc10e92c0-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4a0980-Designator" + "Designator": "0x55dbc10f2680-Designator" }, { - "id": "0x55eadb4a0980-Designator", + "id": "0x55dbc10f2680-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4a0990-DataRef" + "DataRef": "0x55dbc10f2690-DataRef" }, { - "id": "0x55eadb4a0990-DataRef", + "id": "0x55dbc10f2690-DataRef", "variantKey": "Name", - "Name": "0x55eadb4a0990-Name" + "Name": "0x55dbc10f2690-Name" }, { - "id": "0x55eadb4a0990-Name", + "id": "0x55dbc10f2690-Name", "source": "i" }, { - "id": "0x55eadb4a6710-Expr", + "id": "0x55dbc10e91e0-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55eadb4a6730-LiteralConstant" + "LiteralConstant": "0x55dbc10e9200-LiteralConstant" }, { - "id": "0x55eadb4a6730-LiteralConstant", + "id": "0x55dbc10e9200-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55eadb4a6730-IntLiteralConstant" + "IntLiteralConstant": "0x55dbc10e9200-IntLiteralConstant" }, { - "id": "0x55eadb4a6730-IntLiteralConstant", + "id": "0x55dbc10e9200-IntLiteralConstant", "CharBlock": "1" }, { - "id": "0x55eadb498360-Expr", + "id": "0x55dbc10f8cc0-Expr", "variantKey": "FunctionReference", - "FunctionReference": "0x55eadb4aadb0-FunctionReference" + "FunctionReference": "0x55dbc10e6170-FunctionReference" }, { - "id": "0x55eadb4aadb0-FunctionReference", - "Call": "0x55eadb4aadb0-Call" + "id": "0x55dbc10e6170-FunctionReference", + "Call": "0x55dbc10e6170-Call" }, { - "id": "0x55eadb4aadb0-Call", - "ProcedureDesignator": "0x55eadb4aadc8-ProcedureDesignator", + "id": "0x55dbc10e6170-Call", + "ProcedureDesignator": "0x55dbc10e6188-ProcedureDesignator", "ActualArgSpec": [ - "0x55eadb498260-ActualArgSpec" + "0x55dbc10f8bc0-ActualArgSpec" ] }, { - "id": "0x55eadb4aadc8-ProcedureDesignator", + "id": "0x55dbc10e6188-ProcedureDesignator", "variantKey": "Name", - "Name": "0x55eadb4aadc8-Name" + "Name": "0x55dbc10e6188-Name" }, { - "id": "0x55eadb4aadc8-Name", + "id": "0x55dbc10e6188-Name", "source": "dble" }, { - "id": "0x55eadb498260-ActualArgSpec", - "ActualArg": "0x55eadb498260-ActualArg" + "id": "0x55dbc10f8bc0-ActualArgSpec", + "ActualArg": "0x55dbc10f8bc0-ActualArg" }, { - "id": "0x55eadb498260-ActualArg", + "id": "0x55dbc10f8bc0-ActualArg", "variantKey": "Expr", - "Expr": "0x55eadb4a6c20-Expr" + "Expr": "0x55dbc10f88b0-Expr" }, { - "id": "0x55eadb4a6c20-Expr", + "id": "0x55dbc10f88b0-Expr", "variantKey": "Add", - "Add": "0x55eadb4a6c40-Add" + "Add": "0x55dbc10f88d0-Add" }, { - "id": "0x55eadb4a6c40-Add", - "left": "0x55eadb4a6de0-Expr", - "right": "0x55eadb4a6d00-Expr", + "id": "0x55dbc10f88d0-Add", + "left": "0x55dbc10f8a70-Expr", + "right": "0x55dbc10f8990-Expr", "op": "ADD" }, { - "id": "0x55eadb4a6de0-Expr", + "id": "0x55dbc10f8a70-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4a6b60-Designator" + "Designator": "0x55dbc10f87f0-Designator" }, { - "id": "0x55eadb4a6b60-Designator", + "id": "0x55dbc10f87f0-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4a6b70-DataRef" + "DataRef": "0x55dbc10f8800-DataRef" }, { - "id": "0x55eadb4a6b70-DataRef", + "id": "0x55dbc10f8800-DataRef", "variantKey": "Name", - "Name": "0x55eadb4a6b70-Name" + "Name": "0x55dbc10f8800-Name" }, { - "id": "0x55eadb4a6b70-Name", + "id": "0x55dbc10f8800-Name", "source": "j" }, { - "id": "0x55eadb4a6d00-Expr", + "id": "0x55dbc10f8990-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55eadb4a6d20-LiteralConstant" + "LiteralConstant": "0x55dbc10f89b0-LiteralConstant" }, { - "id": "0x55eadb4a6d20-LiteralConstant", + "id": "0x55dbc10f89b0-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55eadb4a6d20-IntLiteralConstant" + "IntLiteralConstant": "0x55dbc10f89b0-IntLiteralConstant" }, { - "id": "0x55eadb4a6d20-IntLiteralConstant", + "id": "0x55dbc10f89b0-IntLiteralConstant", "CharBlock": "2" }, { - "id": "0x55eadb498950-Expr", + "id": "0x55dbc10ea530-Expr", "variantKey": "Designator", - "Designator": "0x55eadb498880-Designator" + "Designator": "0x55dbc10ea460-Designator" }, { - "id": "0x55eadb498880-Designator", + "id": "0x55dbc10ea460-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb498890-DataRef" + "DataRef": "0x55dbc10ea470-DataRef" }, { - "id": "0x55eadb498890-DataRef", + "id": "0x55dbc10ea470-DataRef", "variantKey": "Name", - "Name": "0x55eadb498890-Name" + "Name": "0x55dbc10ea470-Name" }, { - "id": "0x55eadb498890-Name", + "id": "0x55dbc10ea470-Name", "source": "nl" }, { - "id": "0x55eadb4a4a60-Statement", - "statement": "0x55eadb4a4a70-EndDoStmt", + "id": "0x55dbc10ea940-Statement", + "statement": "0x55dbc10ea950-EndDoStmt", "source": "end do" }, { - "id": "0x55eadb4a4a70-EndDoStmt" + "id": "0x55dbc10ea950-EndDoStmt" }, { - "id": "0x55eadb4a4b80-Statement", - "statement": "0x55eadb4a4b90-EndDoStmt", + "id": "0x55dbc10eaa60-Statement", + "statement": "0x55dbc10eaa70-EndDoStmt", "source": "end do" }, { - "id": "0x55eadb4a4b90-EndDoStmt" + "id": "0x55dbc10eaa70-EndDoStmt" }, { - "id": "0x55eadb498bf0-ExecutionPartConstruct", + "id": "0x55dbc10f73f0-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x55eadb498bf0-ExecutableConstruct" + "ExecutableConstruct": "0x55dbc10f73f0-ExecutableConstruct" }, { - "id": "0x55eadb498bf0-ExecutableConstruct", + "id": "0x55dbc10f73f0-ExecutableConstruct", "variantKey": "DoConstruct", - "DoConstruct": "0x55eadb4ad8c0-DoConstruct" + "DoConstruct": "0x55dbc10ff720-DoConstruct" }, { - "id": "0x55eadb4ad8c0-DoConstruct", - "Statement": "0x55eadb4ad918-Statement", + "id": "0x55dbc10ff720-DoConstruct", + "Statement": "0x55dbc10ff778-Statement", "ExecutionPartConstruct": [ - "0x55eadb4a6f90-ExecutionPartConstruct" + "0x55dbc10f7390-ExecutionPartConstruct" ], - "Statement": "0x55eadb4ad8c0-Statement" + "Statement": "0x55dbc10ff720-Statement" }, { - "id": "0x55eadb4ad918-Statement", - "statement": "0x55eadb4ad928-NonLabelDoStmt", + "id": "0x55dbc10ff778-Statement", + "statement": "0x55dbc10ff788-NonLabelDoStmt", "source": "do i = 1, nm" }, { - "id": "0x55eadb4ad928-NonLabelDoStmt", - "LoopControl": "0x55eadb4ad928-LoopControl" + "id": "0x55dbc10ff788-NonLabelDoStmt", + "LoopControl": "0x55dbc10ff788-LoopControl" }, { - "id": "0x55eadb4ad928-LoopControl", + "id": "0x55dbc10ff788-LoopControl", "variantKey": "LoopBounds", - "LoopBounds": "0x55eadb4ad928-LoopBounds" + "LoopBounds": "0x55dbc10ff788-LoopBounds" }, { - "id": "0x55eadb4ad928-LoopBounds", - "var": "0x55eadb4ad928-Name", - "lower": "0x55eadb4a4ca0-Expr", - "upper": "0x55eadb4a4d80-Expr" + "id": "0x55dbc10ff788-LoopBounds", + "var": "0x55dbc10ff788-Name", + "lower": "0x55dbc10f6810-Expr", + "upper": "0x55dbc10f68f0-Expr" }, { - "id": "0x55eadb4ad928-Name", + "id": "0x55dbc10ff788-Name", "source": "i" }, { - "id": "0x55eadb4a4ca0-Expr", + "id": "0x55dbc10f6810-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55eadb4a4cc0-LiteralConstant" + "LiteralConstant": "0x55dbc10f6830-LiteralConstant" }, { - "id": "0x55eadb4a4cc0-LiteralConstant", + "id": "0x55dbc10f6830-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55eadb4a4cc0-IntLiteralConstant" + "IntLiteralConstant": "0x55dbc10f6830-IntLiteralConstant" }, { - "id": "0x55eadb4a4cc0-IntLiteralConstant", + "id": "0x55dbc10f6830-IntLiteralConstant", "CharBlock": "1" }, { - "id": "0x55eadb4a4d80-Expr", + "id": "0x55dbc10f68f0-Expr", "variantKey": "Designator", - "Designator": "0x55eadb498600-Designator" + "Designator": "0x55dbc10ea1e0-Designator" }, { - "id": "0x55eadb498600-Designator", + "id": "0x55dbc10ea1e0-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb498610-DataRef" + "DataRef": "0x55dbc10ea1f0-DataRef" }, { - "id": "0x55eadb498610-DataRef", + "id": "0x55dbc10ea1f0-DataRef", "variantKey": "Name", - "Name": "0x55eadb498610-Name" + "Name": "0x55dbc10ea1f0-Name" }, { - "id": "0x55eadb498610-Name", + "id": "0x55dbc10ea1f0-Name", "source": "nm" }, { - "id": "0x55eadb4ad900-ExecutionPartConstruct" + "id": "0x55dbc10ff760-ExecutionPartConstruct" }, { - "id": "0x55eadb4a6f90-ExecutionPartConstruct", + "id": "0x55dbc10f7390-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x55eadb4a6f90-ExecutableConstruct" + "ExecutableConstruct": "0x55dbc10f7390-ExecutableConstruct" }, { - "id": "0x55eadb4a6f90-ExecutableConstruct", + "id": "0x55dbc10f7390-ExecutableConstruct", "variantKey": "DoConstruct", - "DoConstruct": "0x55eadb4ad7a0-DoConstruct" + "DoConstruct": "0x55dbc10ff600-DoConstruct" }, { - "id": "0x55eadb4ad7a0-DoConstruct", - "Statement": "0x55eadb4ad7f8-Statement", + "id": "0x55dbc10ff600-DoConstruct", + "Statement": "0x55dbc10ff658-Statement", "ExecutionPartConstruct": [ - "0x55eadb4ad750-ExecutionPartConstruct" + "0x55dbc10ff5b0-ExecutionPartConstruct" ], - "Statement": "0x55eadb4ad7a0-Statement" + "Statement": "0x55dbc10ff600-Statement" }, { - "id": "0x55eadb4ad7f8-Statement", - "statement": "0x55eadb4ad808-NonLabelDoStmt", + "id": "0x55dbc10ff658-Statement", + "statement": "0x55dbc10ff668-NonLabelDoStmt", "source": "do j = 1, nl" }, { - "id": "0x55eadb4ad808-NonLabelDoStmt", - "LoopControl": "0x55eadb4ad808-LoopControl" + "id": "0x55dbc10ff668-NonLabelDoStmt", + "LoopControl": "0x55dbc10ff668-LoopControl" }, { - "id": "0x55eadb4ad808-LoopControl", + "id": "0x55dbc10ff668-LoopControl", "variantKey": "LoopBounds", - "LoopBounds": "0x55eadb4ad808-LoopBounds" + "LoopBounds": "0x55dbc10ff668-LoopBounds" }, { - "id": "0x55eadb4ad808-LoopBounds", - "var": "0x55eadb4ad808-Name", - "lower": "0x55eadb4a4e60-Expr", - "upper": "0x55eadb4a4f40-Expr" + "id": "0x55dbc10ff668-LoopBounds", + "var": "0x55dbc10ff668-Name", + "lower": "0x55dbc10f69d0-Expr", + "upper": "0x55dbc10f6ab0-Expr" }, { - "id": "0x55eadb4ad808-Name", + "id": "0x55dbc10ff668-Name", "source": "j" }, { - "id": "0x55eadb4a4e60-Expr", + "id": "0x55dbc10f69d0-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55eadb4a4e80-LiteralConstant" + "LiteralConstant": "0x55dbc10f69f0-LiteralConstant" }, { - "id": "0x55eadb4a4e80-LiteralConstant", + "id": "0x55dbc10f69f0-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55eadb4a4e80-IntLiteralConstant" + "IntLiteralConstant": "0x55dbc10f69f0-IntLiteralConstant" }, { - "id": "0x55eadb4a4e80-IntLiteralConstant", + "id": "0x55dbc10f69f0-IntLiteralConstant", "CharBlock": "1" }, { - "id": "0x55eadb4a4f40-Expr", + "id": "0x55dbc10f6ab0-Expr", "variantKey": "Designator", - "Designator": "0x55eadb48da30-Designator" + "Designator": "0x55dbc10e4bd0-Designator" }, { - "id": "0x55eadb48da30-Designator", + "id": "0x55dbc10e4bd0-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb48da40-DataRef" + "DataRef": "0x55dbc10e4be0-DataRef" }, { - "id": "0x55eadb48da40-DataRef", + "id": "0x55dbc10e4be0-DataRef", "variantKey": "Name", - "Name": "0x55eadb48da40-Name" + "Name": "0x55dbc10e4be0-Name" }, { - "id": "0x55eadb48da40-Name", + "id": "0x55dbc10e4be0-Name", "source": "nl" }, { - "id": "0x55eadb4ad7e0-ExecutionPartConstruct" + "id": "0x55dbc10ff640-ExecutionPartConstruct" }, { - "id": "0x55eadb4ad750-ExecutionPartConstruct", + "id": "0x55dbc10ff5b0-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x55eadb4ad750-ExecutableConstruct" + "ExecutableConstruct": "0x55dbc10ff5b0-ExecutableConstruct" }, { - "id": "0x55eadb4ad750-ExecutableConstruct", + "id": "0x55dbc10ff5b0-ExecutableConstruct", "variantKey": "Statement", - "Statement": "0x55eadb4ad750-Statement" + "Statement": "0x55dbc10ff5b0-Statement" }, { - "id": "0x55eadb4ad750-Statement", - "statement": "0x55eadb4ad760-ActionStmt", + "id": "0x55dbc10ff5b0-Statement", + "statement": "0x55dbc10ff5c0-ActionStmt", "source": "d(j, i) =(dble(i - 1) * dble(j + 1))/ nk" }, { - "id": "0x55eadb4ad760-ActionStmt", + "id": "0x55dbc10ff5c0-ActionStmt", "variantKey": "AssignmentStmt", - "AssignmentStmt": "0x55eadb4ad5c0-AssignmentStmt" + "AssignmentStmt": "0x55dbc10ff420-AssignmentStmt" }, { - "id": "0x55eadb4ad5c0-AssignmentStmt", - "Variable": "0x55eadb4ad6a0-Variable", - "Expr": "0x55eadb4ad5d0-Expr" + "id": "0x55dbc10ff420-AssignmentStmt", + "Variable": "0x55dbc10ff500-Variable", + "Expr": "0x55dbc10ff430-Expr" }, { - "id": "0x55eadb4ad6a0-Variable", + "id": "0x55dbc10ff500-Variable", "variantKey": "Designator", - "Designator": "0x55eadb49f620-Designator" + "Designator": "0x55dbc110ffe0-Designator" }, { - "id": "0x55eadb49f620-Designator", + "id": "0x55dbc110ffe0-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb49f630-DataRef" + "DataRef": "0x55dbc110fff0-DataRef" }, { - "id": "0x55eadb49f630-DataRef", + "id": "0x55dbc110fff0-DataRef", "variantKey": "ArrayElement", - "ArrayElement": "0x55eadb4be280-ArrayElement" + "ArrayElement": "0x55dbc10fdc90-ArrayElement" }, { - "id": "0x55eadb4be280-ArrayElement", - "base": "0x55eadb4be280-DataRef", + "id": "0x55dbc10fdc90-ArrayElement", + "base": "0x55dbc10fdc90-DataRef", "subscripts": [ - "0x55eadb568360-SectionSubscript", - "0x55eadb4d7e20-SectionSubscript" + "0x55dbc11ba410-SectionSubscript", + "0x55dbc112f4b0-SectionSubscript" ] }, { - "id": "0x55eadb4be280-DataRef", + "id": "0x55dbc10fdc90-DataRef", "variantKey": "Name", - "Name": "0x55eadb4be280-Name" + "Name": "0x55dbc10fdc90-Name" }, { - "id": "0x55eadb4be280-Name", + "id": "0x55dbc10fdc90-Name", "source": "d" }, { - "id": "0x55eadb568360-SectionSubscript", + "id": "0x55dbc11ba410-SectionSubscript", "variantKey": "Expr", - "Expr": "0x55eadb497070-Expr" + "Expr": "0x55dbc10e8d20-Expr" }, { - "id": "0x55eadb497070-Expr", + "id": "0x55dbc10e8d20-Expr", "variantKey": "Designator", - "Designator": "0x55eadb498cc0-Designator" + "Designator": "0x55dbc10e6d40-Designator" }, { - "id": "0x55eadb498cc0-Designator", + "id": "0x55dbc10e6d40-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb498cd0-DataRef" + "DataRef": "0x55dbc10e6d50-DataRef" }, { - "id": "0x55eadb498cd0-DataRef", + "id": "0x55dbc10e6d50-DataRef", "variantKey": "Name", - "Name": "0x55eadb498cd0-Name" + "Name": "0x55dbc10e6d50-Name" }, { - "id": "0x55eadb498cd0-Name", + "id": "0x55dbc10e6d50-Name", "source": "j" }, { - "id": "0x55eadb4d7e20-SectionSubscript", + "id": "0x55dbc112f4b0-SectionSubscript", "variantKey": "Expr", - "Expr": "0x55eadb497150-Expr" + "Expr": "0x55dbc10e8e00-Expr" }, { - "id": "0x55eadb497150-Expr", + "id": "0x55dbc10e8e00-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4aba00-Designator" + "Designator": "0x55dbc10f22a0-Designator" }, { - "id": "0x55eadb4aba00-Designator", + "id": "0x55dbc10f22a0-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4aba10-DataRef" + "DataRef": "0x55dbc10f22b0-DataRef" }, { - "id": "0x55eadb4aba10-DataRef", + "id": "0x55dbc10f22b0-DataRef", "variantKey": "Name", - "Name": "0x55eadb4aba10-Name" + "Name": "0x55dbc10f22b0-Name" }, { - "id": "0x55eadb4aba10-Name", + "id": "0x55dbc10f22b0-Name", "source": "i" }, { - "id": "0x55eadb4ad5d0-Expr", + "id": "0x55dbc10ff430-Expr", "variantKey": "Divide", - "Divide": "0x55eadb4ad5f0-Divide" + "Divide": "0x55dbc10ff450-Divide" }, { - "id": "0x55eadb4ad5f0-Divide", - "left": "0x55eadb4ad470-Expr", - "right": "0x55eadb4ad390-Expr", + "id": "0x55dbc10ff450-Divide", + "left": "0x55dbc10ff2d0-Expr", + "right": "0x55dbc10ff1f0-Expr", "op": "DIVIDE" }, { - "id": "0x55eadb4ad470-Expr", + "id": "0x55dbc10ff2d0-Expr", "variantKey": "Parentheses", - "Parentheses": "0x55eadb4ad490-Parentheses" + "Parentheses": "0x55dbc10ff2f0-Parentheses" }, { - "id": "0x55eadb4ad490-Parentheses", - "Expr": "0x55eadb4ad120-Expr", + "id": "0x55dbc10ff2f0-Parentheses", + "Expr": "0x55dbc10fef80-Expr", "op": "PARENTHESES" }, { - "id": "0x55eadb4ad120-Expr", + "id": "0x55dbc10fef80-Expr", "variantKey": "Multiply", - "Multiply": "0x55eadb4ad140-Multiply" + "Multiply": "0x55dbc10fefa0-Multiply" }, { - "id": "0x55eadb4ad140-Multiply", - "left": "0x55eadb4ad040-Expr", - "right": "0x55eadb4acf60-Expr", + "id": "0x55dbc10fefa0-Multiply", + "left": "0x55dbc10feea0-Expr", + "right": "0x55dbc10fedc0-Expr", "op": "MULTIPLY" }, { - "id": "0x55eadb4ad040-Expr", + "id": "0x55dbc10feea0-Expr", "variantKey": "FunctionReference", - "FunctionReference": "0x55eadb4a0300-FunctionReference" + "FunctionReference": "0x55dbc10e0840-FunctionReference" }, { - "id": "0x55eadb4a0300-FunctionReference", - "Call": "0x55eadb4a0300-Call" + "id": "0x55dbc10e0840-FunctionReference", + "Call": "0x55dbc10e0840-Call" }, { - "id": "0x55eadb4a0300-Call", - "ProcedureDesignator": "0x55eadb4a0318-ProcedureDesignator", + "id": "0x55dbc10e0840-Call", + "ProcedureDesignator": "0x55dbc10e0858-ProcedureDesignator", "ActualArgSpec": [ - "0x55eadb4aca50-ActualArgSpec" + "0x55dbc10f7220-ActualArgSpec" ] }, { - "id": "0x55eadb4a0318-ProcedureDesignator", + "id": "0x55dbc10e0858-ProcedureDesignator", "variantKey": "Name", - "Name": "0x55eadb4a0318-Name" + "Name": "0x55dbc10e0858-Name" }, { - "id": "0x55eadb4a0318-Name", + "id": "0x55dbc10e0858-Name", "source": "dble" }, { - "id": "0x55eadb4aca50-ActualArgSpec", - "ActualArg": "0x55eadb4aca50-ActualArg" + "id": "0x55dbc10f7220-ActualArgSpec", + "ActualArg": "0x55dbc10f7220-ActualArg" }, { - "id": "0x55eadb4aca50-ActualArg", + "id": "0x55dbc10f7220-ActualArg", "variantKey": "Expr", - "Expr": "0x55eadb4a5400-Expr" + "Expr": "0x55dbc10f6f70-Expr" }, { - "id": "0x55eadb4a5400-Expr", + "id": "0x55dbc10f6f70-Expr", "variantKey": "Subtract", - "Subtract": "0x55eadb4a5420-Subtract" + "Subtract": "0x55dbc10f6f90-Subtract" }, { - "id": "0x55eadb4a5420-Subtract", - "left": "0x55eadb4a55c0-Expr", - "right": "0x55eadb4a54e0-Expr", + "id": "0x55dbc10f6f90-Subtract", + "left": "0x55dbc10f7130-Expr", + "right": "0x55dbc10f7050-Expr", "op": "SUBTRACT" }, { - "id": "0x55eadb4a55c0-Expr", + "id": "0x55dbc10f7130-Expr", "variantKey": "Designator", - "Designator": "0x55eadb498660-Designator" + "Designator": "0x55dbc10ea240-Designator" }, { - "id": "0x55eadb498660-Designator", + "id": "0x55dbc10ea240-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb498670-DataRef" + "DataRef": "0x55dbc10ea250-DataRef" }, { - "id": "0x55eadb498670-DataRef", + "id": "0x55dbc10ea250-DataRef", "variantKey": "Name", - "Name": "0x55eadb498670-Name" + "Name": "0x55dbc10ea250-Name" }, { - "id": "0x55eadb498670-Name", + "id": "0x55dbc10ea250-Name", "source": "i" }, { - "id": "0x55eadb4a54e0-Expr", + "id": "0x55dbc10f7050-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55eadb4a5500-LiteralConstant" + "LiteralConstant": "0x55dbc10f7070-LiteralConstant" }, { - "id": "0x55eadb4a5500-LiteralConstant", + "id": "0x55dbc10f7070-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55eadb4a5500-IntLiteralConstant" + "IntLiteralConstant": "0x55dbc10f7070-IntLiteralConstant" }, { - "id": "0x55eadb4a5500-IntLiteralConstant", + "id": "0x55dbc10f7070-IntLiteralConstant", "CharBlock": "1" }, { - "id": "0x55eadb4acf60-Expr", + "id": "0x55dbc10fedc0-Expr", "variantKey": "FunctionReference", - "FunctionReference": "0x55eadb493d00-FunctionReference" + "FunctionReference": "0x55dbc10dfc30-FunctionReference" }, { - "id": "0x55eadb493d00-FunctionReference", - "Call": "0x55eadb493d00-Call" + "id": "0x55dbc10dfc30-FunctionReference", + "Call": "0x55dbc10dfc30-Call" }, { - "id": "0x55eadb493d00-Call", - "ProcedureDesignator": "0x55eadb493d18-ProcedureDesignator", + "id": "0x55dbc10dfc30-Call", + "ProcedureDesignator": "0x55dbc10dfc48-ProcedureDesignator", "ActualArgSpec": [ - "0x55eadb4ace60-ActualArgSpec" + "0x55dbc10fecc0-ActualArgSpec" ] }, { - "id": "0x55eadb493d18-ProcedureDesignator", + "id": "0x55dbc10dfc48-ProcedureDesignator", "variantKey": "Name", - "Name": "0x55eadb493d18-Name" + "Name": "0x55dbc10dfc48-Name" }, { - "id": "0x55eadb493d18-Name", + "id": "0x55dbc10dfc48-Name", "source": "dble" }, { - "id": "0x55eadb4ace60-ActualArgSpec", - "ActualArg": "0x55eadb4ace60-ActualArg" + "id": "0x55dbc10fecc0-ActualArgSpec", + "ActualArg": "0x55dbc10fecc0-ActualArg" }, { - "id": "0x55eadb4ace60-ActualArg", + "id": "0x55dbc10fecc0-ActualArg", "variantKey": "Expr", - "Expr": "0x55eadb4acb50-Expr" + "Expr": "0x55dbc10fea10-Expr" }, { - "id": "0x55eadb4acb50-Expr", + "id": "0x55dbc10fea10-Expr", "variantKey": "Add", - "Add": "0x55eadb4acb70-Add" + "Add": "0x55dbc10fea30-Add" }, { - "id": "0x55eadb4acb70-Add", - "left": "0x55eadb4acd10-Expr", - "right": "0x55eadb4acc30-Expr", + "id": "0x55dbc10fea30-Add", + "left": "0x55dbc10febd0-Expr", + "right": "0x55dbc10feaf0-Expr", "op": "ADD" }, { - "id": "0x55eadb4acd10-Expr", + "id": "0x55dbc10febd0-Expr", "variantKey": "Designator", - "Designator": "0x55eadb498b80-Designator" + "Designator": "0x55dbc10f7440-Designator" }, { - "id": "0x55eadb498b80-Designator", + "id": "0x55dbc10f7440-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb498b90-DataRef" + "DataRef": "0x55dbc10f7450-DataRef" }, { - "id": "0x55eadb498b90-DataRef", + "id": "0x55dbc10f7450-DataRef", "variantKey": "Name", - "Name": "0x55eadb498b90-Name" + "Name": "0x55dbc10f7450-Name" }, { - "id": "0x55eadb498b90-Name", + "id": "0x55dbc10f7450-Name", "source": "j" }, { - "id": "0x55eadb4acc30-Expr", + "id": "0x55dbc10feaf0-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55eadb4acc50-LiteralConstant" + "LiteralConstant": "0x55dbc10feb10-LiteralConstant" }, { - "id": "0x55eadb4acc50-LiteralConstant", + "id": "0x55dbc10feb10-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55eadb4acc50-IntLiteralConstant" + "IntLiteralConstant": "0x55dbc10feb10-IntLiteralConstant" }, { - "id": "0x55eadb4acc50-IntLiteralConstant", + "id": "0x55dbc10feb10-IntLiteralConstant", "CharBlock": "1" }, { - "id": "0x55eadb4ad390-Expr", + "id": "0x55dbc10ff1f0-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4ad2c0-Designator" + "Designator": "0x55dbc10ff120-Designator" }, { - "id": "0x55eadb4ad2c0-Designator", + "id": "0x55dbc10ff120-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4ad2d0-DataRef" + "DataRef": "0x55dbc10ff130-DataRef" }, { - "id": "0x55eadb4ad2d0-DataRef", + "id": "0x55dbc10ff130-DataRef", "variantKey": "Name", - "Name": "0x55eadb4ad2d0-Name" + "Name": "0x55dbc10ff130-Name" }, { - "id": "0x55eadb4ad2d0-Name", + "id": "0x55dbc10ff130-Name", "source": "nk" }, { - "id": "0x55eadb4ad7a0-Statement", - "statement": "0x55eadb4ad7b0-EndDoStmt", + "id": "0x55dbc10ff600-Statement", + "statement": "0x55dbc10ff610-EndDoStmt", "source": "end do" }, { - "id": "0x55eadb4ad7b0-EndDoStmt" + "id": "0x55dbc10ff610-EndDoStmt" }, { - "id": "0x55eadb4ad8c0-Statement", - "statement": "0x55eadb4ad8d0-EndDoStmt", + "id": "0x55dbc10ff720-Statement", + "statement": "0x55dbc10ff730-EndDoStmt", "source": "end do" }, { - "id": "0x55eadb4ad8d0-EndDoStmt" + "id": "0x55dbc10ff730-EndDoStmt" }, { - "id": "0x55eadb4aeb50-Statement", - "statement": "0x55eadb4aeb60-EndSubroutineStmt", + "id": "0x55dbc1100bb0-Statement", + "statement": "0x55dbc1100bc0-EndSubroutineStmt", "source": "end subroutine" }, { - "id": "0x55eadb4aeb60-EndSubroutineStmt" + "id": "0x55dbc1100bc0-EndSubroutineStmt" }, { - "id": "0x55eadb49a300-InternalSubprogram", + "id": "0x55dbc10f8120-InternalSubprogram", "variantKey": "SubroutineSubprogram", - "SubroutineSubprogram": "0x55eadb4b4660-SubroutineSubprogram" + "SubroutineSubprogram": "0x55dbc1106df0-SubroutineSubprogram" }, { - "id": "0x55eadb4b4660-SubroutineSubprogram", - "Statement": "0x55eadb4b47a8-Statement", - "SpecificationPart": "0x55eadb4b4700-SpecificationPart", - "ExecutionPart": "0x55eadb4b46e8-ExecutionPart", - "Statement": "0x55eadb4b4660-Statement" + "id": "0x55dbc1106df0-SubroutineSubprogram", + "Statement": "0x55dbc1106f38-Statement", + "SpecificationPart": "0x55dbc1106e90-SpecificationPart", + "ExecutionPart": "0x55dbc1106e78-ExecutionPart", + "Statement": "0x55dbc1106df0-Statement" }, { - "id": "0x55eadb4b47a8-Statement", - "statement": "0x55eadb4b47b8-SubroutineStmt", + "id": "0x55dbc1106f38-Statement", + "statement": "0x55dbc1106f48-SubroutineStmt", "source": "subroutine print_array(ni, nl, g)" }, { - "id": "0x55eadb4b47b8-SubroutineStmt", - "Name": "0x55eadb4b47f0-Name", + "id": "0x55dbc1106f48-SubroutineStmt", + "Name": "0x55dbc1106f80-Name", "DummyArg": [ - "0x55eadb496920-DummyArg", - "0x55eadb496880-DummyArg", - "0x55eadb4968c0-DummyArg" + "0x55dbc10e8870-DummyArg", + "0x55dbc10e87d0-DummyArg", + "0x55dbc10e8810-DummyArg" ] }, { - "id": "0x55eadb4b47f0-Name", + "id": "0x55dbc1106f80-Name", "source": "print_array" }, { - "id": "0x55eadb496920-DummyArg", + "id": "0x55dbc10e8870-DummyArg", "variantKey": "Name", - "Name": "0x55eadb496920-Name" + "Name": "0x55dbc10e8870-Name" }, { - "id": "0x55eadb496920-Name", + "id": "0x55dbc10e8870-Name", "source": "ni" }, { - "id": "0x55eadb496880-DummyArg", + "id": "0x55dbc10e87d0-DummyArg", "variantKey": "Name", - "Name": "0x55eadb496880-Name" + "Name": "0x55dbc10e87d0-Name" }, { - "id": "0x55eadb496880-Name", + "id": "0x55dbc10e87d0-Name", "source": "nl" }, { - "id": "0x55eadb4968c0-DummyArg", + "id": "0x55dbc10e8810-DummyArg", "variantKey": "Name", - "Name": "0x55eadb4968c0-Name" + "Name": "0x55dbc10e8810-Name" }, { - "id": "0x55eadb4968c0-Name", + "id": "0x55dbc10e8810-Name", "source": "g" }, { - "id": "0x55eadb4b4700-SpecificationPart", - "ImplicitPart": "0x55eadb4b4718-ImplicitPart", + "id": "0x55dbc1106e90-SpecificationPart", + "ImplicitPart": "0x55dbc1106ea8-ImplicitPart", "DeclarationConstruct": [ - "0x55eadb4aa7b0-DeclarationConstruct", - "0x55eadb495a80-DeclarationConstruct", - "0x55eadb4a4260-DeclarationConstruct" + "0x55dbc10fbfb0-DeclarationConstruct", + "0x55dbc10e5d60-DeclarationConstruct", + "0x55dbc10e9830-DeclarationConstruct" ] }, { - "id": "0x55eadb4b4718-ImplicitPart" + "id": "0x55dbc1106ea8-ImplicitPart" }, { - "id": "0x55eadb4aa7b0-DeclarationConstruct", + "id": "0x55dbc10fbfb0-DeclarationConstruct", "variantKey": "SpecificationConstruct", - "SpecificationConstruct": "0x55eadb4aa7b0-SpecificationConstruct" + "SpecificationConstruct": "0x55dbc10fbfb0-SpecificationConstruct" }, { - "id": "0x55eadb4aa7b0-SpecificationConstruct", + "id": "0x55dbc10fbfb0-SpecificationConstruct", "variantKey": "Statement", - "Statement": "0x55eadb4aa7b0-Statement" + "Statement": "0x55dbc10fbfb0-Statement" }, { - "id": "0x55eadb4aa7b0-Statement", - "statement": "0x55eadb48d7f0-TypeDeclarationStmt", + "id": "0x55dbc10fbfb0-Statement", + "statement": "0x55dbc10dff00-TypeDeclarationStmt", "source": "double precision, dimension(nl, ni) :: g" }, { - "id": "0x55eadb48d7f0-TypeDeclarationStmt", - "DeclarationTypeSpec": "0x55eadb48d820-DeclarationTypeSpec", + "id": "0x55dbc10dff00-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x55dbc10dff30-DeclarationTypeSpec", "AttrSpec": [ - "0x55eadb492f70-AttrSpec" + "0x55dbc10e5a90-AttrSpec" ], "EntityDecl": [ - "0x55eadb4af850-EntityDecl" + "0x55dbc1101770-EntityDecl" ] }, { - "id": "0x55eadb48d820-DeclarationTypeSpec", + "id": "0x55dbc10dff30-DeclarationTypeSpec", "variantKey": "IntrinsicTypeSpec", - "IntrinsicTypeSpec": "0x55eadb48d820-IntrinsicTypeSpec" + "IntrinsicTypeSpec": "0x55dbc10dff30-IntrinsicTypeSpec" }, { - "id": "0x55eadb48d820-IntrinsicTypeSpec", + "id": "0x55dbc10dff30-IntrinsicTypeSpec", "variantKey": "DoublePrecision", - "DoublePrecision": "0x55eadb48d820-DoublePrecision" + "DoublePrecision": "0x55dbc10dff30-DoublePrecision" }, { - "id": "0x55eadb48d820-DoublePrecision" + "id": "0x55dbc10dff30-DoublePrecision" }, { - "id": "0x55eadb492f70-AttrSpec", + "id": "0x55dbc10e5a90-AttrSpec", "variantKey": "ArraySpec", - "ArraySpec": "0x55eadb492f70-ArraySpec" + "ArraySpec": "0x55dbc10e5a90-ArraySpec" }, { - "id": "0x55eadb492f70-ArraySpec", + "id": "0x55dbc10e5a90-ArraySpec", "variantKey": "ExplicitShapeSpec", "ExplicitShapeSpec": [ - "0x55eadb498c50-ExplicitShapeSpec", - "0x55eadb4a4810-ExplicitShapeSpec" + "0x55dbc10f7db0-ExplicitShapeSpec", + "0x55dbc10f1cf0-ExplicitShapeSpec" ] }, { - "id": "0x55eadb498c50-ExplicitShapeSpec", - "upper_bound": "0x55eadb498c50-SpecificationExpr" + "id": "0x55dbc10f7db0-ExplicitShapeSpec", + "upper_bound": "0x55dbc10f7db0-SpecificationExpr" }, { - "id": "0x55eadb498c50-SpecificationExpr", - "Expr": "0x55eadb4af680-Expr" + "id": "0x55dbc10f7db0-SpecificationExpr", + "Expr": "0x55dbc10fc0c0-Expr" }, { - "id": "0x55eadb4af680-Expr", + "id": "0x55dbc10fc0c0-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4ad200-Designator" + "Designator": "0x55dbc10ff060-Designator" }, { - "id": "0x55eadb4ad200-Designator", + "id": "0x55dbc10ff060-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4ad210-DataRef" + "DataRef": "0x55dbc10ff070-DataRef" }, { - "id": "0x55eadb4ad210-DataRef", + "id": "0x55dbc10ff070-DataRef", "variantKey": "Name", - "Name": "0x55eadb4ad210-Name" + "Name": "0x55dbc10ff070-Name" }, { - "id": "0x55eadb4ad210-Name", + "id": "0x55dbc10ff070-Name", "source": "nl" }, { - "id": "0x55eadb4a4810-ExplicitShapeSpec", - "upper_bound": "0x55eadb4a4810-SpecificationExpr" + "id": "0x55dbc10f1cf0-ExplicitShapeSpec", + "upper_bound": "0x55dbc10f1cf0-SpecificationExpr" }, { - "id": "0x55eadb4a4810-SpecificationExpr", - "Expr": "0x55eadb4af760-Expr" + "id": "0x55dbc10f1cf0-SpecificationExpr", + "Expr": "0x55dbc1100a00-Expr" }, { - "id": "0x55eadb4af760-Expr", + "id": "0x55dbc1100a00-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4a6ec0-Designator" + "Designator": "0x55dbc10f8b50-Designator" }, { - "id": "0x55eadb4a6ec0-Designator", + "id": "0x55dbc10f8b50-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4a6ed0-DataRef" + "DataRef": "0x55dbc10f8b60-DataRef" }, { - "id": "0x55eadb4a6ed0-DataRef", + "id": "0x55dbc10f8b60-DataRef", "variantKey": "Name", - "Name": "0x55eadb4a6ed0-Name" + "Name": "0x55dbc10f8b60-Name" }, { - "id": "0x55eadb4a6ed0-Name", + "id": "0x55dbc10f8b60-Name", "source": "ni" }, { - "id": "0x55eadb4af850-EntityDecl", - "Name": "0x55eadb4af908-Name" + "id": "0x55dbc1101770-EntityDecl", + "Name": "0x55dbc1101828-Name" }, { - "id": "0x55eadb4af908-Name", + "id": "0x55dbc1101828-Name", "source": "g" }, { - "id": "0x55eadb495a80-DeclarationConstruct", + "id": "0x55dbc10e5d60-DeclarationConstruct", "variantKey": "SpecificationConstruct", - "SpecificationConstruct": "0x55eadb495a80-SpecificationConstruct" + "SpecificationConstruct": "0x55dbc10e5d60-SpecificationConstruct" }, { - "id": "0x55eadb495a80-SpecificationConstruct", + "id": "0x55dbc10e5d60-SpecificationConstruct", "variantKey": "Statement", - "Statement": "0x55eadb495a80-Statement" + "Statement": "0x55dbc10e5d60-Statement" }, { - "id": "0x55eadb495a80-Statement", - "statement": "0x55eadb4ab300-TypeDeclarationStmt", + "id": "0x55dbc10e5d60-Statement", + "statement": "0x55dbc10fd2d0-TypeDeclarationStmt", "source": "integer :: ni, nl" }, { - "id": "0x55eadb4ab300-TypeDeclarationStmt", - "DeclarationTypeSpec": "0x55eadb4ab330-DeclarationTypeSpec", + "id": "0x55dbc10fd2d0-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x55dbc10fd300-DeclarationTypeSpec", "EntityDecl": [ - "0x55eadb4adae0-EntityDecl", - "0x55eadb4ad9f0-EntityDecl" + "0x55dbc1101950-EntityDecl", + "0x55dbc1101860-EntityDecl" ] }, { - "id": "0x55eadb4ab330-DeclarationTypeSpec", + "id": "0x55dbc10fd300-DeclarationTypeSpec", "variantKey": "IntrinsicTypeSpec", - "IntrinsicTypeSpec": "0x55eadb4ab330-IntrinsicTypeSpec" + "IntrinsicTypeSpec": "0x55dbc10fd300-IntrinsicTypeSpec" }, { - "id": "0x55eadb4ab330-IntrinsicTypeSpec", + "id": "0x55dbc10fd300-IntrinsicTypeSpec", "variantKey": "IntegerTypeSpec", - "IntegerTypeSpec": "0x55eadb4ab330-IntegerTypeSpec" + "IntegerTypeSpec": "0x55dbc10fd300-IntegerTypeSpec" }, { - "id": "0x55eadb4ab330-IntegerTypeSpec" + "id": "0x55dbc10fd300-IntegerTypeSpec" }, { - "id": "0x55eadb4adae0-EntityDecl", - "Name": "0x55eadb4adb98-Name" + "id": "0x55dbc1101950-EntityDecl", + "Name": "0x55dbc1101a08-Name" }, { - "id": "0x55eadb4adb98-Name", + "id": "0x55dbc1101a08-Name", "source": "ni" }, { - "id": "0x55eadb4ad9f0-EntityDecl", - "Name": "0x55eadb4adaa8-Name" + "id": "0x55dbc1101860-EntityDecl", + "Name": "0x55dbc1101918-Name" }, { - "id": "0x55eadb4adaa8-Name", + "id": "0x55dbc1101918-Name", "source": "nl" }, { - "id": "0x55eadb4a4260-DeclarationConstruct", + "id": "0x55dbc10e9830-DeclarationConstruct", "variantKey": "SpecificationConstruct", - "SpecificationConstruct": "0x55eadb4a4260-SpecificationConstruct" + "SpecificationConstruct": "0x55dbc10e9830-SpecificationConstruct" }, { - "id": "0x55eadb4a4260-SpecificationConstruct", + "id": "0x55dbc10e9830-SpecificationConstruct", "variantKey": "Statement", - "Statement": "0x55eadb4a4260-Statement" + "Statement": "0x55dbc10e9830-Statement" }, { - "id": "0x55eadb4a4260-Statement", - "statement": "0x55eadb49fe00-TypeDeclarationStmt", + "id": "0x55dbc10e9830-Statement", + "statement": "0x55dbc10daa90-TypeDeclarationStmt", "source": "integer :: i, j" }, { - "id": "0x55eadb49fe00-TypeDeclarationStmt", - "DeclarationTypeSpec": "0x55eadb49fe30-DeclarationTypeSpec", + "id": "0x55dbc10daa90-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x55dbc10daac0-DeclarationTypeSpec", "EntityDecl": [ - "0x55eadb4adcc0-EntityDecl", - "0x55eadb4adbd0-EntityDecl" + "0x55dbc10ff9d0-EntityDecl", + "0x55dbc10ff8e0-EntityDecl" ] }, { - "id": "0x55eadb49fe30-DeclarationTypeSpec", + "id": "0x55dbc10daac0-DeclarationTypeSpec", "variantKey": "IntrinsicTypeSpec", - "IntrinsicTypeSpec": "0x55eadb49fe30-IntrinsicTypeSpec" + "IntrinsicTypeSpec": "0x55dbc10daac0-IntrinsicTypeSpec" }, { - "id": "0x55eadb49fe30-IntrinsicTypeSpec", + "id": "0x55dbc10daac0-IntrinsicTypeSpec", "variantKey": "IntegerTypeSpec", - "IntegerTypeSpec": "0x55eadb49fe30-IntegerTypeSpec" + "IntegerTypeSpec": "0x55dbc10daac0-IntegerTypeSpec" }, { - "id": "0x55eadb49fe30-IntegerTypeSpec" + "id": "0x55dbc10daac0-IntegerTypeSpec" }, { - "id": "0x55eadb4adcc0-EntityDecl", - "Name": "0x55eadb4add78-Name" + "id": "0x55dbc10ff9d0-EntityDecl", + "Name": "0x55dbc10ffa88-Name" }, { - "id": "0x55eadb4add78-Name", + "id": "0x55dbc10ffa88-Name", "source": "i" }, { - "id": "0x55eadb4adbd0-EntityDecl", - "Name": "0x55eadb4adc88-Name" + "id": "0x55dbc10ff8e0-EntityDecl", + "Name": "0x55dbc10ff998-Name" }, { - "id": "0x55eadb4adc88-Name", + "id": "0x55dbc10ff998-Name", "source": "j" }, { - "id": "0x55eadb4b46e8-ExecutionPart", + "id": "0x55dbc1106e78-ExecutionPart", "ExecutionPartConstruct": [ - "0x55eadb4a9a90-ExecutionPartConstruct", - "0x55eadb4a56b0-ExecutionPartConstruct" + "0x55dbc1100af0-ExecutionPartConstruct", + "0x55dbc10e9e90-ExecutionPartConstruct" ] }, { - "id": "0x55eadb4b46e8-ExecutionPartConstruct" + "id": "0x55dbc1106e78-ExecutionPartConstruct" }, { - "id": "0x55eadb4a9a90-ExecutionPartConstruct", + "id": "0x55dbc1100af0-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x55eadb4a9a90-ExecutableConstruct" + "ExecutableConstruct": "0x55dbc1100af0-ExecutableConstruct" }, { - "id": "0x55eadb4a9a90-ExecutableConstruct", + "id": "0x55dbc1100af0-ExecutableConstruct", "variantKey": "DoConstruct", - "DoConstruct": "0x55eadb4b31a0-DoConstruct" + "DoConstruct": "0x55dbc1105270-DoConstruct" }, { - "id": "0x55eadb4b31a0-DoConstruct", - "Statement": "0x55eadb4b31f8-Statement", + "id": "0x55dbc1105270-DoConstruct", + "Statement": "0x55dbc11052c8-Statement", "ExecutionPartConstruct": [ - "0x55eadb4a68e0-ExecutionPartConstruct" + "0x55dbc10f7b70-ExecutionPartConstruct" ], - "Statement": "0x55eadb4b31a0-Statement" + "Statement": "0x55dbc1105270-Statement" }, { - "id": "0x55eadb4b31f8-Statement", - "statement": "0x55eadb4b3208-NonLabelDoStmt", + "id": "0x55dbc11052c8-Statement", + "statement": "0x55dbc11052d8-NonLabelDoStmt", "source": "do i = 1, ni" }, { - "id": "0x55eadb4b3208-NonLabelDoStmt", - "LoopControl": "0x55eadb4b3208-LoopControl" + "id": "0x55dbc11052d8-NonLabelDoStmt", + "LoopControl": "0x55dbc11052d8-LoopControl" }, { - "id": "0x55eadb4b3208-LoopControl", + "id": "0x55dbc11052d8-LoopControl", "variantKey": "LoopBounds", - "LoopBounds": "0x55eadb4b3208-LoopBounds" + "LoopBounds": "0x55dbc11052d8-LoopBounds" }, { - "id": "0x55eadb4b3208-LoopBounds", - "var": "0x55eadb4b3208-Name", - "lower": "0x55eadb4adda0-Expr", - "upper": "0x55eadb4ade80-Expr" + "id": "0x55dbc11052d8-LoopBounds", + "var": "0x55dbc11052d8-Name", + "lower": "0x55dbc10ffab0-Expr", + "upper": "0x55dbc10ffb90-Expr" }, { - "id": "0x55eadb4b3208-Name", + "id": "0x55dbc11052d8-Name", "source": "i" }, { - "id": "0x55eadb4adda0-Expr", + "id": "0x55dbc10ffab0-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55eadb4addc0-LiteralConstant" + "LiteralConstant": "0x55dbc10ffad0-LiteralConstant" }, { - "id": "0x55eadb4addc0-LiteralConstant", + "id": "0x55dbc10ffad0-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55eadb4addc0-IntLiteralConstant" + "IntLiteralConstant": "0x55dbc10ffad0-IntLiteralConstant" }, { - "id": "0x55eadb4addc0-IntLiteralConstant", + "id": "0x55dbc10ffad0-IntLiteralConstant", "CharBlock": "1" }, { - "id": "0x55eadb4ade80-Expr", + "id": "0x55dbc10ffb90-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4aaa00-Designator" + "Designator": "0x55dbc10fc740-Designator" }, { - "id": "0x55eadb4aaa00-Designator", + "id": "0x55dbc10fc740-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4aaa10-DataRef" + "DataRef": "0x55dbc10fc750-DataRef" }, { - "id": "0x55eadb4aaa10-DataRef", + "id": "0x55dbc10fc750-DataRef", "variantKey": "Name", - "Name": "0x55eadb4aaa10-Name" + "Name": "0x55dbc10fc750-Name" }, { - "id": "0x55eadb4aaa10-Name", + "id": "0x55dbc10fc750-Name", "source": "ni" }, { - "id": "0x55eadb4b31e0-ExecutionPartConstruct" + "id": "0x55dbc11052b0-ExecutionPartConstruct" }, { - "id": "0x55eadb4a68e0-ExecutionPartConstruct", + "id": "0x55dbc10f7b70-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x55eadb4a68e0-ExecutableConstruct" + "ExecutableConstruct": "0x55dbc10f7b70-ExecutableConstruct" }, { - "id": "0x55eadb4a68e0-ExecutableConstruct", + "id": "0x55dbc10f7b70-ExecutableConstruct", "variantKey": "DoConstruct", - "DoConstruct": "0x55eadb4b3080-DoConstruct" + "DoConstruct": "0x55dbc1105150-DoConstruct" }, { - "id": "0x55eadb4b3080-DoConstruct", - "Statement": "0x55eadb4b30d8-Statement", + "id": "0x55dbc1105150-DoConstruct", + "Statement": "0x55dbc11051a8-Statement", "ExecutionPartConstruct": [ - "0x55eadb4afe10-ExecutionPartConstruct", - "0x55eadb4aa120-ExecutionPartConstruct" + "0x55dbc10fba00-ExecutionPartConstruct", + "0x55dbc1102da0-ExecutionPartConstruct" ], - "Statement": "0x55eadb4b3080-Statement" + "Statement": "0x55dbc1105150-Statement" }, { - "id": "0x55eadb4b30d8-Statement", - "statement": "0x55eadb4b30e8-NonLabelDoStmt", + "id": "0x55dbc11051a8-Statement", + "statement": "0x55dbc11051b8-NonLabelDoStmt", "source": "do j = 1, nl" }, { - "id": "0x55eadb4b30e8-NonLabelDoStmt", - "LoopControl": "0x55eadb4b30e8-LoopControl" + "id": "0x55dbc11051b8-NonLabelDoStmt", + "LoopControl": "0x55dbc11051b8-LoopControl" }, { - "id": "0x55eadb4b30e8-LoopControl", + "id": "0x55dbc11051b8-LoopControl", "variantKey": "LoopBounds", - "LoopBounds": "0x55eadb4b30e8-LoopBounds" + "LoopBounds": "0x55dbc11051b8-LoopBounds" }, { - "id": "0x55eadb4b30e8-LoopBounds", - "var": "0x55eadb4b30e8-Name", - "lower": "0x55eadb4adf60-Expr", - "upper": "0x55eadb4ae040-Expr" + "id": "0x55dbc11051b8-LoopBounds", + "var": "0x55dbc11051b8-Name", + "lower": "0x55dbc10ffc70-Expr", + "upper": "0x55dbc10ffd50-Expr" }, { - "id": "0x55eadb4b30e8-Name", + "id": "0x55dbc11051b8-Name", "source": "j" }, { - "id": "0x55eadb4adf60-Expr", + "id": "0x55dbc10ffc70-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55eadb4adf80-LiteralConstant" + "LiteralConstant": "0x55dbc10ffc90-LiteralConstant" }, { - "id": "0x55eadb4adf80-LiteralConstant", + "id": "0x55dbc10ffc90-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55eadb4adf80-IntLiteralConstant" + "IntLiteralConstant": "0x55dbc10ffc90-IntLiteralConstant" }, { - "id": "0x55eadb4adf80-IntLiteralConstant", + "id": "0x55dbc10ffc90-IntLiteralConstant", "CharBlock": "1" }, { - "id": "0x55eadb4ae040-Expr", + "id": "0x55dbc10ffd50-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4a6a40-Designator" + "Designator": "0x55dbc10f86d0-Designator" }, { - "id": "0x55eadb4a6a40-Designator", + "id": "0x55dbc10f86d0-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4a6a50-DataRef" + "DataRef": "0x55dbc10f86e0-DataRef" }, { - "id": "0x55eadb4a6a50-DataRef", + "id": "0x55dbc10f86e0-DataRef", "variantKey": "Name", - "Name": "0x55eadb4a6a50-Name" + "Name": "0x55dbc10f86e0-Name" }, { - "id": "0x55eadb4a6a50-Name", + "id": "0x55dbc10f86e0-Name", "source": "nl" }, { - "id": "0x55eadb4b30c0-ExecutionPartConstruct" + "id": "0x55dbc1105190-ExecutionPartConstruct" }, { - "id": "0x55eadb4afe10-ExecutionPartConstruct", + "id": "0x55dbc10fba00-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x55eadb4afe10-ExecutableConstruct" + "ExecutableConstruct": "0x55dbc10fba00-ExecutableConstruct" }, { - "id": "0x55eadb4afe10-ExecutableConstruct", + "id": "0x55dbc10fba00-ExecutableConstruct", "variantKey": "Statement", - "Statement": "0x55eadb4afe10-Statement" + "Statement": "0x55dbc10fba00-Statement" }, { - "id": "0x55eadb4afe10-Statement", - "statement": "0x55eadb4afe20-ActionStmt", + "id": "0x55dbc10fba00-Statement", + "statement": "0x55dbc10fba10-ActionStmt", "source": "write(0, \"(f0.2,1x)\", advance = 'no') g(j, i)" }, { - "id": "0x55eadb4afe20-ActionStmt", + "id": "0x55dbc10fba10-ActionStmt", "variantKey": "WriteStmt", - "WriteStmt": "0x55eadb4b00e0-WriteStmt" + "WriteStmt": "0x55dbc11021c0-WriteStmt" }, { - "id": "0x55eadb4b00e0-WriteStmt", - "iounit": "0x55eadb4b00e0-IoUnit", - "format": "0x55eadb4b0110-Format", + "id": "0x55dbc11021c0-WriteStmt", + "iounit": "0x55dbc11021c0-IoUnit", + "format": "0x55dbc11021f0-Format", "controls": [ - "0x55eadb4ae700-IoControlSpec" + "0x55dbc1100410-IoControlSpec" ], "items": [ - "0x55eadb4b0000-OutputItem" + "0x55dbc11020e0-OutputItem" ] }, { - "id": "0x55eadb4b00e0-IoUnit", + "id": "0x55dbc11021c0-IoUnit", "variantKey": "Expr", - "Expr": "0x55eadb4ae120-Expr" + "Expr": "0x55dbc10ffe30-Expr" }, { - "id": "0x55eadb4ae120-Expr", + "id": "0x55dbc10ffe30-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55eadb4ae140-LiteralConstant" + "LiteralConstant": "0x55dbc10ffe50-LiteralConstant" }, { - "id": "0x55eadb4ae140-LiteralConstant", + "id": "0x55dbc10ffe50-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55eadb4ae140-IntLiteralConstant" + "IntLiteralConstant": "0x55dbc10ffe50-IntLiteralConstant" }, { - "id": "0x55eadb4ae140-IntLiteralConstant", + "id": "0x55dbc10ffe50-IntLiteralConstant", "CharBlock": "0" }, { - "id": "0x55eadb4b0110-Format", + "id": "0x55dbc11021f0-Format", "variantKey": "Expr", - "Expr": "0x55eadb4b0110-Expr" + "Expr": "0x55dbc11021f0-Expr" }, { - "id": "0x55eadb4b0110-Expr", + "id": "0x55dbc11021f0-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55eadb4b0130-LiteralConstant" + "LiteralConstant": "0x55dbc1102210-LiteralConstant" }, { - "id": "0x55eadb4b0130-LiteralConstant", + "id": "0x55dbc1102210-LiteralConstant", "variantKey": "CharLiteralConstant", - "CharLiteralConstant": "0x55eadb4b0130-CharLiteralConstant" + "CharLiteralConstant": "0x55dbc1102210-CharLiteralConstant" }, { - "id": "0x55eadb4b0130-CharLiteralConstant", + "id": "0x55dbc1102210-CharLiteralConstant", "string": "(f0.2,1x)" }, { - "id": "0x55eadb4ae700-IoControlSpec", + "id": "0x55dbc1100410-IoControlSpec", "variantKey": "CharExpr", - "CharExpr": "0x55eadb4ae700-CharExpr" + "CharExpr": "0x55dbc1100410-CharExpr" }, { - "id": "0x55eadb4ae700-CharExpr", - "Kind = Advance": "0x55eadb4ae708-Kind = Advance", - "Expr": "0x55eadb4ae200-Expr", - "kind": "Advance" + "id": "0x55dbc1100410-CharExpr", + "Kind": "0x55dbc1100418-Kind", + "Expr": "0x55dbc10fff10-Expr" }, { - "id": "0x55eadb4ae708-Kind = Advance", + "id": "0x55dbc1100418-Kind", "disambiguation": "Fortran::parser::IoControlSpec::CharExpr::Kind", "value": "Advance" }, { - "id": "0x55eadb4ae200-Expr", + "id": "0x55dbc10fff10-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55eadb4ae220-LiteralConstant" + "LiteralConstant": "0x55dbc10fff30-LiteralConstant" }, { - "id": "0x55eadb4ae220-LiteralConstant", + "id": "0x55dbc10fff30-LiteralConstant", "variantKey": "CharLiteralConstant", - "CharLiteralConstant": "0x55eadb4ae220-CharLiteralConstant" + "CharLiteralConstant": "0x55dbc10fff30-CharLiteralConstant" }, { - "id": "0x55eadb4ae220-CharLiteralConstant", + "id": "0x55dbc10fff30-CharLiteralConstant", "string": "no" }, { - "id": "0x55eadb4b0000-OutputItem", + "id": "0x55dbc11020e0-OutputItem", "variantKey": "Expr", - "Expr": "0x55eadb4b0000-Expr" + "Expr": "0x55dbc11020e0-Expr" }, { - "id": "0x55eadb4b0000-Expr", + "id": "0x55dbc11020e0-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4ce780-Designator" + "Designator": "0x55dbc11209e0-Designator" }, { - "id": "0x55eadb4ce780-Designator", + "id": "0x55dbc11209e0-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4ce790-DataRef" + "DataRef": "0x55dbc11209f0-DataRef" }, { - "id": "0x55eadb4ce790-DataRef", + "id": "0x55dbc11209f0-DataRef", "variantKey": "ArrayElement", - "ArrayElement": "0x55eadb49f410-ArrayElement" + "ArrayElement": "0x55dbc1114350-ArrayElement" }, { - "id": "0x55eadb49f410-ArrayElement", - "base": "0x55eadb49f410-DataRef", + "id": "0x55dbc1114350-ArrayElement", + "base": "0x55dbc1114350-DataRef", "subscripts": [ - "0x55eadb4dbca0-SectionSubscript", - "0x55eadb56f140-SectionSubscript" + "0x55dbc1114600-SectionSubscript", + "0x55dbc11152d0-SectionSubscript" ] }, { - "id": "0x55eadb49f410-DataRef", + "id": "0x55dbc1114350-DataRef", "variantKey": "Name", - "Name": "0x55eadb49f410-Name" + "Name": "0x55dbc1114350-Name" }, { - "id": "0x55eadb49f410-Name", + "id": "0x55dbc1114350-Name", "source": "g" }, { - "id": "0x55eadb4dbca0-SectionSubscript", + "id": "0x55dbc1114600-SectionSubscript", "variantKey": "Expr", - "Expr": "0x55eadb4a5020-Expr" + "Expr": "0x55dbc10f6b90-Expr" }, { - "id": "0x55eadb4a5020-Expr", + "id": "0x55dbc10f6b90-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4aea70-Designator" + "Designator": "0x55dbc10ff840-Designator" }, { - "id": "0x55eadb4aea70-Designator", + "id": "0x55dbc10ff840-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4aea80-DataRef" + "DataRef": "0x55dbc10ff850-DataRef" }, { - "id": "0x55eadb4aea80-DataRef", + "id": "0x55dbc10ff850-DataRef", "variantKey": "Name", - "Name": "0x55eadb4aea80-Name" + "Name": "0x55dbc10ff850-Name" }, { - "id": "0x55eadb4aea80-Name", + "id": "0x55dbc10ff850-Name", "source": "j" }, { - "id": "0x55eadb56f140-SectionSubscript", + "id": "0x55dbc11152d0-SectionSubscript", "variantKey": "Expr", - "Expr": "0x55eadb4a5100-Expr" + "Expr": "0x55dbc10f6c70-Expr" }, { - "id": "0x55eadb4a5100-Expr", + "id": "0x55dbc10f6c70-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4aed30-Designator" + "Designator": "0x55dbc1100500-Designator" }, { - "id": "0x55eadb4aed30-Designator", + "id": "0x55dbc1100500-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4aed40-DataRef" + "DataRef": "0x55dbc1100510-DataRef" }, { - "id": "0x55eadb4aed40-DataRef", + "id": "0x55dbc1100510-DataRef", "variantKey": "Name", - "Name": "0x55eadb4aed40-Name" + "Name": "0x55dbc1100510-Name" }, { - "id": "0x55eadb4aed40-Name", + "id": "0x55dbc1100510-Name", "source": "i" }, { - "id": "0x55eadb4aa120-ExecutionPartConstruct", + "id": "0x55dbc1102da0-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x55eadb4aa120-ExecutableConstruct" + "ExecutableConstruct": "0x55dbc1102da0-ExecutableConstruct" }, { - "id": "0x55eadb4aa120-ExecutableConstruct", + "id": "0x55dbc1102da0-ExecutableConstruct", "variantKey": "IfConstruct", - "IfConstruct": "0x55eadb4b2f60-IfConstruct" + "IfConstruct": "0x55dbc1105030-IfConstruct" }, { - "id": "0x55eadb4b2f60-IfConstruct", - "Statement": "0x55eadb4b3030-Statement", + "id": "0x55dbc1105030-IfConstruct", + "Statement": "0x55dbc1105100-Statement", "ExecutionPartConstruct": [ - "0x55eadb4a6f30-ExecutionPartConstruct" + "0x55dbc10f7330-ExecutionPartConstruct" ], - "Statement": "0x55eadb4b2f60-Statement" + "Statement": "0x55dbc1105030-Statement" }, { - "id": "0x55eadb4b3030-Statement", - "statement": "0x55eadb4b3040-IfThenStmt", + "id": "0x55dbc1105100-Statement", + "statement": "0x55dbc1105110-IfThenStmt", "source": "if(mod(((i - 1) * ni) + j - 1, 20) == 0) then" }, { - "id": "0x55eadb4b3040-IfThenStmt", - "Expr": "0x55eadb4b2c50-Expr" + "id": "0x55dbc1105110-IfThenStmt", + "Expr": "0x55dbc1104d20-Expr" }, { - "id": "0x55eadb4b2c50-Expr", + "id": "0x55dbc1104d20-Expr", "variantKey": "EQ", - "EQ": "0x55eadb4b2c70-EQ" + "EQ": "0x55dbc1104d40-EQ" }, { - "id": "0x55eadb4b2c70-EQ", - "left": "0x55eadb4b2b70-Expr", - "right": "0x55eadb4b2a90-Expr", + "id": "0x55dbc1104d40-EQ", + "left": "0x55dbc1104c40-Expr", + "right": "0x55dbc1104b60-Expr", "op": "EQ" }, { - "id": "0x55eadb4b2b70-Expr", + "id": "0x55dbc1104c40-Expr", "variantKey": "FunctionReference", - "FunctionReference": "0x55eadb492c50-FunctionReference" + "FunctionReference": "0x55dbc10f7f40-FunctionReference" }, { - "id": "0x55eadb492c50-FunctionReference", - "Call": "0x55eadb492c50-Call" + "id": "0x55dbc10f7f40-FunctionReference", + "Call": "0x55dbc10f7f40-Call" }, { - "id": "0x55eadb492c50-Call", - "ProcedureDesignator": "0x55eadb492c68-ProcedureDesignator", + "id": "0x55dbc10f7f40-Call", + "ProcedureDesignator": "0x55dbc10f7f58-ProcedureDesignator", "ActualArgSpec": [ - "0x55eadb4ae5f0-ActualArgSpec", - "0x55eadb4b1130-ActualArgSpec" + "0x55dbc1100300-ActualArgSpec", + "0x55dbc1103270-ActualArgSpec" ] }, { - "id": "0x55eadb492c68-ProcedureDesignator", + "id": "0x55dbc10f7f58-ProcedureDesignator", "variantKey": "Name", - "Name": "0x55eadb492c68-Name" + "Name": "0x55dbc10f7f58-Name" }, { - "id": "0x55eadb492c68-Name", + "id": "0x55dbc10f7f58-Name", "source": "mod" }, { - "id": "0x55eadb4ae5f0-ActualArgSpec", - "ActualArg": "0x55eadb4ae5f0-ActualArg" + "id": "0x55dbc1100300-ActualArgSpec", + "ActualArg": "0x55dbc1100300-ActualArg" }, { - "id": "0x55eadb4ae5f0-ActualArg", + "id": "0x55dbc1100300-ActualArg", "variantKey": "Expr", - "Expr": "0x55eadb4b28d0-Expr" + "Expr": "0x55dbc11049a0-Expr" }, { - "id": "0x55eadb4b28d0-Expr", + "id": "0x55dbc11049a0-Expr", "variantKey": "Subtract", - "Subtract": "0x55eadb4b28f0-Subtract" + "Subtract": "0x55dbc11049c0-Subtract" }, { - "id": "0x55eadb4b28f0-Subtract", - "left": "0x55eadb4b2710-Expr", - "right": "0x55eadb4b2630-Expr", + "id": "0x55dbc11049c0-Subtract", + "left": "0x55dbc11047e0-Expr", + "right": "0x55dbc1104700-Expr", "op": "SUBTRACT" }, { - "id": "0x55eadb4b2710-Expr", + "id": "0x55dbc11047e0-Expr", "variantKey": "Add", - "Add": "0x55eadb4b2730-Add" + "Add": "0x55dbc1104800-Add" }, { - "id": "0x55eadb4b2730-Add", - "left": "0x55eadb4b0fe0-Expr", - "right": "0x55eadb4b0230-Expr", + "id": "0x55dbc1104800-Add", + "left": "0x55dbc1103120-Expr", + "right": "0x55dbc1102310-Expr", "op": "ADD" }, { - "id": "0x55eadb4b0fe0-Expr", + "id": "0x55dbc1103120-Expr", "variantKey": "Parentheses", - "Parentheses": "0x55eadb4b1000-Parentheses" + "Parentheses": "0x55dbc1103140-Parentheses" }, { - "id": "0x55eadb4b1000-Parentheses", - "Expr": "0x55eadb4b2550-Expr", + "id": "0x55dbc1103140-Parentheses", + "Expr": "0x55dbc1104620-Expr", "op": "PARENTHESES" }, { - "id": "0x55eadb4b2550-Expr", + "id": "0x55dbc1104620-Expr", "variantKey": "Multiply", - "Multiply": "0x55eadb4b2570-Multiply" + "Multiply": "0x55dbc1104640-Multiply" }, { - "id": "0x55eadb4b2570-Multiply", - "left": "0x55eadb4b03f0-Expr", - "right": "0x55eadb4b05b0-Expr", + "id": "0x55dbc1104640-Multiply", + "left": "0x55dbc11024d0-Expr", + "right": "0x55dbc1102690-Expr", "op": "MULTIPLY" }, { - "id": "0x55eadb4b03f0-Expr", + "id": "0x55dbc11024d0-Expr", "variantKey": "Parentheses", - "Parentheses": "0x55eadb4b0410-Parentheses" + "Parentheses": "0x55dbc11024f0-Parentheses" }, { - "id": "0x55eadb4b0410-Parentheses", - "Expr": "0x55eadb4b04d0-Expr", + "id": "0x55dbc11024f0-Parentheses", + "Expr": "0x55dbc11025b0-Expr", "op": "PARENTHESES" }, { - "id": "0x55eadb4b04d0-Expr", + "id": "0x55dbc11025b0-Expr", "variantKey": "Subtract", - "Subtract": "0x55eadb4b04f0-Subtract" + "Subtract": "0x55dbc11025d0-Subtract" }, { - "id": "0x55eadb4b04f0-Subtract", - "left": "0x55eadb4b2400-Expr", - "right": "0x55eadb4b0310-Expr", + "id": "0x55dbc11025d0-Subtract", + "left": "0x55dbc11044d0-Expr", + "right": "0x55dbc11023f0-Expr", "op": "SUBTRACT" }, { - "id": "0x55eadb4b2400-Expr", + "id": "0x55dbc11044d0-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4acdf0-Designator" + "Designator": "0x55dbc10fd670-Designator" }, { - "id": "0x55eadb4acdf0-Designator", + "id": "0x55dbc10fd670-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4ace00-DataRef" + "DataRef": "0x55dbc10fd680-DataRef" }, { - "id": "0x55eadb4ace00-DataRef", + "id": "0x55dbc10fd680-DataRef", "variantKey": "Name", - "Name": "0x55eadb4ace00-Name" + "Name": "0x55dbc10fd680-Name" }, { - "id": "0x55eadb4ace00-Name", + "id": "0x55dbc10fd680-Name", "source": "i" }, { - "id": "0x55eadb4b0310-Expr", + "id": "0x55dbc11023f0-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55eadb4b0330-LiteralConstant" + "LiteralConstant": "0x55dbc1102410-LiteralConstant" }, { - "id": "0x55eadb4b0330-LiteralConstant", + "id": "0x55dbc1102410-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55eadb4b0330-IntLiteralConstant" + "IntLiteralConstant": "0x55dbc1102410-IntLiteralConstant" }, { - "id": "0x55eadb4b0330-IntLiteralConstant", + "id": "0x55dbc1102410-IntLiteralConstant", "CharBlock": "1" }, { - "id": "0x55eadb4b05b0-Expr", + "id": "0x55dbc1102690-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4a02a0-Designator" + "Designator": "0x55dbc10eab80-Designator" }, { - "id": "0x55eadb4a02a0-Designator", + "id": "0x55dbc10eab80-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4a02b0-DataRef" + "DataRef": "0x55dbc10eab90-DataRef" }, { - "id": "0x55eadb4a02b0-DataRef", + "id": "0x55dbc10eab90-DataRef", "variantKey": "Name", - "Name": "0x55eadb4a02b0-Name" + "Name": "0x55dbc10eab90-Name" }, { - "id": "0x55eadb4a02b0-Name", + "id": "0x55dbc10eab90-Name", "source": "ni" }, { - "id": "0x55eadb4b0230-Expr", + "id": "0x55dbc1102310-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4aa170-Designator" + "Designator": "0x55dbc1100d90-Designator" }, { - "id": "0x55eadb4aa170-Designator", + "id": "0x55dbc1100d90-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4aa180-DataRef" + "DataRef": "0x55dbc1100da0-DataRef" }, { - "id": "0x55eadb4aa180-DataRef", + "id": "0x55dbc1100da0-DataRef", "variantKey": "Name", - "Name": "0x55eadb4aa180-Name" + "Name": "0x55dbc1100da0-Name" }, { - "id": "0x55eadb4aa180-Name", + "id": "0x55dbc1100da0-Name", "source": "j" }, { - "id": "0x55eadb4b2630-Expr", + "id": "0x55dbc1104700-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55eadb4b2650-LiteralConstant" + "LiteralConstant": "0x55dbc1104720-LiteralConstant" }, { - "id": "0x55eadb4b2650-LiteralConstant", + "id": "0x55dbc1104720-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55eadb4b2650-IntLiteralConstant" + "IntLiteralConstant": "0x55dbc1104720-IntLiteralConstant" }, { - "id": "0x55eadb4b2650-IntLiteralConstant", + "id": "0x55dbc1104720-IntLiteralConstant", "CharBlock": "1" }, { - "id": "0x55eadb4b1130-ActualArgSpec", - "ActualArg": "0x55eadb4b1130-ActualArg" + "id": "0x55dbc1103270-ActualArgSpec", + "ActualArg": "0x55dbc1103270-ActualArg" }, { - "id": "0x55eadb4b1130-ActualArg", + "id": "0x55dbc1103270-ActualArg", "variantKey": "Expr", - "Expr": "0x55eadb4b29b0-Expr" + "Expr": "0x55dbc1104a80-Expr" }, { - "id": "0x55eadb4b29b0-Expr", + "id": "0x55dbc1104a80-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55eadb4b29d0-LiteralConstant" + "LiteralConstant": "0x55dbc1104aa0-LiteralConstant" }, { - "id": "0x55eadb4b29d0-LiteralConstant", + "id": "0x55dbc1104aa0-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55eadb4b29d0-IntLiteralConstant" + "IntLiteralConstant": "0x55dbc1104aa0-IntLiteralConstant" }, { - "id": "0x55eadb4b29d0-IntLiteralConstant", + "id": "0x55dbc1104aa0-IntLiteralConstant", "CharBlock": "20" }, { - "id": "0x55eadb4b2a90-Expr", + "id": "0x55dbc1104b60-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55eadb4b2ab0-LiteralConstant" + "LiteralConstant": "0x55dbc1104b80-LiteralConstant" }, { - "id": "0x55eadb4b2ab0-LiteralConstant", + "id": "0x55dbc1104b80-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55eadb4b2ab0-IntLiteralConstant" + "IntLiteralConstant": "0x55dbc1104b80-IntLiteralConstant" }, { - "id": "0x55eadb4b2ab0-IntLiteralConstant", + "id": "0x55dbc1104b80-IntLiteralConstant", "CharBlock": "0" }, { - "id": "0x55eadb4b3018-ExecutionPartConstruct" + "id": "0x55dbc11050e8-ExecutionPartConstruct" }, { - "id": "0x55eadb4a6f30-ExecutionPartConstruct", + "id": "0x55dbc10f7330-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x55eadb4a6f30-ExecutableConstruct" + "ExecutableConstruct": "0x55dbc10f7330-ExecutableConstruct" }, { - "id": "0x55eadb4a6f30-ExecutableConstruct", + "id": "0x55dbc10f7330-ExecutableConstruct", "variantKey": "Statement", - "Statement": "0x55eadb4a6f30-Statement" + "Statement": "0x55dbc10f7330-Statement" }, { - "id": "0x55eadb4a6f30-Statement", - "statement": "0x55eadb4a6f40-ActionStmt", + "id": "0x55dbc10f7330-Statement", + "statement": "0x55dbc10f7340-ActionStmt", "source": "write(0, *)" }, { - "id": "0x55eadb4a6f40-ActionStmt", + "id": "0x55dbc10f7340-ActionStmt", "variantKey": "WriteStmt", - "WriteStmt": "0x55eadb4b2e10-WriteStmt" + "WriteStmt": "0x55dbc1104ee0-WriteStmt" }, { - "id": "0x55eadb4b2e10-WriteStmt", - "iounit": "0x55eadb4b2e10-IoUnit", - "format": "0x55eadb4b2e40-Format", + "id": "0x55dbc1104ee0-WriteStmt", + "iounit": "0x55dbc1104ee0-IoUnit", + "format": "0x55dbc1104f10-Format", "controls": [], "items": [] }, { - "id": "0x55eadb4b2e10-IoUnit", + "id": "0x55dbc1104ee0-IoUnit", "variantKey": "Expr", - "Expr": "0x55eadb4b2d30-Expr" + "Expr": "0x55dbc1104e00-Expr" }, { - "id": "0x55eadb4b2d30-Expr", + "id": "0x55dbc1104e00-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55eadb4b2d50-LiteralConstant" + "LiteralConstant": "0x55dbc1104e20-LiteralConstant" }, { - "id": "0x55eadb4b2d50-LiteralConstant", + "id": "0x55dbc1104e20-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55eadb4b2d50-IntLiteralConstant" + "IntLiteralConstant": "0x55dbc1104e20-IntLiteralConstant" }, { - "id": "0x55eadb4b2d50-IntLiteralConstant", + "id": "0x55dbc1104e20-IntLiteralConstant", "CharBlock": "0" }, { - "id": "0x55eadb4b2e40-Format", + "id": "0x55dbc1104f10-Format", "variantKey": "Star", - "Star": "0x55eadb4b2e40-Star" + "Star": "0x55dbc1104f10-Star" }, { - "id": "0x55eadb4b2e40-Star" + "id": "0x55dbc1104f10-Star" }, { - "id": "0x55eadb4b2f60-Statement", - "statement": "0x55eadb4b2f70-EndIfStmt", + "id": "0x55dbc1105030-Statement", + "statement": "0x55dbc1105040-EndIfStmt", "source": "end if" }, { - "id": "0x55eadb4b2f70-EndIfStmt" + "id": "0x55dbc1105040-EndIfStmt" }, { - "id": "0x55eadb4b3080-Statement", - "statement": "0x55eadb4b3090-EndDoStmt", + "id": "0x55dbc1105150-Statement", + "statement": "0x55dbc1105160-EndDoStmt", "source": "end do" }, { - "id": "0x55eadb4b3090-EndDoStmt" + "id": "0x55dbc1105160-EndDoStmt" }, { - "id": "0x55eadb4b31a0-Statement", - "statement": "0x55eadb4b31b0-EndDoStmt", + "id": "0x55dbc1105270-Statement", + "statement": "0x55dbc1105280-EndDoStmt", "source": "end do" }, { - "id": "0x55eadb4b31b0-EndDoStmt" + "id": "0x55dbc1105280-EndDoStmt" }, { - "id": "0x55eadb4a56b0-ExecutionPartConstruct", + "id": "0x55dbc10e9e90-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x55eadb4a56b0-ExecutableConstruct" + "ExecutableConstruct": "0x55dbc10e9e90-ExecutableConstruct" }, { - "id": "0x55eadb4a56b0-ExecutableConstruct", + "id": "0x55dbc10e9e90-ExecutableConstruct", "variantKey": "Statement", - "Statement": "0x55eadb4a56b0-Statement" + "Statement": "0x55dbc10e9e90-Statement" }, { - "id": "0x55eadb4a56b0-Statement", - "statement": "0x55eadb4a56c0-ActionStmt", + "id": "0x55dbc10e9e90-Statement", + "statement": "0x55dbc10e9ea0-ActionStmt", "source": "write(0, *)" }, { - "id": "0x55eadb4a56c0-ActionStmt", + "id": "0x55dbc10e9ea0-ActionStmt", "variantKey": "WriteStmt", - "WriteStmt": "0x55eadb4b33a0-WriteStmt" + "WriteStmt": "0x55dbc1105470-WriteStmt" }, { - "id": "0x55eadb4b33a0-WriteStmt", - "iounit": "0x55eadb4b33a0-IoUnit", - "format": "0x55eadb4b33d0-Format", + "id": "0x55dbc1105470-WriteStmt", + "iounit": "0x55dbc1105470-IoUnit", + "format": "0x55dbc11054a0-Format", "controls": [], "items": [] }, { - "id": "0x55eadb4b33a0-IoUnit", + "id": "0x55dbc1105470-IoUnit", "variantKey": "Expr", - "Expr": "0x55eadb4b32c0-Expr" + "Expr": "0x55dbc1105390-Expr" }, { - "id": "0x55eadb4b32c0-Expr", + "id": "0x55dbc1105390-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55eadb4b32e0-LiteralConstant" + "LiteralConstant": "0x55dbc11053b0-LiteralConstant" }, { - "id": "0x55eadb4b32e0-LiteralConstant", + "id": "0x55dbc11053b0-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55eadb4b32e0-IntLiteralConstant" + "IntLiteralConstant": "0x55dbc11053b0-IntLiteralConstant" }, { - "id": "0x55eadb4b32e0-IntLiteralConstant", + "id": "0x55dbc11053b0-IntLiteralConstant", "CharBlock": "0" }, { - "id": "0x55eadb4b33d0-Format", + "id": "0x55dbc11054a0-Format", "variantKey": "Star", - "Star": "0x55eadb4b33d0-Star" + "Star": "0x55dbc11054a0-Star" }, { - "id": "0x55eadb4b33d0-Star" + "id": "0x55dbc11054a0-Star" }, { - "id": "0x55eadb4b4660-Statement", - "statement": "0x55eadb4b4670-EndSubroutineStmt", + "id": "0x55dbc1106df0-Statement", + "statement": "0x55dbc1106e00-EndSubroutineStmt", "source": "end subroutine" }, { - "id": "0x55eadb4b4670-EndSubroutineStmt" + "id": "0x55dbc1106e00-EndSubroutineStmt" }, { - "id": "0x55eadb4af2b0-InternalSubprogram", + "id": "0x55dbc1107240-InternalSubprogram", "variantKey": "SubroutineSubprogram", - "SubroutineSubprogram": "0x55eadb4bd350-SubroutineSubprogram" + "SubroutineSubprogram": "0x55dbc110f620-SubroutineSubprogram" }, { - "id": "0x55eadb4bd350-SubroutineSubprogram", - "Statement": "0x55eadb4bd498-Statement", - "SpecificationPart": "0x55eadb4bd3f0-SpecificationPart", - "ExecutionPart": "0x55eadb4bd3d8-ExecutionPart", - "Statement": "0x55eadb4bd350-Statement" + "id": "0x55dbc110f620-SubroutineSubprogram", + "Statement": "0x55dbc110f768-Statement", + "SpecificationPart": "0x55dbc110f6c0-SpecificationPart", + "ExecutionPart": "0x55dbc110f6a8-ExecutionPart", + "Statement": "0x55dbc110f620-Statement" }, { - "id": "0x55eadb4bd498-Statement", - "statement": "0x55eadb4bd4a8-SubroutineStmt", + "id": "0x55dbc110f768-Statement", + "statement": "0x55dbc110f778-SubroutineStmt", "source": "subroutine kernel_3mm(ni, nj, nk, nl, nm, e, a, b, f, c, d, g)" }, { - "id": "0x55eadb4bd4a8-SubroutineStmt", - "Name": "0x55eadb4bd4e0-Name", + "id": "0x55dbc110f778-SubroutineStmt", + "Name": "0x55dbc110f7b0-Name", "DummyArg": [ - "0x55eadb4ab570-DummyArg", - "0x55eadb496960-DummyArg", - "0x55eadb4969d0-DummyArg", - "0x55eadb496a10-DummyArg", - "0x55eadb496a50-DummyArg", - "0x55eadb49fc30-DummyArg", - "0x55eadb498fe0-DummyArg", - "0x55eadb4a5ad0-DummyArg", - "0x55eadb4a62e0-DummyArg", - "0x55eadb4a6580-DummyArg", - "0x55eadb4966f0-DummyArg", - "0x55eadb496d60-DummyArg" + "0x55dbc10e8cb0-DummyArg", + "0x55dbc10e88b0-DummyArg", + "0x55dbc10e8920-DummyArg", + "0x55dbc10e8960-DummyArg", + "0x55dbc10e89a0-DummyArg", + "0x55dbc10fd540-DummyArg", + "0x55dbc10f1e70-DummyArg", + "0x55dbc10f1f30-DummyArg", + "0x55dbc10eaf70-DummyArg", + "0x55dbc10f7a20-DummyArg", + "0x55dbc10e8440-DummyArg", + "0x55dbc10e8640-DummyArg" ] }, { - "id": "0x55eadb4bd4e0-Name", + "id": "0x55dbc110f7b0-Name", "source": "kernel_3mm" }, { - "id": "0x55eadb4ab570-DummyArg", + "id": "0x55dbc10e8cb0-DummyArg", "variantKey": "Name", - "Name": "0x55eadb4ab570-Name" + "Name": "0x55dbc10e8cb0-Name" }, { - "id": "0x55eadb4ab570-Name", + "id": "0x55dbc10e8cb0-Name", "source": "ni" }, { - "id": "0x55eadb496960-DummyArg", + "id": "0x55dbc10e88b0-DummyArg", "variantKey": "Name", - "Name": "0x55eadb496960-Name" + "Name": "0x55dbc10e88b0-Name" }, { - "id": "0x55eadb496960-Name", + "id": "0x55dbc10e88b0-Name", "source": "nj" }, { - "id": "0x55eadb4969d0-DummyArg", + "id": "0x55dbc10e8920-DummyArg", "variantKey": "Name", - "Name": "0x55eadb4969d0-Name" + "Name": "0x55dbc10e8920-Name" }, { - "id": "0x55eadb4969d0-Name", + "id": "0x55dbc10e8920-Name", "source": "nk" }, { - "id": "0x55eadb496a10-DummyArg", + "id": "0x55dbc10e8960-DummyArg", "variantKey": "Name", - "Name": "0x55eadb496a10-Name" + "Name": "0x55dbc10e8960-Name" }, { - "id": "0x55eadb496a10-Name", + "id": "0x55dbc10e8960-Name", "source": "nl" }, { - "id": "0x55eadb496a50-DummyArg", + "id": "0x55dbc10e89a0-DummyArg", "variantKey": "Name", - "Name": "0x55eadb496a50-Name" + "Name": "0x55dbc10e89a0-Name" }, { - "id": "0x55eadb496a50-Name", + "id": "0x55dbc10e89a0-Name", "source": "nm" }, { - "id": "0x55eadb49fc30-DummyArg", + "id": "0x55dbc10fd540-DummyArg", "variantKey": "Name", - "Name": "0x55eadb49fc30-Name" + "Name": "0x55dbc10fd540-Name" }, { - "id": "0x55eadb49fc30-Name", + "id": "0x55dbc10fd540-Name", "source": "e" }, { - "id": "0x55eadb498fe0-DummyArg", + "id": "0x55dbc10f1e70-DummyArg", "variantKey": "Name", - "Name": "0x55eadb498fe0-Name" + "Name": "0x55dbc10f1e70-Name" }, { - "id": "0x55eadb498fe0-Name", + "id": "0x55dbc10f1e70-Name", "source": "a" }, { - "id": "0x55eadb4a5ad0-DummyArg", + "id": "0x55dbc10f1f30-DummyArg", "variantKey": "Name", - "Name": "0x55eadb4a5ad0-Name" + "Name": "0x55dbc10f1f30-Name" }, { - "id": "0x55eadb4a5ad0-Name", + "id": "0x55dbc10f1f30-Name", "source": "b" }, { - "id": "0x55eadb4a62e0-DummyArg", + "id": "0x55dbc10eaf70-DummyArg", "variantKey": "Name", - "Name": "0x55eadb4a62e0-Name" + "Name": "0x55dbc10eaf70-Name" }, { - "id": "0x55eadb4a62e0-Name", + "id": "0x55dbc10eaf70-Name", "source": "f" }, { - "id": "0x55eadb4a6580-DummyArg", + "id": "0x55dbc10f7a20-DummyArg", "variantKey": "Name", - "Name": "0x55eadb4a6580-Name" + "Name": "0x55dbc10f7a20-Name" }, { - "id": "0x55eadb4a6580-Name", + "id": "0x55dbc10f7a20-Name", "source": "c" }, { - "id": "0x55eadb4966f0-DummyArg", + "id": "0x55dbc10e8440-DummyArg", "variantKey": "Name", - "Name": "0x55eadb4966f0-Name" + "Name": "0x55dbc10e8440-Name" }, { - "id": "0x55eadb4966f0-Name", + "id": "0x55dbc10e8440-Name", "source": "d" }, { - "id": "0x55eadb496d60-DummyArg", + "id": "0x55dbc10e8640-DummyArg", "variantKey": "Name", - "Name": "0x55eadb496d60-Name" + "Name": "0x55dbc10e8640-Name" }, { - "id": "0x55eadb496d60-Name", + "id": "0x55dbc10e8640-Name", "source": "g" }, { - "id": "0x55eadb4bd3f0-SpecificationPart", - "ImplicitPart": "0x55eadb4bd408-ImplicitPart", + "id": "0x55dbc110f6c0-SpecificationPart", + "ImplicitPart": "0x55dbc110f6d8-ImplicitPart", "DeclarationConstruct": [ - "0x55eadb4ad270-DeclarationConstruct", - "0x55eadb4a6ab0-DeclarationConstruct", - "0x55eadb4b3680-DeclarationConstruct", - "0x55eadb4b3ab0-DeclarationConstruct", - "0x55eadb4b3ee0-DeclarationConstruct", - "0x55eadb4b4310-DeclarationConstruct", - "0x55eadb4b2800-DeclarationConstruct", - "0x55eadb4b1240-DeclarationConstruct", - "0x55eadb4aa370-DeclarationConstruct" + "0x55dbc10e8720-DeclarationConstruct", + "0x55dbc10f8740-DeclarationConstruct", + "0x55dbc1105df0-DeclarationConstruct", + "0x55dbc1106220-DeclarationConstruct", + "0x55dbc1106650-DeclarationConstruct", + "0x55dbc1106a80-DeclarationConstruct", + "0x55dbc11071e0-DeclarationConstruct", + "0x55dbc10fba60-DeclarationConstruct", + "0x55dbc1103380-DeclarationConstruct" ] }, { - "id": "0x55eadb4bd408-ImplicitPart" + "id": "0x55dbc110f6d8-ImplicitPart" }, { - "id": "0x55eadb4ad270-DeclarationConstruct", + "id": "0x55dbc10e8720-DeclarationConstruct", "variantKey": "SpecificationConstruct", - "SpecificationConstruct": "0x55eadb4ad270-SpecificationConstruct" + "SpecificationConstruct": "0x55dbc10e8720-SpecificationConstruct" }, { - "id": "0x55eadb4ad270-SpecificationConstruct", + "id": "0x55dbc10e8720-SpecificationConstruct", "variantKey": "Statement", - "Statement": "0x55eadb4ad270-Statement" + "Statement": "0x55dbc10e8720-Statement" }, { - "id": "0x55eadb4ad270-Statement", - "statement": "0x55eadb4af0b0-TypeDeclarationStmt", + "id": "0x55dbc10e8720-Statement", + "statement": "0x55dbc11012a0-TypeDeclarationStmt", "source": "double precision, dimension(nk, ni) :: a" }, { - "id": "0x55eadb4af0b0-TypeDeclarationStmt", - "DeclarationTypeSpec": "0x55eadb4af0e0-DeclarationTypeSpec", + "id": "0x55dbc11012a0-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x55dbc11012d0-DeclarationTypeSpec", "AttrSpec": [ - "0x55eadb4935b0-AttrSpec" + "0x55dbc10e60d0-AttrSpec" ], "EntityDecl": [ - "0x55eadb4b4f80-EntityDecl" + "0x55dbc1105740-EntityDecl" ] }, { - "id": "0x55eadb4af0e0-DeclarationTypeSpec", + "id": "0x55dbc11012d0-DeclarationTypeSpec", "variantKey": "IntrinsicTypeSpec", - "IntrinsicTypeSpec": "0x55eadb4af0e0-IntrinsicTypeSpec" + "IntrinsicTypeSpec": "0x55dbc11012d0-IntrinsicTypeSpec" }, { - "id": "0x55eadb4af0e0-IntrinsicTypeSpec", + "id": "0x55dbc11012d0-IntrinsicTypeSpec", "variantKey": "DoublePrecision", - "DoublePrecision": "0x55eadb4af0e0-DoublePrecision" + "DoublePrecision": "0x55dbc11012d0-DoublePrecision" }, { - "id": "0x55eadb4af0e0-DoublePrecision" + "id": "0x55dbc11012d0-DoublePrecision" }, { - "id": "0x55eadb4935b0-AttrSpec", + "id": "0x55dbc10e60d0-AttrSpec", "variantKey": "ArraySpec", - "ArraySpec": "0x55eadb4935b0-ArraySpec" + "ArraySpec": "0x55dbc10e60d0-ArraySpec" }, { - "id": "0x55eadb4935b0-ArraySpec", + "id": "0x55dbc10e60d0-ArraySpec", "variantKey": "ExplicitShapeSpec", "ExplicitShapeSpec": [ - "0x55eadb48dce0-ExplicitShapeSpec", - "0x55eadb48dc50-ExplicitShapeSpec" + "0x55dbc10ec290-ExplicitShapeSpec", + "0x55dbc10f82a0-ExplicitShapeSpec" ] }, { - "id": "0x55eadb48dce0-ExplicitShapeSpec", - "upper_bound": "0x55eadb48dce0-SpecificationExpr" + "id": "0x55dbc10ec290-ExplicitShapeSpec", + "upper_bound": "0x55dbc10ec290-SpecificationExpr" }, { - "id": "0x55eadb48dce0-SpecificationExpr", - "Expr": "0x55eadb4b4db0-Expr" + "id": "0x55dbc10ec290-SpecificationExpr", + "Expr": "0x55dbc1106fd0-Expr" }, { - "id": "0x55eadb4b4db0-Expr", + "id": "0x55dbc1106fd0-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4ab9a0-Designator" + "Designator": "0x55dbc10db030-Designator" }, { - "id": "0x55eadb4ab9a0-Designator", + "id": "0x55dbc10db030-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4ab9b0-DataRef" + "DataRef": "0x55dbc10db040-DataRef" }, { - "id": "0x55eadb4ab9b0-DataRef", + "id": "0x55dbc10db040-DataRef", "variantKey": "Name", - "Name": "0x55eadb4ab9b0-Name" + "Name": "0x55dbc10db040-Name" }, { - "id": "0x55eadb4ab9b0-Name", + "id": "0x55dbc10db040-Name", "source": "nk" }, { - "id": "0x55eadb48dc50-ExplicitShapeSpec", - "upper_bound": "0x55eadb48dc50-SpecificationExpr" + "id": "0x55dbc10f82a0-ExplicitShapeSpec", + "upper_bound": "0x55dbc10f82a0-SpecificationExpr" }, { - "id": "0x55eadb48dc50-SpecificationExpr", - "Expr": "0x55eadb4b4e90-Expr" + "id": "0x55dbc10f82a0-SpecificationExpr", + "Expr": "0x55dbc1105650-Expr" }, { - "id": "0x55eadb4b4e90-Expr", + "id": "0x55dbc1105650-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4b10c0-Designator" + "Designator": "0x55dbc1103200-Designator" }, { - "id": "0x55eadb4b10c0-Designator", + "id": "0x55dbc1103200-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4b10d0-DataRef" + "DataRef": "0x55dbc1103210-DataRef" }, { - "id": "0x55eadb4b10d0-DataRef", + "id": "0x55dbc1103210-DataRef", "variantKey": "Name", - "Name": "0x55eadb4b10d0-Name" + "Name": "0x55dbc1103210-Name" }, { - "id": "0x55eadb4b10d0-Name", + "id": "0x55dbc1103210-Name", "source": "ni" }, { - "id": "0x55eadb4b4f80-EntityDecl", - "Name": "0x55eadb4b5038-Name" + "id": "0x55dbc1105740-EntityDecl", + "Name": "0x55dbc11057f8-Name" }, { - "id": "0x55eadb4b5038-Name", + "id": "0x55dbc11057f8-Name", "source": "a" }, { - "id": "0x55eadb4a6ab0-DeclarationConstruct", + "id": "0x55dbc10f8740-DeclarationConstruct", "variantKey": "SpecificationConstruct", - "SpecificationConstruct": "0x55eadb4a6ab0-SpecificationConstruct" + "SpecificationConstruct": "0x55dbc10f8740-SpecificationConstruct" }, { - "id": "0x55eadb4a6ab0-SpecificationConstruct", + "id": "0x55dbc10f8740-SpecificationConstruct", "variantKey": "Statement", - "Statement": "0x55eadb4a6ab0-Statement" + "Statement": "0x55dbc10f8740-Statement" }, { - "id": "0x55eadb4a6ab0-Statement", - "statement": "0x55eadb49fd80-TypeDeclarationStmt", + "id": "0x55dbc10f8740-Statement", + "statement": "0x55dbc1101ab0-TypeDeclarationStmt", "source": "double precision, dimension(nj, nk) :: b" }, { - "id": "0x55eadb49fd80-TypeDeclarationStmt", - "DeclarationTypeSpec": "0x55eadb49fdb0-DeclarationTypeSpec", + "id": "0x55dbc1101ab0-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x55dbc1101ae0-DeclarationTypeSpec", "AttrSpec": [ - "0x55eadb4a7670-AttrSpec" + "0x55dbc10e83a0-AttrSpec" ], "EntityDecl": [ - "0x55eadb4b4a10-EntityDecl" + "0x55dbc11059f0-EntityDecl" ] }, { - "id": "0x55eadb49fdb0-DeclarationTypeSpec", + "id": "0x55dbc1101ae0-DeclarationTypeSpec", "variantKey": "IntrinsicTypeSpec", - "IntrinsicTypeSpec": "0x55eadb49fdb0-IntrinsicTypeSpec" + "IntrinsicTypeSpec": "0x55dbc1101ae0-IntrinsicTypeSpec" }, { - "id": "0x55eadb49fdb0-IntrinsicTypeSpec", + "id": "0x55dbc1101ae0-IntrinsicTypeSpec", "variantKey": "DoublePrecision", - "DoublePrecision": "0x55eadb49fdb0-DoublePrecision" + "DoublePrecision": "0x55dbc1101ae0-DoublePrecision" }, { - "id": "0x55eadb49fdb0-DoublePrecision" + "id": "0x55dbc1101ae0-DoublePrecision" }, { - "id": "0x55eadb4a7670-AttrSpec", + "id": "0x55dbc10e83a0-AttrSpec", "variantKey": "ArraySpec", - "ArraySpec": "0x55eadb4a7670-ArraySpec" + "ArraySpec": "0x55dbc10e83a0-ArraySpec" }, { - "id": "0x55eadb4a7670-ArraySpec", + "id": "0x55dbc10e83a0-ArraySpec", "variantKey": "ExplicitShapeSpec", "ExplicitShapeSpec": [ - "0x55eadb4aa3d0-ExplicitShapeSpec", - "0x55eadb49fd60-ExplicitShapeSpec" + "0x55dbc1100630-ExplicitShapeSpec", + "0x55dbc1069360-ExplicitShapeSpec" ] }, { - "id": "0x55eadb4aa3d0-ExplicitShapeSpec", - "upper_bound": "0x55eadb4aa3d0-SpecificationExpr" + "id": "0x55dbc1100630-ExplicitShapeSpec", + "upper_bound": "0x55dbc1100630-SpecificationExpr" }, { - "id": "0x55eadb4aa3d0-SpecificationExpr", - "Expr": "0x55eadb4b4840-Expr" + "id": "0x55dbc1100630-SpecificationExpr", + "Expr": "0x55dbc1105820-Expr" }, { - "id": "0x55eadb4b4840-Expr", + "id": "0x55dbc1105820-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4ae7f0-Designator" + "Designator": "0x55dbc1100560-Designator" }, { - "id": "0x55eadb4ae7f0-Designator", + "id": "0x55dbc1100560-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4ae800-DataRef" + "DataRef": "0x55dbc1100570-DataRef" }, { - "id": "0x55eadb4ae800-DataRef", + "id": "0x55dbc1100570-DataRef", "variantKey": "Name", - "Name": "0x55eadb4ae800-Name" + "Name": "0x55dbc1100570-Name" }, { - "id": "0x55eadb4ae800-Name", + "id": "0x55dbc1100570-Name", "source": "nj" }, { - "id": "0x55eadb49fd60-ExplicitShapeSpec", - "upper_bound": "0x55eadb49fd60-SpecificationExpr" + "id": "0x55dbc1069360-ExplicitShapeSpec", + "upper_bound": "0x55dbc1069360-SpecificationExpr" }, { - "id": "0x55eadb49fd60-SpecificationExpr", - "Expr": "0x55eadb4b4920-Expr" + "id": "0x55dbc1069360-SpecificationExpr", + "Expr": "0x55dbc1105900-Expr" }, { - "id": "0x55eadb4b4920-Expr", + "id": "0x55dbc1105900-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4b0dc0-Designator" + "Designator": "0x55dbc1102f00-Designator" }, { - "id": "0x55eadb4b0dc0-Designator", + "id": "0x55dbc1102f00-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4b0dd0-DataRef" + "DataRef": "0x55dbc1102f10-DataRef" }, { - "id": "0x55eadb4b0dd0-DataRef", + "id": "0x55dbc1102f10-DataRef", "variantKey": "Name", - "Name": "0x55eadb4b0dd0-Name" + "Name": "0x55dbc1102f10-Name" }, { - "id": "0x55eadb4b0dd0-Name", + "id": "0x55dbc1102f10-Name", "source": "nk" }, { - "id": "0x55eadb4b4a10-EntityDecl", - "Name": "0x55eadb4b4ac8-Name" + "id": "0x55dbc11059f0-EntityDecl", + "Name": "0x55dbc1105aa8-Name" }, { - "id": "0x55eadb4b4ac8-Name", + "id": "0x55dbc1105aa8-Name", "source": "b" }, { - "id": "0x55eadb4b3680-DeclarationConstruct", + "id": "0x55dbc1105df0-DeclarationConstruct", "variantKey": "SpecificationConstruct", - "SpecificationConstruct": "0x55eadb4b3680-SpecificationConstruct" + "SpecificationConstruct": "0x55dbc1105df0-SpecificationConstruct" }, { - "id": "0x55eadb4b3680-SpecificationConstruct", + "id": "0x55dbc1105df0-SpecificationConstruct", "variantKey": "Statement", - "Statement": "0x55eadb4b3680-Statement" + "Statement": "0x55dbc1105df0-Statement" }, { - "id": "0x55eadb4b3680-Statement", - "statement": "0x55eadb4aa2e0-TypeDeclarationStmt", + "id": "0x55dbc1105df0-Statement", + "statement": "0x55dbc10fc2b0-TypeDeclarationStmt", "source": "double precision, dimension(nm, nj) :: c" }, { - "id": "0x55eadb4aa2e0-TypeDeclarationStmt", - "DeclarationTypeSpec": "0x55eadb4aa310-DeclarationTypeSpec", + "id": "0x55dbc10fc2b0-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x55dbc10fc2e0-DeclarationTypeSpec", "AttrSpec": [ - "0x55eadb4a5710-AttrSpec" + "0x55dbc10e9ef0-AttrSpec" ], "EntityDecl": [ - "0x55eadb4b3590-EntityDecl" + "0x55dbc1105d00-EntityDecl" ] }, { - "id": "0x55eadb4aa310-DeclarationTypeSpec", + "id": "0x55dbc10fc2e0-DeclarationTypeSpec", "variantKey": "IntrinsicTypeSpec", - "IntrinsicTypeSpec": "0x55eadb4aa310-IntrinsicTypeSpec" + "IntrinsicTypeSpec": "0x55dbc10fc2e0-IntrinsicTypeSpec" }, { - "id": "0x55eadb4aa310-IntrinsicTypeSpec", + "id": "0x55dbc10fc2e0-IntrinsicTypeSpec", "variantKey": "DoublePrecision", - "DoublePrecision": "0x55eadb4aa310-DoublePrecision" + "DoublePrecision": "0x55dbc10fc2e0-DoublePrecision" }, { - "id": "0x55eadb4aa310-DoublePrecision" + "id": "0x55dbc10fc2e0-DoublePrecision" }, { - "id": "0x55eadb4a5710-AttrSpec", + "id": "0x55dbc10e9ef0-AttrSpec", "variantKey": "ArraySpec", - "ArraySpec": "0x55eadb4a5710-ArraySpec" + "ArraySpec": "0x55dbc10e9ef0-ArraySpec" }, { - "id": "0x55eadb4a5710-ArraySpec", + "id": "0x55dbc10e9ef0-ArraySpec", "variantKey": "ExplicitShapeSpec", "ExplicitShapeSpec": [ - "0x55eadb4b4cc0-ExplicitShapeSpec", - "0x55eadb4afe70-ExplicitShapeSpec" + "0x55dbc10ff8b0-ExplicitShapeSpec", + "0x55dbc10fd6e0-ExplicitShapeSpec" ] }, { - "id": "0x55eadb4b4cc0-ExplicitShapeSpec", - "upper_bound": "0x55eadb4b4cc0-SpecificationExpr" + "id": "0x55dbc10ff8b0-ExplicitShapeSpec", + "upper_bound": "0x55dbc10ff8b0-SpecificationExpr" }, { - "id": "0x55eadb4b4cc0-SpecificationExpr", - "Expr": "0x55eadb4b4af0-Expr" + "id": "0x55dbc10ff8b0-SpecificationExpr", + "Expr": "0x55dbc1105ad0-Expr" }, { - "id": "0x55eadb4b4af0-Expr", + "id": "0x55dbc1105ad0-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4ae850-Designator" + "Designator": "0x55dbc11005c0-Designator" }, { - "id": "0x55eadb4ae850-Designator", + "id": "0x55dbc11005c0-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4ae860-DataRef" + "DataRef": "0x55dbc11005d0-DataRef" }, { - "id": "0x55eadb4ae860-DataRef", + "id": "0x55dbc11005d0-DataRef", "variantKey": "Name", - "Name": "0x55eadb4ae860-Name" + "Name": "0x55dbc11005d0-Name" }, { - "id": "0x55eadb4ae860-Name", + "id": "0x55dbc11005d0-Name", "source": "nm" }, { - "id": "0x55eadb4afe70-ExplicitShapeSpec", - "upper_bound": "0x55eadb4afe70-SpecificationExpr" + "id": "0x55dbc10fd6e0-ExplicitShapeSpec", + "upper_bound": "0x55dbc10fd6e0-SpecificationExpr" }, { - "id": "0x55eadb4afe70-SpecificationExpr", - "Expr": "0x55eadb4b4bd0-Expr" + "id": "0x55dbc10fd6e0-SpecificationExpr", + "Expr": "0x55dbc1105c10-Expr" }, { - "id": "0x55eadb4b4bd0-Expr", + "id": "0x55dbc1105c10-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4a59d0-Designator" + "Designator": "0x55dbc1105bb0-Designator" }, { - "id": "0x55eadb4a59d0-Designator", + "id": "0x55dbc1105bb0-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4a59e0-DataRef" + "DataRef": "0x55dbc1105bc0-DataRef" }, { - "id": "0x55eadb4a59e0-DataRef", + "id": "0x55dbc1105bc0-DataRef", "variantKey": "Name", - "Name": "0x55eadb4a59e0-Name" + "Name": "0x55dbc1105bc0-Name" }, { - "id": "0x55eadb4a59e0-Name", + "id": "0x55dbc1105bc0-Name", "source": "nj" }, { - "id": "0x55eadb4b3590-EntityDecl", - "Name": "0x55eadb4b3648-Name" + "id": "0x55dbc1105d00-EntityDecl", + "Name": "0x55dbc1105db8-Name" }, { - "id": "0x55eadb4b3648-Name", + "id": "0x55dbc1105db8-Name", "source": "c" }, { - "id": "0x55eadb4b3ab0-DeclarationConstruct", + "id": "0x55dbc1106220-DeclarationConstruct", "variantKey": "SpecificationConstruct", - "SpecificationConstruct": "0x55eadb4b3ab0-SpecificationConstruct" + "SpecificationConstruct": "0x55dbc1106220-SpecificationConstruct" }, { - "id": "0x55eadb4b3ab0-SpecificationConstruct", + "id": "0x55dbc1106220-SpecificationConstruct", "variantKey": "Statement", - "Statement": "0x55eadb4b3ab0-Statement" + "Statement": "0x55dbc1106220-Statement" }, { - "id": "0x55eadb4b3ab0-Statement", - "statement": "0x55eadb493370-TypeDeclarationStmt", + "id": "0x55dbc1106220-Statement", + "statement": "0x55dbc1101c40-TypeDeclarationStmt", "source": "double precision, dimension(nl, nm) :: d" }, { - "id": "0x55eadb493370-TypeDeclarationStmt", - "DeclarationTypeSpec": "0x55eadb4933a0-DeclarationTypeSpec", + "id": "0x55dbc1101c40-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x55dbc1101c70-DeclarationTypeSpec", "AttrSpec": [ - "0x55eadb4a9c40-AttrSpec" + "0x55dbc10fd9f0-AttrSpec" ], "EntityDecl": [ - "0x55eadb4b39c0-EntityDecl" + "0x55dbc1106130-EntityDecl" ] }, { - "id": "0x55eadb4933a0-DeclarationTypeSpec", + "id": "0x55dbc1101c70-DeclarationTypeSpec", "variantKey": "IntrinsicTypeSpec", - "IntrinsicTypeSpec": "0x55eadb4933a0-IntrinsicTypeSpec" + "IntrinsicTypeSpec": "0x55dbc1101c70-IntrinsicTypeSpec" }, { - "id": "0x55eadb4933a0-IntrinsicTypeSpec", + "id": "0x55dbc1101c70-IntrinsicTypeSpec", "variantKey": "DoublePrecision", - "DoublePrecision": "0x55eadb4933a0-DoublePrecision" + "DoublePrecision": "0x55dbc1101c70-DoublePrecision" }, { - "id": "0x55eadb4933a0-DoublePrecision" + "id": "0x55dbc1101c70-DoublePrecision" }, { - "id": "0x55eadb4a9c40-AttrSpec", + "id": "0x55dbc10fd9f0-AttrSpec", "variantKey": "ArraySpec", - "ArraySpec": "0x55eadb4a9c40-ArraySpec" + "ArraySpec": "0x55dbc10fd9f0-ArraySpec" }, { - "id": "0x55eadb4a9c40-ArraySpec", + "id": "0x55dbc10fd9f0-ArraySpec", "variantKey": "ExplicitShapeSpec", "ExplicitShapeSpec": [ - "0x55eadb4b3990-ExplicitShapeSpec", - "0x55eadb4b3960-ExplicitShapeSpec" + "0x55dbc1106100-ExplicitShapeSpec", + "0x55dbc11060d0-ExplicitShapeSpec" ] }, { - "id": "0x55eadb4b3990-ExplicitShapeSpec", - "upper_bound": "0x55eadb4b3990-SpecificationExpr" + "id": "0x55dbc1106100-ExplicitShapeSpec", + "upper_bound": "0x55dbc1106100-SpecificationExpr" }, { - "id": "0x55eadb4b3990-SpecificationExpr", - "Expr": "0x55eadb4b36d0-Expr" + "id": "0x55dbc1106100-SpecificationExpr", + "Expr": "0x55dbc1105e40-Expr" }, { - "id": "0x55eadb4b36d0-Expr", + "id": "0x55dbc1105e40-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4a5eb0-Designator" + "Designator": "0x55dbc10ff0c0-Designator" }, { - "id": "0x55eadb4a5eb0-Designator", + "id": "0x55dbc10ff0c0-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4a5ec0-DataRef" + "DataRef": "0x55dbc10ff0d0-DataRef" }, { - "id": "0x55eadb4a5ec0-DataRef", + "id": "0x55dbc10ff0d0-DataRef", "variantKey": "Name", - "Name": "0x55eadb4a5ec0-Name" + "Name": "0x55dbc10ff0d0-Name" }, { - "id": "0x55eadb4a5ec0-Name", + "id": "0x55dbc10ff0d0-Name", "source": "nl" }, { - "id": "0x55eadb4b3960-ExplicitShapeSpec", - "upper_bound": "0x55eadb4b3960-SpecificationExpr" + "id": "0x55dbc11060d0-ExplicitShapeSpec", + "upper_bound": "0x55dbc11060d0-SpecificationExpr" }, { - "id": "0x55eadb4b3960-SpecificationExpr", - "Expr": "0x55eadb4b3870-Expr" + "id": "0x55dbc11060d0-SpecificationExpr", + "Expr": "0x55dbc1105fe0-Expr" }, { - "id": "0x55eadb4b3870-Expr", + "id": "0x55dbc1105fe0-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4b3810-Designator" + "Designator": "0x55dbc1105f80-Designator" }, { - "id": "0x55eadb4b3810-Designator", + "id": "0x55dbc1105f80-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4b3820-DataRef" + "DataRef": "0x55dbc1105f90-DataRef" }, { - "id": "0x55eadb4b3820-DataRef", + "id": "0x55dbc1105f90-DataRef", "variantKey": "Name", - "Name": "0x55eadb4b3820-Name" + "Name": "0x55dbc1105f90-Name" }, { - "id": "0x55eadb4b3820-Name", + "id": "0x55dbc1105f90-Name", "source": "nm" }, { - "id": "0x55eadb4b39c0-EntityDecl", - "Name": "0x55eadb4b3a78-Name" + "id": "0x55dbc1106130-EntityDecl", + "Name": "0x55dbc11061e8-Name" }, { - "id": "0x55eadb4b3a78-Name", + "id": "0x55dbc11061e8-Name", "source": "d" }, { - "id": "0x55eadb4b3ee0-DeclarationConstruct", + "id": "0x55dbc1106650-DeclarationConstruct", "variantKey": "SpecificationConstruct", - "SpecificationConstruct": "0x55eadb4b3ee0-SpecificationConstruct" + "SpecificationConstruct": "0x55dbc1106650-SpecificationConstruct" }, { - "id": "0x55eadb4b3ee0-SpecificationConstruct", + "id": "0x55dbc1106650-SpecificationConstruct", "variantKey": "Statement", - "Statement": "0x55eadb4b3ee0-Statement" + "Statement": "0x55dbc1106650-Statement" }, { - "id": "0x55eadb4b3ee0-Statement", - "statement": "0x55eadb4963d0-TypeDeclarationStmt", + "id": "0x55dbc1106650-Statement", + "statement": "0x55dbc10fd350-TypeDeclarationStmt", "source": "double precision, dimension(nj, ni) :: e" }, { - "id": "0x55eadb4963d0-TypeDeclarationStmt", - "DeclarationTypeSpec": "0x55eadb496400-DeclarationTypeSpec", + "id": "0x55dbc10fd350-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x55dbc10fd380-DeclarationTypeSpec", "AttrSpec": [ - "0x55eadb49f860-AttrSpec" + "0x55dbc10e8780-AttrSpec" ], "EntityDecl": [ - "0x55eadb4b3df0-EntityDecl" + "0x55dbc1106560-EntityDecl" ] }, { - "id": "0x55eadb496400-DeclarationTypeSpec", + "id": "0x55dbc10fd380-DeclarationTypeSpec", "variantKey": "IntrinsicTypeSpec", - "IntrinsicTypeSpec": "0x55eadb496400-IntrinsicTypeSpec" + "IntrinsicTypeSpec": "0x55dbc10fd380-IntrinsicTypeSpec" }, { - "id": "0x55eadb496400-IntrinsicTypeSpec", + "id": "0x55dbc10fd380-IntrinsicTypeSpec", "variantKey": "DoublePrecision", - "DoublePrecision": "0x55eadb496400-DoublePrecision" + "DoublePrecision": "0x55dbc10fd380-DoublePrecision" }, { - "id": "0x55eadb496400-DoublePrecision" + "id": "0x55dbc10fd380-DoublePrecision" }, { - "id": "0x55eadb49f860-AttrSpec", + "id": "0x55dbc10e8780-AttrSpec", "variantKey": "ArraySpec", - "ArraySpec": "0x55eadb49f860-ArraySpec" + "ArraySpec": "0x55dbc10e8780-ArraySpec" }, { - "id": "0x55eadb49f860-ArraySpec", + "id": "0x55dbc10e8780-ArraySpec", "variantKey": "ExplicitShapeSpec", "ExplicitShapeSpec": [ - "0x55eadb4b3dc0-ExplicitShapeSpec", - "0x55eadb4b3d90-ExplicitShapeSpec" + "0x55dbc1106530-ExplicitShapeSpec", + "0x55dbc1106500-ExplicitShapeSpec" ] }, { - "id": "0x55eadb4b3dc0-ExplicitShapeSpec", - "upper_bound": "0x55eadb4b3dc0-SpecificationExpr" + "id": "0x55dbc1106530-ExplicitShapeSpec", + "upper_bound": "0x55dbc1106530-SpecificationExpr" }, { - "id": "0x55eadb4b3dc0-SpecificationExpr", - "Expr": "0x55eadb4b3b00-Expr" + "id": "0x55dbc1106530-SpecificationExpr", + "Expr": "0x55dbc1106270-Expr" }, { - "id": "0x55eadb4b3b00-Expr", + "id": "0x55dbc1106270-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4b1290-Designator" + "Designator": "0x55dbc10f1b30-Designator" }, { - "id": "0x55eadb4b1290-Designator", + "id": "0x55dbc10f1b30-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4b12a0-DataRef" + "DataRef": "0x55dbc10f1b40-DataRef" }, { - "id": "0x55eadb4b12a0-DataRef", + "id": "0x55dbc10f1b40-DataRef", "variantKey": "Name", - "Name": "0x55eadb4b12a0-Name" + "Name": "0x55dbc10f1b40-Name" }, { - "id": "0x55eadb4b12a0-Name", + "id": "0x55dbc10f1b40-Name", "source": "nj" }, { - "id": "0x55eadb4b3d90-ExplicitShapeSpec", - "upper_bound": "0x55eadb4b3d90-SpecificationExpr" + "id": "0x55dbc1106500-ExplicitShapeSpec", + "upper_bound": "0x55dbc1106500-SpecificationExpr" }, { - "id": "0x55eadb4b3d90-SpecificationExpr", - "Expr": "0x55eadb4b3ca0-Expr" + "id": "0x55dbc1106500-SpecificationExpr", + "Expr": "0x55dbc1106410-Expr" }, { - "id": "0x55eadb4b3ca0-Expr", + "id": "0x55dbc1106410-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4b3c40-Designator" + "Designator": "0x55dbc11063b0-Designator" }, { - "id": "0x55eadb4b3c40-Designator", + "id": "0x55dbc11063b0-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4b3c50-DataRef" + "DataRef": "0x55dbc11063c0-DataRef" }, { - "id": "0x55eadb4b3c50-DataRef", + "id": "0x55dbc11063c0-DataRef", "variantKey": "Name", - "Name": "0x55eadb4b3c50-Name" + "Name": "0x55dbc11063c0-Name" }, { - "id": "0x55eadb4b3c50-Name", + "id": "0x55dbc11063c0-Name", "source": "ni" }, { - "id": "0x55eadb4b3df0-EntityDecl", - "Name": "0x55eadb4b3ea8-Name" + "id": "0x55dbc1106560-EntityDecl", + "Name": "0x55dbc1106618-Name" }, { - "id": "0x55eadb4b3ea8-Name", + "id": "0x55dbc1106618-Name", "source": "e" }, { - "id": "0x55eadb4b4310-DeclarationConstruct", + "id": "0x55dbc1106a80-DeclarationConstruct", "variantKey": "SpecificationConstruct", - "SpecificationConstruct": "0x55eadb4b4310-SpecificationConstruct" + "SpecificationConstruct": "0x55dbc1106a80-SpecificationConstruct" }, { - "id": "0x55eadb4b4310-SpecificationConstruct", + "id": "0x55dbc1106a80-SpecificationConstruct", "variantKey": "Statement", - "Statement": "0x55eadb4b4310-Statement" + "Statement": "0x55dbc1106a80-Statement" }, { - "id": "0x55eadb4b4310-Statement", - "statement": "0x55eadb4afd80-TypeDeclarationStmt", + "id": "0x55dbc1106a80-Statement", + "statement": "0x55dbc1101e60-TypeDeclarationStmt", "source": "double precision, dimension(nl, nj) :: f" }, { - "id": "0x55eadb4afd80-TypeDeclarationStmt", - "DeclarationTypeSpec": "0x55eadb4afdb0-DeclarationTypeSpec", + "id": "0x55dbc1101e60-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x55dbc1101e90-DeclarationTypeSpec", "AttrSpec": [ - "0x55eadb48d6a0-AttrSpec" + "0x55dbc10f17f0-AttrSpec" ], "EntityDecl": [ - "0x55eadb4b4220-EntityDecl" + "0x55dbc1106990-EntityDecl" ] }, { - "id": "0x55eadb4afdb0-DeclarationTypeSpec", + "id": "0x55dbc1101e90-DeclarationTypeSpec", "variantKey": "IntrinsicTypeSpec", - "IntrinsicTypeSpec": "0x55eadb4afdb0-IntrinsicTypeSpec" + "IntrinsicTypeSpec": "0x55dbc1101e90-IntrinsicTypeSpec" }, { - "id": "0x55eadb4afdb0-IntrinsicTypeSpec", + "id": "0x55dbc1101e90-IntrinsicTypeSpec", "variantKey": "DoublePrecision", - "DoublePrecision": "0x55eadb4afdb0-DoublePrecision" + "DoublePrecision": "0x55dbc1101e90-DoublePrecision" }, { - "id": "0x55eadb4afdb0-DoublePrecision" + "id": "0x55dbc1101e90-DoublePrecision" }, { - "id": "0x55eadb48d6a0-AttrSpec", + "id": "0x55dbc10f17f0-AttrSpec", "variantKey": "ArraySpec", - "ArraySpec": "0x55eadb48d6a0-ArraySpec" + "ArraySpec": "0x55dbc10f17f0-ArraySpec" }, { - "id": "0x55eadb48d6a0-ArraySpec", + "id": "0x55dbc10f17f0-ArraySpec", "variantKey": "ExplicitShapeSpec", "ExplicitShapeSpec": [ - "0x55eadb4b41f0-ExplicitShapeSpec", - "0x55eadb4b41c0-ExplicitShapeSpec" + "0x55dbc1106960-ExplicitShapeSpec", + "0x55dbc1106930-ExplicitShapeSpec" ] }, { - "id": "0x55eadb4b41f0-ExplicitShapeSpec", - "upper_bound": "0x55eadb4b41f0-SpecificationExpr" + "id": "0x55dbc1106960-ExplicitShapeSpec", + "upper_bound": "0x55dbc1106960-SpecificationExpr" }, { - "id": "0x55eadb4b41f0-SpecificationExpr", - "Expr": "0x55eadb4b3f30-Expr" + "id": "0x55dbc1106960-SpecificationExpr", + "Expr": "0x55dbc11066a0-Expr" }, { - "id": "0x55eadb4b3f30-Expr", + "id": "0x55dbc11066a0-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4b37b0-Designator" + "Designator": "0x55dbc1105f20-Designator" }, { - "id": "0x55eadb4b37b0-Designator", + "id": "0x55dbc1105f20-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4b37c0-DataRef" + "DataRef": "0x55dbc1105f30-DataRef" }, { - "id": "0x55eadb4b37c0-DataRef", + "id": "0x55dbc1105f30-DataRef", "variantKey": "Name", - "Name": "0x55eadb4b37c0-Name" + "Name": "0x55dbc1105f30-Name" }, { - "id": "0x55eadb4b37c0-Name", + "id": "0x55dbc1105f30-Name", "source": "nl" }, { - "id": "0x55eadb4b41c0-ExplicitShapeSpec", - "upper_bound": "0x55eadb4b41c0-SpecificationExpr" + "id": "0x55dbc1106930-ExplicitShapeSpec", + "upper_bound": "0x55dbc1106930-SpecificationExpr" }, { - "id": "0x55eadb4b41c0-SpecificationExpr", - "Expr": "0x55eadb4b40d0-Expr" + "id": "0x55dbc1106930-SpecificationExpr", + "Expr": "0x55dbc1106840-Expr" }, { - "id": "0x55eadb4b40d0-Expr", + "id": "0x55dbc1106840-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4b4070-Designator" + "Designator": "0x55dbc11067e0-Designator" }, { - "id": "0x55eadb4b4070-Designator", + "id": "0x55dbc11067e0-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4b4080-DataRef" + "DataRef": "0x55dbc11067f0-DataRef" }, { - "id": "0x55eadb4b4080-DataRef", + "id": "0x55dbc11067f0-DataRef", "variantKey": "Name", - "Name": "0x55eadb4b4080-Name" + "Name": "0x55dbc11067f0-Name" }, { - "id": "0x55eadb4b4080-Name", + "id": "0x55dbc11067f0-Name", "source": "nj" }, { - "id": "0x55eadb4b4220-EntityDecl", - "Name": "0x55eadb4b42d8-Name" + "id": "0x55dbc1106990-EntityDecl", + "Name": "0x55dbc1106a48-Name" }, { - "id": "0x55eadb4b42d8-Name", + "id": "0x55dbc1106a48-Name", "source": "f" }, { - "id": "0x55eadb4b2800-DeclarationConstruct", + "id": "0x55dbc11071e0-DeclarationConstruct", "variantKey": "SpecificationConstruct", - "SpecificationConstruct": "0x55eadb4b2800-SpecificationConstruct" + "SpecificationConstruct": "0x55dbc11071e0-SpecificationConstruct" }, { - "id": "0x55eadb4b2800-SpecificationConstruct", + "id": "0x55dbc11071e0-SpecificationConstruct", "variantKey": "Statement", - "Statement": "0x55eadb4b2800-Statement" + "Statement": "0x55dbc11071e0-Statement" }, { - "id": "0x55eadb4b2800-Statement", - "statement": "0x55eadb4afe90-TypeDeclarationStmt", + "id": "0x55dbc11071e0-Statement", + "statement": "0x55dbc1101f70-TypeDeclarationStmt", "source": "double precision, dimension(nl, ni) :: g" }, { - "id": "0x55eadb4afe90-TypeDeclarationStmt", - "DeclarationTypeSpec": "0x55eadb4afec0-DeclarationTypeSpec", + "id": "0x55dbc1101f70-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x55dbc1101fa0-DeclarationTypeSpec", "AttrSpec": [ - "0x55eadb493bf0-AttrSpec" + "0x55dbc10e6710-AttrSpec" ], "EntityDecl": [ - "0x55eadb4b52b0-EntityDecl" + "0x55dbc11074e0-EntityDecl" ] }, { - "id": "0x55eadb4afec0-DeclarationTypeSpec", + "id": "0x55dbc1101fa0-DeclarationTypeSpec", "variantKey": "IntrinsicTypeSpec", - "IntrinsicTypeSpec": "0x55eadb4afec0-IntrinsicTypeSpec" + "IntrinsicTypeSpec": "0x55dbc1101fa0-IntrinsicTypeSpec" }, { - "id": "0x55eadb4afec0-IntrinsicTypeSpec", + "id": "0x55dbc1101fa0-IntrinsicTypeSpec", "variantKey": "DoublePrecision", - "DoublePrecision": "0x55eadb4afec0-DoublePrecision" + "DoublePrecision": "0x55dbc1101fa0-DoublePrecision" }, { - "id": "0x55eadb4afec0-DoublePrecision" + "id": "0x55dbc1101fa0-DoublePrecision" }, { - "id": "0x55eadb493bf0-AttrSpec", + "id": "0x55dbc10e6710-AttrSpec", "variantKey": "ArraySpec", - "ArraySpec": "0x55eadb493bf0-ArraySpec" + "ArraySpec": "0x55dbc10e6710-ArraySpec" }, { - "id": "0x55eadb493bf0-ArraySpec", + "id": "0x55dbc10e6710-ArraySpec", "variantKey": "ExplicitShapeSpec", "ExplicitShapeSpec": [ - "0x55eadb49ffa0-ExplicitShapeSpec", - "0x55eadb4b45f0-ExplicitShapeSpec" + "0x55dbc1106dd0-ExplicitShapeSpec", + "0x55dbc1106c20-ExplicitShapeSpec" ] }, { - "id": "0x55eadb49ffa0-ExplicitShapeSpec", - "upper_bound": "0x55eadb49ffa0-SpecificationExpr" + "id": "0x55dbc1106dd0-ExplicitShapeSpec", + "upper_bound": "0x55dbc1106dd0-SpecificationExpr" }, { - "id": "0x55eadb49ffa0-SpecificationExpr", - "Expr": "0x55eadb4b4360-Expr" + "id": "0x55dbc1106dd0-SpecificationExpr", + "Expr": "0x55dbc1106ad0-Expr" }, { - "id": "0x55eadb4b4360-Expr", + "id": "0x55dbc1106ad0-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4b3be0-Designator" + "Designator": "0x55dbc1106350-Designator" }, { - "id": "0x55eadb4b3be0-Designator", + "id": "0x55dbc1106350-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4b3bf0-DataRef" + "DataRef": "0x55dbc1106360-DataRef" }, { - "id": "0x55eadb4b3bf0-DataRef", + "id": "0x55dbc1106360-DataRef", "variantKey": "Name", - "Name": "0x55eadb4b3bf0-Name" + "Name": "0x55dbc1106360-Name" }, { - "id": "0x55eadb4b3bf0-Name", + "id": "0x55dbc1106360-Name", "source": "nl" }, { - "id": "0x55eadb4b45f0-ExplicitShapeSpec", - "upper_bound": "0x55eadb4b45f0-SpecificationExpr" + "id": "0x55dbc1106c20-ExplicitShapeSpec", + "upper_bound": "0x55dbc1106c20-SpecificationExpr" }, { - "id": "0x55eadb4b45f0-SpecificationExpr", - "Expr": "0x55eadb4b4500-Expr" + "id": "0x55dbc1106c20-SpecificationExpr", + "Expr": "0x55dbc11073f0-Expr" }, { - "id": "0x55eadb4b4500-Expr", + "id": "0x55dbc11073f0-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4b44a0-Designator" + "Designator": "0x55dbc1106d60-Designator" }, { - "id": "0x55eadb4b44a0-Designator", + "id": "0x55dbc1106d60-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4b44b0-DataRef" + "DataRef": "0x55dbc1106d70-DataRef" }, { - "id": "0x55eadb4b44b0-DataRef", + "id": "0x55dbc1106d70-DataRef", "variantKey": "Name", - "Name": "0x55eadb4b44b0-Name" + "Name": "0x55dbc1106d70-Name" }, { - "id": "0x55eadb4b44b0-Name", + "id": "0x55dbc1106d70-Name", "source": "ni" }, { - "id": "0x55eadb4b52b0-EntityDecl", - "Name": "0x55eadb4b5368-Name" + "id": "0x55dbc11074e0-EntityDecl", + "Name": "0x55dbc1107598-Name" }, { - "id": "0x55eadb4b5368-Name", + "id": "0x55dbc1107598-Name", "source": "g" }, { - "id": "0x55eadb4b1240-DeclarationConstruct", + "id": "0x55dbc10fba60-DeclarationConstruct", "variantKey": "SpecificationConstruct", - "SpecificationConstruct": "0x55eadb4b1240-SpecificationConstruct" + "SpecificationConstruct": "0x55dbc10fba60-SpecificationConstruct" }, { - "id": "0x55eadb4b1240-SpecificationConstruct", + "id": "0x55dbc10fba60-SpecificationConstruct", "variantKey": "Statement", - "Statement": "0x55eadb4b1240-Statement" + "Statement": "0x55dbc10fba60-Statement" }, { - "id": "0x55eadb4b1240-Statement", - "statement": "0x55eadb4abfd0-TypeDeclarationStmt", + "id": "0x55dbc10fba60-Statement", + "statement": "0x55dbc10e5e90-TypeDeclarationStmt", "source": "integer :: ni, nj, nk, nl, nm" }, { - "id": "0x55eadb4abfd0-TypeDeclarationStmt", - "DeclarationTypeSpec": "0x55eadb4ac000-DeclarationTypeSpec", + "id": "0x55dbc10e5e90-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x55dbc10e5ec0-DeclarationTypeSpec", "EntityDecl": [ - "0x55eadb4b5760-EntityDecl", - "0x55eadb4b53a0-EntityDecl", - "0x55eadb4b5490-EntityDecl", - "0x55eadb4b5580-EntityDecl", - "0x55eadb4b5670-EntityDecl" + "0x55dbc1107990-EntityDecl", + "0x55dbc11075d0-EntityDecl", + "0x55dbc11076c0-EntityDecl", + "0x55dbc11077b0-EntityDecl", + "0x55dbc11078a0-EntityDecl" ] }, { - "id": "0x55eadb4ac000-DeclarationTypeSpec", + "id": "0x55dbc10e5ec0-DeclarationTypeSpec", "variantKey": "IntrinsicTypeSpec", - "IntrinsicTypeSpec": "0x55eadb4ac000-IntrinsicTypeSpec" + "IntrinsicTypeSpec": "0x55dbc10e5ec0-IntrinsicTypeSpec" }, { - "id": "0x55eadb4ac000-IntrinsicTypeSpec", + "id": "0x55dbc10e5ec0-IntrinsicTypeSpec", "variantKey": "IntegerTypeSpec", - "IntegerTypeSpec": "0x55eadb4ac000-IntegerTypeSpec" + "IntegerTypeSpec": "0x55dbc10e5ec0-IntegerTypeSpec" }, { - "id": "0x55eadb4ac000-IntegerTypeSpec" + "id": "0x55dbc10e5ec0-IntegerTypeSpec" }, { - "id": "0x55eadb4b5760-EntityDecl", - "Name": "0x55eadb4b5818-Name" + "id": "0x55dbc1107990-EntityDecl", + "Name": "0x55dbc1107a48-Name" }, { - "id": "0x55eadb4b5818-Name", + "id": "0x55dbc1107a48-Name", "source": "ni" }, { - "id": "0x55eadb4b53a0-EntityDecl", - "Name": "0x55eadb4b5458-Name" + "id": "0x55dbc11075d0-EntityDecl", + "Name": "0x55dbc1107688-Name" }, { - "id": "0x55eadb4b5458-Name", + "id": "0x55dbc1107688-Name", "source": "nj" }, { - "id": "0x55eadb4b5490-EntityDecl", - "Name": "0x55eadb4b5548-Name" + "id": "0x55dbc11076c0-EntityDecl", + "Name": "0x55dbc1107778-Name" }, { - "id": "0x55eadb4b5548-Name", + "id": "0x55dbc1107778-Name", "source": "nk" }, { - "id": "0x55eadb4b5580-EntityDecl", - "Name": "0x55eadb4b5638-Name" + "id": "0x55dbc11077b0-EntityDecl", + "Name": "0x55dbc1107868-Name" }, { - "id": "0x55eadb4b5638-Name", + "id": "0x55dbc1107868-Name", "source": "nl" }, { - "id": "0x55eadb4b5670-EntityDecl", - "Name": "0x55eadb4b5728-Name" + "id": "0x55dbc11078a0-EntityDecl", + "Name": "0x55dbc1107958-Name" }, { - "id": "0x55eadb4b5728-Name", + "id": "0x55dbc1107958-Name", "source": "nm" }, { - "id": "0x55eadb4aa370-DeclarationConstruct", + "id": "0x55dbc1103380-DeclarationConstruct", "variantKey": "SpecificationConstruct", - "SpecificationConstruct": "0x55eadb4aa370-SpecificationConstruct" + "SpecificationConstruct": "0x55dbc1103380-SpecificationConstruct" }, { - "id": "0x55eadb4aa370-SpecificationConstruct", + "id": "0x55dbc1103380-SpecificationConstruct", "variantKey": "Statement", - "Statement": "0x55eadb4aa370-Statement" + "Statement": "0x55dbc1103380-Statement" }, { - "id": "0x55eadb4aa370-Statement", - "statement": "0x55eadb4aba60-TypeDeclarationStmt", + "id": "0x55dbc1103380-Statement", + "statement": "0x55dbc1100870-TypeDeclarationStmt", "source": "integer :: i, j, k" }, { - "id": "0x55eadb4aba60-TypeDeclarationStmt", - "DeclarationTypeSpec": "0x55eadb4aba90-DeclarationTypeSpec", + "id": "0x55dbc1100870-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x55dbc11008a0-DeclarationTypeSpec", "EntityDecl": [ - "0x55eadb4b5a30-EntityDecl", - "0x55eadb4b5850-EntityDecl", - "0x55eadb4b5940-EntityDecl" + "0x55dbc1107c60-EntityDecl", + "0x55dbc1107a80-EntityDecl", + "0x55dbc1107b70-EntityDecl" ] }, { - "id": "0x55eadb4aba90-DeclarationTypeSpec", + "id": "0x55dbc11008a0-DeclarationTypeSpec", "variantKey": "IntrinsicTypeSpec", - "IntrinsicTypeSpec": "0x55eadb4aba90-IntrinsicTypeSpec" + "IntrinsicTypeSpec": "0x55dbc11008a0-IntrinsicTypeSpec" }, { - "id": "0x55eadb4aba90-IntrinsicTypeSpec", + "id": "0x55dbc11008a0-IntrinsicTypeSpec", "variantKey": "IntegerTypeSpec", - "IntegerTypeSpec": "0x55eadb4aba90-IntegerTypeSpec" + "IntegerTypeSpec": "0x55dbc11008a0-IntegerTypeSpec" }, { - "id": "0x55eadb4aba90-IntegerTypeSpec" + "id": "0x55dbc11008a0-IntegerTypeSpec" }, { - "id": "0x55eadb4b5a30-EntityDecl", - "Name": "0x55eadb4b5ae8-Name" + "id": "0x55dbc1107c60-EntityDecl", + "Name": "0x55dbc1107d18-Name" }, { - "id": "0x55eadb4b5ae8-Name", + "id": "0x55dbc1107d18-Name", "source": "i" }, { - "id": "0x55eadb4b5850-EntityDecl", - "Name": "0x55eadb4b5908-Name" + "id": "0x55dbc1107a80-EntityDecl", + "Name": "0x55dbc1107b38-Name" }, { - "id": "0x55eadb4b5908-Name", + "id": "0x55dbc1107b38-Name", "source": "j" }, { - "id": "0x55eadb4b5940-EntityDecl", - "Name": "0x55eadb4b59f8-Name" + "id": "0x55dbc1107b70-EntityDecl", + "Name": "0x55dbc1107c28-Name" }, { - "id": "0x55eadb4b59f8-Name", + "id": "0x55dbc1107c28-Name", "source": "k" }, { - "id": "0x55eadb4bd3d8-ExecutionPart", + "id": "0x55dbc110f6a8-ExecutionPart", "ExecutionPartConstruct": [ - "0x55eadb4b7ae0-ExecutionPartConstruct", - "0x55eadb4ba340-ExecutionPartConstruct", - "0x55eadb4bcba0-ExecutionPartConstruct" + "0x55dbc1109d60-ExecutionPartConstruct", + "0x55dbc110c5c0-ExecutionPartConstruct", + "0x55dbc110ec80-ExecutionPartConstruct" ] }, { - "id": "0x55eadb4bd3d8-ExecutionPartConstruct" + "id": "0x55dbc110f6a8-ExecutionPartConstruct" }, { - "id": "0x55eadb4b7ae0-ExecutionPartConstruct", + "id": "0x55dbc1109d60-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x55eadb4b7ae0-ExecutableConstruct" + "ExecutableConstruct": "0x55dbc1109d60-ExecutableConstruct" }, { - "id": "0x55eadb4b7ae0-ExecutableConstruct", + "id": "0x55dbc1109d60-ExecutableConstruct", "variantKey": "DoConstruct", - "DoConstruct": "0x55eadb4b8680-DoConstruct" + "DoConstruct": "0x55dbc110a900-DoConstruct" }, { - "id": "0x55eadb4b8680-DoConstruct", - "Statement": "0x55eadb4b86d8-Statement", + "id": "0x55dbc110a900-DoConstruct", + "Statement": "0x55dbc110a958-Statement", "ExecutionPartConstruct": [ - "0x55eadb4b7940-ExecutionPartConstruct" + "0x55dbc1109bc0-ExecutionPartConstruct" ], - "Statement": "0x55eadb4b8680-Statement" + "Statement": "0x55dbc110a900-Statement" }, { - "id": "0x55eadb4b86d8-Statement", - "statement": "0x55eadb4b86e8-NonLabelDoStmt", + "id": "0x55dbc110a958-Statement", + "statement": "0x55dbc110a968-NonLabelDoStmt", "source": "do i = 1, ni" }, { - "id": "0x55eadb4b86e8-NonLabelDoStmt", - "LoopControl": "0x55eadb4b86e8-LoopControl" + "id": "0x55dbc110a968-NonLabelDoStmt", + "LoopControl": "0x55dbc110a968-LoopControl" }, { - "id": "0x55eadb4b86e8-LoopControl", + "id": "0x55dbc110a968-LoopControl", "variantKey": "LoopBounds", - "LoopBounds": "0x55eadb4b86e8-LoopBounds" + "LoopBounds": "0x55dbc110a968-LoopBounds" }, { - "id": "0x55eadb4b86e8-LoopBounds", - "var": "0x55eadb4b86e8-Name", - "lower": "0x55eadb4b5b10-Expr", - "upper": "0x55eadb4b5bf0-Expr" + "id": "0x55dbc110a968-LoopBounds", + "var": "0x55dbc110a968-Name", + "lower": "0x55dbc1107d40-Expr", + "upper": "0x55dbc1107e20-Expr" }, { - "id": "0x55eadb4b86e8-Name", + "id": "0x55dbc110a968-Name", "source": "i" }, { - "id": "0x55eadb4b5b10-Expr", + "id": "0x55dbc1107d40-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55eadb4b5b30-LiteralConstant" + "LiteralConstant": "0x55dbc1107d60-LiteralConstant" }, { - "id": "0x55eadb4b5b30-LiteralConstant", + "id": "0x55dbc1107d60-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55eadb4b5b30-IntLiteralConstant" + "IntLiteralConstant": "0x55dbc1107d60-IntLiteralConstant" }, { - "id": "0x55eadb4b5b30-IntLiteralConstant", + "id": "0x55dbc1107d60-IntLiteralConstant", "CharBlock": "1" }, { - "id": "0x55eadb4b5bf0-Expr", + "id": "0x55dbc1107e20-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4af240-Designator" + "Designator": "0x55dbc1101cc0-Designator" }, { - "id": "0x55eadb4af240-Designator", + "id": "0x55dbc1101cc0-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4af250-DataRef" + "DataRef": "0x55dbc1101cd0-DataRef" }, { - "id": "0x55eadb4af250-DataRef", + "id": "0x55dbc1101cd0-DataRef", "variantKey": "Name", - "Name": "0x55eadb4af250-Name" + "Name": "0x55dbc1101cd0-Name" }, { - "id": "0x55eadb4af250-Name", + "id": "0x55dbc1101cd0-Name", "source": "ni" }, { - "id": "0x55eadb4b86c0-ExecutionPartConstruct" + "id": "0x55dbc110a940-ExecutionPartConstruct" }, { - "id": "0x55eadb4b7940-ExecutionPartConstruct", + "id": "0x55dbc1109bc0-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x55eadb4b7940-ExecutableConstruct" + "ExecutableConstruct": "0x55dbc1109bc0-ExecutableConstruct" }, { - "id": "0x55eadb4b7940-ExecutableConstruct", + "id": "0x55dbc1109bc0-ExecutableConstruct", "variantKey": "DoConstruct", - "DoConstruct": "0x55eadb4b8560-DoConstruct" + "DoConstruct": "0x55dbc110a7e0-DoConstruct" }, { - "id": "0x55eadb4b8560-DoConstruct", - "Statement": "0x55eadb4b85b8-Statement", + "id": "0x55dbc110a7e0-DoConstruct", + "Statement": "0x55dbc110a838-Statement", "ExecutionPartConstruct": [ - "0x55eadb4b6400-ExecutionPartConstruct", - "0x55eadb4b78e0-ExecutionPartConstruct" + "0x55dbc1108680-ExecutionPartConstruct", + "0x55dbc1109b60-ExecutionPartConstruct" ], - "Statement": "0x55eadb4b8560-Statement" + "Statement": "0x55dbc110a7e0-Statement" }, { - "id": "0x55eadb4b85b8-Statement", - "statement": "0x55eadb4b85c8-NonLabelDoStmt", + "id": "0x55dbc110a838-Statement", + "statement": "0x55dbc110a848-NonLabelDoStmt", "source": "do j = 1, nj" }, { - "id": "0x55eadb4b85c8-NonLabelDoStmt", - "LoopControl": "0x55eadb4b85c8-LoopControl" + "id": "0x55dbc110a848-NonLabelDoStmt", + "LoopControl": "0x55dbc110a848-LoopControl" }, { - "id": "0x55eadb4b85c8-LoopControl", + "id": "0x55dbc110a848-LoopControl", "variantKey": "LoopBounds", - "LoopBounds": "0x55eadb4b85c8-LoopBounds" + "LoopBounds": "0x55dbc110a848-LoopBounds" }, { - "id": "0x55eadb4b85c8-LoopBounds", - "var": "0x55eadb4b85c8-Name", - "lower": "0x55eadb4b5cd0-Expr", - "upper": "0x55eadb4b5db0-Expr" + "id": "0x55dbc110a848-LoopBounds", + "var": "0x55dbc110a848-Name", + "lower": "0x55dbc1107f00-Expr", + "upper": "0x55dbc1107fe0-Expr" }, { - "id": "0x55eadb4b85c8-Name", + "id": "0x55dbc110a848-Name", "source": "j" }, { - "id": "0x55eadb4b5cd0-Expr", + "id": "0x55dbc1107f00-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55eadb4b5cf0-LiteralConstant" + "LiteralConstant": "0x55dbc1107f20-LiteralConstant" }, { - "id": "0x55eadb4b5cf0-LiteralConstant", + "id": "0x55dbc1107f20-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55eadb4b5cf0-IntLiteralConstant" + "IntLiteralConstant": "0x55dbc1107f20-IntLiteralConstant" }, { - "id": "0x55eadb4b5cf0-IntLiteralConstant", + "id": "0x55dbc1107f20-IntLiteralConstant", "CharBlock": "1" }, { - "id": "0x55eadb4b5db0-Expr", + "id": "0x55dbc1107fe0-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4b4010-Designator" + "Designator": "0x55dbc1106780-Designator" }, { - "id": "0x55eadb4b4010-Designator", + "id": "0x55dbc1106780-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4b4020-DataRef" + "DataRef": "0x55dbc1106790-DataRef" }, { - "id": "0x55eadb4b4020-DataRef", + "id": "0x55dbc1106790-DataRef", "variantKey": "Name", - "Name": "0x55eadb4b4020-Name" + "Name": "0x55dbc1106790-Name" }, { - "id": "0x55eadb4b4020-Name", + "id": "0x55dbc1106790-Name", "source": "nj" }, { - "id": "0x55eadb4b85a0-ExecutionPartConstruct" + "id": "0x55dbc110a820-ExecutionPartConstruct" }, { - "id": "0x55eadb4b6400-ExecutionPartConstruct", + "id": "0x55dbc1108680-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x55eadb4b6400-ExecutableConstruct" + "ExecutableConstruct": "0x55dbc1108680-ExecutableConstruct" }, { - "id": "0x55eadb4b6400-ExecutableConstruct", + "id": "0x55dbc1108680-ExecutableConstruct", "variantKey": "Statement", - "Statement": "0x55eadb4b6400-Statement" + "Statement": "0x55dbc1108680-Statement" }, { - "id": "0x55eadb4b6400-Statement", - "statement": "0x55eadb4b6410-ActionStmt", + "id": "0x55dbc1108680-Statement", + "statement": "0x55dbc1108690-ActionStmt", "source": "e(j, i) = 0.0" }, { - "id": "0x55eadb4b6410-ActionStmt", + "id": "0x55dbc1108690-ActionStmt", "variantKey": "AssignmentStmt", - "AssignmentStmt": "0x55eadb4b62e0-AssignmentStmt" + "AssignmentStmt": "0x55dbc1108560-AssignmentStmt" }, { - "id": "0x55eadb4b62e0-AssignmentStmt", - "Variable": "0x55eadb4b63c0-Variable", - "Expr": "0x55eadb4b62f0-Expr" + "id": "0x55dbc1108560-AssignmentStmt", + "Variable": "0x55dbc1108640-Variable", + "Expr": "0x55dbc1108570-Expr" }, { - "id": "0x55eadb4b63c0-Variable", + "id": "0x55dbc1108640-Variable", "variantKey": "Designator", - "Designator": "0x55eadb4dd240-Designator" + "Designator": "0x55dbc1130b70-Designator" }, { - "id": "0x55eadb4dd240-Designator", + "id": "0x55dbc1130b70-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4dd250-DataRef" + "DataRef": "0x55dbc1130b80-DataRef" }, { - "id": "0x55eadb4dd250-DataRef", + "id": "0x55dbc1130b80-DataRef", "variantKey": "ArrayElement", - "ArrayElement": "0x55eadb4c0f20-ArrayElement" + "ArrayElement": "0x55dbc1069190-ArrayElement" }, { - "id": "0x55eadb4c0f20-ArrayElement", - "base": "0x55eadb4c0f20-DataRef", + "id": "0x55dbc1069190-ArrayElement", + "base": "0x55dbc1069190-DataRef", "subscripts": [ - "0x55eadb5730e0-SectionSubscript", - "0x55eadb573130-SectionSubscript" + "0x55dbc11c5390-SectionSubscript", + "0x55dbc11c53e0-SectionSubscript" ] }, { - "id": "0x55eadb4c0f20-DataRef", + "id": "0x55dbc1069190-DataRef", "variantKey": "Name", - "Name": "0x55eadb4c0f20-Name" + "Name": "0x55dbc1069190-Name" }, { - "id": "0x55eadb4c0f20-Name", + "id": "0x55dbc1069190-Name", "source": "e" }, { - "id": "0x55eadb5730e0-SectionSubscript", + "id": "0x55dbc11c5390-SectionSubscript", "variantKey": "Expr", - "Expr": "0x55eadb4ae2e0-Expr" + "Expr": "0x55dbc10ffff0-Expr" }, { - "id": "0x55eadb4ae2e0-Expr", + "id": "0x55dbc10ffff0-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4b5fd0-Designator" + "Designator": "0x55dbc1108200-Designator" }, { - "id": "0x55eadb4b5fd0-Designator", + "id": "0x55dbc1108200-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4b5fe0-DataRef" + "DataRef": "0x55dbc1108210-DataRef" }, { - "id": "0x55eadb4b5fe0-DataRef", + "id": "0x55dbc1108210-DataRef", "variantKey": "Name", - "Name": "0x55eadb4b5fe0-Name" + "Name": "0x55dbc1108210-Name" }, { - "id": "0x55eadb4b5fe0-Name", + "id": "0x55dbc1108210-Name", "source": "j" }, { - "id": "0x55eadb573130-SectionSubscript", + "id": "0x55dbc11c53e0-SectionSubscript", "variantKey": "Expr", - "Expr": "0x55eadb4aff10-Expr" + "Expr": "0x55dbc1101ff0-Expr" }, { - "id": "0x55eadb4aff10-Expr", + "id": "0x55dbc1101ff0-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4aef10-Designator" + "Designator": "0x55dbc11007e0-Designator" }, { - "id": "0x55eadb4aef10-Designator", + "id": "0x55dbc11007e0-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4aef20-DataRef" + "DataRef": "0x55dbc11007f0-DataRef" }, { - "id": "0x55eadb4aef20-DataRef", + "id": "0x55dbc11007f0-DataRef", "variantKey": "Name", - "Name": "0x55eadb4aef20-Name" + "Name": "0x55dbc11007f0-Name" }, { - "id": "0x55eadb4aef20-Name", + "id": "0x55dbc11007f0-Name", "source": "i" }, { - "id": "0x55eadb4b62f0-Expr", + "id": "0x55dbc1108570-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55eadb4b6310-LiteralConstant" + "LiteralConstant": "0x55dbc1108590-LiteralConstant" }, { - "id": "0x55eadb4b6310-LiteralConstant", + "id": "0x55dbc1108590-LiteralConstant", "variantKey": "RealLiteralConstant", - "RealLiteralConstant": "0x55eadb4b6310-RealLiteralConstant" + "RealLiteralConstant": "0x55dbc1108590-RealLiteralConstant" }, { - "id": "0x55eadb4b6310-RealLiteralConstant", - "real": "0x55eadb4b6310-Real" + "id": "0x55dbc1108590-RealLiteralConstant", + "real": "0x55dbc1108590-Real" }, { - "id": "0x55eadb4b6310-Real", + "id": "0x55dbc1108590-Real", "source": "0.0" }, { - "id": "0x55eadb4b78e0-ExecutionPartConstruct", + "id": "0x55dbc1109b60-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x55eadb4b78e0-ExecutableConstruct" + "ExecutableConstruct": "0x55dbc1109b60-ExecutableConstruct" }, { - "id": "0x55eadb4b78e0-ExecutableConstruct", + "id": "0x55dbc1109b60-ExecutableConstruct", "variantKey": "DoConstruct", - "DoConstruct": "0x55eadb4b8440-DoConstruct" + "DoConstruct": "0x55dbc110a6c0-DoConstruct" }, { - "id": "0x55eadb4b8440-DoConstruct", - "Statement": "0x55eadb4b8498-Statement", + "id": "0x55dbc110a6c0-DoConstruct", + "Statement": "0x55dbc110a718-Statement", "ExecutionPartConstruct": [ - "0x55eadb4b83f0-ExecutionPartConstruct" + "0x55dbc110a670-ExecutionPartConstruct" ], - "Statement": "0x55eadb4b8440-Statement" + "Statement": "0x55dbc110a6c0-Statement" }, { - "id": "0x55eadb4b8498-Statement", - "statement": "0x55eadb4b84a8-NonLabelDoStmt", + "id": "0x55dbc110a718-Statement", + "statement": "0x55dbc110a728-NonLabelDoStmt", "source": "do k = 1, nk" }, { - "id": "0x55eadb4b84a8-NonLabelDoStmt", - "LoopControl": "0x55eadb4b84a8-LoopControl" + "id": "0x55dbc110a728-NonLabelDoStmt", + "LoopControl": "0x55dbc110a728-LoopControl" }, { - "id": "0x55eadb4b84a8-LoopControl", + "id": "0x55dbc110a728-LoopControl", "variantKey": "LoopBounds", - "LoopBounds": "0x55eadb4b84a8-LoopBounds" + "LoopBounds": "0x55dbc110a728-LoopBounds" }, { - "id": "0x55eadb4b84a8-LoopBounds", - "var": "0x55eadb4b84a8-Name", - "lower": "0x55eadb4b6450-Expr", - "upper": "0x55eadb4b6530-Expr" + "id": "0x55dbc110a728-LoopBounds", + "var": "0x55dbc110a728-Name", + "lower": "0x55dbc11086d0-Expr", + "upper": "0x55dbc11087b0-Expr" }, { - "id": "0x55eadb4b84a8-Name", + "id": "0x55dbc110a728-Name", "source": "k" }, { - "id": "0x55eadb4b6450-Expr", + "id": "0x55dbc11086d0-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55eadb4b6470-LiteralConstant" + "LiteralConstant": "0x55dbc11086f0-LiteralConstant" }, { - "id": "0x55eadb4b6470-LiteralConstant", + "id": "0x55dbc11086f0-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55eadb4b6470-IntLiteralConstant" + "IntLiteralConstant": "0x55dbc11086f0-IntLiteralConstant" }, { - "id": "0x55eadb4b6470-IntLiteralConstant", + "id": "0x55dbc11086f0-IntLiteralConstant", "CharBlock": "1" }, { - "id": "0x55eadb4b6530-Expr", + "id": "0x55dbc11087b0-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4a9a20-Designator" + "Designator": "0x55dbc11033d0-Designator" }, { - "id": "0x55eadb4a9a20-Designator", + "id": "0x55dbc11033d0-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4a9a30-DataRef" + "DataRef": "0x55dbc11033e0-DataRef" }, { - "id": "0x55eadb4a9a30-DataRef", + "id": "0x55dbc11033e0-DataRef", "variantKey": "Name", - "Name": "0x55eadb4a9a30-Name" + "Name": "0x55dbc11033e0-Name" }, { - "id": "0x55eadb4a9a30-Name", + "id": "0x55dbc11033e0-Name", "source": "nk" }, { - "id": "0x55eadb4b8480-ExecutionPartConstruct" + "id": "0x55dbc110a700-ExecutionPartConstruct" }, { - "id": "0x55eadb4b83f0-ExecutionPartConstruct", + "id": "0x55dbc110a670-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x55eadb4b83f0-ExecutableConstruct" + "ExecutableConstruct": "0x55dbc110a670-ExecutableConstruct" }, { - "id": "0x55eadb4b83f0-ExecutableConstruct", + "id": "0x55dbc110a670-ExecutableConstruct", "variantKey": "Statement", - "Statement": "0x55eadb4b83f0-Statement" + "Statement": "0x55dbc110a670-Statement" }, { - "id": "0x55eadb4b83f0-Statement", - "statement": "0x55eadb4b8400-ActionStmt", + "id": "0x55dbc110a670-Statement", + "statement": "0x55dbc110a680-ActionStmt", "source": "e(j, i) = e(j, i) + a(k, i) * b(j, k)" }, { - "id": "0x55eadb4b8400-ActionStmt", + "id": "0x55dbc110a680-ActionStmt", "variantKey": "AssignmentStmt", - "AssignmentStmt": "0x55eadb4b82d0-AssignmentStmt" + "AssignmentStmt": "0x55dbc110a550-AssignmentStmt" }, { - "id": "0x55eadb4b82d0-AssignmentStmt", - "Variable": "0x55eadb4b83b0-Variable", - "Expr": "0x55eadb4b82e0-Expr" + "id": "0x55dbc110a550-AssignmentStmt", + "Variable": "0x55dbc110a630-Variable", + "Expr": "0x55dbc110a560-Expr" }, { - "id": "0x55eadb4b83b0-Variable", + "id": "0x55dbc110a630-Variable", "variantKey": "Designator", - "Designator": "0x55eadb4abca0-Designator" + "Designator": "0x55dbc112e2c0-Designator" }, { - "id": "0x55eadb4abca0-Designator", + "id": "0x55dbc112e2c0-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4abcb0-DataRef" + "DataRef": "0x55dbc112e2d0-DataRef" }, { - "id": "0x55eadb4abcb0-DataRef", + "id": "0x55dbc112e2d0-DataRef", "variantKey": "ArrayElement", - "ArrayElement": "0x55eadb4c20f0-ArrayElement" + "ArrayElement": "0x55dbc1101f30-ArrayElement" }, { - "id": "0x55eadb4c20f0-ArrayElement", - "base": "0x55eadb4c20f0-DataRef", + "id": "0x55dbc1101f30-ArrayElement", + "base": "0x55dbc1101f30-DataRef", "subscripts": [ - "0x55eadb4b0d70-SectionSubscript", - "0x55eadb573890-SectionSubscript" + "0x55dbc1102eb0-SectionSubscript", + "0x55dbc11c5b40-SectionSubscript" ] }, { - "id": "0x55eadb4c20f0-DataRef", + "id": "0x55dbc1101f30-DataRef", "variantKey": "Name", - "Name": "0x55eadb4c20f0-Name" + "Name": "0x55dbc1101f30-Name" }, { - "id": "0x55eadb4c20f0-Name", + "id": "0x55dbc1101f30-Name", "source": "e" }, { - "id": "0x55eadb4b0d70-SectionSubscript", + "id": "0x55dbc1102eb0-SectionSubscript", "variantKey": "Expr", - "Expr": "0x55eadb4b5e90-Expr" + "Expr": "0x55dbc11080c0-Expr" }, { - "id": "0x55eadb4b5e90-Expr", + "id": "0x55dbc11080c0-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4b66f0-Designator" + "Designator": "0x55dbc1108970-Designator" }, { - "id": "0x55eadb4b66f0-Designator", + "id": "0x55dbc1108970-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4b6700-DataRef" + "DataRef": "0x55dbc1108980-DataRef" }, { - "id": "0x55eadb4b6700-DataRef", + "id": "0x55dbc1108980-DataRef", "variantKey": "Name", - "Name": "0x55eadb4b6700-Name" + "Name": "0x55dbc1108980-Name" }, { - "id": "0x55eadb4b6700-Name", + "id": "0x55dbc1108980-Name", "source": "j" }, { - "id": "0x55eadb573890-SectionSubscript", + "id": "0x55dbc11c5b40-SectionSubscript", "variantKey": "Expr", - "Expr": "0x55eadb4b6030-Expr" + "Expr": "0x55dbc1108260-Expr" }, { - "id": "0x55eadb4b6030-Expr", + "id": "0x55dbc1108260-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4b4440-Designator" + "Designator": "0x55dbc1106bb0-Designator" }, { - "id": "0x55eadb4b4440-Designator", + "id": "0x55dbc1106bb0-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4b4450-DataRef" + "DataRef": "0x55dbc1106bc0-DataRef" }, { - "id": "0x55eadb4b4450-DataRef", + "id": "0x55dbc1106bc0-DataRef", "variantKey": "Name", - "Name": "0x55eadb4b4450-Name" + "Name": "0x55dbc1106bc0-Name" }, { - "id": "0x55eadb4b4450-Name", + "id": "0x55dbc1106bc0-Name", "source": "i" }, { - "id": "0x55eadb4b82e0-Expr", + "id": "0x55dbc110a560-Expr", "variantKey": "Add", - "Add": "0x55eadb4b8300-Add" + "Add": "0x55dbc110a580-Add" }, { - "id": "0x55eadb4b8300-Add", - "left": "0x55eadb4b81f0-Expr", - "right": "0x55eadb4b8110-Expr", + "id": "0x55dbc110a580-Add", + "left": "0x55dbc110a470-Expr", + "right": "0x55dbc110a390-Expr", "op": "ADD" }, { - "id": "0x55eadb4b81f0-Expr", + "id": "0x55dbc110a470-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4a9110-Designator" + "Designator": "0x55dbc11c5df0-Designator" }, { - "id": "0x55eadb4a9110-Designator", + "id": "0x55dbc11c5df0-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4a9120-DataRef" + "DataRef": "0x55dbc11c5e00-DataRef" }, { - "id": "0x55eadb4a9120-DataRef", + "id": "0x55dbc11c5e00-DataRef", "variantKey": "ArrayElement", - "ArrayElement": "0x55eadb4a3af0-ArrayElement" + "ArrayElement": "0x55dbc1105610-ArrayElement" }, { - "id": "0x55eadb4a3af0-ArrayElement", - "base": "0x55eadb4a3af0-DataRef", + "id": "0x55dbc1105610-ArrayElement", + "base": "0x55dbc1105610-DataRef", "subscripts": [ - "0x55eadb573ab0-SectionSubscript", - "0x55eadb573b00-SectionSubscript" + "0x55dbc11c5d60-SectionSubscript", + "0x55dbc11c5db0-SectionSubscript" ] }, { - "id": "0x55eadb4a3af0-DataRef", + "id": "0x55dbc1105610-DataRef", "variantKey": "Name", - "Name": "0x55eadb4a3af0-Name" + "Name": "0x55dbc1105610-Name" }, { - "id": "0x55eadb4a3af0-Name", + "id": "0x55dbc1105610-Name", "source": "e" }, { - "id": "0x55eadb573ab0-SectionSubscript", + "id": "0x55dbc11c5d60-SectionSubscript", "variantKey": "Expr", - "Expr": "0x55eadb4b6610-Expr" + "Expr": "0x55dbc1108890-Expr" }, { - "id": "0x55eadb4b6610-Expr", + "id": "0x55dbc1108890-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4b6dd0-Designator" + "Designator": "0x55dbc1109050-Designator" }, { - "id": "0x55eadb4b6dd0-Designator", + "id": "0x55dbc1109050-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4b6de0-DataRef" + "DataRef": "0x55dbc1109060-DataRef" }, { - "id": "0x55eadb4b6de0-DataRef", + "id": "0x55dbc1109060-DataRef", "variantKey": "Name", - "Name": "0x55eadb4b6de0-Name" + "Name": "0x55dbc1109060-Name" }, { - "id": "0x55eadb4b6de0-Name", + "id": "0x55dbc1109060-Name", "source": "j" }, { - "id": "0x55eadb573b00-SectionSubscript", + "id": "0x55dbc11c5db0-SectionSubscript", "variantKey": "Expr", - "Expr": "0x55eadb4b6750-Expr" + "Expr": "0x55dbc11089d0-Expr" }, { - "id": "0x55eadb4b6750-Expr", + "id": "0x55dbc11089d0-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4b6bd0-Designator" + "Designator": "0x55dbc1108e50-Designator" }, { - "id": "0x55eadb4b6bd0-Designator", + "id": "0x55dbc1108e50-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4b6be0-DataRef" + "DataRef": "0x55dbc1108e60-DataRef" }, { - "id": "0x55eadb4b6be0-DataRef", + "id": "0x55dbc1108e60-DataRef", "variantKey": "Name", - "Name": "0x55eadb4b6be0-Name" + "Name": "0x55dbc1108e60-Name" }, { - "id": "0x55eadb4b6be0-Name", + "id": "0x55dbc1108e60-Name", "source": "i" }, { - "id": "0x55eadb4b8110-Expr", + "id": "0x55dbc110a390-Expr", "variantKey": "Multiply", - "Multiply": "0x55eadb4b8130-Multiply" + "Multiply": "0x55dbc110a3b0-Multiply" }, { - "id": "0x55eadb4b8130-Multiply", - "left": "0x55eadb4b8030-Expr", - "right": "0x55eadb4b7f50-Expr", + "id": "0x55dbc110a3b0-Multiply", + "left": "0x55dbc110a2b0-Expr", + "right": "0x55dbc110a1d0-Expr", "op": "MULTIPLY" }, { - "id": "0x55eadb4b8030-Expr", + "id": "0x55dbc110a2b0-Expr", "variantKey": "Designator", - "Designator": "0x55eadb573e40-Designator" + "Designator": "0x55dbc11c6150-Designator" }, { - "id": "0x55eadb573e40-Designator", + "id": "0x55dbc11c6150-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb573e50-DataRef" + "DataRef": "0x55dbc11c6160-DataRef" }, { - "id": "0x55eadb573e50-DataRef", + "id": "0x55dbc11c6160-DataRef", "variantKey": "ArrayElement", - "ArrayElement": "0x55eadb4b6240-ArrayElement" + "ArrayElement": "0x55dbc110e520-ArrayElement" }, { - "id": "0x55eadb4b6240-ArrayElement", - "base": "0x55eadb4b6240-DataRef", + "id": "0x55dbc110e520-ArrayElement", + "base": "0x55dbc110e520-DataRef", "subscripts": [ - "0x55eadb573db0-SectionSubscript", - "0x55eadb573e00-SectionSubscript" + "0x55dbc11c60c0-SectionSubscript", + "0x55dbc11c6110-SectionSubscript" ] }, { - "id": "0x55eadb4b6240-DataRef", + "id": "0x55dbc110e520-DataRef", "variantKey": "Name", - "Name": "0x55eadb4b6240-Name" + "Name": "0x55dbc110e520-Name" }, { - "id": "0x55eadb4b6240-Name", + "id": "0x55dbc110e520-Name", "source": "a" }, { - "id": "0x55eadb573db0-SectionSubscript", + "id": "0x55dbc11c60c0-SectionSubscript", "variantKey": "Expr", - "Expr": "0x55eadb4b6c30-Expr" + "Expr": "0x55dbc1108eb0-Expr" }, { - "id": "0x55eadb4b6c30-Expr", + "id": "0x55dbc1108eb0-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4b74b0-Designator" + "Designator": "0x55dbc1109730-Designator" }, { - "id": "0x55eadb4b74b0-Designator", + "id": "0x55dbc1109730-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4b74c0-DataRef" + "DataRef": "0x55dbc1109740-DataRef" }, { - "id": "0x55eadb4b74c0-DataRef", + "id": "0x55dbc1109740-DataRef", "variantKey": "Name", - "Name": "0x55eadb4b74c0-Name" + "Name": "0x55dbc1109740-Name" }, { - "id": "0x55eadb4b74c0-Name", + "id": "0x55dbc1109740-Name", "source": "k" }, { - "id": "0x55eadb573e00-SectionSubscript", + "id": "0x55dbc11c6110-SectionSubscript", "variantKey": "Expr", - "Expr": "0x55eadb4b6e30-Expr" + "Expr": "0x55dbc11090b0-Expr" }, { - "id": "0x55eadb4b6e30-Expr", + "id": "0x55dbc11090b0-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4b72b0-Designator" + "Designator": "0x55dbc1109530-Designator" }, { - "id": "0x55eadb4b72b0-Designator", + "id": "0x55dbc1109530-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4b72c0-DataRef" + "DataRef": "0x55dbc1109540-DataRef" }, { - "id": "0x55eadb4b72c0-DataRef", + "id": "0x55dbc1109540-DataRef", "variantKey": "Name", - "Name": "0x55eadb4b72c0-Name" + "Name": "0x55dbc1109540-Name" }, { - "id": "0x55eadb4b72c0-Name", + "id": "0x55dbc1109540-Name", "source": "i" }, { - "id": "0x55eadb4b7f50-Expr", + "id": "0x55dbc110a1d0-Expr", "variantKey": "Designator", - "Designator": "0x55eadb574230-Designator" + "Designator": "0x55dbc11c64b0-Designator" }, { - "id": "0x55eadb574230-Designator", + "id": "0x55dbc11c64b0-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb574240-DataRef" + "DataRef": "0x55dbc11c64c0-DataRef" }, { - "id": "0x55eadb574240-DataRef", + "id": "0x55dbc11c64c0-DataRef", "variantKey": "ArrayElement", - "ArrayElement": "0x55eadb4b7700-ArrayElement" + "ArrayElement": "0x55dbc10f5a40-ArrayElement" }, { - "id": "0x55eadb4b7700-ArrayElement", - "base": "0x55eadb4b7700-DataRef", + "id": "0x55dbc10f5a40-ArrayElement", + "base": "0x55dbc10f5a40-DataRef", "subscripts": [ - "0x55eadb5741a0-SectionSubscript", - "0x55eadb5741f0-SectionSubscript" + "0x55dbc11c6420-SectionSubscript", + "0x55dbc11c6470-SectionSubscript" ] }, { - "id": "0x55eadb4b7700-DataRef", + "id": "0x55dbc10f5a40-DataRef", "variantKey": "Name", - "Name": "0x55eadb4b7700-Name" + "Name": "0x55dbc10f5a40-Name" }, { - "id": "0x55eadb4b7700-Name", + "id": "0x55dbc10f5a40-Name", "source": "b" }, { - "id": "0x55eadb5741a0-SectionSubscript", + "id": "0x55dbc11c6420-SectionSubscript", "variantKey": "Expr", - "Expr": "0x55eadb4b7310-Expr" + "Expr": "0x55dbc1109590-Expr" }, { - "id": "0x55eadb4b7310-Expr", + "id": "0x55dbc1109590-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4b7b90-Designator" + "Designator": "0x55dbc1109e10-Designator" }, { - "id": "0x55eadb4b7b90-Designator", + "id": "0x55dbc1109e10-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4b7ba0-DataRef" + "DataRef": "0x55dbc1109e20-DataRef" }, { - "id": "0x55eadb4b7ba0-DataRef", + "id": "0x55dbc1109e20-DataRef", "variantKey": "Name", - "Name": "0x55eadb4b7ba0-Name" + "Name": "0x55dbc1109e20-Name" }, { - "id": "0x55eadb4b7ba0-Name", + "id": "0x55dbc1109e20-Name", "source": "j" }, { - "id": "0x55eadb5741f0-SectionSubscript", + "id": "0x55dbc11c6470-SectionSubscript", "variantKey": "Expr", - "Expr": "0x55eadb4b7510-Expr" + "Expr": "0x55dbc1109790-Expr" }, { - "id": "0x55eadb4b7510-Expr", + "id": "0x55dbc1109790-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4b7990-Designator" + "Designator": "0x55dbc1109c10-Designator" }, { - "id": "0x55eadb4b7990-Designator", + "id": "0x55dbc1109c10-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4b79a0-DataRef" + "DataRef": "0x55dbc1109c20-DataRef" }, { - "id": "0x55eadb4b79a0-DataRef", + "id": "0x55dbc1109c20-DataRef", "variantKey": "Name", - "Name": "0x55eadb4b79a0-Name" + "Name": "0x55dbc1109c20-Name" }, { - "id": "0x55eadb4b79a0-Name", + "id": "0x55dbc1109c20-Name", "source": "k" }, { - "id": "0x55eadb4b8440-Statement", - "statement": "0x55eadb4b8450-EndDoStmt", + "id": "0x55dbc110a6c0-Statement", + "statement": "0x55dbc110a6d0-EndDoStmt", "source": "end do" }, { - "id": "0x55eadb4b8450-EndDoStmt" + "id": "0x55dbc110a6d0-EndDoStmt" }, { - "id": "0x55eadb4b8560-Statement", - "statement": "0x55eadb4b8570-EndDoStmt", + "id": "0x55dbc110a7e0-Statement", + "statement": "0x55dbc110a7f0-EndDoStmt", "source": "end do" }, { - "id": "0x55eadb4b8570-EndDoStmt" + "id": "0x55dbc110a7f0-EndDoStmt" }, { - "id": "0x55eadb4b8680-Statement", - "statement": "0x55eadb4b8690-EndDoStmt", + "id": "0x55dbc110a900-Statement", + "statement": "0x55dbc110a910-EndDoStmt", "source": "end do" }, { - "id": "0x55eadb4b8690-EndDoStmt" + "id": "0x55dbc110a910-EndDoStmt" }, { - "id": "0x55eadb4ba340-ExecutionPartConstruct", + "id": "0x55dbc110c5c0-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x55eadb4ba340-ExecutableConstruct" + "ExecutableConstruct": "0x55dbc110c5c0-ExecutableConstruct" }, { - "id": "0x55eadb4ba340-ExecutableConstruct", + "id": "0x55dbc110c5c0-ExecutableConstruct", "variantKey": "DoConstruct", - "DoConstruct": "0x55eadb4baee0-DoConstruct" + "DoConstruct": "0x55dbc110d160-DoConstruct" }, { - "id": "0x55eadb4baee0-DoConstruct", - "Statement": "0x55eadb4baf38-Statement", + "id": "0x55dbc110d160-DoConstruct", + "Statement": "0x55dbc110d1b8-Statement", "ExecutionPartConstruct": [ - "0x55eadb4ba1a0-ExecutionPartConstruct" + "0x55dbc110c420-ExecutionPartConstruct" ], - "Statement": "0x55eadb4baee0-Statement" + "Statement": "0x55dbc110d160-Statement" }, { - "id": "0x55eadb4baf38-Statement", - "statement": "0x55eadb4baf48-NonLabelDoStmt", + "id": "0x55dbc110d1b8-Statement", + "statement": "0x55dbc110d1c8-NonLabelDoStmt", "source": "do i = 1, nj" }, { - "id": "0x55eadb4baf48-NonLabelDoStmt", - "LoopControl": "0x55eadb4baf48-LoopControl" + "id": "0x55dbc110d1c8-NonLabelDoStmt", + "LoopControl": "0x55dbc110d1c8-LoopControl" }, { - "id": "0x55eadb4baf48-LoopControl", + "id": "0x55dbc110d1c8-LoopControl", "variantKey": "LoopBounds", - "LoopBounds": "0x55eadb4baf48-LoopBounds" + "LoopBounds": "0x55dbc110d1c8-LoopBounds" }, { - "id": "0x55eadb4baf48-LoopBounds", - "var": "0x55eadb4baf48-Name", - "lower": "0x55eadb4b87a0-Expr", - "upper": "0x55eadb4b8880-Expr" + "id": "0x55dbc110d1c8-LoopBounds", + "var": "0x55dbc110d1c8-Name", + "lower": "0x55dbc110aa20-Expr", + "upper": "0x55dbc110ab00-Expr" }, { - "id": "0x55eadb4baf48-Name", + "id": "0x55dbc110d1c8-Name", "source": "i" }, { - "id": "0x55eadb4b87a0-Expr", + "id": "0x55dbc110aa20-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55eadb4b87c0-LiteralConstant" + "LiteralConstant": "0x55dbc110aa40-LiteralConstant" }, { - "id": "0x55eadb4b87c0-LiteralConstant", + "id": "0x55dbc110aa40-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55eadb4b87c0-IntLiteralConstant" + "IntLiteralConstant": "0x55dbc110aa40-IntLiteralConstant" }, { - "id": "0x55eadb4b87c0-IntLiteralConstant", + "id": "0x55dbc110aa40-IntLiteralConstant", "CharBlock": "1" }, { - "id": "0x55eadb4b8880-Expr", + "id": "0x55dbc110ab00-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4b7cd0-Designator" + "Designator": "0x55dbc1109f50-Designator" }, { - "id": "0x55eadb4b7cd0-Designator", + "id": "0x55dbc1109f50-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4b7ce0-DataRef" + "DataRef": "0x55dbc1109f60-DataRef" }, { - "id": "0x55eadb4b7ce0-DataRef", + "id": "0x55dbc1109f60-DataRef", "variantKey": "Name", - "Name": "0x55eadb4b7ce0-Name" + "Name": "0x55dbc1109f60-Name" }, { - "id": "0x55eadb4b7ce0-Name", + "id": "0x55dbc1109f60-Name", "source": "nj" }, { - "id": "0x55eadb4baf20-ExecutionPartConstruct" + "id": "0x55dbc110d1a0-ExecutionPartConstruct" }, { - "id": "0x55eadb4ba1a0-ExecutionPartConstruct", + "id": "0x55dbc110c420-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x55eadb4ba1a0-ExecutableConstruct" + "ExecutableConstruct": "0x55dbc110c420-ExecutableConstruct" }, { - "id": "0x55eadb4ba1a0-ExecutableConstruct", + "id": "0x55dbc110c420-ExecutableConstruct", "variantKey": "DoConstruct", - "DoConstruct": "0x55eadb4badc0-DoConstruct" + "DoConstruct": "0x55dbc110d040-DoConstruct" }, { - "id": "0x55eadb4badc0-DoConstruct", - "Statement": "0x55eadb4bae18-Statement", + "id": "0x55dbc110d040-DoConstruct", + "Statement": "0x55dbc110d098-Statement", "ExecutionPartConstruct": [ - "0x55eadb4b6b80-ExecutionPartConstruct", - "0x55eadb4ba140-ExecutionPartConstruct" + "0x55dbc1108e00-ExecutionPartConstruct", + "0x55dbc110c3c0-ExecutionPartConstruct" ], - "Statement": "0x55eadb4badc0-Statement" + "Statement": "0x55dbc110d040-Statement" }, { - "id": "0x55eadb4bae18-Statement", - "statement": "0x55eadb4bae28-NonLabelDoStmt", + "id": "0x55dbc110d098-Statement", + "statement": "0x55dbc110d0a8-NonLabelDoStmt", "source": "do j = 1, nl" }, { - "id": "0x55eadb4bae28-NonLabelDoStmt", - "LoopControl": "0x55eadb4bae28-LoopControl" + "id": "0x55dbc110d0a8-NonLabelDoStmt", + "LoopControl": "0x55dbc110d0a8-LoopControl" }, { - "id": "0x55eadb4bae28-LoopControl", + "id": "0x55dbc110d0a8-LoopControl", "variantKey": "LoopBounds", - "LoopBounds": "0x55eadb4bae28-LoopBounds" + "LoopBounds": "0x55dbc110d0a8-LoopBounds" }, { - "id": "0x55eadb4bae28-LoopBounds", - "var": "0x55eadb4bae28-Name", - "lower": "0x55eadb4b8960-Expr", - "upper": "0x55eadb4b8a40-Expr" + "id": "0x55dbc110d0a8-LoopBounds", + "var": "0x55dbc110d0a8-Name", + "lower": "0x55dbc110abe0-Expr", + "upper": "0x55dbc110acc0-Expr" }, { - "id": "0x55eadb4bae28-Name", + "id": "0x55dbc110d0a8-Name", "source": "j" }, { - "id": "0x55eadb4b8960-Expr", + "id": "0x55dbc110abe0-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55eadb4b8980-LiteralConstant" + "LiteralConstant": "0x55dbc110ac00-LiteralConstant" }, { - "id": "0x55eadb4b8980-LiteralConstant", + "id": "0x55dbc110ac00-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55eadb4b8980-IntLiteralConstant" + "IntLiteralConstant": "0x55dbc110ac00-IntLiteralConstant" }, { - "id": "0x55eadb4b8980-IntLiteralConstant", + "id": "0x55dbc110ac00-IntLiteralConstant", "CharBlock": "1" }, { - "id": "0x55eadb4b8a40-Expr", + "id": "0x55dbc110acc0-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4b6280-Designator" + "Designator": "0x55dbc1108500-Designator" }, { - "id": "0x55eadb4b6280-Designator", + "id": "0x55dbc1108500-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4b6290-DataRef" + "DataRef": "0x55dbc1108510-DataRef" }, { - "id": "0x55eadb4b6290-DataRef", + "id": "0x55dbc1108510-DataRef", "variantKey": "Name", - "Name": "0x55eadb4b6290-Name" + "Name": "0x55dbc1108510-Name" }, { - "id": "0x55eadb4b6290-Name", + "id": "0x55dbc1108510-Name", "source": "nl" }, { - "id": "0x55eadb4bae00-ExecutionPartConstruct" + "id": "0x55dbc110d080-ExecutionPartConstruct" }, { - "id": "0x55eadb4b6b80-ExecutionPartConstruct", + "id": "0x55dbc1108e00-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x55eadb4b6b80-ExecutableConstruct" + "ExecutableConstruct": "0x55dbc1108e00-ExecutableConstruct" }, { - "id": "0x55eadb4b6b80-ExecutableConstruct", + "id": "0x55dbc1108e00-ExecutableConstruct", "variantKey": "Statement", - "Statement": "0x55eadb4b6b80-Statement" + "Statement": "0x55dbc1108e00-Statement" }, { - "id": "0x55eadb4b6b80-Statement", - "statement": "0x55eadb4b6b90-ActionStmt", + "id": "0x55dbc1108e00-Statement", + "statement": "0x55dbc1108e10-ActionStmt", "source": "f(j, i) = 0.0" }, { - "id": "0x55eadb4b6b90-ActionStmt", + "id": "0x55dbc1108e10-ActionStmt", "variantKey": "AssignmentStmt", - "AssignmentStmt": "0x55eadb4b8f00-AssignmentStmt" + "AssignmentStmt": "0x55dbc110b180-AssignmentStmt" }, { - "id": "0x55eadb4b8f00-AssignmentStmt", - "Variable": "0x55eadb4b8fe0-Variable", - "Expr": "0x55eadb4b8f10-Expr" + "id": "0x55dbc110b180-AssignmentStmt", + "Variable": "0x55dbc110b260-Variable", + "Expr": "0x55dbc110b190-Expr" }, { - "id": "0x55eadb4b8fe0-Variable", + "id": "0x55dbc110b260-Variable", "variantKey": "Designator", - "Designator": "0x55eadb4a9db0-Designator" + "Designator": "0x55dbc1129b80-Designator" }, { - "id": "0x55eadb4a9db0-Designator", + "id": "0x55dbc1129b80-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4a9dc0-DataRef" + "DataRef": "0x55dbc1129b90-DataRef" }, { - "id": "0x55eadb4a9dc0-DataRef", + "id": "0x55dbc1129b90-DataRef", "variantKey": "ArrayElement", - "ArrayElement": "0x55eadb4b7de0-ArrayElement" + "ArrayElement": "0x55dbc1110540-ArrayElement" }, { - "id": "0x55eadb4b7de0-ArrayElement", - "base": "0x55eadb4b7de0-DataRef", + "id": "0x55dbc1110540-ArrayElement", + "base": "0x55dbc1110540-DataRef", "subscripts": [ - "0x55eadb4b6a70-SectionSubscript", - "0x55eadb575540-SectionSubscript" + "0x55dbc1108cf0-SectionSubscript", + "0x55dbc11c7750-SectionSubscript" ] }, { - "id": "0x55eadb4b7de0-DataRef", + "id": "0x55dbc1110540-DataRef", "variantKey": "Name", - "Name": "0x55eadb4b7de0-Name" + "Name": "0x55dbc1110540-Name" }, { - "id": "0x55eadb4b7de0-Name", + "id": "0x55dbc1110540-Name", "source": "f" }, { - "id": "0x55eadb4b6a70-SectionSubscript", + "id": "0x55dbc1108cf0-SectionSubscript", "variantKey": "Expr", - "Expr": "0x55eadb4b79f0-Expr" + "Expr": "0x55dbc1109c70-Expr" }, { - "id": "0x55eadb4b79f0-Expr", + "id": "0x55dbc1109c70-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4b6f10-Designator" + "Designator": "0x55dbc1109190-Designator" }, { - "id": "0x55eadb4b6f10-Designator", + "id": "0x55dbc1109190-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4b6f20-DataRef" + "DataRef": "0x55dbc11091a0-DataRef" }, { - "id": "0x55eadb4b6f20-DataRef", + "id": "0x55dbc11091a0-DataRef", "variantKey": "Name", - "Name": "0x55eadb4b6f20-Name" + "Name": "0x55dbc11091a0-Name" }, { - "id": "0x55eadb4b6f20-Name", + "id": "0x55dbc11091a0-Name", "source": "j" }, { - "id": "0x55eadb575540-SectionSubscript", + "id": "0x55dbc11c7750-SectionSubscript", "variantKey": "Expr", - "Expr": "0x55eadb4b7bf0-Expr" + "Expr": "0x55dbc1109e70-Expr" }, { - "id": "0x55eadb4b7bf0-Expr", + "id": "0x55dbc1109e70-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4b6ab0-Designator" + "Designator": "0x55dbc1108d30-Designator" }, { - "id": "0x55eadb4b6ab0-Designator", + "id": "0x55dbc1108d30-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4b6ac0-DataRef" + "DataRef": "0x55dbc1108d40-DataRef" }, { - "id": "0x55eadb4b6ac0-DataRef", + "id": "0x55dbc1108d40-DataRef", "variantKey": "Name", - "Name": "0x55eadb4b6ac0-Name" + "Name": "0x55dbc1108d40-Name" }, { - "id": "0x55eadb4b6ac0-Name", + "id": "0x55dbc1108d40-Name", "source": "i" }, { - "id": "0x55eadb4b8f10-Expr", + "id": "0x55dbc110b190-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55eadb4b8f30-LiteralConstant" + "LiteralConstant": "0x55dbc110b1b0-LiteralConstant" }, { - "id": "0x55eadb4b8f30-LiteralConstant", + "id": "0x55dbc110b1b0-LiteralConstant", "variantKey": "RealLiteralConstant", - "RealLiteralConstant": "0x55eadb4b8f30-RealLiteralConstant" + "RealLiteralConstant": "0x55dbc110b1b0-RealLiteralConstant" }, { - "id": "0x55eadb4b8f30-RealLiteralConstant", - "real": "0x55eadb4b8f30-Real" + "id": "0x55dbc110b1b0-RealLiteralConstant", + "real": "0x55dbc110b1b0-Real" }, { - "id": "0x55eadb4b8f30-Real", + "id": "0x55dbc110b1b0-Real", "source": "0.0" }, { - "id": "0x55eadb4ba140-ExecutionPartConstruct", + "id": "0x55dbc110c3c0-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x55eadb4ba140-ExecutableConstruct" + "ExecutableConstruct": "0x55dbc110c3c0-ExecutableConstruct" }, { - "id": "0x55eadb4ba140-ExecutableConstruct", + "id": "0x55dbc110c3c0-ExecutableConstruct", "variantKey": "DoConstruct", - "DoConstruct": "0x55eadb4baca0-DoConstruct" + "DoConstruct": "0x55dbc110cf20-DoConstruct" }, { - "id": "0x55eadb4baca0-DoConstruct", - "Statement": "0x55eadb4bacf8-Statement", + "id": "0x55dbc110cf20-DoConstruct", + "Statement": "0x55dbc110cf78-Statement", "ExecutionPartConstruct": [ - "0x55eadb4bac50-ExecutionPartConstruct" + "0x55dbc110ced0-ExecutionPartConstruct" ], - "Statement": "0x55eadb4baca0-Statement" + "Statement": "0x55dbc110cf20-Statement" }, { - "id": "0x55eadb4bacf8-Statement", - "statement": "0x55eadb4bad08-NonLabelDoStmt", + "id": "0x55dbc110cf78-Statement", + "statement": "0x55dbc110cf88-NonLabelDoStmt", "source": "do k = 1, nm" }, { - "id": "0x55eadb4bad08-NonLabelDoStmt", - "LoopControl": "0x55eadb4bad08-LoopControl" + "id": "0x55dbc110cf88-NonLabelDoStmt", + "LoopControl": "0x55dbc110cf88-LoopControl" }, { - "id": "0x55eadb4bad08-LoopControl", + "id": "0x55dbc110cf88-LoopControl", "variantKey": "LoopBounds", - "LoopBounds": "0x55eadb4bad08-LoopBounds" + "LoopBounds": "0x55dbc110cf88-LoopBounds" }, { - "id": "0x55eadb4bad08-LoopBounds", - "var": "0x55eadb4bad08-Name", - "lower": "0x55eadb4b9010-Expr", - "upper": "0x55eadb4b90f0-Expr" + "id": "0x55dbc110cf88-LoopBounds", + "var": "0x55dbc110cf88-Name", + "lower": "0x55dbc110b290-Expr", + "upper": "0x55dbc110b370-Expr" }, { - "id": "0x55eadb4bad08-Name", + "id": "0x55dbc110cf88-Name", "source": "k" }, { - "id": "0x55eadb4b9010-Expr", + "id": "0x55dbc110b290-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55eadb4b9030-LiteralConstant" + "LiteralConstant": "0x55dbc110b2b0-LiteralConstant" }, { - "id": "0x55eadb4b9030-LiteralConstant", + "id": "0x55dbc110b2b0-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55eadb4b9030-IntLiteralConstant" + "IntLiteralConstant": "0x55dbc110b2b0-IntLiteralConstant" }, { - "id": "0x55eadb4b9030-IntLiteralConstant", + "id": "0x55dbc110b2b0-IntLiteralConstant", "CharBlock": "1" }, { - "id": "0x55eadb4b90f0-Expr", + "id": "0x55dbc110b370-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4b6d10-Designator" + "Designator": "0x55dbc1108f90-Designator" }, { - "id": "0x55eadb4b6d10-Designator", + "id": "0x55dbc1108f90-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4b6d20-DataRef" + "DataRef": "0x55dbc1108fa0-DataRef" }, { - "id": "0x55eadb4b6d20-DataRef", + "id": "0x55dbc1108fa0-DataRef", "variantKey": "Name", - "Name": "0x55eadb4b6d20-Name" + "Name": "0x55dbc1108fa0-Name" }, { - "id": "0x55eadb4b6d20-Name", + "id": "0x55dbc1108fa0-Name", "source": "nm" }, { - "id": "0x55eadb4bace0-ExecutionPartConstruct" + "id": "0x55dbc110cf60-ExecutionPartConstruct" }, { - "id": "0x55eadb4bac50-ExecutionPartConstruct", + "id": "0x55dbc110ced0-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x55eadb4bac50-ExecutableConstruct" + "ExecutableConstruct": "0x55dbc110ced0-ExecutableConstruct" }, { - "id": "0x55eadb4bac50-ExecutableConstruct", + "id": "0x55dbc110ced0-ExecutableConstruct", "variantKey": "Statement", - "Statement": "0x55eadb4bac50-Statement" + "Statement": "0x55dbc110ced0-Statement" }, { - "id": "0x55eadb4bac50-Statement", - "statement": "0x55eadb4bac60-ActionStmt", + "id": "0x55dbc110ced0-Statement", + "statement": "0x55dbc110cee0-ActionStmt", "source": "f(j, i) = f(j, i) + c(k, i) * d(j, k)" }, { - "id": "0x55eadb4bac60-ActionStmt", + "id": "0x55dbc110cee0-ActionStmt", "variantKey": "AssignmentStmt", - "AssignmentStmt": "0x55eadb4bab30-AssignmentStmt" + "AssignmentStmt": "0x55dbc110cdb0-AssignmentStmt" }, { - "id": "0x55eadb4bab30-AssignmentStmt", - "Variable": "0x55eadb4bac10-Variable", - "Expr": "0x55eadb4bab40-Expr" + "id": "0x55dbc110cdb0-AssignmentStmt", + "Variable": "0x55dbc110ce90-Variable", + "Expr": "0x55dbc110cdc0-Expr" }, { - "id": "0x55eadb4bac10-Variable", + "id": "0x55dbc110ce90-Variable", "variantKey": "Designator", - "Designator": "0x55eadb4b7ed0-Designator" + "Designator": "0x55dbc11c66e0-Designator" }, { - "id": "0x55eadb4b7ed0-Designator", + "id": "0x55dbc11c66e0-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4b7ee0-DataRef" + "DataRef": "0x55dbc11c66f0-DataRef" }, { - "id": "0x55eadb4b7ee0-DataRef", + "id": "0x55dbc11c66f0-DataRef", "variantKey": "ArrayElement", - "ArrayElement": "0x55eadb574aa0-ArrayElement" + "ArrayElement": "0x55dbc11c7790-ArrayElement" }, { - "id": "0x55eadb574aa0-ArrayElement", - "base": "0x55eadb574aa0-DataRef", + "id": "0x55dbc11c7790-ArrayElement", + "base": "0x55dbc11c7790-DataRef", "subscripts": [ - "0x55eadb576e90-SectionSubscript", - "0x55eadb576ee0-SectionSubscript" + "0x55dbc11c9100-SectionSubscript", + "0x55dbc11c9150-SectionSubscript" ] }, { - "id": "0x55eadb574aa0-DataRef", + "id": "0x55dbc11c7790-DataRef", "variantKey": "Name", - "Name": "0x55eadb574aa0-Name" + "Name": "0x55dbc11c7790-Name" }, { - "id": "0x55eadb574aa0-Name", + "id": "0x55dbc11c7790-Name", "source": "f" }, { - "id": "0x55eadb576e90-SectionSubscript", + "id": "0x55dbc11c9100-SectionSubscript", "variantKey": "Expr", - "Expr": "0x55eadb4b8b20-Expr" + "Expr": "0x55dbc110ada0-Expr" }, { - "id": "0x55eadb4b8b20-Expr", + "id": "0x55dbc110ada0-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4b73f0-Designator" + "Designator": "0x55dbc1109670-Designator" }, { - "id": "0x55eadb4b73f0-Designator", + "id": "0x55dbc1109670-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4b7400-DataRef" + "DataRef": "0x55dbc1109680-DataRef" }, { - "id": "0x55eadb4b7400-DataRef", + "id": "0x55dbc1109680-DataRef", "variantKey": "Name", - "Name": "0x55eadb4b7400-Name" + "Name": "0x55dbc1109680-Name" }, { - "id": "0x55eadb4b7400-Name", + "id": "0x55dbc1109680-Name", "source": "j" }, { - "id": "0x55eadb576ee0-SectionSubscript", + "id": "0x55dbc11c9150-SectionSubscript", "variantKey": "Expr", - "Expr": "0x55eadb4b8c00-Expr" + "Expr": "0x55dbc110ae80-Expr" }, { - "id": "0x55eadb4b8c00-Expr", + "id": "0x55dbc110ae80-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4b5f70-Designator" + "Designator": "0x55dbc11081a0-Designator" }, { - "id": "0x55eadb4b5f70-Designator", + "id": "0x55dbc11081a0-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4b5f80-DataRef" + "DataRef": "0x55dbc11081b0-DataRef" }, { - "id": "0x55eadb4b5f80-DataRef", + "id": "0x55dbc11081b0-DataRef", "variantKey": "Name", - "Name": "0x55eadb4b5f80-Name" + "Name": "0x55dbc11081b0-Name" }, { - "id": "0x55eadb4b5f80-Name", + "id": "0x55dbc11081b0-Name", "source": "i" }, { - "id": "0x55eadb4bab40-Expr", + "id": "0x55dbc110cdc0-Expr", "variantKey": "Add", - "Add": "0x55eadb4bab60-Add" + "Add": "0x55dbc110cde0-Add" }, { - "id": "0x55eadb4bab60-Add", - "left": "0x55eadb4baa50-Expr", - "right": "0x55eadb4ba970-Expr", + "id": "0x55dbc110cde0-Add", + "left": "0x55dbc110ccd0-Expr", + "right": "0x55dbc110cbf0-Expr", "op": "ADD" }, { - "id": "0x55eadb4baa50-Expr", + "id": "0x55dbc110ccd0-Expr", "variantKey": "Designator", - "Designator": "0x55eadb5771b0-Designator" + "Designator": "0x55dbc11c9390-Designator" }, { - "id": "0x55eadb5771b0-Designator", + "id": "0x55dbc11c9390-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb5771c0-DataRef" + "DataRef": "0x55dbc11c93a0-DataRef" }, { - "id": "0x55eadb5771c0-DataRef", + "id": "0x55dbc11c93a0-DataRef", "variantKey": "ArrayElement", - "ArrayElement": "0x55eadb4b9390-ArrayElement" + "ArrayElement": "0x55dbc110b610-ArrayElement" }, { - "id": "0x55eadb4b9390-ArrayElement", - "base": "0x55eadb4b9390-DataRef", + "id": "0x55dbc110b610-ArrayElement", + "base": "0x55dbc110b610-DataRef", "subscripts": [ - "0x55eadb577120-SectionSubscript", - "0x55eadb577170-SectionSubscript" + "0x55dbc11c9300-SectionSubscript", + "0x55dbc11c9350-SectionSubscript" ] }, { - "id": "0x55eadb4b9390-DataRef", + "id": "0x55dbc110b610-DataRef", "variantKey": "Name", - "Name": "0x55eadb4b9390-Name" + "Name": "0x55dbc110b610-Name" }, { - "id": "0x55eadb4b9390-Name", + "id": "0x55dbc110b610-Name", "source": "f" }, { - "id": "0x55eadb577120-SectionSubscript", + "id": "0x55dbc11c9300-SectionSubscript", "variantKey": "Expr", - "Expr": "0x55eadb4b91d0-Expr" + "Expr": "0x55dbc110b450-Expr" }, { - "id": "0x55eadb4b91d0-Expr", + "id": "0x55dbc110b450-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4b7450-Designator" + "Designator": "0x55dbc11096d0-Designator" }, { - "id": "0x55eadb4b7450-Designator", + "id": "0x55dbc11096d0-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4b7460-DataRef" + "DataRef": "0x55dbc11096e0-DataRef" }, { - "id": "0x55eadb4b7460-DataRef", + "id": "0x55dbc11096e0-DataRef", "variantKey": "Name", - "Name": "0x55eadb4b7460-Name" + "Name": "0x55dbc11096e0-Name" }, { - "id": "0x55eadb4b7460-Name", + "id": "0x55dbc11096e0-Name", "source": "j" }, { - "id": "0x55eadb577170-SectionSubscript", + "id": "0x55dbc11c9350-SectionSubscript", "variantKey": "Expr", - "Expr": "0x55eadb4b92b0-Expr" + "Expr": "0x55dbc110b530-Expr" }, { - "id": "0x55eadb4b92b0-Expr", + "id": "0x55dbc110b530-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4b7b30-Designator" + "Designator": "0x55dbc1109db0-Designator" }, { - "id": "0x55eadb4b7b30-Designator", + "id": "0x55dbc1109db0-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4b7b40-DataRef" + "DataRef": "0x55dbc1109dc0-DataRef" }, { - "id": "0x55eadb4b7b40-DataRef", + "id": "0x55dbc1109dc0-DataRef", "variantKey": "Name", - "Name": "0x55eadb4b7b40-Name" + "Name": "0x55dbc1109dc0-Name" }, { - "id": "0x55eadb4b7b40-Name", + "id": "0x55dbc1109dc0-Name", "source": "i" }, { - "id": "0x55eadb4ba970-Expr", + "id": "0x55dbc110cbf0-Expr", "variantKey": "Multiply", - "Multiply": "0x55eadb4ba990-Multiply" + "Multiply": "0x55dbc110cc10-Multiply" }, { - "id": "0x55eadb4ba990-Multiply", - "left": "0x55eadb4ba890-Expr", - "right": "0x55eadb4ba7b0-Expr", + "id": "0x55dbc110cc10-Multiply", + "left": "0x55dbc110cb10-Expr", + "right": "0x55dbc110ca30-Expr", "op": "MULTIPLY" }, { - "id": "0x55eadb4ba890-Expr", + "id": "0x55dbc110cb10-Expr", "variantKey": "Designator", - "Designator": "0x55eadb577550-Designator" + "Designator": "0x55dbc11c9730-Designator" }, { - "id": "0x55eadb577550-Designator", + "id": "0x55dbc11c9730-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb577560-DataRef" + "DataRef": "0x55dbc11c9740-DataRef" }, { - "id": "0x55eadb577560-DataRef", + "id": "0x55dbc11c9740-DataRef", "variantKey": "ArrayElement", - "ArrayElement": "0x55eadb4b9880-ArrayElement" + "ArrayElement": "0x55dbc110bb00-ArrayElement" }, { - "id": "0x55eadb4b9880-ArrayElement", - "base": "0x55eadb4b9880-DataRef", + "id": "0x55dbc110bb00-ArrayElement", + "base": "0x55dbc110bb00-DataRef", "subscripts": [ - "0x55eadb4b9980-SectionSubscript", - "0x55eadb577510-SectionSubscript" + "0x55dbc110bc00-SectionSubscript", + "0x55dbc11c96f0-SectionSubscript" ] }, { - "id": "0x55eadb4b9880-DataRef", + "id": "0x55dbc110bb00-DataRef", "variantKey": "Name", - "Name": "0x55eadb4b9880-Name" + "Name": "0x55dbc110bb00-Name" }, { - "id": "0x55eadb4b9880-Name", + "id": "0x55dbc110bb00-Name", "source": "c" }, { - "id": "0x55eadb4b9980-SectionSubscript", + "id": "0x55dbc110bc00-SectionSubscript", "variantKey": "Expr", - "Expr": "0x55eadb4b95b0-Expr" + "Expr": "0x55dbc110b830-Expr" }, { - "id": "0x55eadb4b95b0-Expr", + "id": "0x55dbc110b830-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4b9d10-Designator" + "Designator": "0x55dbc110bf90-Designator" }, { - "id": "0x55eadb4b9d10-Designator", + "id": "0x55dbc110bf90-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4b9d20-DataRef" + "DataRef": "0x55dbc110bfa0-DataRef" }, { - "id": "0x55eadb4b9d20-DataRef", + "id": "0x55dbc110bfa0-DataRef", "variantKey": "Name", - "Name": "0x55eadb4b9d20-Name" + "Name": "0x55dbc110bfa0-Name" }, { - "id": "0x55eadb4b9d20-Name", + "id": "0x55dbc110bfa0-Name", "source": "k" }, { - "id": "0x55eadb577510-SectionSubscript", + "id": "0x55dbc11c96f0-SectionSubscript", "variantKey": "Expr", - "Expr": "0x55eadb4b9690-Expr" + "Expr": "0x55dbc110b910-Expr" }, { - "id": "0x55eadb4b9690-Expr", + "id": "0x55dbc110b910-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4b9b10-Designator" + "Designator": "0x55dbc110bd90-Designator" }, { - "id": "0x55eadb4b9b10-Designator", + "id": "0x55dbc110bd90-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4b9b20-DataRef" + "DataRef": "0x55dbc110bda0-DataRef" }, { - "id": "0x55eadb4b9b20-DataRef", + "id": "0x55dbc110bda0-DataRef", "variantKey": "Name", - "Name": "0x55eadb4b9b20-Name" + "Name": "0x55dbc110bda0-Name" }, { - "id": "0x55eadb4b9b20-Name", + "id": "0x55dbc110bda0-Name", "source": "i" }, { - "id": "0x55eadb4ba7b0-Expr", + "id": "0x55dbc110ca30-Expr", "variantKey": "Designator", - "Designator": "0x55eadb5779c0-Designator" + "Designator": "0x55dbc11c9ba0-Designator" }, { - "id": "0x55eadb5779c0-Designator", + "id": "0x55dbc11c9ba0-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb5779d0-DataRef" + "DataRef": "0x55dbc11c9bb0-DataRef" }, { - "id": "0x55eadb5779d0-DataRef", + "id": "0x55dbc11c9bb0-DataRef", "variantKey": "ArrayElement", - "ArrayElement": "0x55eadb4b9f60-ArrayElement" + "ArrayElement": "0x55dbc110c1e0-ArrayElement" }, { - "id": "0x55eadb4b9f60-ArrayElement", - "base": "0x55eadb4b9f60-DataRef", + "id": "0x55dbc110c1e0-ArrayElement", + "base": "0x55dbc110c1e0-DataRef", "subscripts": [ - "0x55eadb577930-SectionSubscript", - "0x55eadb577980-SectionSubscript" + "0x55dbc11c9b10-SectionSubscript", + "0x55dbc11c9b60-SectionSubscript" ] }, { - "id": "0x55eadb4b9f60-DataRef", + "id": "0x55dbc110c1e0-DataRef", "variantKey": "Name", - "Name": "0x55eadb4b9f60-Name" + "Name": "0x55dbc110c1e0-Name" }, { - "id": "0x55eadb4b9f60-Name", + "id": "0x55dbc110c1e0-Name", "source": "d" }, { - "id": "0x55eadb577930-SectionSubscript", + "id": "0x55dbc11c9b10-SectionSubscript", "variantKey": "Expr", - "Expr": "0x55eadb4b9b70-Expr" + "Expr": "0x55dbc110bdf0-Expr" }, { - "id": "0x55eadb4b9b70-Expr", + "id": "0x55dbc110bdf0-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4ba3f0-Designator" + "Designator": "0x55dbc110c670-Designator" }, { - "id": "0x55eadb4ba3f0-Designator", + "id": "0x55dbc110c670-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4ba400-DataRef" + "DataRef": "0x55dbc110c680-DataRef" }, { - "id": "0x55eadb4ba400-DataRef", + "id": "0x55dbc110c680-DataRef", "variantKey": "Name", - "Name": "0x55eadb4ba400-Name" + "Name": "0x55dbc110c680-Name" }, { - "id": "0x55eadb4ba400-Name", + "id": "0x55dbc110c680-Name", "source": "j" }, { - "id": "0x55eadb577980-SectionSubscript", + "id": "0x55dbc11c9b60-SectionSubscript", "variantKey": "Expr", - "Expr": "0x55eadb4b9d70-Expr" + "Expr": "0x55dbc110bff0-Expr" }, { - "id": "0x55eadb4b9d70-Expr", + "id": "0x55dbc110bff0-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4ba1f0-Designator" + "Designator": "0x55dbc110c470-Designator" }, { - "id": "0x55eadb4ba1f0-Designator", + "id": "0x55dbc110c470-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4ba200-DataRef" + "DataRef": "0x55dbc110c480-DataRef" }, { - "id": "0x55eadb4ba200-DataRef", + "id": "0x55dbc110c480-DataRef", "variantKey": "Name", - "Name": "0x55eadb4ba200-Name" + "Name": "0x55dbc110c480-Name" }, { - "id": "0x55eadb4ba200-Name", + "id": "0x55dbc110c480-Name", "source": "k" }, { - "id": "0x55eadb4baca0-Statement", - "statement": "0x55eadb4bacb0-EndDoStmt", + "id": "0x55dbc110cf20-Statement", + "statement": "0x55dbc110cf30-EndDoStmt", "source": "end do" }, { - "id": "0x55eadb4bacb0-EndDoStmt" + "id": "0x55dbc110cf30-EndDoStmt" }, { - "id": "0x55eadb4badc0-Statement", - "statement": "0x55eadb4badd0-EndDoStmt", + "id": "0x55dbc110d040-Statement", + "statement": "0x55dbc110d050-EndDoStmt", "source": "end do" }, { - "id": "0x55eadb4badd0-EndDoStmt" + "id": "0x55dbc110d050-EndDoStmt" }, { - "id": "0x55eadb4baee0-Statement", - "statement": "0x55eadb4baef0-EndDoStmt", + "id": "0x55dbc110d160-Statement", + "statement": "0x55dbc110d170-EndDoStmt", "source": "end do" }, { - "id": "0x55eadb4baef0-EndDoStmt" + "id": "0x55dbc110d170-EndDoStmt" }, { - "id": "0x55eadb4bcba0-ExecutionPartConstruct", + "id": "0x55dbc110ec80-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x55eadb4bcba0-ExecutableConstruct" + "ExecutableConstruct": "0x55dbc110ec80-ExecutableConstruct" }, { - "id": "0x55eadb4bcba0-ExecutableConstruct", + "id": "0x55dbc110ec80-ExecutableConstruct", "variantKey": "DoConstruct", - "DoConstruct": "0x55eadb4b12f0-DoConstruct" + "DoConstruct": "0x55dbc1103550-DoConstruct" }, { - "id": "0x55eadb4b12f0-DoConstruct", - "Statement": "0x55eadb4b1348-Statement", + "id": "0x55dbc1103550-DoConstruct", + "Statement": "0x55dbc11035a8-Statement", "ExecutionPartConstruct": [ - "0x55eadb4bca00-ExecutionPartConstruct" + "0x55dbc110ec20-ExecutionPartConstruct" ], - "Statement": "0x55eadb4b12f0-Statement" + "Statement": "0x55dbc1103550-Statement" }, { - "id": "0x55eadb4b1348-Statement", - "statement": "0x55eadb4b1358-NonLabelDoStmt", + "id": "0x55dbc11035a8-Statement", + "statement": "0x55dbc11035b8-NonLabelDoStmt", "source": "do i = 1, ni" }, { - "id": "0x55eadb4b1358-NonLabelDoStmt", - "LoopControl": "0x55eadb4b1358-LoopControl" + "id": "0x55dbc11035b8-NonLabelDoStmt", + "LoopControl": "0x55dbc11035b8-LoopControl" }, { - "id": "0x55eadb4b1358-LoopControl", + "id": "0x55dbc11035b8-LoopControl", "variantKey": "LoopBounds", - "LoopBounds": "0x55eadb4b1358-LoopBounds" + "LoopBounds": "0x55dbc11035b8-LoopBounds" }, { - "id": "0x55eadb4b1358-LoopBounds", - "var": "0x55eadb4b1358-Name", - "lower": "0x55eadb4bb000-Expr", - "upper": "0x55eadb4bb0e0-Expr" + "id": "0x55dbc11035b8-LoopBounds", + "var": "0x55dbc11035b8-Name", + "lower": "0x55dbc110d280-Expr", + "upper": "0x55dbc110d360-Expr" }, { - "id": "0x55eadb4b1358-Name", + "id": "0x55dbc11035b8-Name", "source": "i" }, { - "id": "0x55eadb4bb000-Expr", + "id": "0x55dbc110d280-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55eadb4bb020-LiteralConstant" + "LiteralConstant": "0x55dbc110d2a0-LiteralConstant" }, { - "id": "0x55eadb4bb020-LiteralConstant", + "id": "0x55dbc110d2a0-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55eadb4bb020-IntLiteralConstant" + "IntLiteralConstant": "0x55dbc110d2a0-IntLiteralConstant" }, { - "id": "0x55eadb4bb020-IntLiteralConstant", + "id": "0x55dbc110d2a0-IntLiteralConstant", "CharBlock": "1" }, { - "id": "0x55eadb4bb0e0-Expr", + "id": "0x55dbc110d360-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4ba530-Designator" + "Designator": "0x55dbc110c7b0-Designator" }, { - "id": "0x55eadb4ba530-Designator", + "id": "0x55dbc110c7b0-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4ba540-DataRef" + "DataRef": "0x55dbc110c7c0-DataRef" }, { - "id": "0x55eadb4ba540-DataRef", + "id": "0x55dbc110c7c0-DataRef", "variantKey": "Name", - "Name": "0x55eadb4ba540-Name" + "Name": "0x55dbc110c7c0-Name" }, { - "id": "0x55eadb4ba540-Name", + "id": "0x55dbc110c7c0-Name", "source": "ni" }, { - "id": "0x55eadb4b1330-ExecutionPartConstruct" + "id": "0x55dbc1103590-ExecutionPartConstruct" }, { - "id": "0x55eadb4bca00-ExecutionPartConstruct", + "id": "0x55dbc110ec20-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x55eadb4bca00-ExecutableConstruct" + "ExecutableConstruct": "0x55dbc110ec20-ExecutableConstruct" }, { - "id": "0x55eadb4bca00-ExecutableConstruct", + "id": "0x55dbc110ec20-ExecutableConstruct", "variantKey": "DoConstruct", - "DoConstruct": "0x55eadb4b1870-DoConstruct" + "DoConstruct": "0x55dbc1103430-DoConstruct" }, { - "id": "0x55eadb4b1870-DoConstruct", - "Statement": "0x55eadb4b18c8-Statement", + "id": "0x55dbc1103430-DoConstruct", + "Statement": "0x55dbc1103488-Statement", "ExecutionPartConstruct": [ - "0x55eadb4b6b20-ExecutionPartConstruct", - "0x55eadb4bc9a0-ExecutionPartConstruct" + "0x55dbc1108da0-ExecutionPartConstruct", + "0x55dbc110ebc0-ExecutionPartConstruct" ], - "Statement": "0x55eadb4b1870-Statement" + "Statement": "0x55dbc1103430-Statement" }, { - "id": "0x55eadb4b18c8-Statement", - "statement": "0x55eadb4b18d8-NonLabelDoStmt", + "id": "0x55dbc1103488-Statement", + "statement": "0x55dbc1103498-NonLabelDoStmt", "source": "do j = 1, nl" }, { - "id": "0x55eadb4b18d8-NonLabelDoStmt", - "LoopControl": "0x55eadb4b18d8-LoopControl" + "id": "0x55dbc1103498-NonLabelDoStmt", + "LoopControl": "0x55dbc1103498-LoopControl" }, { - "id": "0x55eadb4b18d8-LoopControl", + "id": "0x55dbc1103498-LoopControl", "variantKey": "LoopBounds", - "LoopBounds": "0x55eadb4b18d8-LoopBounds" + "LoopBounds": "0x55dbc1103498-LoopBounds" }, { - "id": "0x55eadb4b18d8-LoopBounds", - "var": "0x55eadb4b18d8-Name", - "lower": "0x55eadb4bb1c0-Expr", - "upper": "0x55eadb4bb2a0-Expr" + "id": "0x55dbc1103498-LoopBounds", + "var": "0x55dbc1103498-Name", + "lower": "0x55dbc110d440-Expr", + "upper": "0x55dbc110d520-Expr" }, { - "id": "0x55eadb4b18d8-Name", + "id": "0x55dbc1103498-Name", "source": "j" }, { - "id": "0x55eadb4bb1c0-Expr", + "id": "0x55dbc110d440-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55eadb4bb1e0-LiteralConstant" + "LiteralConstant": "0x55dbc110d460-LiteralConstant" }, { - "id": "0x55eadb4bb1e0-LiteralConstant", + "id": "0x55dbc110d460-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55eadb4bb1e0-IntLiteralConstant" + "IntLiteralConstant": "0x55dbc110d460-IntLiteralConstant" }, { - "id": "0x55eadb4bb1e0-IntLiteralConstant", + "id": "0x55dbc110d460-IntLiteralConstant", "CharBlock": "1" }, { - "id": "0x55eadb4bb2a0-Expr", + "id": "0x55dbc110d520-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4b6110-Designator" + "Designator": "0x55dbc1108390-Designator" }, { - "id": "0x55eadb4b6110-Designator", + "id": "0x55dbc1108390-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4b6120-DataRef" + "DataRef": "0x55dbc11083a0-DataRef" }, { - "id": "0x55eadb4b6120-DataRef", + "id": "0x55dbc11083a0-DataRef", "variantKey": "Name", - "Name": "0x55eadb4b6120-Name" + "Name": "0x55dbc11083a0-Name" }, { - "id": "0x55eadb4b6120-Name", + "id": "0x55dbc11083a0-Name", "source": "nl" }, { - "id": "0x55eadb4b18b0-ExecutionPartConstruct" + "id": "0x55dbc1103470-ExecutionPartConstruct" }, { - "id": "0x55eadb4b6b20-ExecutionPartConstruct", + "id": "0x55dbc1108da0-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x55eadb4b6b20-ExecutableConstruct" + "ExecutableConstruct": "0x55dbc1108da0-ExecutableConstruct" }, { - "id": "0x55eadb4b6b20-ExecutableConstruct", + "id": "0x55dbc1108da0-ExecutableConstruct", "variantKey": "Statement", - "Statement": "0x55eadb4b6b20-Statement" + "Statement": "0x55dbc1108da0-Statement" }, { - "id": "0x55eadb4b6b20-Statement", - "statement": "0x55eadb4b6b30-ActionStmt", + "id": "0x55dbc1108da0-Statement", + "statement": "0x55dbc1108db0-ActionStmt", "source": "g(j, i) = 0.0" }, { - "id": "0x55eadb4b6b30-ActionStmt", + "id": "0x55dbc1108db0-ActionStmt", "variantKey": "AssignmentStmt", - "AssignmentStmt": "0x55eadb4bb760-AssignmentStmt" + "AssignmentStmt": "0x55dbc110d9e0-AssignmentStmt" }, { - "id": "0x55eadb4bb760-AssignmentStmt", - "Variable": "0x55eadb4bb840-Variable", - "Expr": "0x55eadb4bb770-Expr" + "id": "0x55dbc110d9e0-AssignmentStmt", + "Variable": "0x55dbc110dac0-Variable", + "Expr": "0x55dbc110d9f0-Expr" }, { - "id": "0x55eadb4bb840-Variable", + "id": "0x55dbc110dac0-Variable", "variantKey": "Designator", - "Designator": "0x55eadb577060-Designator" + "Designator": "0x55dbc11c9240-Designator" }, { - "id": "0x55eadb577060-Designator", + "id": "0x55dbc11c9240-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb577070-DataRef" + "DataRef": "0x55dbc11c9250-DataRef" }, { - "id": "0x55eadb577070-DataRef", + "id": "0x55dbc11c9250-DataRef", "variantKey": "ArrayElement", - "ArrayElement": "0x55eadb4ba640-ArrayElement" + "ArrayElement": "0x55dbc110c8c0-ArrayElement" }, { - "id": "0x55eadb4ba640-ArrayElement", - "base": "0x55eadb4ba640-DataRef", + "id": "0x55dbc110c8c0-ArrayElement", + "base": "0x55dbc110c8c0-DataRef", "subscripts": [ - "0x55eadb5770d0-SectionSubscript", - "0x55eadb578fb0-SectionSubscript" + "0x55dbc11c92b0-SectionSubscript", + "0x55dbc11cb190-SectionSubscript" ] }, { - "id": "0x55eadb4ba640-DataRef", + "id": "0x55dbc110c8c0-DataRef", "variantKey": "Name", - "Name": "0x55eadb4ba640-Name" + "Name": "0x55dbc110c8c0-Name" }, { - "id": "0x55eadb4ba640-Name", + "id": "0x55dbc110c8c0-Name", "source": "g" }, { - "id": "0x55eadb5770d0-SectionSubscript", + "id": "0x55dbc11c92b0-SectionSubscript", "variantKey": "Expr", - "Expr": "0x55eadb4ba250-Expr" + "Expr": "0x55dbc110c4d0-Expr" }, { - "id": "0x55eadb4ba250-Expr", + "id": "0x55dbc110c4d0-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4b9770-Designator" + "Designator": "0x55dbc110b9f0-Designator" }, { - "id": "0x55eadb4b9770-Designator", + "id": "0x55dbc110b9f0-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4b9780-DataRef" + "DataRef": "0x55dbc110ba00-DataRef" }, { - "id": "0x55eadb4b9780-DataRef", + "id": "0x55dbc110ba00-DataRef", "variantKey": "Name", - "Name": "0x55eadb4b9780-Name" + "Name": "0x55dbc110ba00-Name" }, { - "id": "0x55eadb4b9780-Name", + "id": "0x55dbc110ba00-Name", "source": "j" }, { - "id": "0x55eadb578fb0-SectionSubscript", + "id": "0x55dbc11cb190-SectionSubscript", "variantKey": "Expr", - "Expr": "0x55eadb4ba450-Expr" + "Expr": "0x55dbc110c6d0-Expr" }, { - "id": "0x55eadb4ba450-Expr", + "id": "0x55dbc110c6d0-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4b71f0-Designator" + "Designator": "0x55dbc1109470-Designator" }, { - "id": "0x55eadb4b71f0-Designator", + "id": "0x55dbc1109470-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4b7200-DataRef" + "DataRef": "0x55dbc1109480-DataRef" }, { - "id": "0x55eadb4b7200-DataRef", + "id": "0x55dbc1109480-DataRef", "variantKey": "Name", - "Name": "0x55eadb4b7200-Name" + "Name": "0x55dbc1109480-Name" }, { - "id": "0x55eadb4b7200-Name", + "id": "0x55dbc1109480-Name", "source": "i" }, { - "id": "0x55eadb4bb770-Expr", + "id": "0x55dbc110d9f0-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55eadb4bb790-LiteralConstant" + "LiteralConstant": "0x55dbc110da10-LiteralConstant" }, { - "id": "0x55eadb4bb790-LiteralConstant", + "id": "0x55dbc110da10-LiteralConstant", "variantKey": "RealLiteralConstant", - "RealLiteralConstant": "0x55eadb4bb790-RealLiteralConstant" + "RealLiteralConstant": "0x55dbc110da10-RealLiteralConstant" }, { - "id": "0x55eadb4bb790-RealLiteralConstant", - "real": "0x55eadb4bb790-Real" + "id": "0x55dbc110da10-RealLiteralConstant", + "real": "0x55dbc110da10-Real" }, { - "id": "0x55eadb4bb790-Real", + "id": "0x55dbc110da10-Real", "source": "0.0" }, { - "id": "0x55eadb4bc9a0-ExecutionPartConstruct", + "id": "0x55dbc110ebc0-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x55eadb4bc9a0-ExecutableConstruct" + "ExecutableConstruct": "0x55dbc110ebc0-ExecutableConstruct" }, { - "id": "0x55eadb4bc9a0-ExecutableConstruct", + "id": "0x55dbc110ebc0-ExecutableConstruct", "variantKey": "DoConstruct", - "DoConstruct": "0x55eadb4b1750-DoConstruct" + "DoConstruct": "0x55dbc1103990-DoConstruct" }, { - "id": "0x55eadb4b1750-DoConstruct", - "Statement": "0x55eadb4b17a8-Statement", + "id": "0x55dbc1103990-DoConstruct", + "Statement": "0x55dbc11039e8-Statement", "ExecutionPartConstruct": [ - "0x55eadb4b1df0-ExecutionPartConstruct" + "0x55dbc1103940-ExecutionPartConstruct" ], - "Statement": "0x55eadb4b1750-Statement" + "Statement": "0x55dbc1103990-Statement" }, { - "id": "0x55eadb4b17a8-Statement", - "statement": "0x55eadb4b17b8-NonLabelDoStmt", + "id": "0x55dbc11039e8-Statement", + "statement": "0x55dbc11039f8-NonLabelDoStmt", "source": "do k = 1, nj" }, { - "id": "0x55eadb4b17b8-NonLabelDoStmt", - "LoopControl": "0x55eadb4b17b8-LoopControl" + "id": "0x55dbc11039f8-NonLabelDoStmt", + "LoopControl": "0x55dbc11039f8-LoopControl" }, { - "id": "0x55eadb4b17b8-LoopControl", + "id": "0x55dbc11039f8-LoopControl", "variantKey": "LoopBounds", - "LoopBounds": "0x55eadb4b17b8-LoopBounds" + "LoopBounds": "0x55dbc11039f8-LoopBounds" }, { - "id": "0x55eadb4b17b8-LoopBounds", - "var": "0x55eadb4b17b8-Name", - "lower": "0x55eadb4bb870-Expr", - "upper": "0x55eadb4bb950-Expr" + "id": "0x55dbc11039f8-LoopBounds", + "var": "0x55dbc11039f8-Name", + "lower": "0x55dbc110daf0-Expr", + "upper": "0x55dbc110dbd0-Expr" }, { - "id": "0x55eadb4b17b8-Name", + "id": "0x55dbc11039f8-Name", "source": "k" }, { - "id": "0x55eadb4bb870-Expr", + "id": "0x55dbc110daf0-Expr", "variantKey": "LiteralConstant", - "LiteralConstant": "0x55eadb4bb890-LiteralConstant" + "LiteralConstant": "0x55dbc110db10-LiteralConstant" }, { - "id": "0x55eadb4bb890-LiteralConstant", + "id": "0x55dbc110db10-LiteralConstant", "variantKey": "IntLiteralConstant", - "IntLiteralConstant": "0x55eadb4bb890-IntLiteralConstant" + "IntLiteralConstant": "0x55dbc110db10-IntLiteralConstant" }, { - "id": "0x55eadb4bb890-IntLiteralConstant", + "id": "0x55dbc110db10-IntLiteralConstant", "CharBlock": "1" }, { - "id": "0x55eadb4bb950-Expr", + "id": "0x55dbc110dbd0-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4b5060-Designator" + "Designator": "0x55dbc10fc330-Designator" }, { - "id": "0x55eadb4b5060-Designator", + "id": "0x55dbc10fc330-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4b5070-DataRef" + "DataRef": "0x55dbc10fc340-DataRef" }, { - "id": "0x55eadb4b5070-DataRef", + "id": "0x55dbc10fc340-DataRef", "variantKey": "Name", - "Name": "0x55eadb4b5070-Name" + "Name": "0x55dbc10fc340-Name" }, { - "id": "0x55eadb4b5070-Name", + "id": "0x55dbc10fc340-Name", "source": "nj" }, { - "id": "0x55eadb4b1790-ExecutionPartConstruct" + "id": "0x55dbc11039d0-ExecutionPartConstruct" }, { - "id": "0x55eadb4b1df0-ExecutionPartConstruct", + "id": "0x55dbc1103940-ExecutionPartConstruct", "variantKey": "ExecutableConstruct", - "ExecutableConstruct": "0x55eadb4b1df0-ExecutableConstruct" + "ExecutableConstruct": "0x55dbc1103940-ExecutableConstruct" }, { - "id": "0x55eadb4b1df0-ExecutableConstruct", + "id": "0x55dbc1103940-ExecutableConstruct", "variantKey": "Statement", - "Statement": "0x55eadb4b1df0-Statement" + "Statement": "0x55dbc1103940-Statement" }, { - "id": "0x55eadb4b1df0-Statement", - "statement": "0x55eadb4b1e00-ActionStmt", + "id": "0x55dbc1103940-Statement", + "statement": "0x55dbc1103950-ActionStmt", "source": "g(j, i) = g(j, i) + e(k, i) * f(j, k)" }, { - "id": "0x55eadb4b1e00-ActionStmt", + "id": "0x55dbc1103950-ActionStmt", "variantKey": "AssignmentStmt", - "AssignmentStmt": "0x55eadb4b20f0-AssignmentStmt" + "AssignmentStmt": "0x55dbc1103820-AssignmentStmt" }, { - "id": "0x55eadb4b20f0-AssignmentStmt", - "Variable": "0x55eadb4b21d0-Variable", - "Expr": "0x55eadb4b2100-Expr" + "id": "0x55dbc1103820-AssignmentStmt", + "Variable": "0x55dbc1103900-Variable", + "Expr": "0x55dbc1103830-Expr" }, { - "id": "0x55eadb4b21d0-Variable", + "id": "0x55dbc1103900-Variable", "variantKey": "Designator", - "Designator": "0x55eadb577d20-Designator" + "Designator": "0x55dbc11c9f00-Designator" }, { - "id": "0x55eadb577d20-Designator", + "id": "0x55dbc11c9f00-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb577d30-DataRef" + "DataRef": "0x55dbc11c9f10-DataRef" }, { - "id": "0x55eadb577d30-DataRef", + "id": "0x55dbc11c9f10-DataRef", "variantKey": "ArrayElement", - "ArrayElement": "0x55eadb4bb5f0-ArrayElement" + "ArrayElement": "0x55dbc110d870-ArrayElement" }, { - "id": "0x55eadb4bb5f0-ArrayElement", - "base": "0x55eadb4bb5f0-DataRef", + "id": "0x55dbc110d870-ArrayElement", + "base": "0x55dbc110d870-DataRef", "subscripts": [ - "0x55eadb57a9b0-SectionSubscript", - "0x55eadb57aa00-SectionSubscript" + "0x55dbc11ccb90-SectionSubscript", + "0x55dbc11ccbe0-SectionSubscript" ] }, { - "id": "0x55eadb4bb5f0-DataRef", + "id": "0x55dbc110d870-DataRef", "variantKey": "Name", - "Name": "0x55eadb4bb5f0-Name" + "Name": "0x55dbc110d870-Name" }, { - "id": "0x55eadb4bb5f0-Name", + "id": "0x55dbc110d870-Name", "source": "g" }, { - "id": "0x55eadb57a9b0-SectionSubscript", + "id": "0x55dbc11ccb90-SectionSubscript", "variantKey": "Expr", - "Expr": "0x55eadb4bb380-Expr" + "Expr": "0x55dbc110d600-Expr" }, { - "id": "0x55eadb4bb380-Expr", + "id": "0x55dbc110d600-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4b9c50-Designator" + "Designator": "0x55dbc110bed0-Designator" }, { - "id": "0x55eadb4b9c50-Designator", + "id": "0x55dbc110bed0-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4b9c60-DataRef" + "DataRef": "0x55dbc110bee0-DataRef" }, { - "id": "0x55eadb4b9c60-DataRef", + "id": "0x55dbc110bee0-DataRef", "variantKey": "Name", - "Name": "0x55eadb4b9c60-Name" + "Name": "0x55dbc110bee0-Name" }, { - "id": "0x55eadb4b9c60-Name", + "id": "0x55dbc110bee0-Name", "source": "j" }, { - "id": "0x55eadb57aa00-SectionSubscript", + "id": "0x55dbc11ccbe0-SectionSubscript", "variantKey": "Expr", - "Expr": "0x55eadb4bb460-Expr" + "Expr": "0x55dbc110d6e0-Expr" }, { - "id": "0x55eadb4bb460-Expr", + "id": "0x55dbc110d6e0-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4b75f0-Designator" + "Designator": "0x55dbc1109870-Designator" }, { - "id": "0x55eadb4b75f0-Designator", + "id": "0x55dbc1109870-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4b7600-DataRef" + "DataRef": "0x55dbc1109880-DataRef" }, { - "id": "0x55eadb4b7600-DataRef", + "id": "0x55dbc1109880-DataRef", "variantKey": "Name", - "Name": "0x55eadb4b7600-Name" + "Name": "0x55dbc1109880-Name" }, { - "id": "0x55eadb4b7600-Name", + "id": "0x55dbc1109880-Name", "source": "i" }, { - "id": "0x55eadb4b2100-Expr", + "id": "0x55dbc1103830-Expr", "variantKey": "Add", - "Add": "0x55eadb4b2120-Add" + "Add": "0x55dbc1103850-Add" }, { - "id": "0x55eadb4b2120-Add", - "left": "0x55eadb4b2010-Expr", - "right": "0x55eadb48d0e0-Expr", + "id": "0x55dbc1103850-Add", + "left": "0x55dbc10df010-Expr", + "right": "0x55dbc10f1d10-Expr", "op": "ADD" }, { - "id": "0x55eadb4b2010-Expr", + "id": "0x55dbc10df010-Expr", "variantKey": "Designator", - "Designator": "0x55eadb57ab90-Designator" + "Designator": "0x55dbc11ccd70-Designator" }, { - "id": "0x55eadb57ab90-Designator", + "id": "0x55dbc11ccd70-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb57aba0-DataRef" + "DataRef": "0x55dbc11ccd80-DataRef" }, { - "id": "0x55eadb57aba0-DataRef", + "id": "0x55dbc11ccd80-DataRef", "variantKey": "ArrayElement", - "ArrayElement": "0x55eadb4bb720-ArrayElement" + "ArrayElement": "0x55dbc110d9a0-ArrayElement" }, { - "id": "0x55eadb4bb720-ArrayElement", - "base": "0x55eadb4bb720-DataRef", + "id": "0x55dbc110d9a0-ArrayElement", + "base": "0x55dbc110d9a0-DataRef", "subscripts": [ - "0x55eadb57ab00-SectionSubscript", - "0x55eadb57ab50-SectionSubscript" + "0x55dbc11ccce0-SectionSubscript", + "0x55dbc11ccd30-SectionSubscript" ] }, { - "id": "0x55eadb4bb720-DataRef", + "id": "0x55dbc110d9a0-DataRef", "variantKey": "Name", - "Name": "0x55eadb4bb720-Name" + "Name": "0x55dbc110d9a0-Name" }, { - "id": "0x55eadb4bb720-Name", + "id": "0x55dbc110d9a0-Name", "source": "g" }, { - "id": "0x55eadb57ab00-SectionSubscript", + "id": "0x55dbc11ccce0-SectionSubscript", "variantKey": "Expr", - "Expr": "0x55eadb4bba30-Expr" + "Expr": "0x55dbc110dcb0-Expr" }, { - "id": "0x55eadb4bba30-Expr", + "id": "0x55dbc110dcb0-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4b9cb0-Designator" + "Designator": "0x55dbc110bf30-Designator" }, { - "id": "0x55eadb4b9cb0-Designator", + "id": "0x55dbc110bf30-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4b9cc0-DataRef" + "DataRef": "0x55dbc110bf40-DataRef" }, { - "id": "0x55eadb4b9cc0-DataRef", + "id": "0x55dbc110bf40-DataRef", "variantKey": "Name", - "Name": "0x55eadb4b9cc0-Name" + "Name": "0x55dbc110bf40-Name" }, { - "id": "0x55eadb4b9cc0-Name", + "id": "0x55dbc110bf40-Name", "source": "j" }, { - "id": "0x55eadb57ab50-SectionSubscript", + "id": "0x55dbc11ccd30-SectionSubscript", "variantKey": "Expr", - "Expr": "0x55eadb4bbb10-Expr" + "Expr": "0x55dbc110dd90-Expr" }, { - "id": "0x55eadb4bbb10-Expr", + "id": "0x55dbc110dd90-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4ba390-Designator" + "Designator": "0x55dbc110c610-Designator" }, { - "id": "0x55eadb4ba390-Designator", + "id": "0x55dbc110c610-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4ba3a0-DataRef" + "DataRef": "0x55dbc110c620-DataRef" }, { - "id": "0x55eadb4ba3a0-DataRef", + "id": "0x55dbc110c620-DataRef", "variantKey": "Name", - "Name": "0x55eadb4ba3a0-Name" + "Name": "0x55dbc110c620-Name" }, { - "id": "0x55eadb4ba3a0-Name", + "id": "0x55dbc110c620-Name", "source": "i" }, { - "id": "0x55eadb48d0e0-Expr", + "id": "0x55dbc10f1d10-Expr", "variantKey": "Multiply", - "Multiply": "0x55eadb48d100-Multiply" + "Multiply": "0x55dbc10f1d30-Multiply" }, { - "id": "0x55eadb48d100-Multiply", - "left": "0x55eadb4b1ec0-Expr", - "right": "0x55eadb4b1c20-Expr", + "id": "0x55dbc10f1d30-Multiply", + "left": "0x55dbc11041f0-Expr", + "right": "0x55dbc1103cf0-Expr", "op": "MULTIPLY" }, { - "id": "0x55eadb4b1ec0-Expr", + "id": "0x55dbc11041f0-Expr", "variantKey": "Designator", - "Designator": "0x55eadb57af30-Designator" + "Designator": "0x55dbc11cd110-Designator" }, { - "id": "0x55eadb57af30-Designator", + "id": "0x55dbc11cd110-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb57af40-DataRef" + "DataRef": "0x55dbc11cd120-DataRef" }, { - "id": "0x55eadb57af40-DataRef", + "id": "0x55dbc11cd120-DataRef", "variantKey": "ArrayElement", - "ArrayElement": "0x55eadb4bc0e0-ArrayElement" + "ArrayElement": "0x55dbc110e360-ArrayElement" }, { - "id": "0x55eadb4bc0e0-ArrayElement", - "base": "0x55eadb4bc0e0-DataRef", + "id": "0x55dbc110e360-ArrayElement", + "base": "0x55dbc110e360-DataRef", "subscripts": [ - "0x55eadb4bc1e0-SectionSubscript", - "0x55eadb57aef0-SectionSubscript" + "0x55dbc110e460-SectionSubscript", + "0x55dbc11cd0d0-SectionSubscript" ] }, { - "id": "0x55eadb4bc0e0-DataRef", + "id": "0x55dbc110e360-DataRef", "variantKey": "Name", - "Name": "0x55eadb4bc0e0-Name" + "Name": "0x55dbc110e360-Name" }, { - "id": "0x55eadb4bc0e0-Name", + "id": "0x55dbc110e360-Name", "source": "e" }, { - "id": "0x55eadb4bc1e0-SectionSubscript", + "id": "0x55dbc110e460-SectionSubscript", "variantKey": "Expr", - "Expr": "0x55eadb4bbe10-Expr" + "Expr": "0x55dbc110e090-Expr" }, { - "id": "0x55eadb4bbe10-Expr", + "id": "0x55dbc110e090-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4bc570-Designator" + "Designator": "0x55dbc110e7f0-Designator" }, { - "id": "0x55eadb4bc570-Designator", + "id": "0x55dbc110e7f0-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4bc580-DataRef" + "DataRef": "0x55dbc110e800-DataRef" }, { - "id": "0x55eadb4bc580-DataRef", + "id": "0x55dbc110e800-DataRef", "variantKey": "Name", - "Name": "0x55eadb4bc580-Name" + "Name": "0x55dbc110e800-Name" }, { - "id": "0x55eadb4bc580-Name", + "id": "0x55dbc110e800-Name", "source": "k" }, { - "id": "0x55eadb57aef0-SectionSubscript", + "id": "0x55dbc11cd0d0-SectionSubscript", "variantKey": "Expr", - "Expr": "0x55eadb4bbef0-Expr" + "Expr": "0x55dbc110e170-Expr" }, { - "id": "0x55eadb4bbef0-Expr", + "id": "0x55dbc110e170-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4bc370-Designator" + "Designator": "0x55dbc110e5f0-Designator" }, { - "id": "0x55eadb4bc370-Designator", + "id": "0x55dbc110e5f0-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4bc380-DataRef" + "DataRef": "0x55dbc110e600-DataRef" }, { - "id": "0x55eadb4bc380-DataRef", + "id": "0x55dbc110e600-DataRef", "variantKey": "Name", - "Name": "0x55eadb4bc380-Name" + "Name": "0x55dbc110e600-Name" }, { - "id": "0x55eadb4bc380-Name", + "id": "0x55dbc110e600-Name", "source": "i" }, { - "id": "0x55eadb4b1c20-Expr", + "id": "0x55dbc1103cf0-Expr", "variantKey": "Designator", - "Designator": "0x55eadb57b3a0-Designator" + "Designator": "0x55dbc11cd580-Designator" }, { - "id": "0x55eadb57b3a0-Designator", + "id": "0x55dbc11cd580-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb57b3b0-DataRef" + "DataRef": "0x55dbc11cd590-DataRef" }, { - "id": "0x55eadb57b3b0-DataRef", + "id": "0x55dbc11cd590-DataRef", "variantKey": "ArrayElement", - "ArrayElement": "0x55eadb4bc7c0-ArrayElement" + "ArrayElement": "0x55dbc110ea40-ArrayElement" }, { - "id": "0x55eadb4bc7c0-ArrayElement", - "base": "0x55eadb4bc7c0-DataRef", + "id": "0x55dbc110ea40-ArrayElement", + "base": "0x55dbc110ea40-DataRef", "subscripts": [ - "0x55eadb57b310-SectionSubscript", - "0x55eadb57b360-SectionSubscript" + "0x55dbc11cd4f0-SectionSubscript", + "0x55dbc11cd540-SectionSubscript" ] }, { - "id": "0x55eadb4bc7c0-DataRef", + "id": "0x55dbc110ea40-DataRef", "variantKey": "Name", - "Name": "0x55eadb4bc7c0-Name" + "Name": "0x55dbc110ea40-Name" }, { - "id": "0x55eadb4bc7c0-Name", + "id": "0x55dbc110ea40-Name", "source": "f" }, { - "id": "0x55eadb57b310-SectionSubscript", + "id": "0x55dbc11cd4f0-SectionSubscript", "variantKey": "Expr", - "Expr": "0x55eadb4bc3d0-Expr" + "Expr": "0x55dbc110e650-Expr" }, { - "id": "0x55eadb4bc3d0-Expr", + "id": "0x55dbc110e650-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4bcc50-Designator" + "Designator": "0x55dbc110eed0-Designator" }, { - "id": "0x55eadb4bcc50-Designator", + "id": "0x55dbc110eed0-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4bcc60-DataRef" + "DataRef": "0x55dbc110eee0-DataRef" }, { - "id": "0x55eadb4bcc60-DataRef", + "id": "0x55dbc110eee0-DataRef", "variantKey": "Name", - "Name": "0x55eadb4bcc60-Name" + "Name": "0x55dbc110eee0-Name" }, { - "id": "0x55eadb4bcc60-Name", + "id": "0x55dbc110eee0-Name", "source": "j" }, { - "id": "0x55eadb57b360-SectionSubscript", + "id": "0x55dbc11cd540-SectionSubscript", "variantKey": "Expr", - "Expr": "0x55eadb4bc5d0-Expr" + "Expr": "0x55dbc110e850-Expr" }, { - "id": "0x55eadb4bc5d0-Expr", + "id": "0x55dbc110e850-Expr", "variantKey": "Designator", - "Designator": "0x55eadb4bca50-Designator" + "Designator": "0x55dbc110ecd0-Designator" }, { - "id": "0x55eadb4bca50-Designator", + "id": "0x55dbc110ecd0-Designator", "variantKey": "DataRef", - "DataRef": "0x55eadb4bca60-DataRef" + "DataRef": "0x55dbc110ece0-DataRef" }, { - "id": "0x55eadb4bca60-DataRef", + "id": "0x55dbc110ece0-DataRef", "variantKey": "Name", - "Name": "0x55eadb4bca60-Name" + "Name": "0x55dbc110ece0-Name" }, { - "id": "0x55eadb4bca60-Name", + "id": "0x55dbc110ece0-Name", "source": "k" }, { - "id": "0x55eadb4b1750-Statement", - "statement": "0x55eadb4b1760-EndDoStmt", + "id": "0x55dbc1103990-Statement", + "statement": "0x55dbc11039a0-EndDoStmt", "source": "end do" }, { - "id": "0x55eadb4b1760-EndDoStmt" + "id": "0x55dbc11039a0-EndDoStmt" }, { - "id": "0x55eadb4b1870-Statement", - "statement": "0x55eadb4b1880-EndDoStmt", + "id": "0x55dbc1103430-Statement", + "statement": "0x55dbc1103440-EndDoStmt", "source": "end do" }, { - "id": "0x55eadb4b1880-EndDoStmt" + "id": "0x55dbc1103440-EndDoStmt" }, { - "id": "0x55eadb4b12f0-Statement", - "statement": "0x55eadb4b1300-EndDoStmt", + "id": "0x55dbc1103550-Statement", + "statement": "0x55dbc1103560-EndDoStmt", "source": "end do" }, { - "id": "0x55eadb4b1300-EndDoStmt" + "id": "0x55dbc1103560-EndDoStmt" }, { - "id": "0x55eadb4bd350-Statement", - "statement": "0x55eadb4bd360-EndSubroutineStmt", + "id": "0x55dbc110f620-Statement", + "statement": "0x55dbc110f630-EndSubroutineStmt", "source": "end subroutine" }, { - "id": "0x55eadb4bd360-EndSubroutineStmt" + "id": "0x55dbc110f630-EndSubroutineStmt" }, { - "id": "0x55eadb4a00a0-Statement", - "statement": "0x55eadb4a00b0-EndProgramStmt", + "id": "0x55dbc10f2030-Statement", + "statement": "0x55dbc10f2040-EndProgramStmt", "source": "end program" }, { - "id": "0x55eadb4a00b0-EndProgramStmt" + "id": "0x55dbc10f2040-EndProgramStmt" } ], "comments": [ { - "text": "!******************************************************************************", - "stmtId": "0x55eadb4a01e8-Statement", + "text": "******************************************************************************", + "stmtId": "0x55dbc10f2178-Statement", "trailing": false }, { - "text": "!", - "stmtId": "0x55eadb4a01e8-Statement", + "text": "", + "stmtId": "0x55dbc10f2178-Statement", "trailing": false }, { - "text": "! 3mm.F90: This file is part of the PolyBench/Fortran 1.0 test suite.", - "stmtId": "0x55eadb4a01e8-Statement", + "text": " 3mm.F90: This file is part of the PolyBench/Fortran 1.0 test suite.", + "stmtId": "0x55dbc10f2178-Statement", "trailing": false }, { - "text": "!", - "stmtId": "0x55eadb4a01e8-Statement", + "text": "", + "stmtId": "0x55dbc10f2178-Statement", "trailing": false }, { - "text": "! Contact: Louis-Noel Pouchet ", - "stmtId": "0x55eadb4a01e8-Statement", + "text": " Contact: Louis-Noel Pouchet ", + "stmtId": "0x55dbc10f2178-Statement", "trailing": false }, { - "text": "! Web address: http://polybench.sourceforge.net", - "stmtId": "0x55eadb4a01e8-Statement", + "text": " Web address: http://polybench.sourceforge.net", + "stmtId": "0x55dbc10f2178-Statement", "trailing": false }, { - "text": "!", - "stmtId": "0x55eadb4a01e8-Statement", + "text": "", + "stmtId": "0x55dbc10f2178-Statement", "trailing": false }, { - "text": "!******************************************************************************", - "stmtId": "0x55eadb4a01e8-Statement", + "text": "******************************************************************************", + "stmtId": "0x55dbc10f2178-Statement", "trailing": false }, { - "text": "! Include polybench common header.", - "stmtId": "0x55eadb4a01e8-Statement", + "text": " Include polybench common header.", + "stmtId": "0x55dbc10f2178-Statement", "trailing": false }, { - "text": "! Include benchmark-specific header.", - "stmtId": "0x55eadb4a01e8-Statement", + "text": " Include benchmark-specific header.", + "stmtId": "0x55dbc10f2178-Statement", "trailing": false }, { - "text": "! Default data type is double, default size is 4000.", - "stmtId": "0x55eadb4a01e8-Statement", + "text": " Default data type is double, default size is 4000.", + "stmtId": "0x55dbc10f2178-Statement", "trailing": false }, { - "text": "! Allocation of Arrays", - "stmtId": "0x55eadb48e510-Statement", + "text": " Allocation of Arrays", + "stmtId": "0x55dbc10e1030-Statement", "trailing": false }, { - "text": "! Initialization", - "stmtId": "0x55eadb494fa0-Statement", + "text": " Initialization", + "stmtId": "0x55dbc10e7ac0-Statement", "trailing": false }, { - "text": "! Kernel Execution", - "stmtId": "0x55eadb493e60-Statement", + "text": " Kernel Execution", + "stmtId": "0x55dbc10e6980-Statement", "trailing": false }, { - "text": "! Prevent dead-code elimination. All live-out data must be printed", - "stmtId": "0x55eadb493820-Statement", + "text": " Prevent dead-code elimination. All live-out data must be printed", + "stmtId": "0x55dbc10e6340-Statement", "trailing": false }, { - "text": "! by the function call in argument.", - "stmtId": "0x55eadb493820-Statement", + "text": " by the function call in argument.", + "stmtId": "0x55dbc10e6340-Statement", "trailing": false }, { - "text": "! Deallocation of Arrays", - "stmtId": "0x55eadb4a74c0-Statement", + "text": " Deallocation of Arrays", + "stmtId": "0x55dbc10f94e0-Statement", "trailing": false }, { - "text": "!$pragma scop", - "stmtId": "0x55eadb4b86d8-Statement", + "text": "$pragma scop", + "stmtId": "0x55dbc110a958-Statement", "trailing": false }, { - "text": "! E := A*B", - "stmtId": "0x55eadb4b86d8-Statement", + "text": " E := A*B", + "stmtId": "0x55dbc110a958-Statement", "trailing": false }, { - "text": "! F := C*D", - "stmtId": "0x55eadb4baf38-Statement", + "text": " F := C*D", + "stmtId": "0x55dbc110d1b8-Statement", "trailing": false }, { - "text": "! G := E*F", - "stmtId": "0x55eadb4b1348-Statement", + "text": " G := E*F", + "stmtId": "0x55dbc11035a8-Statement", "trailing": false }, { - "text": "!$pragma endscop", - "stmtId": "0x55eadb4bd350-Statement", + "text": "$pragma endscop", + "stmtId": "0x55dbc110f620-Statement", "trailing": false } ], diff --git a/FortranParser/resources-test/fortran/parser/program/function.expected.f90 b/FortranParser/resources-test/fortran/parser/program/function.expected.f90 new file mode 100644 index 00000000..75ce5ef2 --- /dev/null +++ b/FortranParser/resources-test/fortran/parser/program/function.expected.f90 @@ -0,0 +1,21 @@ +PROGRAM FUNCTION + INTEGER :: x, y, total, useless + + x = 5 + y = 12 + useless = 0 + + total = add_numbers(x, y, useless) + + PRINT *, "The sum is:", total + +CONTAINS + FUNCTION add_numbers(a, b, useless) RESULT(res) + INTEGER, INTENT(IN) :: a, b + INTEGER, INTENT(INOUT) :: useless + INTEGER :: res + + res = a + b + END FUNCTION add_numbers + +END PROGRAM FUNCTION \ No newline at end of file diff --git a/FortranParser/resources-test/fortran/parser/program/function.f90 b/FortranParser/resources-test/fortran/parser/program/function.f90 new file mode 100644 index 00000000..de08f32a --- /dev/null +++ b/FortranParser/resources-test/fortran/parser/program/function.f90 @@ -0,0 +1,22 @@ +program function + integer :: x, y, total, useless + + x = 5 + y = 12 + useless = 0 + + total = add_numbers(x, y, useless) + + print *, "The sum is:", total + +contains + + function add_numbers(a, b, useless) result(res) + integer, intent(in) :: a, b + integer, intent(inout) :: useless + integer :: res + + res = a + b + end function add_numbers + +end program function \ No newline at end of file diff --git a/FortranParser/resources-test/fortran/parser/program/function.json b/FortranParser/resources-test/fortran/parser/program/function.json new file mode 100644 index 00000000..dbd82726 --- /dev/null +++ b/FortranParser/resources-test/fortran/parser/program/function.json @@ -0,0 +1,1294 @@ +{ + "fileExtension": "f90", + "nodes": [ + { + "id": "0x562506cdef00-Program", + "ProgramUnit": [ + "0x562506d1c840-ProgramUnit" + ] + }, + { + "id": "0x562506d1c840-ProgramUnit", + "variantKey": "MainProgram", + "MainProgram": "0x562506d0c2b0-MainProgram" + }, + { + "id": "0x562506d0c2b0-MainProgram", + "Statement": "0x562506d0c3f8-Statement", + "SpecificationPart": "0x562506d0c350-SpecificationPart", + "ExecutionPart": "0x562506d0c338-ExecutionPart", + "InternalSubprogramPart": "0x562506d0c2f0-InternalSubprogramPart", + "Statement": "0x562506d0c2b0-Statement" + }, + { + "id": "0x562506d0c3f8-Statement", + "statement": "0x562506d0c408-ProgramStmt", + "source": "program FUNCTION" + }, + { + "id": "0x562506d0c408-ProgramStmt", + "Name": "0x562506d0c408-Name" + }, + { + "id": "0x562506d0c408-Name", + "source": "FUNCTION" + }, + { + "id": "0x562506d0c350-SpecificationPart", + "ImplicitPart": "0x562506d0c368-ImplicitPart", + "DeclarationConstruct": [ + "0x562506cec170-DeclarationConstruct" + ] + }, + { + "id": "0x562506d0c368-ImplicitPart" + }, + { + "id": "0x562506cec170-DeclarationConstruct", + "variantKey": "SpecificationConstruct", + "SpecificationConstruct": "0x562506cec170-SpecificationConstruct" + }, + { + "id": "0x562506cec170-SpecificationConstruct", + "variantKey": "Statement", + "Statement": "0x562506cec170-Statement" + }, + { + "id": "0x562506cec170-Statement", + "statement": "0x562506d19210-TypeDeclarationStmt", + "source": "integer :: x, y, total, useless" + }, + { + "id": "0x562506d19210-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x562506d19240-DeclarationTypeSpec", + "EntityDecl": [ + "0x562506d195f0-EntityDecl", + "0x562506d19320-EntityDecl", + "0x562506d19410-EntityDecl", + "0x562506d19500-EntityDecl" + ] + }, + { + "id": "0x562506d19240-DeclarationTypeSpec", + "variantKey": "IntrinsicTypeSpec", + "IntrinsicTypeSpec": "0x562506d19240-IntrinsicTypeSpec" + }, + { + "id": "0x562506d19240-IntrinsicTypeSpec", + "variantKey": "IntegerTypeSpec", + "IntegerTypeSpec": "0x562506d19240-IntegerTypeSpec" + }, + { + "id": "0x562506d19240-IntegerTypeSpec" + }, + { + "id": "0x562506d195f0-EntityDecl", + "Name": "0x562506d196a8-Name" + }, + { + "id": "0x562506d196a8-Name", + "source": "x" + }, + { + "id": "0x562506d19320-EntityDecl", + "Name": "0x562506d193d8-Name" + }, + { + "id": "0x562506d193d8-Name", + "source": "y" + }, + { + "id": "0x562506d19410-EntityDecl", + "Name": "0x562506d194c8-Name" + }, + { + "id": "0x562506d194c8-Name", + "source": "total" + }, + { + "id": "0x562506d19500-EntityDecl", + "Name": "0x562506d195b8-Name" + }, + { + "id": "0x562506d195b8-Name", + "source": "useless" + }, + { + "id": "0x562506d0c338-ExecutionPart", + "ExecutionPartConstruct": [ + "0x562506d1aac0-ExecutionPartConstruct", + "0x562506d1ac90-ExecutionPartConstruct", + "0x562506d1ae60-ExecutionPartConstruct", + "0x562506d0a010-ExecutionPartConstruct", + "0x562506cebda0-ExecutionPartConstruct" + ] + }, + { + "id": "0x562506d0c338-ExecutionPartConstruct" + }, + { + "id": "0x562506d1aac0-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x562506d1aac0-ExecutableConstruct" + }, + { + "id": "0x562506d1aac0-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x562506d1aac0-Statement" + }, + { + "id": "0x562506d1aac0-Statement", + "statement": "0x562506d1aad0-ActionStmt", + "source": "x = 5" + }, + { + "id": "0x562506d1aad0-ActionStmt", + "variantKey": "AssignmentStmt", + "AssignmentStmt": "0x562506d1b890-AssignmentStmt" + }, + { + "id": "0x562506d1b890-AssignmentStmt", + "Variable": "0x562506d1b970-Variable", + "Expr": "0x562506d1b8a0-Expr" + }, + { + "id": "0x562506d1b970-Variable", + "variantKey": "Designator", + "Designator": "0x562506cec100-Designator" + }, + { + "id": "0x562506cec100-Designator", + "variantKey": "DataRef", + "DataRef": "0x562506cec110-DataRef" + }, + { + "id": "0x562506cec110-DataRef", + "variantKey": "Name", + "Name": "0x562506cec110-Name" + }, + { + "id": "0x562506cec110-Name", + "source": "x" + }, + { + "id": "0x562506d1b8a0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x562506d1b8c0-LiteralConstant" + }, + { + "id": "0x562506d1b8c0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x562506d1b8c0-IntLiteralConstant" + }, + { + "id": "0x562506d1b8c0-IntLiteralConstant", + "CharBlock": "5" + }, + { + "id": "0x562506d1ac90-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x562506d1ac90-ExecutableConstruct" + }, + { + "id": "0x562506d1ac90-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x562506d1ac90-Statement" + }, + { + "id": "0x562506d1ac90-Statement", + "statement": "0x562506d1aca0-ActionStmt", + "source": "y = 12" + }, + { + "id": "0x562506d1aca0-ActionStmt", + "variantKey": "AssignmentStmt", + "AssignmentStmt": "0x562506d1ab70-AssignmentStmt" + }, + { + "id": "0x562506d1ab70-AssignmentStmt", + "Variable": "0x562506d1ac50-Variable", + "Expr": "0x562506d1ab80-Expr" + }, + { + "id": "0x562506d1ac50-Variable", + "variantKey": "Designator", + "Designator": "0x562506d1a7b0-Designator" + }, + { + "id": "0x562506d1a7b0-Designator", + "variantKey": "DataRef", + "DataRef": "0x562506d1a7c0-DataRef" + }, + { + "id": "0x562506d1a7c0-DataRef", + "variantKey": "Name", + "Name": "0x562506d1a7c0-Name" + }, + { + "id": "0x562506d1a7c0-Name", + "source": "y" + }, + { + "id": "0x562506d1ab80-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x562506d1aba0-LiteralConstant" + }, + { + "id": "0x562506d1aba0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x562506d1aba0-IntLiteralConstant" + }, + { + "id": "0x562506d1aba0-IntLiteralConstant", + "CharBlock": "12" + }, + { + "id": "0x562506d1ae60-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x562506d1ae60-ExecutableConstruct" + }, + { + "id": "0x562506d1ae60-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x562506d1ae60-Statement" + }, + { + "id": "0x562506d1ae60-Statement", + "statement": "0x562506d1ae70-ActionStmt", + "source": "useless = 0" + }, + { + "id": "0x562506d1ae70-ActionStmt", + "variantKey": "AssignmentStmt", + "AssignmentStmt": "0x562506d1ad40-AssignmentStmt" + }, + { + "id": "0x562506d1ad40-AssignmentStmt", + "Variable": "0x562506d1ae20-Variable", + "Expr": "0x562506d1ad50-Expr" + }, + { + "id": "0x562506d1ae20-Variable", + "variantKey": "Designator", + "Designator": "0x562506d1ab10-Designator" + }, + { + "id": "0x562506d1ab10-Designator", + "variantKey": "DataRef", + "DataRef": "0x562506d1ab20-DataRef" + }, + { + "id": "0x562506d1ab20-DataRef", + "variantKey": "Name", + "Name": "0x562506d1ab20-Name" + }, + { + "id": "0x562506d1ab20-Name", + "source": "useless" + }, + { + "id": "0x562506d1ad50-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x562506d1ad70-LiteralConstant" + }, + { + "id": "0x562506d1ad70-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x562506d1ad70-IntLiteralConstant" + }, + { + "id": "0x562506d1ad70-IntLiteralConstant", + "CharBlock": "0" + }, + { + "id": "0x562506d0a010-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x562506d0a010-ExecutableConstruct" + }, + { + "id": "0x562506d0a010-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x562506d0a010-Statement" + }, + { + "id": "0x562506d0a010-Statement", + "statement": "0x562506d0a020-ActionStmt", + "source": "total = add_numbers(x, y, useless)" + }, + { + "id": "0x562506d0a020-ActionStmt", + "variantKey": "AssignmentStmt", + "AssignmentStmt": "0x562506d09e80-AssignmentStmt" + }, + { + "id": "0x562506d09e80-AssignmentStmt", + "Variable": "0x562506d09f60-Variable", + "Expr": "0x562506d09e90-Expr" + }, + { + "id": "0x562506d09f60-Variable", + "variantKey": "Designator", + "Designator": "0x562506d1ace0-Designator" + }, + { + "id": "0x562506d1ace0-Designator", + "variantKey": "DataRef", + "DataRef": "0x562506d1acf0-DataRef" + }, + { + "id": "0x562506d1acf0-DataRef", + "variantKey": "Name", + "Name": "0x562506d1acf0-Name" + }, + { + "id": "0x562506d1acf0-Name", + "source": "total" + }, + { + "id": "0x562506d09e90-Expr", + "variantKey": "FunctionReference", + "FunctionReference": "0x562506d09d30-FunctionReference" + }, + { + "id": "0x562506d09d30-FunctionReference", + "Call": "0x562506d09d30-Call" + }, + { + "id": "0x562506d09d30-Call", + "ProcedureDesignator": "0x562506d09d48-ProcedureDesignator", + "ActualArgSpec": [ + "0x562506d09bc0-ActualArgSpec", + "0x562506d099a0-ActualArgSpec", + "0x562506d09ab0-ActualArgSpec" + ] + }, + { + "id": "0x562506d09d48-ProcedureDesignator", + "variantKey": "Name", + "Name": "0x562506d09d48-Name" + }, + { + "id": "0x562506d09d48-Name", + "source": "add_numbers" + }, + { + "id": "0x562506d09bc0-ActualArgSpec", + "ActualArg": "0x562506d09bc0-ActualArg" + }, + { + "id": "0x562506d09bc0-ActualArg", + "variantKey": "Expr", + "Expr": "0x562506d09770-Expr" + }, + { + "id": "0x562506d09770-Expr", + "variantKey": "Designator", + "Designator": "0x562506d1a040-Designator" + }, + { + "id": "0x562506d1a040-Designator", + "variantKey": "DataRef", + "DataRef": "0x562506d1a050-DataRef" + }, + { + "id": "0x562506d1a050-DataRef", + "variantKey": "Name", + "Name": "0x562506d1a050-Name" + }, + { + "id": "0x562506d1a050-Name", + "source": "x" + }, + { + "id": "0x562506d099a0-ActualArgSpec", + "ActualArg": "0x562506d099a0-ActualArg" + }, + { + "id": "0x562506d099a0-ActualArg", + "variantKey": "Expr", + "Expr": "0x562506d19a80-Expr" + }, + { + "id": "0x562506d19a80-Expr", + "variantKey": "Designator", + "Designator": "0x562506d199b0-Designator" + }, + { + "id": "0x562506d199b0-Designator", + "variantKey": "DataRef", + "DataRef": "0x562506d199c0-DataRef" + }, + { + "id": "0x562506d199c0-DataRef", + "variantKey": "Name", + "Name": "0x562506d199c0-Name" + }, + { + "id": "0x562506d199c0-Name", + "source": "y" + }, + { + "id": "0x562506d09ab0-ActualArgSpec", + "ActualArg": "0x562506d09ab0-ActualArg" + }, + { + "id": "0x562506d09ab0-ActualArg", + "variantKey": "Expr", + "Expr": "0x562506c7e790-Expr" + }, + { + "id": "0x562506c7e790-Expr", + "variantKey": "Designator", + "Designator": "0x562506d1b3a0-Designator" + }, + { + "id": "0x562506d1b3a0-Designator", + "variantKey": "DataRef", + "DataRef": "0x562506d1b3b0-DataRef" + }, + { + "id": "0x562506d1b3b0-DataRef", + "variantKey": "Name", + "Name": "0x562506d1b3b0-Name" + }, + { + "id": "0x562506d1b3b0-Name", + "source": "useless" + }, + { + "id": "0x562506cebda0-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x562506cebda0-ExecutableConstruct" + }, + { + "id": "0x562506cebda0-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x562506cebda0-Statement" + }, + { + "id": "0x562506cebda0-Statement", + "statement": "0x562506cebdb0-ActionStmt", + "source": "print *, \"The sum is:\", total" + }, + { + "id": "0x562506cebdb0-ActionStmt", + "variantKey": "PrintStmt", + "PrintStmt": "0x562506d0a550-PrintStmt" + }, + { + "id": "0x562506d0a550-PrintStmt", + "Format": "0x562506d0a568-Format", + "OutputItem": [ + "0x562506d0a400-OutputItem", + "0x562506d0a310-OutputItem" + ] + }, + { + "id": "0x562506d0a568-Format", + "variantKey": "Star", + "Star": "0x562506d0a568-Star" + }, + { + "id": "0x562506d0a568-Star" + }, + { + "id": "0x562506d0a400-OutputItem", + "variantKey": "Expr", + "Expr": "0x562506d0a400-Expr" + }, + { + "id": "0x562506d0a400-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x562506d0a420-LiteralConstant" + }, + { + "id": "0x562506d0a420-LiteralConstant", + "variantKey": "CharLiteralConstant", + "CharLiteralConstant": "0x562506d0a420-CharLiteralConstant" + }, + { + "id": "0x562506d0a420-CharLiteralConstant", + "string": "The sum is:" + }, + { + "id": "0x562506d0a310-OutputItem", + "variantKey": "Expr", + "Expr": "0x562506d0a310-Expr" + }, + { + "id": "0x562506d0a310-Expr", + "variantKey": "Designator", + "Designator": "0x562506d09850-Designator" + }, + { + "id": "0x562506d09850-Designator", + "variantKey": "DataRef", + "DataRef": "0x562506d09860-DataRef" + }, + { + "id": "0x562506d09860-DataRef", + "variantKey": "Name", + "Name": "0x562506d09860-Name" + }, + { + "id": "0x562506d09860-Name", + "source": "total" + }, + { + "id": "0x562506d0c2f0-InternalSubprogramPart", + "Statement": "0x562506d0c308-Statement", + "InternalSubprogram": [ + "0x562506d1c730-InternalSubprogram" + ] + }, + { + "id": "0x562506d0c308-Statement", + "statement": "0x562506d0c318-ContainsStmt", + "source": "contains" + }, + { + "id": "0x562506d0c318-ContainsStmt" + }, + { + "id": "0x562506d1c730-InternalSubprogram", + "variantKey": "FunctionSubprogram", + "FunctionSubprogram": "0x562506d0dc00-FunctionSubprogram" + }, + { + "id": "0x562506d0dc00-FunctionSubprogram", + "Statement": "0x562506d0dd48-Statement", + "SpecificationPart": "0x562506d0dca0-SpecificationPart", + "ExecutionPart": "0x562506d0dc88-ExecutionPart", + "Statement": "0x562506d0dc00-Statement" + }, + { + "id": "0x562506d0dd48-Statement", + "statement": "0x562506d0dd58-FunctionStmt", + "source": "function add_numbers(a, b, useless) result(res)" + }, + { + "id": "0x562506d0dd58-FunctionStmt", + "prefix": [], + "functionName": "0x562506d0ddb8-Name", + "paramNames": [ + "0x562506d1c6e0-Name", + "0x562506d1c680-Name", + "0x562506d1c6b0-Name" + ], + "suffix": "0x562506d0dd58-Suffix" + }, + { + "id": "0x562506d0ddb8-Name", + "source": "add_numbers" + }, + { + "id": "0x562506d1c6e0-Name", + "source": "a" + }, + { + "id": "0x562506d1c680-Name", + "source": "b" + }, + { + "id": "0x562506d1c6b0-Name", + "source": "useless" + }, + { + "id": "0x562506d0dd58-Suffix", + "resultName": "0x562506d0dd78-Name" + }, + { + "id": "0x562506d0dd78-Name", + "source": "res" + }, + { + "id": "0x562506d0dca0-SpecificationPart", + "ImplicitPart": "0x562506d0dcb8-ImplicitPart", + "DeclarationConstruct": [ + "0x562506d1b480-DeclarationConstruct", + "0x562506d1a320-DeclarationConstruct", + "0x562506d19b70-DeclarationConstruct" + ] + }, + { + "id": "0x562506d0dcb8-ImplicitPart" + }, + { + "id": "0x562506d1b480-DeclarationConstruct", + "variantKey": "SpecificationConstruct", + "SpecificationConstruct": "0x562506d1b480-SpecificationConstruct" + }, + { + "id": "0x562506d1b480-SpecificationConstruct", + "variantKey": "Statement", + "Statement": "0x562506d1b480-Statement" + }, + { + "id": "0x562506d1b480-Statement", + "statement": "0x562506d0bff0-TypeDeclarationStmt", + "source": "integer, intent(in) :: a, b" + }, + { + "id": "0x562506d0bff0-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x562506d0c020-DeclarationTypeSpec", + "AttrSpec": [ + "0x562506d1b680-AttrSpec" + ], + "EntityDecl": [ + "0x562506d1a460-EntityDecl", + "0x562506d0c5f0-EntityDecl" + ] + }, + { + "id": "0x562506d0c020-DeclarationTypeSpec", + "variantKey": "IntrinsicTypeSpec", + "IntrinsicTypeSpec": "0x562506d0c020-IntrinsicTypeSpec" + }, + { + "id": "0x562506d0c020-IntrinsicTypeSpec", + "variantKey": "IntegerTypeSpec", + "IntegerTypeSpec": "0x562506d0c020-IntegerTypeSpec" + }, + { + "id": "0x562506d0c020-IntegerTypeSpec" + }, + { + "id": "0x562506d1b680-AttrSpec", + "variantKey": "IntentSpec", + "IntentSpec": "0x562506d1b680-IntentSpec" + }, + { + "id": "0x562506d1b680-IntentSpec", + "Intent": "0x562506d1b680-Intent", + "intent": "In" + }, + { + "id": "0x562506d1b680-Intent", + "disambiguation": "Fortran::parser::IntentSpec::Intent", + "value": "In" + }, + { + "id": "0x562506d1a460-EntityDecl", + "Name": "0x562506d1a518-Name" + }, + { + "id": "0x562506d1a518-Name", + "source": "a" + }, + { + "id": "0x562506d0c5f0-EntityDecl", + "Name": "0x562506d0c6a8-Name" + }, + { + "id": "0x562506d0c6a8-Name", + "source": "b" + }, + { + "id": "0x562506d1a320-DeclarationConstruct", + "variantKey": "SpecificationConstruct", + "SpecificationConstruct": "0x562506d1a320-SpecificationConstruct" + }, + { + "id": "0x562506d1a320-SpecificationConstruct", + "variantKey": "Statement", + "Statement": "0x562506d1a320-Statement" + }, + { + "id": "0x562506d1a320-Statement", + "statement": "0x562506d0a900-TypeDeclarationStmt", + "source": "integer, intent(inout) :: useless" + }, + { + "id": "0x562506d0a900-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x562506d0a930-DeclarationTypeSpec", + "AttrSpec": [ + "0x562506d227e0-AttrSpec" + ], + "EntityDecl": [ + "0x562506d1a550-EntityDecl" + ] + }, + { + "id": "0x562506d0a930-DeclarationTypeSpec", + "variantKey": "IntrinsicTypeSpec", + "IntrinsicTypeSpec": "0x562506d0a930-IntrinsicTypeSpec" + }, + { + "id": "0x562506d0a930-IntrinsicTypeSpec", + "variantKey": "IntegerTypeSpec", + "IntegerTypeSpec": "0x562506d0a930-IntegerTypeSpec" + }, + { + "id": "0x562506d0a930-IntegerTypeSpec" + }, + { + "id": "0x562506d227e0-AttrSpec", + "variantKey": "IntentSpec", + "IntentSpec": "0x562506d227e0-IntentSpec" + }, + { + "id": "0x562506d227e0-IntentSpec", + "Intent": "0x562506d227e0-Intent", + "intent": "InOut" + }, + { + "id": "0x562506d227e0-Intent", + "disambiguation": "Fortran::parser::IntentSpec::Intent", + "value": "InOut" + }, + { + "id": "0x562506d1a550-EntityDecl", + "Name": "0x562506d1a608-Name" + }, + { + "id": "0x562506d1a608-Name", + "source": "useless" + }, + { + "id": "0x562506d19b70-DeclarationConstruct", + "variantKey": "SpecificationConstruct", + "SpecificationConstruct": "0x562506d19b70-SpecificationConstruct" + }, + { + "id": "0x562506d19b70-SpecificationConstruct", + "variantKey": "Statement", + "Statement": "0x562506d19b70-Statement" + }, + { + "id": "0x562506d19b70-Statement", + "statement": "0x562506d1b700-TypeDeclarationStmt", + "source": "integer :: res" + }, + { + "id": "0x562506d1b700-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x562506d1b730-DeclarationTypeSpec", + "EntityDecl": [ + "0x562506d0a6d0-EntityDecl" + ] + }, + { + "id": "0x562506d1b730-DeclarationTypeSpec", + "variantKey": "IntrinsicTypeSpec", + "IntrinsicTypeSpec": "0x562506d1b730-IntrinsicTypeSpec" + }, + { + "id": "0x562506d1b730-IntrinsicTypeSpec", + "variantKey": "IntegerTypeSpec", + "IntegerTypeSpec": "0x562506d1b730-IntegerTypeSpec" + }, + { + "id": "0x562506d1b730-IntegerTypeSpec" + }, + { + "id": "0x562506d0a6d0-EntityDecl", + "Name": "0x562506d0a788-Name" + }, + { + "id": "0x562506d0a788-Name", + "source": "res" + }, + { + "id": "0x562506d0dc88-ExecutionPart", + "ExecutionPartConstruct": [ + "0x562506d0cf80-ExecutionPartConstruct" + ] + }, + { + "id": "0x562506d0dc88-ExecutionPartConstruct" + }, + { + "id": "0x562506d0cf80-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x562506d0cf80-ExecutableConstruct" + }, + { + "id": "0x562506d0cf80-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x562506d0cf80-Statement" + }, + { + "id": "0x562506d0cf80-Statement", + "statement": "0x562506d0cf90-ActionStmt", + "source": "res = a + b" + }, + { + "id": "0x562506d0cf90-ActionStmt", + "variantKey": "AssignmentStmt", + "AssignmentStmt": "0x562506d0ce60-AssignmentStmt" + }, + { + "id": "0x562506d0ce60-AssignmentStmt", + "Variable": "0x562506d0cf40-Variable", + "Expr": "0x562506d0ce70-Expr" + }, + { + "id": "0x562506d0cf40-Variable", + "variantKey": "Designator", + "Designator": "0x562506d1af10-Designator" + }, + { + "id": "0x562506d1af10-Designator", + "variantKey": "DataRef", + "DataRef": "0x562506d1af20-DataRef" + }, + { + "id": "0x562506d1af20-DataRef", + "variantKey": "Name", + "Name": "0x562506d1af20-Name" + }, + { + "id": "0x562506d1af20-Name", + "source": "res" + }, + { + "id": "0x562506d0ce70-Expr", + "variantKey": "Add", + "Add": "0x562506d0ce90-Add" + }, + { + "id": "0x562506d0ce90-Add", + "left": "0x562506d0ab70-Expr", + "right": "0x562506d0aa90-Expr", + "op": "ADD" + }, + { + "id": "0x562506d0ab70-Expr", + "variantKey": "Designator", + "Designator": "0x562506d0a7b0-Designator" + }, + { + "id": "0x562506d0a7b0-Designator", + "variantKey": "DataRef", + "DataRef": "0x562506d0a7c0-DataRef" + }, + { + "id": "0x562506d0a7c0-DataRef", + "variantKey": "Name", + "Name": "0x562506d0a7c0-Name" + }, + { + "id": "0x562506d0a7c0-Name", + "source": "a" + }, + { + "id": "0x562506d0aa90-Expr", + "variantKey": "Designator", + "Designator": "0x562506d18f80-Designator" + }, + { + "id": "0x562506d18f80-Designator", + "variantKey": "DataRef", + "DataRef": "0x562506d18f90-DataRef" + }, + { + "id": "0x562506d18f90-DataRef", + "variantKey": "Name", + "Name": "0x562506d18f90-Name" + }, + { + "id": "0x562506d18f90-Name", + "source": "b" + }, + { + "id": "0x562506d0dc00-Statement", + "statement": "0x562506d0dc10-EndFunctionStmt", + "source": "end function add_numbers" + }, + { + "id": "0x562506d0dc10-EndFunctionStmt", + "Name": "0x562506d0dc10-Name" + }, + { + "id": "0x562506d0dc10-Name", + "source": "add_numbers" + }, + { + "id": "0x562506d0c2b0-Statement", + "statement": "0x562506d0c2c0-EndProgramStmt", + "source": "end program FUNCTION" + }, + { + "id": "0x562506d0c2c0-EndProgramStmt", + "Name": "0x562506d0c2c0-Name" + }, + { + "id": "0x562506d0c2c0-Name", + "source": "FUNCTION" + } + ], + "comments": [], + "enums": { + "Fortran::common::CUDADataAttr": [ + "Constant", + "Device", + "Managed", + "Pinned", + "Shared", + "Texture", + "Unified" + ], + "Fortran::common::CUDASubprogramAttrs": [ + "Host", + "Device", + "HostDevice", + "Global", + "Grid_Global" + ], + "Fortran::common::ImportKind": [ + "Default", + "Only", + "None", + "All" + ], + "Fortran::common::OmpDependenceKind": [ + "In", + "Out", + "Inout", + "Inoutset", + "Mutexinoutset", + "Depobj" + ], + "Fortran::common::OmpMemoryOrderType": [ + "Acq_Rel", + "Acquire", + "Relaxed", + "Release", + "Seq_Cst" + ], + "Fortran::common::OpenACCDeviceType": [ + "Star", + "Default", + "Nvidia", + "Radeon", + "Host", + "Multicore", + "None" + ], + "Fortran::parser::AccDataModifier::Modifier": [ + "ReadOnly", + "Zero" + ], + "Fortran::parser::AccessSpec::Kind": [ + "Public", + "Private" + ], + "Fortran::parser::BindEntity::Kind": [ + "Object", + "Common" + ], + "Fortran::parser::CompilerDirective::VectorLength::Kind": [ + "Auto", + "Fixed", + "Scalable" + ], + "Fortran::parser::ConnectSpec::CharExpr::Kind": [ + "Access", + "Action", + "Asynchronous", + "Blank", + "Decimal", + "Delim", + "Encoding", + "Form", + "Pad", + "Position", + "Round", + "Sign", + "Carriagecontrol", + "Convert", + "Dispose" + ], + "Fortran::parser::DefinedOperator::IntrinsicOperator": [ + "Power", + "Multiply", + "Divide", + "Add", + "Subtract", + "Concat", + "LT", + "LE", + "EQ", + "NE", + "GE", + "GT", + "NOT", + "AND", + "OR", + "EQV", + "NEQV" + ], + "Fortran::parser::ImplicitStmt::ImplicitNoneNameSpec": [ + "External", + "Type" + ], + "Fortran::parser::InquireSpec::CharVar::Kind": [ + "Access", + "Action", + "Asynchronous", + "Blank", + "Decimal", + "Delim", + "Direct", + "Encoding", + "Form", + "Formatted", + "Iomsg", + "Name", + "Pad", + "Position", + "Read", + "Readwrite", + "Round", + "Sequential", + "Sign", + "Stream", + "Status", + "Unformatted", + "Write", + "Carriagecontrol", + "Convert", + "Dispose" + ], + "Fortran::parser::InquireSpec::IntVar::Kind": [ + "Iostat", + "Nextrec", + "Number", + "Pos", + "Recl", + "Size" + ], + "Fortran::parser::InquireSpec::LogVar::Kind": [ + "Exist", + "Named", + "Opened", + "Pending" + ], + "Fortran::parser::IntentSpec::Intent": [ + "In", + "Out", + "InOut" + ], + "Fortran::parser::IoControlSpec::CharExpr::Kind": [ + "Advance", + "Blank", + "Decimal", + "Delim", + "Pad", + "Round", + "Sign" + ], + "Fortran::parser::ReductionOperator::Operator": [ + "Plus", + "Multiply", + "Max", + "Min", + "Iand", + "Ior", + "Ieor", + "And", + "Or", + "Eqv", + "Neqv" + ], + "Fortran::parser::OmpAccessGroup::Value": [ + "Cgroup" + ], + "Fortran::parser::OmpAdjustArgsClause::OmpAdjustOp::Value": [ + "Nothing", + "Need_Device_Ptr" + ], + "Fortran::parser::OmpAlwaysModifier::Value": [ + "Always" + ], + "Fortran::parser::OmpAtClause::ActionTime": [ + "Compilation", + "Execution" + ], + "Fortran::parser::OmpAttachModifier::Value": [ + "Always", + "Never", + "Auto" + ], + "Fortran::parser::OmpAutomapModifier::Value": [ + "Automap" + ], + "Fortran::parser::OmpBindClause::Binding": [ + "Parallel", + "Teams", + "Thread" + ], + "Fortran::parser::OmpChunkModifier::Value": [ + "Simd" + ], + "Fortran::parser::OmpCloseModifier::Value": [ + "Close" + ], + "Fortran::parser::OmpDefaultClause::DataSharingAttribute": [ + "Private", + "Firstprivate", + "Shared", + "None" + ], + "Fortran::parser::OmpDefaultmapClause::ImplicitBehavior": [ + "Alloc", + "To", + "From", + "Tofrom", + "Firstprivate", + "None", + "Default", + "Present" + ], + "Fortran::parser::OmpDeleteModifier::Value": [ + "Delete" + ], + "Fortran::parser::OmpDependenceType::Value": [ + "Sink", + "Source" + ], + "Fortran::parser::OmpDeviceModifier::Value": [ + "Ancestor", + "Device_Num" + ], + "Fortran::parser::OmpDeviceTypeClause::DeviceTypeDescription": [ + "Any", + "Host", + "Nohost" + ], + "Fortran::parser::OmpDirectiveSpecification::Flag": [ + "DeprecatedSyntax", + "CrossesLabelDo" + ], + "Fortran::parser::OmpExpectation::Value": [ + "Present" + ], + "Fortran::parser::OmpInteropType::Value": [ + "Target", + "Targetsync" + ], + "Fortran::parser::OmpLastprivateModifier::Value": [ + "Conditional" + ], + "Fortran::parser::OmpLinearModifier::Value": [ + "Ref", + "Uval", + "Val" + ], + "Fortran::parser::OmpMapType::Value": [ + "Alloc", + "Delete", + "From", + "Release", + "Storage", + "To", + "Tofrom" + ], + "Fortran::parser::OmpMapTypeModifier::Value": [ + "Always", + "Close", + "Present", + "Ompx_Hold" + ], + "Fortran::parser::OmpObject::Invalid::Kind": [ + "BlankCommonBlock" + ], + "Fortran::parser::OmpOrderClause::Ordering": [ + "Concurrent" + ], + "Fortran::parser::OmpOrderingModifier::Value": [ + "Monotonic", + "Nonmonotonic", + "Simd" + ], + "Fortran::parser::OmpOrderModifier::Value": [ + "Reproducible", + "Unconstrained" + ], + "Fortran::parser::OmpPrescriptiveness::Value": [ + "Strict" + ], + "Fortran::parser::OmpPresentModifier::Value": [ + "Present" + ], + "Fortran::parser::OmpProcBindClause::AffinityPolicy": [ + "Close", + "Master", + "Spread", + "Primary" + ], + "Fortran::parser::OmpReductionModifier::Value": [ + "Default", + "Inscan", + "Task" + ], + "Fortran::parser::OmpRefModifier::Value": [ + "Ref_Ptee", + "Ref_Ptr", + "Ref_Ptr_Ptee" + ], + "Fortran::parser::OmpScheduleClause::Kind": [ + "Static", + "Dynamic", + "Guided", + "Auto", + "Runtime" + ], + "Fortran::parser::OmpSelfModifier::Value": [ + "Self" + ], + "Fortran::parser::OmpSeverityClause::SevLevel": [ + "Fatal", + "Warning" + ], + "Fortran::parser::OmpThreadsetClause::ThreadsetPolicy": [ + "Omp_Pool", + "Omp_Team" + ], + "Fortran::parser::OmpTraitSelectorName::Value": [ + "Arch", + "Atomic_Default_Mem_Order", + "Condition", + "Device_Num", + "Extension", + "Isa", + "Kind", + "Requires", + "Simd", + "Uid", + "Vendor" + ], + "Fortran::parser::OmpTraitSetSelectorName::Value": [ + "Construct", + "Device", + "Implementation", + "Target_Device", + "User" + ], + "Fortran::parser::OmpVariableCategory::Value": [ + "Aggregate", + "All", + "Allocatable", + "Pointer", + "Scalar" + ], + "Fortran::parser::OmpxHoldModifier::Value": [ + "Ompx_Hold" + ], + "Fortran::parser::ProcedureStmt::Kind": [ + "ModuleProcedure", + "Procedure" + ], + "Fortran::parser::SavedEntity::Kind": [ + "Entity", + "Common" + ], + "Fortran::parser::StopStmt::Kind": [ + "Stop", + "ErrorStop" + ], + "Fortran::parser::UseStmt::ModuleNature": [ + "Intrinsic", + "Non_Intrinsic" + ] + } +} diff --git a/FortranParser/resources-test/fortran/parser/program/implicit.expected.f90 b/FortranParser/resources-test/fortran/parser/program/implicit.expected.f90 new file mode 100644 index 00000000..30600a5e --- /dev/null +++ b/FortranParser/resources-test/fortran/parser/program/implicit.expected.f90 @@ -0,0 +1,21 @@ +PROGRAM IMPLICIT + ! 1. Standard IMPLICIT NONE (requires all variables to be declared) + IMPLICIT NONE (TYPE, EXTERNAL) + INTEGER :: explicit_val + + explicit_val = 42 + PRINT *, "Explicit:", explicit_val + + CALL demo_custom_implicit() +CONTAINS + SUBROUTINE demo_custom_implicit() + ! 2. Custom IMPLICIT rules by letter range + IMPLICIT REAL(8) (a-c) ! Names starting with A, B, C -> 8-byte REAL + IMPLICIT INTEGER(8) (i-k) ! Names starting with I, J, K -> 8-byte INTEGER + + a_var = 3.141592653589793_8 ! Implicit REAL(8) + i_var = 1000000000000_8 ! Implicit INTEGER(8) + + PRINT *, "Custom implicit kinds:", kind(a_var), kind(i_var) + END SUBROUTINE demo_custom_implicit +END PROGRAM IMPLICIT \ No newline at end of file diff --git a/FortranParser/resources-test/fortran/parser/program/implicit.f90 b/FortranParser/resources-test/fortran/parser/program/implicit.f90 new file mode 100644 index 00000000..c6502cab --- /dev/null +++ b/FortranParser/resources-test/fortran/parser/program/implicit.f90 @@ -0,0 +1,24 @@ +program implicit + ! 1. Standard IMPLICIT NONE (requires all variables to be declared) + implicit none (type, external) + integer :: explicit_val + + explicit_val = 42 + print *, "Explicit:", explicit_val + + call demo_custom_implicit() + +contains + + subroutine demo_custom_implicit() + ! 2. Custom IMPLICIT rules by letter range + implicit real(8) (a-c) ! Names starting with A, B, C -> 8-byte REAL + implicit integer(8) (i-k) ! Names starting with I, J, K -> 8-byte INTEGER + + a_var = 3.141592653589793_8 ! Implicit REAL(8) + i_var = 1000000000000_8 ! Implicit INTEGER(8) + + print *, "Custom implicit kinds:", kind(a_var), kind(i_var) + end subroutine demo_custom_implicit + +end program implicit \ No newline at end of file diff --git a/FortranParser/resources-test/fortran/parser/program/implicit.json b/FortranParser/resources-test/fortran/parser/program/implicit.json new file mode 100644 index 00000000..003ad97a --- /dev/null +++ b/FortranParser/resources-test/fortran/parser/program/implicit.json @@ -0,0 +1,1228 @@ +{ + "fileExtension": "f90", + "nodes": [ + { + "id": "0x55d88ee59f00-Program", + "ProgramUnit": [ + "0x55d88ee8ed40-ProgramUnit" + ] + }, + { + "id": "0x55d88ee8ed40-ProgramUnit", + "variantKey": "MainProgram", + "MainProgram": "0x55d88ee96d60-MainProgram" + }, + { + "id": "0x55d88ee96d60-MainProgram", + "Statement": "0x55d88ee96ea8-Statement", + "SpecificationPart": "0x55d88ee96e00-SpecificationPart", + "ExecutionPart": "0x55d88ee96de8-ExecutionPart", + "InternalSubprogramPart": "0x55d88ee96da0-InternalSubprogramPart", + "Statement": "0x55d88ee96d60-Statement" + }, + { + "id": "0x55d88ee96ea8-Statement", + "statement": "0x55d88ee96eb8-ProgramStmt", + "source": "program IMPLICIT" + }, + { + "id": "0x55d88ee96eb8-ProgramStmt", + "Name": "0x55d88ee96eb8-Name" + }, + { + "id": "0x55d88ee96eb8-Name", + "source": "IMPLICIT" + }, + { + "id": "0x55d88ee96e00-SpecificationPart", + "ImplicitPart": "0x55d88ee96e18-ImplicitPart", + "DeclarationConstruct": [ + "0x55d88ee584e0-DeclarationConstruct" + ] + }, + { + "id": "0x55d88ee96e18-ImplicitPart", + "ImplicitPartStmt": [ + "0x55d88ee9dcb0-ImplicitPartStmt" + ] + }, + { + "id": "0x55d88ee9dcb0-ImplicitPartStmt", + "variantKey": "Statement", + "Statement": "0x55d88ee9dcb0-Statement" + }, + { + "id": "0x55d88ee9dcb0-Statement", + "statement": "0x55d88ee97b90-ImplicitStmt", + "source": "implicit none(type, external)" + }, + { + "id": "0x55d88ee97b90-ImplicitStmt", + "variantKey": "ImplicitNoneNameSpec", + "ImplicitNoneNameSpec": [ + "0x55d88ee97e10-ImplicitNoneNameSpec", + "0x55d88ee97e30-ImplicitNoneNameSpec" + ] + }, + { + "id": "0x55d88ee97e10-ImplicitNoneNameSpec", + "disambiguation": "Fortran::parser::ImplicitStmt::ImplicitNoneNameSpec", + "value": "Type" + }, + { + "id": "0x55d88ee97e30-ImplicitNoneNameSpec", + "disambiguation": "Fortran::parser::ImplicitStmt::ImplicitNoneNameSpec", + "value": "External" + }, + { + "id": "0x55d88ee584e0-DeclarationConstruct", + "variantKey": "SpecificationConstruct", + "SpecificationConstruct": "0x55d88ee584e0-SpecificationConstruct" + }, + { + "id": "0x55d88ee584e0-SpecificationConstruct", + "variantKey": "Statement", + "Statement": "0x55d88ee584e0-Statement" + }, + { + "id": "0x55d88ee584e0-Statement", + "statement": "0x55d88ee94730-TypeDeclarationStmt", + "source": "integer :: explicit_val" + }, + { + "id": "0x55d88ee94730-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x55d88ee94760-DeclarationTypeSpec", + "EntityDecl": [ + "0x55d88ee94a70-EntityDecl" + ] + }, + { + "id": "0x55d88ee94760-DeclarationTypeSpec", + "variantKey": "IntrinsicTypeSpec", + "IntrinsicTypeSpec": "0x55d88ee94760-IntrinsicTypeSpec" + }, + { + "id": "0x55d88ee94760-IntrinsicTypeSpec", + "variantKey": "IntegerTypeSpec", + "IntegerTypeSpec": "0x55d88ee94760-IntegerTypeSpec" + }, + { + "id": "0x55d88ee94760-IntegerTypeSpec" + }, + { + "id": "0x55d88ee94a70-EntityDecl", + "Name": "0x55d88ee94b28-Name" + }, + { + "id": "0x55d88ee94b28-Name", + "source": "explicit_val" + }, + { + "id": "0x55d88ee96de8-ExecutionPart", + "ExecutionPartConstruct": [ + "0x55d88ee94600-ExecutionPartConstruct", + "0x55d88ee847f0-ExecutionPartConstruct", + "0x55d88ee95e60-ExecutionPartConstruct" + ] + }, + { + "id": "0x55d88ee96de8-ExecutionPartConstruct" + }, + { + "id": "0x55d88ee94600-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55d88ee94600-ExecutableConstruct" + }, + { + "id": "0x55d88ee94600-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55d88ee94600-Statement" + }, + { + "id": "0x55d88ee94600-Statement", + "statement": "0x55d88ee94610-ActionStmt", + "source": "explicit_val = 42" + }, + { + "id": "0x55d88ee94610-ActionStmt", + "variantKey": "AssignmentStmt", + "AssignmentStmt": "0x55d88ee96ef0-AssignmentStmt" + }, + { + "id": "0x55d88ee96ef0-AssignmentStmt", + "Variable": "0x55d88ee96fd0-Variable", + "Expr": "0x55d88ee96f00-Expr" + }, + { + "id": "0x55d88ee96fd0-Variable", + "variantKey": "Designator", + "Designator": "0x55d88ee67100-Designator" + }, + { + "id": "0x55d88ee67100-Designator", + "variantKey": "DataRef", + "DataRef": "0x55d88ee67110-DataRef" + }, + { + "id": "0x55d88ee67110-DataRef", + "variantKey": "Name", + "Name": "0x55d88ee67110-Name" + }, + { + "id": "0x55d88ee67110-Name", + "source": "explicit_val" + }, + { + "id": "0x55d88ee96f00-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55d88ee96f20-LiteralConstant" + }, + { + "id": "0x55d88ee96f20-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55d88ee96f20-IntLiteralConstant" + }, + { + "id": "0x55d88ee96f20-IntLiteralConstant", + "CharBlock": "42" + }, + { + "id": "0x55d88ee847f0-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55d88ee847f0-ExecutableConstruct" + }, + { + "id": "0x55d88ee847f0-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55d88ee847f0-Statement" + }, + { + "id": "0x55d88ee847f0-Statement", + "statement": "0x55d88ee84800-ActionStmt", + "source": "print *, \"Explicit:\", explicit_val" + }, + { + "id": "0x55d88ee84800-ActionStmt", + "variantKey": "PrintStmt", + "PrintStmt": "0x55d88ee96390-PrintStmt" + }, + { + "id": "0x55d88ee96390-PrintStmt", + "Format": "0x55d88ee963a8-Format", + "OutputItem": [ + "0x55d88ee96240-OutputItem", + "0x55d88ee96150-OutputItem" + ] + }, + { + "id": "0x55d88ee963a8-Format", + "variantKey": "Star", + "Star": "0x55d88ee963a8-Star" + }, + { + "id": "0x55d88ee963a8-Star" + }, + { + "id": "0x55d88ee96240-OutputItem", + "variantKey": "Expr", + "Expr": "0x55d88ee96240-Expr" + }, + { + "id": "0x55d88ee96240-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55d88ee96260-LiteralConstant" + }, + { + "id": "0x55d88ee96260-LiteralConstant", + "variantKey": "CharLiteralConstant", + "CharLiteralConstant": "0x55d88ee96260-CharLiteralConstant" + }, + { + "id": "0x55d88ee96260-CharLiteralConstant", + "string": "Explicit:" + }, + { + "id": "0x55d88ee96150-OutputItem", + "variantKey": "Expr", + "Expr": "0x55d88ee96150-Expr" + }, + { + "id": "0x55d88ee96150-Expr", + "variantKey": "Designator", + "Designator": "0x55d88ee96070-Designator" + }, + { + "id": "0x55d88ee96070-Designator", + "variantKey": "DataRef", + "DataRef": "0x55d88ee96080-DataRef" + }, + { + "id": "0x55d88ee96080-DataRef", + "variantKey": "Name", + "Name": "0x55d88ee96080-Name" + }, + { + "id": "0x55d88ee96080-Name", + "source": "explicit_val" + }, + { + "id": "0x55d88ee95e60-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55d88ee95e60-ExecutableConstruct" + }, + { + "id": "0x55d88ee95e60-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55d88ee95e60-Statement" + }, + { + "id": "0x55d88ee95e60-Statement", + "statement": "0x55d88ee95e70-ActionStmt", + "source": "call demo_custom_implicit()" + }, + { + "id": "0x55d88ee95e70-ActionStmt", + "variantKey": "CallStmt", + "CallStmt": "0x55d88ee90e20-CallStmt" + }, + { + "id": "0x55d88ee90e20-CallStmt", + "call": "0x55d88ee90e20-Call" + }, + { + "id": "0x55d88ee90e20-Call", + "ProcedureDesignator": "0x55d88ee90e38-ProcedureDesignator" + }, + { + "id": "0x55d88ee90e38-ProcedureDesignator", + "variantKey": "Name", + "Name": "0x55d88ee90e38-Name" + }, + { + "id": "0x55d88ee90e38-Name", + "source": "demo_custom_implicit" + }, + { + "id": "0x55d88ee96da0-InternalSubprogramPart", + "Statement": "0x55d88ee96db8-Statement", + "InternalSubprogram": [ + "0x55d88ee97de0-InternalSubprogram" + ] + }, + { + "id": "0x55d88ee96db8-Statement", + "statement": "0x55d88ee96dc8-ContainsStmt", + "source": "contains" + }, + { + "id": "0x55d88ee96dc8-ContainsStmt" + }, + { + "id": "0x55d88ee97de0-InternalSubprogram", + "variantKey": "SubroutineSubprogram", + "SubroutineSubprogram": "0x55d88ee89940-SubroutineSubprogram" + }, + { + "id": "0x55d88ee89940-SubroutineSubprogram", + "Statement": "0x55d88ee89a88-Statement", + "SpecificationPart": "0x55d88ee899e0-SpecificationPart", + "ExecutionPart": "0x55d88ee899c8-ExecutionPart", + "Statement": "0x55d88ee89940-Statement" + }, + { + "id": "0x55d88ee89a88-Statement", + "statement": "0x55d88ee89a98-SubroutineStmt", + "source": "subroutine demo_custom_implicit()" + }, + { + "id": "0x55d88ee89a98-SubroutineStmt", + "Name": "0x55d88ee89ad0-Name" + }, + { + "id": "0x55d88ee89ad0-Name", + "source": "demo_custom_implicit" + }, + { + "id": "0x55d88ee899e0-SpecificationPart", + "ImplicitPart": "0x55d88ee899f8-ImplicitPart" + }, + { + "id": "0x55d88ee899f8-ImplicitPart", + "ImplicitPartStmt": [ + "0x55d88ee96b50-ImplicitPartStmt", + "0x55d88ee72c80-ImplicitPartStmt" + ] + }, + { + "id": "0x55d88ee96b50-ImplicitPartStmt", + "variantKey": "Statement", + "Statement": "0x55d88ee96b50-Statement" + }, + { + "id": "0x55d88ee96b50-Statement", + "statement": "0x55d88ee97bf0-ImplicitStmt", + "source": "implicit real(8)(a-c)" + }, + { + "id": "0x55d88ee97bf0-ImplicitStmt", + "variantKey": "ImplicitSpec", + "ImplicitSpec": [ + "0x55d88ee94590-ImplicitSpec" + ] + }, + { + "id": "0x55d88ee94590-ImplicitSpec", + "DeclarationTypeSpec": "0x55d88ee945a8-DeclarationTypeSpec", + "LetterSpec": [ + "0x55d88ee97bd0-LetterSpec" + ] + }, + { + "id": "0x55d88ee945a8-DeclarationTypeSpec", + "variantKey": "IntrinsicTypeSpec", + "IntrinsicTypeSpec": "0x55d88ee945a8-IntrinsicTypeSpec" + }, + { + "id": "0x55d88ee945a8-IntrinsicTypeSpec", + "variantKey": "Real", + "Real": "0x55d88ee945a8-Real" + }, + { + "id": "0x55d88ee945a8-Real", + "KindSelector": "0x55d88ee945a8-KindSelector" + }, + { + "id": "0x55d88ee945a8-KindSelector", + "variantKey": "Expr", + "Expr": "0x55d88edf9790-Expr" + }, + { + "id": "0x55d88edf9790-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55d88edf97b0-LiteralConstant" + }, + { + "id": "0x55d88edf97b0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55d88edf97b0-IntLiteralConstant" + }, + { + "id": "0x55d88edf97b0-IntLiteralConstant", + "CharBlock": "8" + }, + { + "id": "0x55d88ee97bd0-LetterSpec", + "firstLetter": "a", + "lastLetter": "c" + }, + { + "id": "0x55d88ee72c80-ImplicitPartStmt", + "variantKey": "Statement", + "Statement": "0x55d88ee72c80-Statement" + }, + { + "id": "0x55d88ee72c80-Statement", + "statement": "0x55d88ee97d50-ImplicitStmt", + "source": "implicit integer(8)(i-k)" + }, + { + "id": "0x55d88ee97d50-ImplicitStmt", + "variantKey": "ImplicitSpec", + "ImplicitSpec": [ + "0x55d88ee95af0-ImplicitSpec" + ] + }, + { + "id": "0x55d88ee95af0-ImplicitSpec", + "DeclarationTypeSpec": "0x55d88ee95b08-DeclarationTypeSpec", + "LetterSpec": [ + "0x55d88ee97c50-LetterSpec" + ] + }, + { + "id": "0x55d88ee95b08-DeclarationTypeSpec", + "variantKey": "IntrinsicTypeSpec", + "IntrinsicTypeSpec": "0x55d88ee95b08-IntrinsicTypeSpec" + }, + { + "id": "0x55d88ee95b08-IntrinsicTypeSpec", + "variantKey": "IntegerTypeSpec", + "IntegerTypeSpec": "0x55d88ee95b08-IntegerTypeSpec" + }, + { + "id": "0x55d88ee95b08-IntegerTypeSpec", + "KindSelector": "0x55d88ee95b08-KindSelector" + }, + { + "id": "0x55d88ee95b08-KindSelector", + "variantKey": "Expr", + "Expr": "0x55d88ee86760-Expr" + }, + { + "id": "0x55d88ee86760-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55d88ee86780-LiteralConstant" + }, + { + "id": "0x55d88ee86780-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55d88ee86780-IntLiteralConstant" + }, + { + "id": "0x55d88ee86780-IntLiteralConstant", + "CharBlock": "8" + }, + { + "id": "0x55d88ee97c50-LetterSpec", + "firstLetter": "i", + "lastLetter": "k" + }, + { + "id": "0x55d88ee899c8-ExecutionPart", + "ExecutionPartConstruct": [ + "0x55d88ee94950-ExecutionPartConstruct", + "0x55d88ee84960-ExecutionPartConstruct", + "0x55d88ee880c0-ExecutionPartConstruct" + ] + }, + { + "id": "0x55d88ee899c8-ExecutionPartConstruct" + }, + { + "id": "0x55d88ee94950-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55d88ee94950-ExecutableConstruct" + }, + { + "id": "0x55d88ee94950-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55d88ee94950-Statement" + }, + { + "id": "0x55d88ee94950-Statement", + "statement": "0x55d88ee94960-ActionStmt", + "source": "a_var = 3.141592653589793_8" + }, + { + "id": "0x55d88ee94960-ActionStmt", + "variantKey": "AssignmentStmt", + "AssignmentStmt": "0x55d88ee84c10-AssignmentStmt" + }, + { + "id": "0x55d88ee84c10-AssignmentStmt", + "Variable": "0x55d88ee84cf0-Variable", + "Expr": "0x55d88ee84c20-Expr" + }, + { + "id": "0x55d88ee84cf0-Variable", + "variantKey": "Designator", + "Designator": "0x55d88ee67160-Designator" + }, + { + "id": "0x55d88ee67160-Designator", + "variantKey": "DataRef", + "DataRef": "0x55d88ee67170-DataRef" + }, + { + "id": "0x55d88ee67170-DataRef", + "variantKey": "Name", + "Name": "0x55d88ee67170-Name" + }, + { + "id": "0x55d88ee67170-Name", + "source": "a_var" + }, + { + "id": "0x55d88ee84c20-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55d88ee84c40-LiteralConstant" + }, + { + "id": "0x55d88ee84c40-LiteralConstant", + "variantKey": "RealLiteralConstant", + "RealLiteralConstant": "0x55d88ee84c40-RealLiteralConstant" + }, + { + "id": "0x55d88ee84c40-RealLiteralConstant", + "real": "0x55d88ee84c40-Real", + "kind": "0x55d88ee84c50-KindParam" + }, + { + "id": "0x55d88ee84c40-Real", + "source": "3.141592653589793" + }, + { + "id": "0x55d88ee84c50-KindParam", + "variantKey": "uint64_t", + "uint64_t": "8" + }, + { + "id": "0x55d88ee84960-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55d88ee84960-ExecutableConstruct" + }, + { + "id": "0x55d88ee84960-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55d88ee84960-Statement" + }, + { + "id": "0x55d88ee84960-Statement", + "statement": "0x55d88ee84970-ActionStmt", + "source": "i_var = 1000000000000_8" + }, + { + "id": "0x55d88ee84970-ActionStmt", + "variantKey": "AssignmentStmt", + "AssignmentStmt": "0x55d88ee84840-AssignmentStmt" + }, + { + "id": "0x55d88ee84840-AssignmentStmt", + "Variable": "0x55d88ee84920-Variable", + "Expr": "0x55d88ee84850-Expr" + }, + { + "id": "0x55d88ee84920-Variable", + "variantKey": "Designator", + "Designator": "0x55d88ee959a0-Designator" + }, + { + "id": "0x55d88ee959a0-Designator", + "variantKey": "DataRef", + "DataRef": "0x55d88ee959b0-DataRef" + }, + { + "id": "0x55d88ee959b0-DataRef", + "variantKey": "Name", + "Name": "0x55d88ee959b0-Name" + }, + { + "id": "0x55d88ee959b0-Name", + "source": "i_var" + }, + { + "id": "0x55d88ee84850-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55d88ee84870-LiteralConstant" + }, + { + "id": "0x55d88ee84870-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55d88ee84870-IntLiteralConstant" + }, + { + "id": "0x55d88ee84870-IntLiteralConstant", + "CharBlock": "1000000000000", + "KindParam": "0x55d88ee84870-KindParam" + }, + { + "id": "0x55d88ee84870-KindParam", + "variantKey": "uint64_t", + "uint64_t": "8" + }, + { + "id": "0x55d88ee880c0-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55d88ee880c0-ExecutableConstruct" + }, + { + "id": "0x55d88ee880c0-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55d88ee880c0-Statement" + }, + { + "id": "0x55d88ee880c0-Statement", + "statement": "0x55d88ee880d0-ActionStmt", + "source": "print *, \"Custom implicit kinds:\", kind(a_var), kind(i_var)" + }, + { + "id": "0x55d88ee880d0-ActionStmt", + "variantKey": "PrintStmt", + "PrintStmt": "0x55d88ee87f40-PrintStmt" + }, + { + "id": "0x55d88ee87f40-PrintStmt", + "Format": "0x55d88ee87f58-Format", + "OutputItem": [ + "0x55d88ee87df0-OutputItem", + "0x55d88ee86460-OutputItem", + "0x55d88ee87d00-OutputItem" + ] + }, + { + "id": "0x55d88ee87f58-Format", + "variantKey": "Star", + "Star": "0x55d88ee87f58-Star" + }, + { + "id": "0x55d88ee87f58-Star" + }, + { + "id": "0x55d88ee87df0-OutputItem", + "variantKey": "Expr", + "Expr": "0x55d88ee87df0-Expr" + }, + { + "id": "0x55d88ee87df0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55d88ee87e10-LiteralConstant" + }, + { + "id": "0x55d88ee87e10-LiteralConstant", + "variantKey": "CharLiteralConstant", + "CharLiteralConstant": "0x55d88ee87e10-CharLiteralConstant" + }, + { + "id": "0x55d88ee87e10-CharLiteralConstant", + "string": "Custom implicit kinds:" + }, + { + "id": "0x55d88ee86460-OutputItem", + "variantKey": "Expr", + "Expr": "0x55d88ee86460-Expr" + }, + { + "id": "0x55d88ee86460-Expr", + "variantKey": "FunctionReference", + "FunctionReference": "0x55d88ee86370-FunctionReference" + }, + { + "id": "0x55d88ee86370-FunctionReference", + "Call": "0x55d88ee86370-Call" + }, + { + "id": "0x55d88ee86370-Call", + "ProcedureDesignator": "0x55d88ee86388-ProcedureDesignator", + "ActualArgSpec": [ + "0x55d88ee86200-ActualArgSpec" + ] + }, + { + "id": "0x55d88ee86388-ProcedureDesignator", + "variantKey": "Name", + "Name": "0x55d88ee86388-Name" + }, + { + "id": "0x55d88ee86388-Name", + "source": "kind" + }, + { + "id": "0x55d88ee86200-ActualArgSpec", + "ActualArg": "0x55d88ee86200-ActualArg" + }, + { + "id": "0x55d88ee86200-ActualArg", + "variantKey": "Expr", + "Expr": "0x55d88ee86fe0-Expr" + }, + { + "id": "0x55d88ee86fe0-Expr", + "variantKey": "Designator", + "Designator": "0x55d88ee966e0-Designator" + }, + { + "id": "0x55d88ee966e0-Designator", + "variantKey": "DataRef", + "DataRef": "0x55d88ee966f0-DataRef" + }, + { + "id": "0x55d88ee966f0-DataRef", + "variantKey": "Name", + "Name": "0x55d88ee966f0-Name" + }, + { + "id": "0x55d88ee966f0-Name", + "source": "a_var" + }, + { + "id": "0x55d88ee87d00-OutputItem", + "variantKey": "Expr", + "Expr": "0x55d88ee87d00-Expr" + }, + { + "id": "0x55d88ee87d00-Expr", + "variantKey": "FunctionReference", + "FunctionReference": "0x55d88ee87c10-FunctionReference" + }, + { + "id": "0x55d88ee87c10-FunctionReference", + "Call": "0x55d88ee87c10-Call" + }, + { + "id": "0x55d88ee87c10-Call", + "ProcedureDesignator": "0x55d88ee87c28-ProcedureDesignator", + "ActualArgSpec": [ + "0x55d88ee87aa0-ActualArgSpec" + ] + }, + { + "id": "0x55d88ee87c28-ProcedureDesignator", + "variantKey": "Name", + "Name": "0x55d88ee87c28-Name" + }, + { + "id": "0x55d88ee87c28-Name", + "source": "kind" + }, + { + "id": "0x55d88ee87aa0-ActualArgSpec", + "ActualArg": "0x55d88ee87aa0-ActualArg" + }, + { + "id": "0x55d88ee87aa0-ActualArg", + "variantKey": "Expr", + "Expr": "0x55d88ee87870-Expr" + }, + { + "id": "0x55d88ee87870-Expr", + "variantKey": "Designator", + "Designator": "0x55d88ee850f0-Designator" + }, + { + "id": "0x55d88ee850f0-Designator", + "variantKey": "DataRef", + "DataRef": "0x55d88ee85100-DataRef" + }, + { + "id": "0x55d88ee85100-DataRef", + "variantKey": "Name", + "Name": "0x55d88ee85100-Name" + }, + { + "id": "0x55d88ee85100-Name", + "source": "i_var" + }, + { + "id": "0x55d88ee89940-Statement", + "statement": "0x55d88ee89950-EndSubroutineStmt", + "source": "end subroutine demo_custom_implicit" + }, + { + "id": "0x55d88ee89950-EndSubroutineStmt", + "Name": "0x55d88ee89950-Name" + }, + { + "id": "0x55d88ee89950-Name", + "source": "demo_custom_implicit" + }, + { + "id": "0x55d88ee96d60-Statement", + "statement": "0x55d88ee96d70-EndProgramStmt", + "source": "end program IMPLICIT" + }, + { + "id": "0x55d88ee96d70-EndProgramStmt", + "Name": "0x55d88ee96d70-Name" + }, + { + "id": "0x55d88ee96d70-Name", + "source": "IMPLICIT" + } + ], + "comments": [ + { + "text": " 1. Standard IMPLICIT NONE (requires all variables to be declared)", + "stmtId": "0x55d88ee9dcb0-Statement", + "trailing": false + }, + { + "text": " 2. Custom IMPLICIT rules by letter range", + "stmtId": "0x55d88ee96b50-Statement", + "trailing": false + }, + { + "text": " Names starting with A, B, C -> 8-byte REAL", + "stmtId": "0x55d88ee96b50-Statement", + "trailing": true + }, + { + "text": " Names starting with I, J, K -> 8-byte INTEGER", + "stmtId": "0x55d88ee72c80-Statement", + "trailing": true + }, + { + "text": " Implicit REAL(8)", + "stmtId": "0x55d88ee94950-Statement", + "trailing": true + }, + { + "text": " Implicit INTEGER(8)", + "stmtId": "0x55d88ee84960-Statement", + "trailing": true + } + ], + "enums": { + "Fortran::common::CUDADataAttr": [ + "Constant", + "Device", + "Managed", + "Pinned", + "Shared", + "Texture", + "Unified" + ], + "Fortran::common::CUDASubprogramAttrs": [ + "Host", + "Device", + "HostDevice", + "Global", + "Grid_Global" + ], + "Fortran::common::ImportKind": [ + "Default", + "Only", + "None", + "All" + ], + "Fortran::common::OmpDependenceKind": [ + "In", + "Out", + "Inout", + "Inoutset", + "Mutexinoutset", + "Depobj" + ], + "Fortran::common::OmpMemoryOrderType": [ + "Acq_Rel", + "Acquire", + "Relaxed", + "Release", + "Seq_Cst" + ], + "Fortran::common::OpenACCDeviceType": [ + "Star", + "Default", + "Nvidia", + "Radeon", + "Host", + "Multicore", + "None" + ], + "Fortran::parser::AccDataModifier::Modifier": [ + "ReadOnly", + "Zero" + ], + "Fortran::parser::AccessSpec::Kind": [ + "Public", + "Private" + ], + "Fortran::parser::BindEntity::Kind": [ + "Object", + "Common" + ], + "Fortran::parser::CompilerDirective::VectorLength::Kind": [ + "Auto", + "Fixed", + "Scalable" + ], + "Fortran::parser::ConnectSpec::CharExpr::Kind": [ + "Access", + "Action", + "Asynchronous", + "Blank", + "Decimal", + "Delim", + "Encoding", + "Form", + "Pad", + "Position", + "Round", + "Sign", + "Carriagecontrol", + "Convert", + "Dispose" + ], + "Fortran::parser::DefinedOperator::IntrinsicOperator": [ + "Power", + "Multiply", + "Divide", + "Add", + "Subtract", + "Concat", + "LT", + "LE", + "EQ", + "NE", + "GE", + "GT", + "NOT", + "AND", + "OR", + "EQV", + "NEQV" + ], + "Fortran::parser::ImplicitStmt::ImplicitNoneNameSpec": [ + "External", + "Type" + ], + "Fortran::parser::InquireSpec::CharVar::Kind": [ + "Access", + "Action", + "Asynchronous", + "Blank", + "Decimal", + "Delim", + "Direct", + "Encoding", + "Form", + "Formatted", + "Iomsg", + "Name", + "Pad", + "Position", + "Read", + "Readwrite", + "Round", + "Sequential", + "Sign", + "Stream", + "Status", + "Unformatted", + "Write", + "Carriagecontrol", + "Convert", + "Dispose" + ], + "Fortran::parser::InquireSpec::IntVar::Kind": [ + "Iostat", + "Nextrec", + "Number", + "Pos", + "Recl", + "Size" + ], + "Fortran::parser::InquireSpec::LogVar::Kind": [ + "Exist", + "Named", + "Opened", + "Pending" + ], + "Fortran::parser::IntentSpec::Intent": [ + "In", + "Out", + "InOut" + ], + "Fortran::parser::IoControlSpec::CharExpr::Kind": [ + "Advance", + "Blank", + "Decimal", + "Delim", + "Pad", + "Round", + "Sign" + ], + "Fortran::parser::ReductionOperator::Operator": [ + "Plus", + "Multiply", + "Max", + "Min", + "Iand", + "Ior", + "Ieor", + "And", + "Or", + "Eqv", + "Neqv" + ], + "Fortran::parser::OmpAccessGroup::Value": [ + "Cgroup" + ], + "Fortran::parser::OmpAdjustArgsClause::OmpAdjustOp::Value": [ + "Nothing", + "Need_Device_Ptr" + ], + "Fortran::parser::OmpAlwaysModifier::Value": [ + "Always" + ], + "Fortran::parser::OmpAtClause::ActionTime": [ + "Compilation", + "Execution" + ], + "Fortran::parser::OmpAttachModifier::Value": [ + "Always", + "Never", + "Auto" + ], + "Fortran::parser::OmpAutomapModifier::Value": [ + "Automap" + ], + "Fortran::parser::OmpBindClause::Binding": [ + "Parallel", + "Teams", + "Thread" + ], + "Fortran::parser::OmpChunkModifier::Value": [ + "Simd" + ], + "Fortran::parser::OmpCloseModifier::Value": [ + "Close" + ], + "Fortran::parser::OmpDefaultClause::DataSharingAttribute": [ + "Private", + "Firstprivate", + "Shared", + "None" + ], + "Fortran::parser::OmpDefaultmapClause::ImplicitBehavior": [ + "Alloc", + "To", + "From", + "Tofrom", + "Firstprivate", + "None", + "Default", + "Present" + ], + "Fortran::parser::OmpDeleteModifier::Value": [ + "Delete" + ], + "Fortran::parser::OmpDependenceType::Value": [ + "Sink", + "Source" + ], + "Fortran::parser::OmpDeviceModifier::Value": [ + "Ancestor", + "Device_Num" + ], + "Fortran::parser::OmpDeviceTypeClause::DeviceTypeDescription": [ + "Any", + "Host", + "Nohost" + ], + "Fortran::parser::OmpDirectiveSpecification::Flag": [ + "DeprecatedSyntax", + "CrossesLabelDo" + ], + "Fortran::parser::OmpExpectation::Value": [ + "Present" + ], + "Fortran::parser::OmpInteropType::Value": [ + "Target", + "Targetsync" + ], + "Fortran::parser::OmpLastprivateModifier::Value": [ + "Conditional" + ], + "Fortran::parser::OmpLinearModifier::Value": [ + "Ref", + "Uval", + "Val" + ], + "Fortran::parser::OmpMapType::Value": [ + "Alloc", + "Delete", + "From", + "Release", + "Storage", + "To", + "Tofrom" + ], + "Fortran::parser::OmpMapTypeModifier::Value": [ + "Always", + "Close", + "Present", + "Ompx_Hold" + ], + "Fortran::parser::OmpObject::Invalid::Kind": [ + "BlankCommonBlock" + ], + "Fortran::parser::OmpOrderClause::Ordering": [ + "Concurrent" + ], + "Fortran::parser::OmpOrderingModifier::Value": [ + "Monotonic", + "Nonmonotonic", + "Simd" + ], + "Fortran::parser::OmpOrderModifier::Value": [ + "Reproducible", + "Unconstrained" + ], + "Fortran::parser::OmpPrescriptiveness::Value": [ + "Strict" + ], + "Fortran::parser::OmpPresentModifier::Value": [ + "Present" + ], + "Fortran::parser::OmpProcBindClause::AffinityPolicy": [ + "Close", + "Master", + "Spread", + "Primary" + ], + "Fortran::parser::OmpReductionModifier::Value": [ + "Default", + "Inscan", + "Task" + ], + "Fortran::parser::OmpRefModifier::Value": [ + "Ref_Ptee", + "Ref_Ptr", + "Ref_Ptr_Ptee" + ], + "Fortran::parser::OmpScheduleClause::Kind": [ + "Static", + "Dynamic", + "Guided", + "Auto", + "Runtime" + ], + "Fortran::parser::OmpSelfModifier::Value": [ + "Self" + ], + "Fortran::parser::OmpSeverityClause::SevLevel": [ + "Fatal", + "Warning" + ], + "Fortran::parser::OmpThreadsetClause::ThreadsetPolicy": [ + "Omp_Pool", + "Omp_Team" + ], + "Fortran::parser::OmpTraitSelectorName::Value": [ + "Arch", + "Atomic_Default_Mem_Order", + "Condition", + "Device_Num", + "Extension", + "Isa", + "Kind", + "Requires", + "Simd", + "Uid", + "Vendor" + ], + "Fortran::parser::OmpTraitSetSelectorName::Value": [ + "Construct", + "Device", + "Implementation", + "Target_Device", + "User" + ], + "Fortran::parser::OmpVariableCategory::Value": [ + "Aggregate", + "All", + "Allocatable", + "Pointer", + "Scalar" + ], + "Fortran::parser::OmpxHoldModifier::Value": [ + "Ompx_Hold" + ], + "Fortran::parser::ProcedureStmt::Kind": [ + "ModuleProcedure", + "Procedure" + ], + "Fortran::parser::SavedEntity::Kind": [ + "Entity", + "Common" + ], + "Fortran::parser::StopStmt::Kind": [ + "Stop", + "ErrorStop" + ], + "Fortran::parser::UseStmt::ModuleNature": [ + "Intrinsic", + "Non_Intrinsic" + ] + } +} diff --git a/FortranParser/resources-test/fortran/parser/program/module1.expected.f90 b/FortranParser/resources-test/fortran/parser/program/module1.expected.f90 new file mode 100644 index 00000000..493ad041 --- /dev/null +++ b/FortranParser/resources-test/fortran/parser/program/module1.expected.f90 @@ -0,0 +1,21 @@ +MODULE math_utils_mod + IMPLICIT NONE + + PRIVATE + PUBLIC :: add, square + +CONTAINS + + PURE FUNCTION add(a, b) RESULT(res) + INTEGER, INTENT(IN) :: a, b + INTEGER :: res + res = a + b + END FUNCTION add + + PURE FUNCTION square(x) RESULT(res) + INTEGER, INTENT(IN) :: x + INTEGER :: res + res = x * x + END FUNCTION square + +END MODULE math_utils_mod \ No newline at end of file diff --git a/FortranParser/resources-test/fortran/parser/program/module1.f90 b/FortranParser/resources-test/fortran/parser/program/module1.f90 new file mode 100644 index 00000000..77c37f13 --- /dev/null +++ b/FortranParser/resources-test/fortran/parser/program/module1.f90 @@ -0,0 +1,21 @@ +module math_utils_mod + implicit none + + private + public :: add, square + +contains + + pure function add(a, b) result(res) + integer, intent(in) :: a, b + integer :: res + res = a + b + end function add + + pure function square(x) result(res) + integer, intent(in) :: x + integer :: res + res = x * x + end function square + +end module math_utils_mod \ No newline at end of file diff --git a/FortranParser/resources-test/fortran/parser/program/module1.json b/FortranParser/resources-test/fortran/parser/program/module1.json new file mode 100644 index 00000000..442b4fd8 --- /dev/null +++ b/FortranParser/resources-test/fortran/parser/program/module1.json @@ -0,0 +1,1143 @@ +{ + "fileExtension": "f90", + "nodes": [ + { + "id": "0x563ee6ea7f00-Program", + "ProgramUnit": [ + "0x563ee6eead00-ProgramUnit" + ] + }, + { + "id": "0x563ee6eead00-ProgramUnit", + "variantKey": "Module", + "Module": "0x563ee6eeba80-Module" + }, + { + "id": "0x563ee6eeba80-Module", + "Statement": "0x563ee6eebbb0-Statement", + "SpecificationPart": "0x563ee6eebb08-SpecificationPart", + "ModuleSubprogramPart": "0x563ee6eebac0-ModuleSubprogramPart", + "Statement": "0x563ee6eeba80-Statement" + }, + { + "id": "0x563ee6eebbb0-Statement", + "statement": "0x563ee6eebbc0-ModuleStmt", + "source": "module math_utils_mod" + }, + { + "id": "0x563ee6eebbc0-ModuleStmt", + "Name": "0x563ee6eebbc0-Name" + }, + { + "id": "0x563ee6eebbc0-Name", + "source": "math_utils_mod" + }, + { + "id": "0x563ee6eebb08-SpecificationPart", + "ImplicitPart": "0x563ee6eebb20-ImplicitPart", + "DeclarationConstruct": [ + "0x563ee6ea64e0-DeclarationConstruct", + "0x563ee6eb5110-DeclarationConstruct" + ] + }, + { + "id": "0x563ee6eebb20-ImplicitPart", + "ImplicitPartStmt": [ + "0x563ee6eeb9e0-ImplicitPartStmt" + ] + }, + { + "id": "0x563ee6eeb9e0-ImplicitPartStmt", + "variantKey": "Statement", + "Statement": "0x563ee6eeb9e0-Statement" + }, + { + "id": "0x563ee6eeb9e0-Statement", + "statement": "0x563ee6ede0f0-ImplicitStmt", + "source": "implicit none" + }, + { + "id": "0x563ee6ede0f0-ImplicitStmt", + "variantKey": "ImplicitNoneNameSpec", + "ImplicitNoneNameSpec": [] + }, + { + "id": "0x563ee6ea64e0-DeclarationConstruct", + "variantKey": "SpecificationConstruct", + "SpecificationConstruct": "0x563ee6ea64e0-SpecificationConstruct" + }, + { + "id": "0x563ee6ea64e0-SpecificationConstruct", + "variantKey": "Statement", + "Statement": "0x563ee6ea64e0-Statement" + }, + { + "id": "0x563ee6ea64e0-Statement", + "statement": "0x563ee6ea64f0-OtherSpecificationStmt", + "source": "private" + }, + { + "id": "0x563ee6ea64f0-OtherSpecificationStmt", + "variantKey": "AccessStmt", + "AccessStmt": "0x563ee6ede120-AccessStmt" + }, + { + "id": "0x563ee6ede120-AccessStmt", + "AccessSpec": "0x563ee6ede138-AccessSpec" + }, + { + "id": "0x563ee6ede138-AccessSpec", + "Kind": "0x563ee6ede138-Kind" + }, + { + "id": "0x563ee6ede138-Kind", + "disambiguation": "Fortran::parser::AccessSpec::Kind", + "value": "Private" + }, + { + "id": "0x563ee6eb5110-DeclarationConstruct", + "variantKey": "SpecificationConstruct", + "SpecificationConstruct": "0x563ee6eb5110-SpecificationConstruct" + }, + { + "id": "0x563ee6eb5110-SpecificationConstruct", + "variantKey": "Statement", + "Statement": "0x563ee6eb5110-Statement" + }, + { + "id": "0x563ee6eb5110-Statement", + "statement": "0x563ee6eb5120-OtherSpecificationStmt", + "source": "public :: add, square" + }, + { + "id": "0x563ee6eb5120-OtherSpecificationStmt", + "variantKey": "AccessStmt", + "AccessStmt": "0x563ee6ee57d0-AccessStmt" + }, + { + "id": "0x563ee6ee57d0-AccessStmt", + "AccessSpec": "0x563ee6ee57e8-AccessSpec", + "AccessId": [ + "0x563ee6ede0e0-AccessId", + "0x563ee6ede090-AccessId" + ] + }, + { + "id": "0x563ee6ee57e8-AccessSpec", + "Kind": "0x563ee6ee57e8-Kind" + }, + { + "id": "0x563ee6ee57e8-Kind", + "disambiguation": "Fortran::parser::AccessSpec::Kind", + "value": "Public" + }, + { + "id": "0x563ee6ede0e0-AccessId", + "GenericSpec": "0x563ee6edd510-GenericSpec" + }, + { + "id": "0x563ee6edd510-GenericSpec", + "variantKey": "Name", + "Name": "0x563ee6edd520-Name" + }, + { + "id": "0x563ee6edd520-Name", + "source": "add" + }, + { + "id": "0x563ee6ede090-AccessId", + "GenericSpec": "0x563ee6edd5d0-GenericSpec" + }, + { + "id": "0x563ee6edd5d0-GenericSpec", + "variantKey": "Name", + "Name": "0x563ee6edd5e0-Name" + }, + { + "id": "0x563ee6edd5e0-Name", + "source": "square" + }, + { + "id": "0x563ee6eebac0-ModuleSubprogramPart", + "Statement": "0x563ee6eebad8-Statement", + "ModuleSubprogram": [ + "0x563ee6ee5970-ModuleSubprogram", + "0x563ee6edcbd0-ModuleSubprogram" + ] + }, + { + "id": "0x563ee6eebad8-Statement", + "statement": "0x563ee6eebae8-ContainsStmt", + "source": "contains" + }, + { + "id": "0x563ee6eebae8-ContainsStmt" + }, + { + "id": "0x563ee6ee5970-ModuleSubprogram", + "variantKey": "FunctionSubprogram", + "FunctionSubprogram": "0x563ee6edf0e0-FunctionSubprogram" + }, + { + "id": "0x563ee6edf0e0-FunctionSubprogram", + "Statement": "0x563ee6edf228-Statement", + "SpecificationPart": "0x563ee6edf180-SpecificationPart", + "ExecutionPart": "0x563ee6edf168-ExecutionPart", + "Statement": "0x563ee6edf0e0-Statement" + }, + { + "id": "0x563ee6edf228-Statement", + "statement": "0x563ee6edf238-FunctionStmt", + "source": "pure function add(a, b) result(res)" + }, + { + "id": "0x563ee6edf238-FunctionStmt", + "prefix": [ + "0x563ee6eb4da0-PrefixSpec" + ], + "functionName": "0x563ee6edf298-Name", + "paramNames": [ + "0x563ee6ee5940-Name", + "0x563ee6ee5830-Name" + ], + "suffix": "0x563ee6edf238-Suffix" + }, + { + "id": "0x563ee6eb4da0-PrefixSpec", + "variantKey": "Pure", + "Pure": "0x563ee6eb4da0-Pure" + }, + { + "id": "0x563ee6eb4da0-Pure" + }, + { + "id": "0x563ee6edf298-Name", + "source": "add" + }, + { + "id": "0x563ee6ee5940-Name", + "source": "a" + }, + { + "id": "0x563ee6ee5830-Name", + "source": "b" + }, + { + "id": "0x563ee6edf238-Suffix", + "resultName": "0x563ee6edf258-Name" + }, + { + "id": "0x563ee6edf258-Name", + "source": "res" + }, + { + "id": "0x563ee6edf180-SpecificationPart", + "ImplicitPart": "0x563ee6edf198-ImplicitPart", + "DeclarationConstruct": [ + "0x563ee6ee38e0-DeclarationConstruct", + "0x563ee6ee4190-DeclarationConstruct" + ] + }, + { + "id": "0x563ee6edf198-ImplicitPart" + }, + { + "id": "0x563ee6ee38e0-DeclarationConstruct", + "variantKey": "SpecificationConstruct", + "SpecificationConstruct": "0x563ee6ee38e0-SpecificationConstruct" + }, + { + "id": "0x563ee6ee38e0-SpecificationConstruct", + "variantKey": "Statement", + "Statement": "0x563ee6ee38e0-Statement" + }, + { + "id": "0x563ee6ee38e0-Statement", + "statement": "0x563ee6ee2700-TypeDeclarationStmt", + "source": "integer, intent(in) :: a, b" + }, + { + "id": "0x563ee6ee2700-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x563ee6ee2730-DeclarationTypeSpec", + "AttrSpec": [ + "0x563ee6ee4880-AttrSpec" + ], + "EntityDecl": [ + "0x563ee6ee42b0-EntityDecl", + "0x563ee6ee2090-EntityDecl" + ] + }, + { + "id": "0x563ee6ee2730-DeclarationTypeSpec", + "variantKey": "IntrinsicTypeSpec", + "IntrinsicTypeSpec": "0x563ee6ee2730-IntrinsicTypeSpec" + }, + { + "id": "0x563ee6ee2730-IntrinsicTypeSpec", + "variantKey": "IntegerTypeSpec", + "IntegerTypeSpec": "0x563ee6ee2730-IntegerTypeSpec" + }, + { + "id": "0x563ee6ee2730-IntegerTypeSpec" + }, + { + "id": "0x563ee6ee4880-AttrSpec", + "variantKey": "IntentSpec", + "IntentSpec": "0x563ee6ee4880-IntentSpec" + }, + { + "id": "0x563ee6ee4880-IntentSpec", + "Intent": "0x563ee6ee4880-Intent", + "intent": "In" + }, + { + "id": "0x563ee6ee4880-Intent", + "disambiguation": "Fortran::parser::IntentSpec::Intent", + "value": "In" + }, + { + "id": "0x563ee6ee42b0-EntityDecl", + "Name": "0x563ee6ee4368-Name" + }, + { + "id": "0x563ee6ee4368-Name", + "source": "a" + }, + { + "id": "0x563ee6ee2090-EntityDecl", + "Name": "0x563ee6ee2148-Name" + }, + { + "id": "0x563ee6ee2148-Name", + "source": "b" + }, + { + "id": "0x563ee6ee4190-DeclarationConstruct", + "variantKey": "SpecificationConstruct", + "SpecificationConstruct": "0x563ee6ee4190-SpecificationConstruct" + }, + { + "id": "0x563ee6ee4190-SpecificationConstruct", + "variantKey": "Statement", + "Statement": "0x563ee6ee4190-Statement" + }, + { + "id": "0x563ee6ee4190-Statement", + "statement": "0x563ee6ee2fe0-TypeDeclarationStmt", + "source": "integer :: res" + }, + { + "id": "0x563ee6ee2fe0-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x563ee6ee3010-DeclarationTypeSpec", + "EntityDecl": [ + "0x563ee6e5d1e0-EntityDecl" + ] + }, + { + "id": "0x563ee6ee3010-DeclarationTypeSpec", + "variantKey": "IntrinsicTypeSpec", + "IntrinsicTypeSpec": "0x563ee6ee3010-IntrinsicTypeSpec" + }, + { + "id": "0x563ee6ee3010-IntrinsicTypeSpec", + "variantKey": "IntegerTypeSpec", + "IntegerTypeSpec": "0x563ee6ee3010-IntegerTypeSpec" + }, + { + "id": "0x563ee6ee3010-IntegerTypeSpec" + }, + { + "id": "0x563ee6e5d1e0-EntityDecl", + "Name": "0x563ee6e5d298-Name" + }, + { + "id": "0x563ee6e5d298-Name", + "source": "res" + }, + { + "id": "0x563ee6edf168-ExecutionPart", + "ExecutionPartConstruct": [ + "0x563ee6ed3750-ExecutionPartConstruct" + ] + }, + { + "id": "0x563ee6edf168-ExecutionPartConstruct" + }, + { + "id": "0x563ee6ed3750-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x563ee6ed3750-ExecutableConstruct" + }, + { + "id": "0x563ee6ed3750-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x563ee6ed3750-Statement" + }, + { + "id": "0x563ee6ed3750-Statement", + "statement": "0x563ee6ed3760-ActionStmt", + "source": "res = a + b" + }, + { + "id": "0x563ee6ed3760-ActionStmt", + "variantKey": "AssignmentStmt", + "AssignmentStmt": "0x563ee6ed35c0-AssignmentStmt" + }, + { + "id": "0x563ee6ed35c0-AssignmentStmt", + "Variable": "0x563ee6ed36a0-Variable", + "Expr": "0x563ee6ed35d0-Expr" + }, + { + "id": "0x563ee6ed36a0-Variable", + "variantKey": "Designator", + "Designator": "0x563ee6ed2c70-Designator" + }, + { + "id": "0x563ee6ed2c70-Designator", + "variantKey": "DataRef", + "DataRef": "0x563ee6ed2c80-DataRef" + }, + { + "id": "0x563ee6ed2c80-DataRef", + "variantKey": "Name", + "Name": "0x563ee6ed2c80-Name" + }, + { + "id": "0x563ee6ed2c80-Name", + "source": "res" + }, + { + "id": "0x563ee6ed35d0-Expr", + "variantKey": "Add", + "Add": "0x563ee6ed35f0-Add" + }, + { + "id": "0x563ee6ed35f0-Add", + "left": "0x563ee6ed3470-Expr", + "right": "0x563ee6e47790-Expr", + "op": "ADD" + }, + { + "id": "0x563ee6ed3470-Expr", + "variantKey": "Designator", + "Designator": "0x563ee6ed2e90-Designator" + }, + { + "id": "0x563ee6ed2e90-Designator", + "variantKey": "DataRef", + "DataRef": "0x563ee6ed2ea0-DataRef" + }, + { + "id": "0x563ee6ed2ea0-DataRef", + "variantKey": "Name", + "Name": "0x563ee6ed2ea0-Name" + }, + { + "id": "0x563ee6ed2ea0-Name", + "source": "a" + }, + { + "id": "0x563ee6e47790-Expr", + "variantKey": "Designator", + "Designator": "0x563ee6eb5160-Designator" + }, + { + "id": "0x563ee6eb5160-Designator", + "variantKey": "DataRef", + "DataRef": "0x563ee6eb5170-DataRef" + }, + { + "id": "0x563ee6eb5170-DataRef", + "variantKey": "Name", + "Name": "0x563ee6eb5170-Name" + }, + { + "id": "0x563ee6eb5170-Name", + "source": "b" + }, + { + "id": "0x563ee6edf0e0-Statement", + "statement": "0x563ee6edf0f0-EndFunctionStmt", + "source": "end function add" + }, + { + "id": "0x563ee6edf0f0-EndFunctionStmt", + "Name": "0x563ee6edf0f0-Name" + }, + { + "id": "0x563ee6edf0f0-Name", + "source": "add" + }, + { + "id": "0x563ee6edcbd0-ModuleSubprogram", + "variantKey": "FunctionSubprogram", + "FunctionSubprogram": "0x563ee6ee3a40-FunctionSubprogram" + }, + { + "id": "0x563ee6ee3a40-FunctionSubprogram", + "Statement": "0x563ee6ee3b88-Statement", + "SpecificationPart": "0x563ee6ee3ae0-SpecificationPart", + "ExecutionPart": "0x563ee6ee3ac8-ExecutionPart", + "Statement": "0x563ee6ee3a40-Statement" + }, + { + "id": "0x563ee6ee3b88-Statement", + "statement": "0x563ee6ee3b98-FunctionStmt", + "source": "pure function square(x) result(res)" + }, + { + "id": "0x563ee6ee3b98-FunctionStmt", + "prefix": [ + "0x563ee6ed2a60-PrefixSpec" + ], + "functionName": "0x563ee6ee3bf8-Name", + "paramNames": [ + "0x563ee6ee59c0-Name" + ], + "suffix": "0x563ee6ee3b98-Suffix" + }, + { + "id": "0x563ee6ed2a60-PrefixSpec", + "variantKey": "Pure", + "Pure": "0x563ee6ed2a60-Pure" + }, + { + "id": "0x563ee6ed2a60-Pure" + }, + { + "id": "0x563ee6ee3bf8-Name", + "source": "square" + }, + { + "id": "0x563ee6ee59c0-Name", + "source": "x" + }, + { + "id": "0x563ee6ee3b98-Suffix", + "resultName": "0x563ee6ee3bb8-Name" + }, + { + "id": "0x563ee6ee3bb8-Name", + "source": "res" + }, + { + "id": "0x563ee6ee3ae0-SpecificationPart", + "ImplicitPart": "0x563ee6ee3af8-ImplicitPart", + "DeclarationConstruct": [ + "0x563ee6ed2f70-DeclarationConstruct", + "0x563ee6ed3190-DeclarationConstruct" + ] + }, + { + "id": "0x563ee6ee3af8-ImplicitPart" + }, + { + "id": "0x563ee6ed2f70-DeclarationConstruct", + "variantKey": "SpecificationConstruct", + "SpecificationConstruct": "0x563ee6ed2f70-SpecificationConstruct" + }, + { + "id": "0x563ee6ed2f70-SpecificationConstruct", + "variantKey": "Statement", + "Statement": "0x563ee6ed2f70-Statement" + }, + { + "id": "0x563ee6ed2f70-Statement", + "statement": "0x563ee6ee2f60-TypeDeclarationStmt", + "source": "integer, intent(in) :: x" + }, + { + "id": "0x563ee6ee2f60-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x563ee6ee2f90-DeclarationTypeSpec", + "AttrSpec": [ + "0x563ee6ec0c80-AttrSpec" + ], + "EntityDecl": [ + "0x563ee6ed4b50-EntityDecl" + ] + }, + { + "id": "0x563ee6ee2f90-DeclarationTypeSpec", + "variantKey": "IntrinsicTypeSpec", + "IntrinsicTypeSpec": "0x563ee6ee2f90-IntrinsicTypeSpec" + }, + { + "id": "0x563ee6ee2f90-IntrinsicTypeSpec", + "variantKey": "IntegerTypeSpec", + "IntegerTypeSpec": "0x563ee6ee2f90-IntegerTypeSpec" + }, + { + "id": "0x563ee6ee2f90-IntegerTypeSpec" + }, + { + "id": "0x563ee6ec0c80-AttrSpec", + "variantKey": "IntentSpec", + "IntentSpec": "0x563ee6ec0c80-IntentSpec" + }, + { + "id": "0x563ee6ec0c80-IntentSpec", + "Intent": "0x563ee6ec0c80-Intent", + "intent": "In" + }, + { + "id": "0x563ee6ec0c80-Intent", + "disambiguation": "Fortran::parser::IntentSpec::Intent", + "value": "In" + }, + { + "id": "0x563ee6ed4b50-EntityDecl", + "Name": "0x563ee6ed4c08-Name" + }, + { + "id": "0x563ee6ed4c08-Name", + "source": "x" + }, + { + "id": "0x563ee6ed3190-DeclarationConstruct", + "variantKey": "SpecificationConstruct", + "SpecificationConstruct": "0x563ee6ed3190-SpecificationConstruct" + }, + { + "id": "0x563ee6ed3190-SpecificationConstruct", + "variantKey": "Statement", + "Statement": "0x563ee6ed3190-Statement" + }, + { + "id": "0x563ee6ed3190-Statement", + "statement": "0x563ee6ee2210-TypeDeclarationStmt", + "source": "integer :: res" + }, + { + "id": "0x563ee6ee2210-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x563ee6ee2240-DeclarationTypeSpec", + "EntityDecl": [ + "0x563ee6ed4000-EntityDecl" + ] + }, + { + "id": "0x563ee6ee2240-DeclarationTypeSpec", + "variantKey": "IntrinsicTypeSpec", + "IntrinsicTypeSpec": "0x563ee6ee2240-IntrinsicTypeSpec" + }, + { + "id": "0x563ee6ee2240-IntrinsicTypeSpec", + "variantKey": "IntegerTypeSpec", + "IntegerTypeSpec": "0x563ee6ee2240-IntegerTypeSpec" + }, + { + "id": "0x563ee6ee2240-IntegerTypeSpec" + }, + { + "id": "0x563ee6ed4000-EntityDecl", + "Name": "0x563ee6ed40b8-Name" + }, + { + "id": "0x563ee6ed40b8-Name", + "source": "res" + }, + { + "id": "0x563ee6ee3ac8-ExecutionPart", + "ExecutionPartConstruct": [ + "0x563ee6ee2540-ExecutionPartConstruct" + ] + }, + { + "id": "0x563ee6ee3ac8-ExecutionPartConstruct" + }, + { + "id": "0x563ee6ee2540-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x563ee6ee2540-ExecutableConstruct" + }, + { + "id": "0x563ee6ee2540-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x563ee6ee2540-Statement" + }, + { + "id": "0x563ee6ee2540-Statement", + "statement": "0x563ee6ee2550-ActionStmt", + "source": "res = x * x" + }, + { + "id": "0x563ee6ee2550-ActionStmt", + "variantKey": "AssignmentStmt", + "AssignmentStmt": "0x563ee6ee2420-AssignmentStmt" + }, + { + "id": "0x563ee6ee2420-AssignmentStmt", + "Variable": "0x563ee6ee2500-Variable", + "Expr": "0x563ee6ee2430-Expr" + }, + { + "id": "0x563ee6ee2500-Variable", + "variantKey": "Designator", + "Designator": "0x563ee6ed4140-Designator" + }, + { + "id": "0x563ee6ed4140-Designator", + "variantKey": "DataRef", + "DataRef": "0x563ee6ed4150-DataRef" + }, + { + "id": "0x563ee6ed4150-DataRef", + "variantKey": "Name", + "Name": "0x563ee6ed4150-Name" + }, + { + "id": "0x563ee6ed4150-Name", + "source": "res" + }, + { + "id": "0x563ee6ee2430-Expr", + "variantKey": "Multiply", + "Multiply": "0x563ee6ee2450-Multiply" + }, + { + "id": "0x563ee6ee2450-Multiply", + "left": "0x563ee6ed4410-Expr", + "right": "0x563ee6ed4330-Expr", + "op": "MULTIPLY" + }, + { + "id": "0x563ee6ed4410-Expr", + "variantKey": "Designator", + "Designator": "0x563ee6ed5670-Designator" + }, + { + "id": "0x563ee6ed5670-Designator", + "variantKey": "DataRef", + "DataRef": "0x563ee6ed5680-DataRef" + }, + { + "id": "0x563ee6ed5680-DataRef", + "variantKey": "Name", + "Name": "0x563ee6ed5680-Name" + }, + { + "id": "0x563ee6ed5680-Name", + "source": "x" + }, + { + "id": "0x563ee6ed4330-Expr", + "variantKey": "Designator", + "Designator": "0x563ee6ed2990-Designator" + }, + { + "id": "0x563ee6ed2990-Designator", + "variantKey": "DataRef", + "DataRef": "0x563ee6ed29a0-DataRef" + }, + { + "id": "0x563ee6ed29a0-DataRef", + "variantKey": "Name", + "Name": "0x563ee6ed29a0-Name" + }, + { + "id": "0x563ee6ed29a0-Name", + "source": "x" + }, + { + "id": "0x563ee6ee3a40-Statement", + "statement": "0x563ee6ee3a50-EndFunctionStmt", + "source": "end function square" + }, + { + "id": "0x563ee6ee3a50-EndFunctionStmt", + "Name": "0x563ee6ee3a50-Name" + }, + { + "id": "0x563ee6ee3a50-Name", + "source": "square" + }, + { + "id": "0x563ee6eeba80-Statement", + "statement": "0x563ee6eeba90-EndModuleStmt", + "source": "end module math_utils_mod" + }, + { + "id": "0x563ee6eeba90-EndModuleStmt", + "Name": "0x563ee6eeba90-Name" + }, + { + "id": "0x563ee6eeba90-Name", + "source": "math_utils_mod" + } + ], + "comments": [], + "enums": { + "Fortran::common::CUDADataAttr": [ + "Constant", + "Device", + "Managed", + "Pinned", + "Shared", + "Texture", + "Unified" + ], + "Fortran::common::CUDASubprogramAttrs": [ + "Host", + "Device", + "HostDevice", + "Global", + "Grid_Global" + ], + "Fortran::common::ImportKind": [ + "Default", + "Only", + "None", + "All" + ], + "Fortran::common::OmpDependenceKind": [ + "In", + "Out", + "Inout", + "Inoutset", + "Mutexinoutset", + "Depobj" + ], + "Fortran::common::OmpMemoryOrderType": [ + "Acq_Rel", + "Acquire", + "Relaxed", + "Release", + "Seq_Cst" + ], + "Fortran::common::OpenACCDeviceType": [ + "Star", + "Default", + "Nvidia", + "Radeon", + "Host", + "Multicore", + "None" + ], + "Fortran::parser::AccDataModifier::Modifier": [ + "ReadOnly", + "Zero" + ], + "Fortran::parser::AccessSpec::Kind": [ + "Public", + "Private" + ], + "Fortran::parser::BindEntity::Kind": [ + "Object", + "Common" + ], + "Fortran::parser::CompilerDirective::VectorLength::Kind": [ + "Auto", + "Fixed", + "Scalable" + ], + "Fortran::parser::ConnectSpec::CharExpr::Kind": [ + "Access", + "Action", + "Asynchronous", + "Blank", + "Decimal", + "Delim", + "Encoding", + "Form", + "Pad", + "Position", + "Round", + "Sign", + "Carriagecontrol", + "Convert", + "Dispose" + ], + "Fortran::parser::DefinedOperator::IntrinsicOperator": [ + "Power", + "Multiply", + "Divide", + "Add", + "Subtract", + "Concat", + "LT", + "LE", + "EQ", + "NE", + "GE", + "GT", + "NOT", + "AND", + "OR", + "EQV", + "NEQV" + ], + "Fortran::parser::ImplicitStmt::ImplicitNoneNameSpec": [ + "External", + "Type" + ], + "Fortran::parser::InquireSpec::CharVar::Kind": [ + "Access", + "Action", + "Asynchronous", + "Blank", + "Decimal", + "Delim", + "Direct", + "Encoding", + "Form", + "Formatted", + "Iomsg", + "Name", + "Pad", + "Position", + "Read", + "Readwrite", + "Round", + "Sequential", + "Sign", + "Stream", + "Status", + "Unformatted", + "Write", + "Carriagecontrol", + "Convert", + "Dispose" + ], + "Fortran::parser::InquireSpec::IntVar::Kind": [ + "Iostat", + "Nextrec", + "Number", + "Pos", + "Recl", + "Size" + ], + "Fortran::parser::InquireSpec::LogVar::Kind": [ + "Exist", + "Named", + "Opened", + "Pending" + ], + "Fortran::parser::IntentSpec::Intent": [ + "In", + "Out", + "InOut" + ], + "Fortran::parser::IoControlSpec::CharExpr::Kind": [ + "Advance", + "Blank", + "Decimal", + "Delim", + "Pad", + "Round", + "Sign" + ], + "Fortran::parser::ReductionOperator::Operator": [ + "Plus", + "Multiply", + "Max", + "Min", + "Iand", + "Ior", + "Ieor", + "And", + "Or", + "Eqv", + "Neqv" + ], + "Fortran::parser::OmpAccessGroup::Value": [ + "Cgroup" + ], + "Fortran::parser::OmpAdjustArgsClause::OmpAdjustOp::Value": [ + "Nothing", + "Need_Device_Ptr" + ], + "Fortran::parser::OmpAlwaysModifier::Value": [ + "Always" + ], + "Fortran::parser::OmpAtClause::ActionTime": [ + "Compilation", + "Execution" + ], + "Fortran::parser::OmpAttachModifier::Value": [ + "Always", + "Never", + "Auto" + ], + "Fortran::parser::OmpAutomapModifier::Value": [ + "Automap" + ], + "Fortran::parser::OmpBindClause::Binding": [ + "Parallel", + "Teams", + "Thread" + ], + "Fortran::parser::OmpChunkModifier::Value": [ + "Simd" + ], + "Fortran::parser::OmpCloseModifier::Value": [ + "Close" + ], + "Fortran::parser::OmpDefaultClause::DataSharingAttribute": [ + "Private", + "Firstprivate", + "Shared", + "None" + ], + "Fortran::parser::OmpDefaultmapClause::ImplicitBehavior": [ + "Alloc", + "To", + "From", + "Tofrom", + "Firstprivate", + "None", + "Default", + "Present" + ], + "Fortran::parser::OmpDeleteModifier::Value": [ + "Delete" + ], + "Fortran::parser::OmpDependenceType::Value": [ + "Sink", + "Source" + ], + "Fortran::parser::OmpDeviceModifier::Value": [ + "Ancestor", + "Device_Num" + ], + "Fortran::parser::OmpDeviceTypeClause::DeviceTypeDescription": [ + "Any", + "Host", + "Nohost" + ], + "Fortran::parser::OmpDirectiveSpecification::Flag": [ + "DeprecatedSyntax", + "CrossesLabelDo" + ], + "Fortran::parser::OmpExpectation::Value": [ + "Present" + ], + "Fortran::parser::OmpInteropType::Value": [ + "Target", + "Targetsync" + ], + "Fortran::parser::OmpLastprivateModifier::Value": [ + "Conditional" + ], + "Fortran::parser::OmpLinearModifier::Value": [ + "Ref", + "Uval", + "Val" + ], + "Fortran::parser::OmpMapType::Value": [ + "Alloc", + "Delete", + "From", + "Release", + "Storage", + "To", + "Tofrom" + ], + "Fortran::parser::OmpMapTypeModifier::Value": [ + "Always", + "Close", + "Present", + "Ompx_Hold" + ], + "Fortran::parser::OmpObject::Invalid::Kind": [ + "BlankCommonBlock" + ], + "Fortran::parser::OmpOrderClause::Ordering": [ + "Concurrent" + ], + "Fortran::parser::OmpOrderingModifier::Value": [ + "Monotonic", + "Nonmonotonic", + "Simd" + ], + "Fortran::parser::OmpOrderModifier::Value": [ + "Reproducible", + "Unconstrained" + ], + "Fortran::parser::OmpPrescriptiveness::Value": [ + "Strict" + ], + "Fortran::parser::OmpPresentModifier::Value": [ + "Present" + ], + "Fortran::parser::OmpProcBindClause::AffinityPolicy": [ + "Close", + "Master", + "Spread", + "Primary" + ], + "Fortran::parser::OmpReductionModifier::Value": [ + "Default", + "Inscan", + "Task" + ], + "Fortran::parser::OmpRefModifier::Value": [ + "Ref_Ptee", + "Ref_Ptr", + "Ref_Ptr_Ptee" + ], + "Fortran::parser::OmpScheduleClause::Kind": [ + "Static", + "Dynamic", + "Guided", + "Auto", + "Runtime" + ], + "Fortran::parser::OmpSelfModifier::Value": [ + "Self" + ], + "Fortran::parser::OmpSeverityClause::SevLevel": [ + "Fatal", + "Warning" + ], + "Fortran::parser::OmpThreadsetClause::ThreadsetPolicy": [ + "Omp_Pool", + "Omp_Team" + ], + "Fortran::parser::OmpTraitSelectorName::Value": [ + "Arch", + "Atomic_Default_Mem_Order", + "Condition", + "Device_Num", + "Extension", + "Isa", + "Kind", + "Requires", + "Simd", + "Uid", + "Vendor" + ], + "Fortran::parser::OmpTraitSetSelectorName::Value": [ + "Construct", + "Device", + "Implementation", + "Target_Device", + "User" + ], + "Fortran::parser::OmpVariableCategory::Value": [ + "Aggregate", + "All", + "Allocatable", + "Pointer", + "Scalar" + ], + "Fortran::parser::OmpxHoldModifier::Value": [ + "Ompx_Hold" + ], + "Fortran::parser::ProcedureStmt::Kind": [ + "ModuleProcedure", + "Procedure" + ], + "Fortran::parser::SavedEntity::Kind": [ + "Entity", + "Common" + ], + "Fortran::parser::StopStmt::Kind": [ + "Stop", + "ErrorStop" + ], + "Fortran::parser::UseStmt::ModuleNature": [ + "Intrinsic", + "Non_Intrinsic" + ] + } +} diff --git a/FortranParser/resources-test/fortran/parser/program/module2.expected.f90 b/FortranParser/resources-test/fortran/parser/program/module2.expected.f90 new file mode 100644 index 00000000..46ab8b7e --- /dev/null +++ b/FortranParser/resources-test/fortran/parser/program/module2.expected.f90 @@ -0,0 +1,15 @@ +MODULE geometry_mod + IMPLICIT NONE + + TYPE :: point + REAL :: x, y + END TYPE point + + INTERFACE + SUBROUTINE draw_point(pt) + IMPORT :: point + TYPE(point), INTENT(IN) :: pt + END SUBROUTINE draw_point + END INTERFACE + +END MODULE geometry_mod \ No newline at end of file diff --git a/FortranParser/resources-test/fortran/parser/program/module2.f90 b/FortranParser/resources-test/fortran/parser/program/module2.f90 new file mode 100644 index 00000000..37d34a5c --- /dev/null +++ b/FortranParser/resources-test/fortran/parser/program/module2.f90 @@ -0,0 +1,15 @@ +module geometry_mod + implicit none + + type :: Point + real :: x, y + end type Point + + interface + subroutine draw_point(pt) + import :: Point + type(Point), intent(in) :: pt + end subroutine draw_point + end interface + +end module geometry_mod \ No newline at end of file diff --git a/FortranParser/resources-test/fortran/parser/program/module2.json b/FortranParser/resources-test/fortran/parser/program/module2.json new file mode 100644 index 00000000..06d6cc72 --- /dev/null +++ b/FortranParser/resources-test/fortran/parser/program/module2.json @@ -0,0 +1,743 @@ +{ + "fileExtension": "f90", + "nodes": [ + { + "id": "0x5608f4930f00-Program", + "ProgramUnit": [ + "0x5608f4967170-ProgramUnit" + ] + }, + { + "id": "0x5608f4967170-ProgramUnit", + "variantKey": "Module", + "Module": "0x5608f496b460-Module" + }, + { + "id": "0x5608f496b460-Module", + "Statement": "0x5608f496b590-Statement", + "SpecificationPart": "0x5608f496b4e8-SpecificationPart", + "Statement": "0x5608f496b460-Statement" + }, + { + "id": "0x5608f496b590-Statement", + "statement": "0x5608f496b5a0-ModuleStmt", + "source": "module geometry_mod" + }, + { + "id": "0x5608f496b5a0-ModuleStmt", + "Name": "0x5608f496b5a0-Name" + }, + { + "id": "0x5608f496b5a0-Name", + "source": "geometry_mod" + }, + { + "id": "0x5608f496b4e8-SpecificationPart", + "ImplicitPart": "0x5608f496b500-ImplicitPart", + "DeclarationConstruct": [ + "0x5608f492f4e0-DeclarationConstruct", + "0x5608f493e110-DeclarationConstruct" + ] + }, + { + "id": "0x5608f496b500-ImplicitPart", + "ImplicitPartStmt": [ + "0x5608f4974770-ImplicitPartStmt" + ] + }, + { + "id": "0x5608f4974770-ImplicitPartStmt", + "variantKey": "Statement", + "Statement": "0x5608f4974770-Statement" + }, + { + "id": "0x5608f4974770-Statement", + "statement": "0x5608f49670b0-ImplicitStmt", + "source": "implicit none" + }, + { + "id": "0x5608f49670b0-ImplicitStmt", + "variantKey": "ImplicitNoneNameSpec", + "ImplicitNoneNameSpec": [] + }, + { + "id": "0x5608f492f4e0-DeclarationConstruct", + "variantKey": "SpecificationConstruct", + "SpecificationConstruct": "0x5608f492f4e0-SpecificationConstruct" + }, + { + "id": "0x5608f492f4e0-SpecificationConstruct", + "variantKey": "DerivedTypeDef", + "DerivedTypeDef": "0x5608f4974810-DerivedTypeDef" + }, + { + "id": "0x5608f4974810-DerivedTypeDef", + "Statement": "0x5608f4974910-Statement", + "Statement": [ + "0x5608f4967e30-Statement" + ], + "Statement": "0x5608f4974810-Statement" + }, + { + "id": "0x5608f4974910-Statement", + "statement": "0x5608f4974920-DerivedTypeStmt", + "source": "type :: point" + }, + { + "id": "0x5608f4974920-DerivedTypeStmt", + "TypeAttrSpec": [], + "TypeName": "0x5608f4974938-Name", + "ParamNames": [] + }, + { + "id": "0x5608f4974938-Name", + "source": "point" + }, + { + "id": "0x5608f4967e30-Statement", + "statement": "0x5608f4967e40-ComponentDefStmt", + "source": "real :: x, y" + }, + { + "id": "0x5608f4967e40-ComponentDefStmt", + "variantKey": "DataComponentDefStmt", + "DataComponentDefStmt": "0x5608f4967e40-DataComponentDefStmt" + }, + { + "id": "0x5608f4967e40-DataComponentDefStmt", + "DeclarationTypeSpec": "0x5608f4967e70-DeclarationTypeSpec", + "ComponentOrFill": [ + "0x5608f496b030-ComponentOrFill", + "0x5608f48d07a0-ComponentOrFill" + ] + }, + { + "id": "0x5608f4967e70-DeclarationTypeSpec", + "variantKey": "IntrinsicTypeSpec", + "IntrinsicTypeSpec": "0x5608f4967e70-IntrinsicTypeSpec" + }, + { + "id": "0x5608f4967e70-IntrinsicTypeSpec", + "variantKey": "Real", + "Real": "0x5608f4967e70-Real" + }, + { + "id": "0x5608f4967e70-Real" + }, + { + "id": "0x5608f496b030-ComponentOrFill", + "variantKey": "ComponentDecl", + "ComponentDecl": "0x5608f496b030-ComponentDecl" + }, + { + "id": "0x5608f496b030-ComponentDecl", + "Name": "0x5608f496b0d8-Name" + }, + { + "id": "0x5608f496b0d8-Name", + "source": "x" + }, + { + "id": "0x5608f48d07a0-ComponentOrFill", + "variantKey": "ComponentDecl", + "ComponentDecl": "0x5608f48d07a0-ComponentDecl" + }, + { + "id": "0x5608f48d07a0-ComponentDecl", + "Name": "0x5608f48d0848-Name" + }, + { + "id": "0x5608f48d0848-Name", + "source": "y" + }, + { + "id": "0x5608f4974810-Statement", + "statement": "0x5608f4974820-EndTypeStmt", + "source": "end type point" + }, + { + "id": "0x5608f4974820-EndTypeStmt", + "Name": "0x5608f4974820-Name" + }, + { + "id": "0x5608f4974820-Name", + "source": "point" + }, + { + "id": "0x5608f493e110-DeclarationConstruct", + "variantKey": "SpecificationConstruct", + "SpecificationConstruct": "0x5608f493e110-SpecificationConstruct" + }, + { + "id": "0x5608f493e110-SpecificationConstruct", + "variantKey": "InterfaceBlock", + "InterfaceBlock": "0x5608f496b370-InterfaceBlock" + }, + { + "id": "0x5608f496b370-InterfaceBlock", + "Statement": "0x5608f496b3e8-Statement", + "InterfaceSpecification": [ + "0x5608f4906790-InterfaceSpecification" + ], + "Statement": "0x5608f496b370-Statement" + }, + { + "id": "0x5608f496b3e8-Statement", + "statement": "0x5608f496b3f8-InterfaceStmt", + "source": "interface" + }, + { + "id": "0x5608f496b3f8-InterfaceStmt", + "variantKey": "GenericSpec" + }, + { + "id": "0x5608f4906790-InterfaceSpecification", + "variantKey": "InterfaceBody", + "InterfaceBody": "0x5608f4906790-InterfaceBody" + }, + { + "id": "0x5608f4906790-InterfaceBody", + "variantKey": "Subroutine", + "Subroutine": "0x5608f4906790-Subroutine" + }, + { + "id": "0x5608f4906790-Subroutine", + "Statement": "0x5608f49067d8-Statement", + "SpecificationPart": "0x5608f48cdb00-SpecificationPart", + "Statement": "0x5608f4906790-Statement" + }, + { + "id": "0x5608f49067d8-Statement", + "statement": "0x5608f49067e8-SubroutineStmt", + "source": "subroutine draw_point(pt)" + }, + { + "id": "0x5608f49067e8-SubroutineStmt", + "Name": "0x5608f4906820-Name", + "DummyArg": [ + "0x5608f4965dd0-DummyArg" + ] + }, + { + "id": "0x5608f4906820-Name", + "source": "draw_point" + }, + { + "id": "0x5608f4965dd0-DummyArg", + "variantKey": "Name", + "Name": "0x5608f4965dd0-Name" + }, + { + "id": "0x5608f4965dd0-Name", + "source": "pt" + }, + { + "id": "0x5608f48cdb00-SpecificationPart", + "Statement": [ + "0x5608f49664b0-Statement" + ], + "ImplicitPart": "0x5608f48cdb18-ImplicitPart", + "DeclarationConstruct": [ + "0x5608f493dda0-DeclarationConstruct" + ] + }, + { + "id": "0x5608f49664b0-Statement", + "statement": "0x5608f4967110-ImportStmt", + "source": "import :: point" + }, + { + "id": "0x5608f4967110-ImportStmt", + "ImportKind": "0x5608f4967128-ImportKind", + "Name": [ + "0x5608f49670f0-Name" + ] + }, + { + "id": "0x5608f4967128-ImportKind", + "disambiguation": "Fortran::common::ImportKind", + "value": "Default" + }, + { + "id": "0x5608f49670f0-Name", + "source": "point" + }, + { + "id": "0x5608f48cdb18-ImplicitPart" + }, + { + "id": "0x5608f493dda0-DeclarationConstruct", + "variantKey": "SpecificationConstruct", + "SpecificationConstruct": "0x5608f493dda0-SpecificationConstruct" + }, + { + "id": "0x5608f493dda0-SpecificationConstruct", + "variantKey": "Statement", + "Statement": "0x5608f493dda0-Statement" + }, + { + "id": "0x5608f493dda0-Statement", + "statement": "0x5608f496b100-TypeDeclarationStmt", + "source": "type(point), intent(in) :: pt" + }, + { + "id": "0x5608f496b100-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x5608f496b130-DeclarationTypeSpec", + "AttrSpec": [ + "0x5608f496d610-AttrSpec" + ], + "EntityDecl": [ + "0x5608f496b210-EntityDecl" + ] + }, + { + "id": "0x5608f496b130-DeclarationTypeSpec", + "variantKey": "Type", + "Type": "0x5608f496b130-Type" + }, + { + "id": "0x5608f496b130-Type", + "DerivedTypeSpec": "0x5608f496b130-DerivedTypeSpec" + }, + { + "id": "0x5608f496b130-DerivedTypeSpec", + "Name": "0x5608f496b150-Name" + }, + { + "id": "0x5608f496b150-Name", + "source": "point" + }, + { + "id": "0x5608f496d610-AttrSpec", + "variantKey": "IntentSpec", + "IntentSpec": "0x5608f496d610-IntentSpec" + }, + { + "id": "0x5608f496d610-IntentSpec", + "Intent": "0x5608f496d610-Intent", + "intent": "In" + }, + { + "id": "0x5608f496d610-Intent", + "disambiguation": "Fortran::parser::IntentSpec::Intent", + "value": "In" + }, + { + "id": "0x5608f496b210-EntityDecl", + "Name": "0x5608f496b2c8-Name" + }, + { + "id": "0x5608f496b2c8-Name", + "source": "pt" + }, + { + "id": "0x5608f4906790-Statement", + "statement": "0x5608f49067a0-EndSubroutineStmt", + "source": "end subroutine draw_point" + }, + { + "id": "0x5608f49067a0-EndSubroutineStmt", + "Name": "0x5608f49067a0-Name" + }, + { + "id": "0x5608f49067a0-Name", + "source": "draw_point" + }, + { + "id": "0x5608f496b370-Statement", + "statement": "0x5608f496b380-EndInterfaceStmt", + "source": "end interface" + }, + { + "id": "0x5608f496b380-EndInterfaceStmt" + }, + { + "id": "0x5608f496b460-Statement", + "statement": "0x5608f496b470-EndModuleStmt", + "source": "end module geometry_mod" + }, + { + "id": "0x5608f496b470-EndModuleStmt", + "Name": "0x5608f496b470-Name" + }, + { + "id": "0x5608f496b470-Name", + "source": "geometry_mod" + } + ], + "comments": [], + "enums": { + "Fortran::common::CUDADataAttr": [ + "Constant", + "Device", + "Managed", + "Pinned", + "Shared", + "Texture", + "Unified" + ], + "Fortran::common::CUDASubprogramAttrs": [ + "Host", + "Device", + "HostDevice", + "Global", + "Grid_Global" + ], + "Fortran::common::ImportKind": [ + "Default", + "Only", + "None", + "All" + ], + "Fortran::common::OmpDependenceKind": [ + "In", + "Out", + "Inout", + "Inoutset", + "Mutexinoutset", + "Depobj" + ], + "Fortran::common::OmpMemoryOrderType": [ + "Acq_Rel", + "Acquire", + "Relaxed", + "Release", + "Seq_Cst" + ], + "Fortran::common::OpenACCDeviceType": [ + "Star", + "Default", + "Nvidia", + "Radeon", + "Host", + "Multicore", + "None" + ], + "Fortran::parser::AccDataModifier::Modifier": [ + "ReadOnly", + "Zero" + ], + "Fortran::parser::AccessSpec::Kind": [ + "Public", + "Private" + ], + "Fortran::parser::BindEntity::Kind": [ + "Object", + "Common" + ], + "Fortran::parser::CompilerDirective::VectorLength::Kind": [ + "Auto", + "Fixed", + "Scalable" + ], + "Fortran::parser::ConnectSpec::CharExpr::Kind": [ + "Access", + "Action", + "Asynchronous", + "Blank", + "Decimal", + "Delim", + "Encoding", + "Form", + "Pad", + "Position", + "Round", + "Sign", + "Carriagecontrol", + "Convert", + "Dispose" + ], + "Fortran::parser::DefinedOperator::IntrinsicOperator": [ + "Power", + "Multiply", + "Divide", + "Add", + "Subtract", + "Concat", + "LT", + "LE", + "EQ", + "NE", + "GE", + "GT", + "NOT", + "AND", + "OR", + "EQV", + "NEQV" + ], + "Fortran::parser::ImplicitStmt::ImplicitNoneNameSpec": [ + "External", + "Type" + ], + "Fortran::parser::InquireSpec::CharVar::Kind": [ + "Access", + "Action", + "Asynchronous", + "Blank", + "Decimal", + "Delim", + "Direct", + "Encoding", + "Form", + "Formatted", + "Iomsg", + "Name", + "Pad", + "Position", + "Read", + "Readwrite", + "Round", + "Sequential", + "Sign", + "Stream", + "Status", + "Unformatted", + "Write", + "Carriagecontrol", + "Convert", + "Dispose" + ], + "Fortran::parser::InquireSpec::IntVar::Kind": [ + "Iostat", + "Nextrec", + "Number", + "Pos", + "Recl", + "Size" + ], + "Fortran::parser::InquireSpec::LogVar::Kind": [ + "Exist", + "Named", + "Opened", + "Pending" + ], + "Fortran::parser::IntentSpec::Intent": [ + "In", + "Out", + "InOut" + ], + "Fortran::parser::IoControlSpec::CharExpr::Kind": [ + "Advance", + "Blank", + "Decimal", + "Delim", + "Pad", + "Round", + "Sign" + ], + "Fortran::parser::ReductionOperator::Operator": [ + "Plus", + "Multiply", + "Max", + "Min", + "Iand", + "Ior", + "Ieor", + "And", + "Or", + "Eqv", + "Neqv" + ], + "Fortran::parser::OmpAccessGroup::Value": [ + "Cgroup" + ], + "Fortran::parser::OmpAdjustArgsClause::OmpAdjustOp::Value": [ + "Nothing", + "Need_Device_Ptr" + ], + "Fortran::parser::OmpAlwaysModifier::Value": [ + "Always" + ], + "Fortran::parser::OmpAtClause::ActionTime": [ + "Compilation", + "Execution" + ], + "Fortran::parser::OmpAttachModifier::Value": [ + "Always", + "Never", + "Auto" + ], + "Fortran::parser::OmpAutomapModifier::Value": [ + "Automap" + ], + "Fortran::parser::OmpBindClause::Binding": [ + "Parallel", + "Teams", + "Thread" + ], + "Fortran::parser::OmpChunkModifier::Value": [ + "Simd" + ], + "Fortran::parser::OmpCloseModifier::Value": [ + "Close" + ], + "Fortran::parser::OmpDefaultClause::DataSharingAttribute": [ + "Private", + "Firstprivate", + "Shared", + "None" + ], + "Fortran::parser::OmpDefaultmapClause::ImplicitBehavior": [ + "Alloc", + "To", + "From", + "Tofrom", + "Firstprivate", + "None", + "Default", + "Present" + ], + "Fortran::parser::OmpDeleteModifier::Value": [ + "Delete" + ], + "Fortran::parser::OmpDependenceType::Value": [ + "Sink", + "Source" + ], + "Fortran::parser::OmpDeviceModifier::Value": [ + "Ancestor", + "Device_Num" + ], + "Fortran::parser::OmpDeviceTypeClause::DeviceTypeDescription": [ + "Any", + "Host", + "Nohost" + ], + "Fortran::parser::OmpDirectiveSpecification::Flag": [ + "DeprecatedSyntax", + "CrossesLabelDo" + ], + "Fortran::parser::OmpExpectation::Value": [ + "Present" + ], + "Fortran::parser::OmpInteropType::Value": [ + "Target", + "Targetsync" + ], + "Fortran::parser::OmpLastprivateModifier::Value": [ + "Conditional" + ], + "Fortran::parser::OmpLinearModifier::Value": [ + "Ref", + "Uval", + "Val" + ], + "Fortran::parser::OmpMapType::Value": [ + "Alloc", + "Delete", + "From", + "Release", + "Storage", + "To", + "Tofrom" + ], + "Fortran::parser::OmpMapTypeModifier::Value": [ + "Always", + "Close", + "Present", + "Ompx_Hold" + ], + "Fortran::parser::OmpObject::Invalid::Kind": [ + "BlankCommonBlock" + ], + "Fortran::parser::OmpOrderClause::Ordering": [ + "Concurrent" + ], + "Fortran::parser::OmpOrderingModifier::Value": [ + "Monotonic", + "Nonmonotonic", + "Simd" + ], + "Fortran::parser::OmpOrderModifier::Value": [ + "Reproducible", + "Unconstrained" + ], + "Fortran::parser::OmpPrescriptiveness::Value": [ + "Strict" + ], + "Fortran::parser::OmpPresentModifier::Value": [ + "Present" + ], + "Fortran::parser::OmpProcBindClause::AffinityPolicy": [ + "Close", + "Master", + "Spread", + "Primary" + ], + "Fortran::parser::OmpReductionModifier::Value": [ + "Default", + "Inscan", + "Task" + ], + "Fortran::parser::OmpRefModifier::Value": [ + "Ref_Ptee", + "Ref_Ptr", + "Ref_Ptr_Ptee" + ], + "Fortran::parser::OmpScheduleClause::Kind": [ + "Static", + "Dynamic", + "Guided", + "Auto", + "Runtime" + ], + "Fortran::parser::OmpSelfModifier::Value": [ + "Self" + ], + "Fortran::parser::OmpSeverityClause::SevLevel": [ + "Fatal", + "Warning" + ], + "Fortran::parser::OmpThreadsetClause::ThreadsetPolicy": [ + "Omp_Pool", + "Omp_Team" + ], + "Fortran::parser::OmpTraitSelectorName::Value": [ + "Arch", + "Atomic_Default_Mem_Order", + "Condition", + "Device_Num", + "Extension", + "Isa", + "Kind", + "Requires", + "Simd", + "Uid", + "Vendor" + ], + "Fortran::parser::OmpTraitSetSelectorName::Value": [ + "Construct", + "Device", + "Implementation", + "Target_Device", + "User" + ], + "Fortran::parser::OmpVariableCategory::Value": [ + "Aggregate", + "All", + "Allocatable", + "Pointer", + "Scalar" + ], + "Fortran::parser::OmpxHoldModifier::Value": [ + "Ompx_Hold" + ], + "Fortran::parser::ProcedureStmt::Kind": [ + "ModuleProcedure", + "Procedure" + ], + "Fortran::parser::SavedEntity::Kind": [ + "Entity", + "Common" + ], + "Fortran::parser::StopStmt::Kind": [ + "Stop", + "ErrorStop" + ], + "Fortran::parser::UseStmt::ModuleNature": [ + "Intrinsic", + "Non_Intrinsic" + ] + } +} diff --git a/FortranParser/resources-test/fortran/parser/stmt/legacy_do.expected.f90 b/FortranParser/resources-test/fortran/parser/stmt/legacy_do.expected.f90 new file mode 100644 index 00000000..dd6f1f75 --- /dev/null +++ b/FortranParser/resources-test/fortran/parser/stmt/legacy_do.expected.f90 @@ -0,0 +1,11 @@ +PROGRAM LEGACY_DO + ! Legacy do's end with a continue statement + DO 10 i = 1, 5 + PRINT *, i + 10 CONTINUE + + ! They can also end normally + DO 20 i = 11, 15 + PRINT *, i + 20 END DO +END PROGRAM LEGACY_DO \ No newline at end of file diff --git a/FortranParser/resources-test/fortran/parser/stmt/legacy_do.f90 b/FortranParser/resources-test/fortran/parser/stmt/legacy_do.f90 new file mode 100644 index 00000000..a37b50cb --- /dev/null +++ b/FortranParser/resources-test/fortran/parser/stmt/legacy_do.f90 @@ -0,0 +1,11 @@ +program legacy_do + ! Legacy do's end with a continue statement + do 10 i = 1, 5 + print *, i + 10 continue + + ! They can also end normally + do 20 i = 11, 15 + print *, i + 20 end do +end program legacy_do \ No newline at end of file diff --git a/FortranParser/resources-test/fortran/parser/stmt/legacy_do.json b/FortranParser/resources-test/fortran/parser/stmt/legacy_do.json new file mode 100644 index 00000000..a669fc70 --- /dev/null +++ b/FortranParser/resources-test/fortran/parser/stmt/legacy_do.json @@ -0,0 +1,782 @@ +{ + "fileExtension": "f90", + "nodes": [ + { + "id": "0x55d01b18df00-Program", + "ProgramUnit": [ + "0x55d01b1c3e50-ProgramUnit" + ] + }, + { + "id": "0x55d01b1c3e50-ProgramUnit", + "variantKey": "MainProgram", + "MainProgram": "0x55d01b1bb680-MainProgram" + }, + { + "id": "0x55d01b1bb680-MainProgram", + "Statement": "0x55d01b1bb7c8-Statement", + "SpecificationPart": "0x55d01b1bb720-SpecificationPart", + "ExecutionPart": "0x55d01b1bb708-ExecutionPart", + "Statement": "0x55d01b1bb680-Statement" + }, + { + "id": "0x55d01b1bb7c8-Statement", + "statement": "0x55d01b1bb7d8-ProgramStmt", + "source": "program LEGACY_DO" + }, + { + "id": "0x55d01b1bb7d8-ProgramStmt", + "Name": "0x55d01b1bb7d8-Name" + }, + { + "id": "0x55d01b1bb7d8-Name", + "source": "LEGACY_DO" + }, + { + "id": "0x55d01b1bb720-SpecificationPart", + "ImplicitPart": "0x55d01b1bb738-ImplicitPart" + }, + { + "id": "0x55d01b1bb738-ImplicitPart" + }, + { + "id": "0x55d01b1bb708-ExecutionPart", + "ExecutionPartConstruct": [ + "0x55d01b1cb160-ExecutionPartConstruct", + "0x55d01b1c99e0-ExecutionPartConstruct" + ] + }, + { + "id": "0x55d01b1bb708-ExecutionPartConstruct" + }, + { + "id": "0x55d01b1cb160-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55d01b1cb160-ExecutableConstruct" + }, + { + "id": "0x55d01b1cb160-ExecutableConstruct", + "variantKey": "DoConstruct", + "DoConstruct": "0x55d01b1cb360-DoConstruct" + }, + { + "id": "0x55d01b1cb360-DoConstruct", + "Statement": "0x55d01b1cb3b8-Statement", + "ExecutionPartConstruct": [ + "0x55d01b1c97c0-ExecutionPartConstruct", + "0x55d01b19b170-ExecutionPartConstruct" + ], + "Statement": "0x55d01b1cb360-Statement" + }, + { + "id": "0x55d01b1cb3b8-Statement", + "statement": "0x55d01b1cb3c8-NonLabelDoStmt", + "source": "do 10 i = 1, 5" + }, + { + "id": "0x55d01b1cb3c8-NonLabelDoStmt", + "LoopControl": "0x55d01b1cb3c8-LoopControl" + }, + { + "id": "0x55d01b1cb3c8-LoopControl", + "variantKey": "LoopBounds", + "LoopBounds": "0x55d01b1cb3c8-LoopBounds" + }, + { + "id": "0x55d01b1cb3c8-LoopBounds", + "var": "0x55d01b1cb3c8-Name", + "lower": "0x55d01b12d790-Expr", + "upper": "0x55d01b1c9340-Expr" + }, + { + "id": "0x55d01b1cb3c8-Name", + "source": "i" + }, + { + "id": "0x55d01b12d790-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55d01b12d7b0-LiteralConstant" + }, + { + "id": "0x55d01b12d7b0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55d01b12d7b0-IntLiteralConstant" + }, + { + "id": "0x55d01b12d7b0-IntLiteralConstant", + "CharBlock": "1" + }, + { + "id": "0x55d01b1c9340-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55d01b1c9360-LiteralConstant" + }, + { + "id": "0x55d01b1c9360-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55d01b1c9360-IntLiteralConstant" + }, + { + "id": "0x55d01b1c9360-IntLiteralConstant", + "CharBlock": "5" + }, + { + "id": "0x55d01b1cb3a0-ExecutionPartConstruct" + }, + { + "id": "0x55d01b1c97c0-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55d01b1c97c0-ExecutableConstruct" + }, + { + "id": "0x55d01b1c97c0-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55d01b1c97c0-Statement" + }, + { + "id": "0x55d01b1c97c0-Statement", + "statement": "0x55d01b1c97d0-ActionStmt", + "source": "print *, i" + }, + { + "id": "0x55d01b1c97d0-ActionStmt", + "variantKey": "PrintStmt", + "PrintStmt": "0x55d01b1c9640-PrintStmt" + }, + { + "id": "0x55d01b1c9640-PrintStmt", + "Format": "0x55d01b1c9658-Format", + "OutputItem": [ + "0x55d01b1c94f0-OutputItem" + ] + }, + { + "id": "0x55d01b1c9658-Format", + "variantKey": "Star", + "Star": "0x55d01b1c9658-Star" + }, + { + "id": "0x55d01b1c9658-Star" + }, + { + "id": "0x55d01b1c94f0-OutputItem", + "variantKey": "Expr", + "Expr": "0x55d01b1c94f0-Expr" + }, + { + "id": "0x55d01b1c94f0-Expr", + "variantKey": "Designator", + "Designator": "0x55d01b1c9480-Designator" + }, + { + "id": "0x55d01b1c9480-Designator", + "variantKey": "DataRef", + "DataRef": "0x55d01b1c9490-DataRef" + }, + { + "id": "0x55d01b1c9490-DataRef", + "variantKey": "Name", + "Name": "0x55d01b1c9490-Name" + }, + { + "id": "0x55d01b1c9490-Name", + "source": "i" + }, + { + "id": "0x55d01b19b170-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55d01b19b170-ExecutableConstruct" + }, + { + "id": "0x55d01b19b170-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55d01b19b170-Statement" + }, + { + "id": "0x55d01b19b170-Statement", + "statement": "0x55d01b19b180-ActionStmt", + "label": "10", + "source": "10 continue" + }, + { + "id": "0x55d01b19b180-ActionStmt", + "variantKey": "ContinueStmt", + "ContinueStmt": "0x55d01b19b180-ContinueStmt" + }, + { + "id": "0x55d01b19b180-ContinueStmt" + }, + { + "id": "0x55d01b1cb360-Statement", + "statement": "0x55d01b1cb370-EndDoStmt", + "source": "" + }, + { + "id": "0x55d01b1cb370-EndDoStmt" + }, + { + "id": "0x55d01b1c99e0-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55d01b1c99e0-ExecutableConstruct" + }, + { + "id": "0x55d01b1c99e0-ExecutableConstruct", + "variantKey": "DoConstruct", + "DoConstruct": "0x55d01b1cb480-DoConstruct" + }, + { + "id": "0x55d01b1cb480-DoConstruct", + "Statement": "0x55d01b1cb4d8-Statement", + "ExecutionPartConstruct": [ + "0x55d01b1c9cf0-ExecutionPartConstruct", + "0x55d01b19ada0-ExecutionPartConstruct" + ], + "Statement": "0x55d01b1cb480-Statement" + }, + { + "id": "0x55d01b1cb4d8-Statement", + "statement": "0x55d01b1cb4e8-NonLabelDoStmt", + "source": "do 20 i = 11, 15" + }, + { + "id": "0x55d01b1cb4e8-NonLabelDoStmt", + "LoopControl": "0x55d01b1cb4e8-LoopControl" + }, + { + "id": "0x55d01b1cb4e8-LoopControl", + "variantKey": "LoopBounds", + "LoopBounds": "0x55d01b1cb4e8-LoopBounds" + }, + { + "id": "0x55d01b1cb4e8-LoopBounds", + "var": "0x55d01b1cb4e8-Name", + "lower": "0x55d01b1c9810-Expr", + "upper": "0x55d01b1c98f0-Expr" + }, + { + "id": "0x55d01b1cb4e8-Name", + "source": "i" + }, + { + "id": "0x55d01b1c9810-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55d01b1c9830-LiteralConstant" + }, + { + "id": "0x55d01b1c9830-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55d01b1c9830-IntLiteralConstant" + }, + { + "id": "0x55d01b1c9830-IntLiteralConstant", + "CharBlock": "11" + }, + { + "id": "0x55d01b1c98f0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55d01b1c9910-LiteralConstant" + }, + { + "id": "0x55d01b1c9910-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55d01b1c9910-IntLiteralConstant" + }, + { + "id": "0x55d01b1c9910-IntLiteralConstant", + "CharBlock": "15" + }, + { + "id": "0x55d01b1cb4c0-ExecutionPartConstruct" + }, + { + "id": "0x55d01b1c9cf0-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55d01b1c9cf0-ExecutableConstruct" + }, + { + "id": "0x55d01b1c9cf0-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55d01b1c9cf0-Statement" + }, + { + "id": "0x55d01b1c9cf0-Statement", + "statement": "0x55d01b1c9d00-ActionStmt", + "source": "print *, i" + }, + { + "id": "0x55d01b1c9d00-ActionStmt", + "variantKey": "PrintStmt", + "PrintStmt": "0x55d01b1c9be0-PrintStmt" + }, + { + "id": "0x55d01b1c9be0-PrintStmt", + "Format": "0x55d01b1c9bf8-Format", + "OutputItem": [ + "0x55d01b1c9b00-OutputItem" + ] + }, + { + "id": "0x55d01b1c9bf8-Format", + "variantKey": "Star", + "Star": "0x55d01b1c9bf8-Star" + }, + { + "id": "0x55d01b1c9bf8-Star" + }, + { + "id": "0x55d01b1c9b00-OutputItem", + "variantKey": "Expr", + "Expr": "0x55d01b1c9b00-Expr" + }, + { + "id": "0x55d01b1c9b00-Expr", + "variantKey": "Designator", + "Designator": "0x55d01b1c9a90-Designator" + }, + { + "id": "0x55d01b1c9a90-Designator", + "variantKey": "DataRef", + "DataRef": "0x55d01b1c9aa0-DataRef" + }, + { + "id": "0x55d01b1c9aa0-DataRef", + "variantKey": "Name", + "Name": "0x55d01b1c9aa0-Name" + }, + { + "id": "0x55d01b1c9aa0-Name", + "source": "i" + }, + { + "id": "0x55d01b19ada0-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55d01b19ada0-ExecutableConstruct" + }, + { + "id": "0x55d01b19ada0-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55d01b19ada0-Statement" + }, + { + "id": "0x55d01b19ada0-Statement", + "statement": "0x55d01b19adb0-ActionStmt", + "label": "20", + "source": "" + }, + { + "id": "0x55d01b19adb0-ActionStmt", + "variantKey": "ContinueStmt", + "ContinueStmt": "0x55d01b19adb0-ContinueStmt" + }, + { + "id": "0x55d01b19adb0-ContinueStmt" + }, + { + "id": "0x55d01b1cb480-Statement", + "statement": "0x55d01b1cb490-EndDoStmt", + "source": "" + }, + { + "id": "0x55d01b1cb490-EndDoStmt" + }, + { + "id": "0x55d01b1bb680-Statement", + "statement": "0x55d01b1bb690-EndProgramStmt", + "source": "end program LEGACY_DO" + }, + { + "id": "0x55d01b1bb690-EndProgramStmt", + "Name": "0x55d01b1bb690-Name" + }, + { + "id": "0x55d01b1bb690-Name", + "source": "LEGACY_DO" + } + ], + "comments": [ + { + "text": " Legacy do's end with a continue statement", + "stmtId": "0x55d01b1cb3b8-Statement", + "trailing": false + }, + { + "text": " They can also end normally", + "stmtId": "0x55d01b1cb4d8-Statement", + "trailing": false + } + ], + "enums": { + "Fortran::common::CUDADataAttr": [ + "Constant", + "Device", + "Managed", + "Pinned", + "Shared", + "Texture", + "Unified" + ], + "Fortran::common::CUDASubprogramAttrs": [ + "Host", + "Device", + "HostDevice", + "Global", + "Grid_Global" + ], + "Fortran::common::ImportKind": [ + "Default", + "Only", + "None", + "All" + ], + "Fortran::common::OmpDependenceKind": [ + "In", + "Out", + "Inout", + "Inoutset", + "Mutexinoutset", + "Depobj" + ], + "Fortran::common::OmpMemoryOrderType": [ + "Acq_Rel", + "Acquire", + "Relaxed", + "Release", + "Seq_Cst" + ], + "Fortran::common::OpenACCDeviceType": [ + "Star", + "Default", + "Nvidia", + "Radeon", + "Host", + "Multicore", + "None" + ], + "Fortran::parser::AccDataModifier::Modifier": [ + "ReadOnly", + "Zero" + ], + "Fortran::parser::AccessSpec::Kind": [ + "Public", + "Private" + ], + "Fortran::parser::BindEntity::Kind": [ + "Object", + "Common" + ], + "Fortran::parser::CompilerDirective::VectorLength::Kind": [ + "Auto", + "Fixed", + "Scalable" + ], + "Fortran::parser::ConnectSpec::CharExpr::Kind": [ + "Access", + "Action", + "Asynchronous", + "Blank", + "Decimal", + "Delim", + "Encoding", + "Form", + "Pad", + "Position", + "Round", + "Sign", + "Carriagecontrol", + "Convert", + "Dispose" + ], + "Fortran::parser::DefinedOperator::IntrinsicOperator": [ + "Power", + "Multiply", + "Divide", + "Add", + "Subtract", + "Concat", + "LT", + "LE", + "EQ", + "NE", + "GE", + "GT", + "NOT", + "AND", + "OR", + "EQV", + "NEQV" + ], + "Fortran::parser::ImplicitStmt::ImplicitNoneNameSpec": [ + "External", + "Type" + ], + "Fortran::parser::InquireSpec::CharVar::Kind": [ + "Access", + "Action", + "Asynchronous", + "Blank", + "Decimal", + "Delim", + "Direct", + "Encoding", + "Form", + "Formatted", + "Iomsg", + "Name", + "Pad", + "Position", + "Read", + "Readwrite", + "Round", + "Sequential", + "Sign", + "Stream", + "Status", + "Unformatted", + "Write", + "Carriagecontrol", + "Convert", + "Dispose" + ], + "Fortran::parser::InquireSpec::IntVar::Kind": [ + "Iostat", + "Nextrec", + "Number", + "Pos", + "Recl", + "Size" + ], + "Fortran::parser::InquireSpec::LogVar::Kind": [ + "Exist", + "Named", + "Opened", + "Pending" + ], + "Fortran::parser::IntentSpec::Intent": [ + "In", + "Out", + "InOut" + ], + "Fortran::parser::IoControlSpec::CharExpr::Kind": [ + "Advance", + "Blank", + "Decimal", + "Delim", + "Pad", + "Round", + "Sign" + ], + "Fortran::parser::ReductionOperator::Operator": [ + "Plus", + "Multiply", + "Max", + "Min", + "Iand", + "Ior", + "Ieor", + "And", + "Or", + "Eqv", + "Neqv" + ], + "Fortran::parser::OmpAccessGroup::Value": [ + "Cgroup" + ], + "Fortran::parser::OmpAdjustArgsClause::OmpAdjustOp::Value": [ + "Nothing", + "Need_Device_Ptr" + ], + "Fortran::parser::OmpAlwaysModifier::Value": [ + "Always" + ], + "Fortran::parser::OmpAtClause::ActionTime": [ + "Compilation", + "Execution" + ], + "Fortran::parser::OmpAttachModifier::Value": [ + "Always", + "Never", + "Auto" + ], + "Fortran::parser::OmpAutomapModifier::Value": [ + "Automap" + ], + "Fortran::parser::OmpBindClause::Binding": [ + "Parallel", + "Teams", + "Thread" + ], + "Fortran::parser::OmpChunkModifier::Value": [ + "Simd" + ], + "Fortran::parser::OmpCloseModifier::Value": [ + "Close" + ], + "Fortran::parser::OmpDefaultClause::DataSharingAttribute": [ + "Private", + "Firstprivate", + "Shared", + "None" + ], + "Fortran::parser::OmpDefaultmapClause::ImplicitBehavior": [ + "Alloc", + "To", + "From", + "Tofrom", + "Firstprivate", + "None", + "Default", + "Present" + ], + "Fortran::parser::OmpDeleteModifier::Value": [ + "Delete" + ], + "Fortran::parser::OmpDependenceType::Value": [ + "Sink", + "Source" + ], + "Fortran::parser::OmpDeviceModifier::Value": [ + "Ancestor", + "Device_Num" + ], + "Fortran::parser::OmpDeviceTypeClause::DeviceTypeDescription": [ + "Any", + "Host", + "Nohost" + ], + "Fortran::parser::OmpDirectiveSpecification::Flag": [ + "DeprecatedSyntax", + "CrossesLabelDo" + ], + "Fortran::parser::OmpExpectation::Value": [ + "Present" + ], + "Fortran::parser::OmpInteropType::Value": [ + "Target", + "Targetsync" + ], + "Fortran::parser::OmpLastprivateModifier::Value": [ + "Conditional" + ], + "Fortran::parser::OmpLinearModifier::Value": [ + "Ref", + "Uval", + "Val" + ], + "Fortran::parser::OmpMapType::Value": [ + "Alloc", + "Delete", + "From", + "Release", + "Storage", + "To", + "Tofrom" + ], + "Fortran::parser::OmpMapTypeModifier::Value": [ + "Always", + "Close", + "Present", + "Ompx_Hold" + ], + "Fortran::parser::OmpObject::Invalid::Kind": [ + "BlankCommonBlock" + ], + "Fortran::parser::OmpOrderClause::Ordering": [ + "Concurrent" + ], + "Fortran::parser::OmpOrderingModifier::Value": [ + "Monotonic", + "Nonmonotonic", + "Simd" + ], + "Fortran::parser::OmpOrderModifier::Value": [ + "Reproducible", + "Unconstrained" + ], + "Fortran::parser::OmpPrescriptiveness::Value": [ + "Strict" + ], + "Fortran::parser::OmpPresentModifier::Value": [ + "Present" + ], + "Fortran::parser::OmpProcBindClause::AffinityPolicy": [ + "Close", + "Master", + "Spread", + "Primary" + ], + "Fortran::parser::OmpReductionModifier::Value": [ + "Default", + "Inscan", + "Task" + ], + "Fortran::parser::OmpRefModifier::Value": [ + "Ref_Ptee", + "Ref_Ptr", + "Ref_Ptr_Ptee" + ], + "Fortran::parser::OmpScheduleClause::Kind": [ + "Static", + "Dynamic", + "Guided", + "Auto", + "Runtime" + ], + "Fortran::parser::OmpSelfModifier::Value": [ + "Self" + ], + "Fortran::parser::OmpSeverityClause::SevLevel": [ + "Fatal", + "Warning" + ], + "Fortran::parser::OmpThreadsetClause::ThreadsetPolicy": [ + "Omp_Pool", + "Omp_Team" + ], + "Fortran::parser::OmpTraitSelectorName::Value": [ + "Arch", + "Atomic_Default_Mem_Order", + "Condition", + "Device_Num", + "Extension", + "Isa", + "Kind", + "Requires", + "Simd", + "Uid", + "Vendor" + ], + "Fortran::parser::OmpTraitSetSelectorName::Value": [ + "Construct", + "Device", + "Implementation", + "Target_Device", + "User" + ], + "Fortran::parser::OmpVariableCategory::Value": [ + "Aggregate", + "All", + "Allocatable", + "Pointer", + "Scalar" + ], + "Fortran::parser::OmpxHoldModifier::Value": [ + "Ompx_Hold" + ], + "Fortran::parser::ProcedureStmt::Kind": [ + "ModuleProcedure", + "Procedure" + ], + "Fortran::parser::SavedEntity::Kind": [ + "Entity", + "Common" + ], + "Fortran::parser::StopStmt::Kind": [ + "Stop", + "ErrorStop" + ], + "Fortran::parser::UseStmt::ModuleNature": [ + "Intrinsic", + "Non_Intrinsic" + ] + } +} diff --git a/FortranParser/resources-test/fortran/parser/stmt/pointer_assign.expected.f90 b/FortranParser/resources-test/fortran/parser/stmt/pointer_assign.expected.f90 new file mode 100644 index 00000000..3179cf02 --- /dev/null +++ b/FortranParser/resources-test/fortran/parser/stmt/pointer_assign.expected.f90 @@ -0,0 +1,78 @@ +PROGRAM POINTER_ASSIGN + IMPLICIT NONE + + ! Targets + INTEGER, TARGET :: scalar_target = 42 + INTEGER, TARGET :: array_target(5) = [10, 20, 30, 40, 50] + + ! Pointers + INTEGER, POINTER :: ptr_scalar => null() + INTEGER, POINTER :: ptr_copy => null() + INTEGER, POINTER :: ptr_array(:) => null() + INTEGER, POINTER :: ptr_slice(:) => null() + INTEGER, POINTER :: ptr_lbound(:) => null() + INTEGER, POINTER :: ptr_bounds(:) => null() + INTEGER, POINTER :: ptr_2d(:, :) => null() + + ! Procedure Pointer + ABSTRACT INTERFACE + FUNCTION func_interface(x) RESULT(res) + INTEGER, INTENT(IN) :: x + INTEGER :: res + END FUNCTION func_interface + END INTERFACE + PROCEDURE(func_interface), POINTER :: ptr_proc => null() + + ! 1. Scalar pointer assignment + ptr_scalar => scalar_target + PRINT *, "1. Scalar pointer:", ptr_scalar + + ! 2. Pointer-to-pointer assignment + ptr_copy => ptr_scalar + PRINT *, "2. Pointer copy:", ptr_copy + + ! 3. Whole array assignment + ptr_array => array_target + PRINT *, "3. Whole array:", ptr_array + + ! 4. Array section / slice assignment + ptr_slice => array_target(2:4) + PRINT *, "4. Array slice (2:4):", ptr_slice + + ! 5. Lower bound remapping + ptr_lbound(10:) => array_target + PRINT *, "5. Lower bound remapped | LBound:", lbound(ptr_lbound, 1), "| ptr(10):", ptr_lbound(10) + + ! 6. Full bounds remapping (same rank) + ptr_bounds(0:4) => array_target + PRINT *, "6. Full bounds remapped | LBound:", lbound(ptr_bounds, 1), "| ptr(0):", ptr_bounds(0) + + ! 7. Rank remapping (1D contiguous target to 2D pointer) + ptr_2d(1:2, 1:2) => array_target(1:4) + PRINT *, "7. Rank remapped 2D pointer (element 2,2):", ptr_2d(2, 2) + + ! 8. Procedure pointer assignment + ptr_proc => double_val + PRINT *, "8. Procedure pointer result:", ptr_proc(5) + + ! 9. Nullification pointer assignments + ptr_scalar => null() + ptr_copy => null() + ptr_array => null() + ptr_slice => null() + ptr_lbound => null() + ptr_bounds => null() + ptr_2d => null() + ptr_proc => null() + + PRINT *, "9. Any pointers still associated?", associated(ptr_scalar) .OR. associated(ptr_proc) + +CONTAINS + + FUNCTION double_val(x) RESULT(res) + INTEGER, INTENT(IN) :: x + INTEGER :: res + res = x * 2 + END FUNCTION double_val + +END PROGRAM POINTER_ASSIGN \ No newline at end of file diff --git a/FortranParser/resources-test/fortran/parser/stmt/pointer_assign.f90 b/FortranParser/resources-test/fortran/parser/stmt/pointer_assign.f90 new file mode 100644 index 00000000..05e22606 --- /dev/null +++ b/FortranParser/resources-test/fortran/parser/stmt/pointer_assign.f90 @@ -0,0 +1,78 @@ +program pointer_assign + implicit none + + ! Targets + integer, target :: scalar_target = 42 + integer, target :: array_target(5) = [10, 20, 30, 40, 50] + + ! Pointers + integer, pointer :: ptr_scalar => null() + integer, pointer :: ptr_copy => null() + integer, pointer :: ptr_array(:) => null() + integer, pointer :: ptr_slice(:) => null() + integer, pointer :: ptr_lbound(:) => null() + integer, pointer :: ptr_bounds(:) => null() + integer, pointer :: ptr_2d(:, :) => null() + + ! Procedure Pointer + abstract interface + function func_interface(x) result(res) + integer, intent(in) :: x + integer :: res + end function func_interface + end interface + procedure(func_interface), pointer :: ptr_proc => null() + + ! 1. Scalar pointer assignment + ptr_scalar => scalar_target + print *, "1. Scalar pointer:", ptr_scalar + + ! 2. Pointer-to-pointer assignment + ptr_copy => ptr_scalar + print *, "2. Pointer copy:", ptr_copy + + ! 3. Whole array assignment + ptr_array => array_target + print *, "3. Whole array:", ptr_array + + ! 4. Array section / slice assignment + ptr_slice => array_target(2:4) + print *, "4. Array slice (2:4):", ptr_slice + + ! 5. Lower bound remapping + ptr_lbound(10:) => array_target + print *, "5. Lower bound remapped | LBound:", lbound(ptr_lbound, 1), "| ptr(10):", ptr_lbound(10) + + ! 6. Full bounds remapping (same rank) + ptr_bounds(0:4) => array_target + print *, "6. Full bounds remapped | LBound:", lbound(ptr_bounds, 1), "| ptr(0):", ptr_bounds(0) + + ! 7. Rank remapping (1D contiguous target to 2D pointer) + ptr_2d(1:2, 1:2) => array_target(1:4) + print *, "7. Rank remapped 2D pointer (element 2,2):", ptr_2d(2, 2) + + ! 8. Procedure pointer assignment + ptr_proc => double_val + print *, "8. Procedure pointer result:", ptr_proc(5) + + ! 9. Nullification pointer assignments + ptr_scalar => null() + ptr_copy => null() + ptr_array => null() + ptr_slice => null() + ptr_lbound => null() + ptr_bounds => null() + ptr_2d => null() + ptr_proc => null() + + print *, "9. Any pointers still associated?", associated(ptr_scalar) .or. associated(ptr_proc) + +contains + + function double_val(x) result(res) + integer, intent(in) :: x + integer :: res + res = x * 2 + end function double_val + +end program pointer_assign \ No newline at end of file diff --git a/FortranParser/resources-test/fortran/parser/stmt/pointer_assign.json b/FortranParser/resources-test/fortran/parser/stmt/pointer_assign.json new file mode 100644 index 00000000..aa3fe797 --- /dev/null +++ b/FortranParser/resources-test/fortran/parser/stmt/pointer_assign.json @@ -0,0 +1,4449 @@ +{ + "fileExtension": "f90", + "nodes": [ + { + "id": "0x55c2dfb00f00-Program", + "ProgramUnit": [ + "0x55c2dfb3a5a0-ProgramUnit" + ] + }, + { + "id": "0x55c2dfb3a5a0-ProgramUnit", + "variantKey": "MainProgram", + "MainProgram": "0x55c2dfb3e160-MainProgram" + }, + { + "id": "0x55c2dfb3e160-MainProgram", + "Statement": "0x55c2dfb3e2a8-Statement", + "SpecificationPart": "0x55c2dfb3e200-SpecificationPart", + "ExecutionPart": "0x55c2dfb3e1e8-ExecutionPart", + "InternalSubprogramPart": "0x55c2dfb3e1a0-InternalSubprogramPart", + "Statement": "0x55c2dfb3e160-Statement" + }, + { + "id": "0x55c2dfb3e2a8-Statement", + "statement": "0x55c2dfb3e2b8-ProgramStmt", + "source": "program POINTER_ASSIGN" + }, + { + "id": "0x55c2dfb3e2b8-ProgramStmt", + "Name": "0x55c2dfb3e2b8-Name" + }, + { + "id": "0x55c2dfb3e2b8-Name", + "source": "POINTER_ASSIGN" + }, + { + "id": "0x55c2dfb3e200-SpecificationPart", + "ImplicitPart": "0x55c2dfb3e218-ImplicitPart", + "DeclarationConstruct": [ + "0x55c2dfb0e110-DeclarationConstruct", + "0x55c2dfb2bd40-DeclarationConstruct", + "0x55c2dfb44890-DeclarationConstruct", + "0x55c2dfb44b90-DeclarationConstruct", + "0x55c2dfb2c510-DeclarationConstruct", + "0x55c2dfb2c7c0-DeclarationConstruct", + "0x55c2dfb2ca70-DeclarationConstruct", + "0x55c2dfb2cd20-DeclarationConstruct", + "0x55c2dfb2d020-DeclarationConstruct", + "0x55c2dfb37670-DeclarationConstruct", + "0x55c2dfb2d880-DeclarationConstruct" + ] + }, + { + "id": "0x55c2dfb3e218-ImplicitPart", + "ImplicitPartStmt": [ + "0x55c2dfb28100-ImplicitPartStmt" + ] + }, + { + "id": "0x55c2dfb28100-ImplicitPartStmt", + "variantKey": "Statement", + "Statement": "0x55c2dfb28100-Statement" + }, + { + "id": "0x55c2dfb28100-Statement", + "statement": "0x55c2dfb3bef0-ImplicitStmt", + "source": "implicit none" + }, + { + "id": "0x55c2dfb3bef0-ImplicitStmt", + "variantKey": "ImplicitNoneNameSpec", + "ImplicitNoneNameSpec": [] + }, + { + "id": "0x55c2dfb0e110-DeclarationConstruct", + "variantKey": "SpecificationConstruct", + "SpecificationConstruct": "0x55c2dfb0e110-SpecificationConstruct" + }, + { + "id": "0x55c2dfb0e110-SpecificationConstruct", + "variantKey": "Statement", + "Statement": "0x55c2dfb0e110-Statement" + }, + { + "id": "0x55c2dfb0e110-Statement", + "statement": "0x55c2dfb43ba0-TypeDeclarationStmt", + "source": "integer, target :: scalar_target = 42" + }, + { + "id": "0x55c2dfb43ba0-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x55c2dfb43bd0-DeclarationTypeSpec", + "AttrSpec": [ + "0x55c2dfb44fc0-AttrSpec" + ], + "EntityDecl": [ + "0x55c2dfb43f50-EntityDecl" + ] + }, + { + "id": "0x55c2dfb43bd0-DeclarationTypeSpec", + "variantKey": "IntrinsicTypeSpec", + "IntrinsicTypeSpec": "0x55c2dfb43bd0-IntrinsicTypeSpec" + }, + { + "id": "0x55c2dfb43bd0-IntrinsicTypeSpec", + "variantKey": "IntegerTypeSpec", + "IntegerTypeSpec": "0x55c2dfb43bd0-IntegerTypeSpec" + }, + { + "id": "0x55c2dfb43bd0-IntegerTypeSpec" + }, + { + "id": "0x55c2dfb44fc0-AttrSpec", + "variantKey": "Target", + "Target": "0x55c2dfb44fc0-Target" + }, + { + "id": "0x55c2dfb44fc0-Target", + "keyword": "Target" + }, + { + "id": "0x55c2dfb43f50-EntityDecl", + "Name": "0x55c2dfb44008-Name", + "Initialization": "0x55c2dfb43f50-Initialization" + }, + { + "id": "0x55c2dfb44008-Name", + "source": "scalar_target" + }, + { + "id": "0x55c2dfb43f50-Initialization", + "variantKey": "Expr", + "Expr": "0x55c2dfaa0790-Expr" + }, + { + "id": "0x55c2dfaa0790-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55c2dfaa07b0-LiteralConstant" + }, + { + "id": "0x55c2dfaa07b0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55c2dfaa07b0-IntLiteralConstant" + }, + { + "id": "0x55c2dfaa07b0-IntLiteralConstant", + "CharBlock": "42" + }, + { + "id": "0x55c2dfb2bd40-DeclarationConstruct", + "variantKey": "SpecificationConstruct", + "SpecificationConstruct": "0x55c2dfb2bd40-SpecificationConstruct" + }, + { + "id": "0x55c2dfb2bd40-SpecificationConstruct", + "variantKey": "Statement", + "Statement": "0x55c2dfb2bd40-Statement" + }, + { + "id": "0x55c2dfb2bd40-Statement", + "statement": "0x55c2dfb37730-TypeDeclarationStmt", + "source": "integer, target :: array_target(5) = [10, 20, 30, 40, 50]" + }, + { + "id": "0x55c2dfb37730-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x55c2dfb37760-DeclarationTypeSpec", + "AttrSpec": [ + "0x55c2dfb19c80-AttrSpec" + ], + "EntityDecl": [ + "0x55c2dfb2bb70-EntityDecl" + ] + }, + { + "id": "0x55c2dfb37760-DeclarationTypeSpec", + "variantKey": "IntrinsicTypeSpec", + "IntrinsicTypeSpec": "0x55c2dfb37760-IntrinsicTypeSpec" + }, + { + "id": "0x55c2dfb37760-IntrinsicTypeSpec", + "variantKey": "IntegerTypeSpec", + "IntegerTypeSpec": "0x55c2dfb37760-IntegerTypeSpec" + }, + { + "id": "0x55c2dfb37760-IntegerTypeSpec" + }, + { + "id": "0x55c2dfb19c80-AttrSpec", + "variantKey": "Target", + "Target": "0x55c2dfb19c80-Target" + }, + { + "id": "0x55c2dfb19c80-Target", + "keyword": "Target" + }, + { + "id": "0x55c2dfb2bb70-EntityDecl", + "Name": "0x55c2dfb2bc28-Name", + "ArraySpec": "0x55c2dfb2bbf0-ArraySpec", + "Initialization": "0x55c2dfb2bb70-Initialization" + }, + { + "id": "0x55c2dfb2bc28-Name", + "source": "array_target" + }, + { + "id": "0x55c2dfb2bbf0-ArraySpec", + "variantKey": "ExplicitShapeSpec", + "ExplicitShapeSpec": [ + "0x55c2dfb3bf30-ExplicitShapeSpec" + ] + }, + { + "id": "0x55c2dfb3bf30-ExplicitShapeSpec", + "upper_bound": "0x55c2dfb3bf30-SpecificationExpr" + }, + { + "id": "0x55c2dfb3bf30-SpecificationExpr", + "Expr": "0x55c2dfb44110-Expr" + }, + { + "id": "0x55c2dfb44110-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55c2dfb44130-LiteralConstant" + }, + { + "id": "0x55c2dfb44130-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55c2dfb44130-IntLiteralConstant" + }, + { + "id": "0x55c2dfb44130-IntLiteralConstant", + "CharBlock": "5" + }, + { + "id": "0x55c2dfb2bb70-Initialization", + "variantKey": "Expr", + "Expr": "0x55c2dfb2ba80-Expr" + }, + { + "id": "0x55c2dfb2ba80-Expr", + "variantKey": "ArrayConstructor", + "ArrayConstructor": "0x55c2dfb2baa0-ArrayConstructor" + }, + { + "id": "0x55c2dfb2baa0-ArrayConstructor", + "AcSpec": "0x55c2dfb2baa0-AcSpec" + }, + { + "id": "0x55c2dfb2baa0-AcSpec", + "values": [ + "0x55c2dfb3bfe0-AcValue", + "0x55c2dfb3ac10-AcValue", + "0x55c2dfb3b2f0-AcValue", + "0x55c2dfb3b3b0-AcValue", + "0x55c2dfb3b7b0-AcValue" + ] + }, + { + "id": "0x55c2dfb3bfe0-AcValue", + "variantKey": "Expr", + "Expr": "0x55c2dfb447a0-Expr" + }, + { + "id": "0x55c2dfb447a0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55c2dfb447c0-LiteralConstant" + }, + { + "id": "0x55c2dfb447c0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55c2dfb447c0-IntLiteralConstant" + }, + { + "id": "0x55c2dfb447c0-IntLiteralConstant", + "CharBlock": "10" + }, + { + "id": "0x55c2dfb3ac10-AcValue", + "variantKey": "Expr", + "Expr": "0x55c2dfb44aa0-Expr" + }, + { + "id": "0x55c2dfb44aa0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55c2dfb44ac0-LiteralConstant" + }, + { + "id": "0x55c2dfb44ac0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55c2dfb44ac0-IntLiteralConstant" + }, + { + "id": "0x55c2dfb44ac0-IntLiteralConstant", + "CharBlock": "20" + }, + { + "id": "0x55c2dfb3b2f0-AcValue", + "variantKey": "Expr", + "Expr": "0x55c2dfb44da0-Expr" + }, + { + "id": "0x55c2dfb44da0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55c2dfb44dc0-LiteralConstant" + }, + { + "id": "0x55c2dfb44dc0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55c2dfb44dc0-IntLiteralConstant" + }, + { + "id": "0x55c2dfb44dc0-IntLiteralConstant", + "CharBlock": "30" + }, + { + "id": "0x55c2dfb3b3b0-AcValue", + "variantKey": "Expr", + "Expr": "0x55c2dfb37580-Expr" + }, + { + "id": "0x55c2dfb37580-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55c2dfb375a0-LiteralConstant" + }, + { + "id": "0x55c2dfb375a0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55c2dfb375a0-IntLiteralConstant" + }, + { + "id": "0x55c2dfb375a0-IntLiteralConstant", + "CharBlock": "40" + }, + { + "id": "0x55c2dfb3b7b0-AcValue", + "variantKey": "Expr", + "Expr": "0x55c2dfb2b8c0-Expr" + }, + { + "id": "0x55c2dfb2b8c0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55c2dfb2b8e0-LiteralConstant" + }, + { + "id": "0x55c2dfb2b8e0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55c2dfb2b8e0-IntLiteralConstant" + }, + { + "id": "0x55c2dfb2b8e0-IntLiteralConstant", + "CharBlock": "50" + }, + { + "id": "0x55c2dfb44890-DeclarationConstruct", + "variantKey": "SpecificationConstruct", + "SpecificationConstruct": "0x55c2dfb44890-SpecificationConstruct" + }, + { + "id": "0x55c2dfb44890-SpecificationConstruct", + "variantKey": "Statement", + "Statement": "0x55c2dfb44890-Statement" + }, + { + "id": "0x55c2dfb44890-Statement", + "statement": "0x55c2dfb43d30-TypeDeclarationStmt", + "source": "integer, pointer :: ptr_scalar => null()" + }, + { + "id": "0x55c2dfb43d30-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x55c2dfb43d60-DeclarationTypeSpec", + "AttrSpec": [ + "0x55c2dfb371a0-AttrSpec" + ], + "EntityDecl": [ + "0x55c2dfb2bf80-EntityDecl" + ] + }, + { + "id": "0x55c2dfb43d60-DeclarationTypeSpec", + "variantKey": "IntrinsicTypeSpec", + "IntrinsicTypeSpec": "0x55c2dfb43d60-IntrinsicTypeSpec" + }, + { + "id": "0x55c2dfb43d60-IntrinsicTypeSpec", + "variantKey": "IntegerTypeSpec", + "IntegerTypeSpec": "0x55c2dfb43d60-IntegerTypeSpec" + }, + { + "id": "0x55c2dfb43d60-IntegerTypeSpec" + }, + { + "id": "0x55c2dfb371a0-AttrSpec", + "variantKey": "Pointer", + "Pointer": "0x55c2dfb371a0-Pointer" + }, + { + "id": "0x55c2dfb371a0-Pointer", + "keyword": "Pointer" + }, + { + "id": "0x55c2dfb2bf80-EntityDecl", + "Name": "0x55c2dfb2c038-Name", + "Initialization": "0x55c2dfb2bf80-Initialization" + }, + { + "id": "0x55c2dfb2c038-Name", + "source": "ptr_scalar" + }, + { + "id": "0x55c2dfb2bf80-Initialization", + "variantKey": "NullInit", + "NullInit": "0x55c2dfb2bf80-NullInit" + }, + { + "id": "0x55c2dfb2bf80-NullInit", + "Expr": "0x55c2dfb2be90-Expr" + }, + { + "id": "0x55c2dfb2be90-Expr", + "variantKey": "FunctionReference", + "FunctionReference": "0x55c2dfb2ba10-FunctionReference" + }, + { + "id": "0x55c2dfb2ba10-FunctionReference", + "Call": "0x55c2dfb2ba10-Call" + }, + { + "id": "0x55c2dfb2ba10-Call", + "ProcedureDesignator": "0x55c2dfb2ba28-ProcedureDesignator" + }, + { + "id": "0x55c2dfb2ba28-ProcedureDesignator", + "variantKey": "Name", + "Name": "0x55c2dfb2ba28-Name" + }, + { + "id": "0x55c2dfb2ba28-Name", + "source": "null" + }, + { + "id": "0x55c2dfb44b90-DeclarationConstruct", + "variantKey": "SpecificationConstruct", + "SpecificationConstruct": "0x55c2dfb44b90-SpecificationConstruct" + }, + { + "id": "0x55c2dfb44b90-SpecificationConstruct", + "variantKey": "Statement", + "Statement": "0x55c2dfb44b90-Statement" + }, + { + "id": "0x55c2dfb44b90-Statement", + "statement": "0x55c2dfb44420-TypeDeclarationStmt", + "source": "integer, pointer :: ptr_copy => null()" + }, + { + "id": "0x55c2dfb44420-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x55c2dfb44450-DeclarationTypeSpec", + "AttrSpec": [ + "0x55c2dfb38170-AttrSpec" + ], + "EntityDecl": [ + "0x55c2dfb2c1d0-EntityDecl" + ] + }, + { + "id": "0x55c2dfb44450-DeclarationTypeSpec", + "variantKey": "IntrinsicTypeSpec", + "IntrinsicTypeSpec": "0x55c2dfb44450-IntrinsicTypeSpec" + }, + { + "id": "0x55c2dfb44450-IntrinsicTypeSpec", + "variantKey": "IntegerTypeSpec", + "IntegerTypeSpec": "0x55c2dfb44450-IntegerTypeSpec" + }, + { + "id": "0x55c2dfb44450-IntegerTypeSpec" + }, + { + "id": "0x55c2dfb38170-AttrSpec", + "variantKey": "Pointer", + "Pointer": "0x55c2dfb38170-Pointer" + }, + { + "id": "0x55c2dfb38170-Pointer", + "keyword": "Pointer" + }, + { + "id": "0x55c2dfb2c1d0-EntityDecl", + "Name": "0x55c2dfb2c288-Name", + "Initialization": "0x55c2dfb2c1d0-Initialization" + }, + { + "id": "0x55c2dfb2c288-Name", + "source": "ptr_copy" + }, + { + "id": "0x55c2dfb2c1d0-Initialization", + "variantKey": "NullInit", + "NullInit": "0x55c2dfb2c1d0-NullInit" + }, + { + "id": "0x55c2dfb2c1d0-NullInit", + "Expr": "0x55c2dfb2c0e0-Expr" + }, + { + "id": "0x55c2dfb2c0e0-Expr", + "variantKey": "FunctionReference", + "FunctionReference": "0x55c2dfb38370-FunctionReference" + }, + { + "id": "0x55c2dfb38370-FunctionReference", + "Call": "0x55c2dfb38370-Call" + }, + { + "id": "0x55c2dfb38370-Call", + "ProcedureDesignator": "0x55c2dfb38388-ProcedureDesignator" + }, + { + "id": "0x55c2dfb38388-ProcedureDesignator", + "variantKey": "Name", + "Name": "0x55c2dfb38388-Name" + }, + { + "id": "0x55c2dfb38388-Name", + "source": "null" + }, + { + "id": "0x55c2dfb2c510-DeclarationConstruct", + "variantKey": "SpecificationConstruct", + "SpecificationConstruct": "0x55c2dfb2c510-SpecificationConstruct" + }, + { + "id": "0x55c2dfb2c510-SpecificationConstruct", + "variantKey": "Statement", + "Statement": "0x55c2dfb2c510-Statement" + }, + { + "id": "0x55c2dfb2c510-Statement", + "statement": "0x55c2dfb2bd90-TypeDeclarationStmt", + "source": "integer, pointer :: ptr_array(:) => null()" + }, + { + "id": "0x55c2dfb2bd90-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x55c2dfb2bdc0-DeclarationTypeSpec", + "AttrSpec": [ + "0x55c2dfb37f70-AttrSpec" + ], + "EntityDecl": [ + "0x55c2dfb2c420-EntityDecl" + ] + }, + { + "id": "0x55c2dfb2bdc0-DeclarationTypeSpec", + "variantKey": "IntrinsicTypeSpec", + "IntrinsicTypeSpec": "0x55c2dfb2bdc0-IntrinsicTypeSpec" + }, + { + "id": "0x55c2dfb2bdc0-IntrinsicTypeSpec", + "variantKey": "IntegerTypeSpec", + "IntegerTypeSpec": "0x55c2dfb2bdc0-IntegerTypeSpec" + }, + { + "id": "0x55c2dfb2bdc0-IntegerTypeSpec" + }, + { + "id": "0x55c2dfb37f70-AttrSpec", + "variantKey": "Pointer", + "Pointer": "0x55c2dfb37f70-Pointer" + }, + { + "id": "0x55c2dfb37f70-Pointer", + "keyword": "Pointer" + }, + { + "id": "0x55c2dfb2c420-EntityDecl", + "Name": "0x55c2dfb2c4d8-Name", + "ArraySpec": "0x55c2dfb2c4a0-ArraySpec", + "Initialization": "0x55c2dfb2c420-Initialization" + }, + { + "id": "0x55c2dfb2c4d8-Name", + "source": "ptr_array" + }, + { + "id": "0x55c2dfb2c4a0-ArraySpec", + "variantKey": "DeferredShapeSpecList", + "DeferredShapeSpecList": "0x55c2dfb2c4a0-DeferredShapeSpecList" + }, + { + "id": "0x55c2dfb2c4a0-DeferredShapeSpecList", + "int": "1" + }, + { + "id": "0x55c2dfb2c420-Initialization", + "variantKey": "NullInit", + "NullInit": "0x55c2dfb2c420-NullInit" + }, + { + "id": "0x55c2dfb2c420-NullInit", + "Expr": "0x55c2dfb2c330-Expr" + }, + { + "id": "0x55c2dfb2c330-Expr", + "variantKey": "FunctionReference", + "FunctionReference": "0x55c2dfb44650-FunctionReference" + }, + { + "id": "0x55c2dfb44650-FunctionReference", + "Call": "0x55c2dfb44650-Call" + }, + { + "id": "0x55c2dfb44650-Call", + "ProcedureDesignator": "0x55c2dfb44668-ProcedureDesignator" + }, + { + "id": "0x55c2dfb44668-ProcedureDesignator", + "variantKey": "Name", + "Name": "0x55c2dfb44668-Name" + }, + { + "id": "0x55c2dfb44668-Name", + "source": "null" + }, + { + "id": "0x55c2dfb2c7c0-DeclarationConstruct", + "variantKey": "SpecificationConstruct", + "SpecificationConstruct": "0x55c2dfb2c7c0-SpecificationConstruct" + }, + { + "id": "0x55c2dfb2c7c0-SpecificationConstruct", + "variantKey": "Statement", + "Statement": "0x55c2dfb2c7c0-Statement" + }, + { + "id": "0x55c2dfb2c7c0-Statement", + "statement": "0x55c2dfb2be10-TypeDeclarationStmt", + "source": "integer, pointer :: ptr_slice(:) => null()" + }, + { + "id": "0x55c2dfb2be10-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x55c2dfb2be40-DeclarationTypeSpec", + "AttrSpec": [ + "0x55c2dfb37fc0-AttrSpec" + ], + "EntityDecl": [ + "0x55c2dfb2c6d0-EntityDecl" + ] + }, + { + "id": "0x55c2dfb2be40-DeclarationTypeSpec", + "variantKey": "IntrinsicTypeSpec", + "IntrinsicTypeSpec": "0x55c2dfb2be40-IntrinsicTypeSpec" + }, + { + "id": "0x55c2dfb2be40-IntrinsicTypeSpec", + "variantKey": "IntegerTypeSpec", + "IntegerTypeSpec": "0x55c2dfb2be40-IntegerTypeSpec" + }, + { + "id": "0x55c2dfb2be40-IntegerTypeSpec" + }, + { + "id": "0x55c2dfb37fc0-AttrSpec", + "variantKey": "Pointer", + "Pointer": "0x55c2dfb37fc0-Pointer" + }, + { + "id": "0x55c2dfb37fc0-Pointer", + "keyword": "Pointer" + }, + { + "id": "0x55c2dfb2c6d0-EntityDecl", + "Name": "0x55c2dfb2c788-Name", + "ArraySpec": "0x55c2dfb2c750-ArraySpec", + "Initialization": "0x55c2dfb2c6d0-Initialization" + }, + { + "id": "0x55c2dfb2c788-Name", + "source": "ptr_slice" + }, + { + "id": "0x55c2dfb2c750-ArraySpec", + "variantKey": "DeferredShapeSpecList", + "DeferredShapeSpecList": "0x55c2dfb2c750-DeferredShapeSpecList" + }, + { + "id": "0x55c2dfb2c750-DeferredShapeSpecList", + "int": "1" + }, + { + "id": "0x55c2dfb2c6d0-Initialization", + "variantKey": "NullInit", + "NullInit": "0x55c2dfb2c6d0-NullInit" + }, + { + "id": "0x55c2dfb2c6d0-NullInit", + "Expr": "0x55c2dfb2c5e0-Expr" + }, + { + "id": "0x55c2dfb2c5e0-Expr", + "variantKey": "FunctionReference", + "FunctionReference": "0x55c2dfb44a30-FunctionReference" + }, + { + "id": "0x55c2dfb44a30-FunctionReference", + "Call": "0x55c2dfb44a30-Call" + }, + { + "id": "0x55c2dfb44a30-Call", + "ProcedureDesignator": "0x55c2dfb44a48-ProcedureDesignator" + }, + { + "id": "0x55c2dfb44a48-ProcedureDesignator", + "variantKey": "Name", + "Name": "0x55c2dfb44a48-Name" + }, + { + "id": "0x55c2dfb44a48-Name", + "source": "null" + }, + { + "id": "0x55c2dfb2ca70-DeclarationConstruct", + "variantKey": "SpecificationConstruct", + "SpecificationConstruct": "0x55c2dfb2ca70-SpecificationConstruct" + }, + { + "id": "0x55c2dfb2ca70-SpecificationConstruct", + "variantKey": "Statement", + "Statement": "0x55c2dfb2ca70-Statement" + }, + { + "id": "0x55c2dfb2ca70-Statement", + "statement": "0x55c2dfb2c060-TypeDeclarationStmt", + "source": "integer, pointer :: ptr_lbound(:) => null()" + }, + { + "id": "0x55c2dfb2c060-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x55c2dfb2c090-DeclarationTypeSpec", + "AttrSpec": [ + "0x55c2dfb353f0-AttrSpec" + ], + "EntityDecl": [ + "0x55c2dfb2c980-EntityDecl" + ] + }, + { + "id": "0x55c2dfb2c090-DeclarationTypeSpec", + "variantKey": "IntrinsicTypeSpec", + "IntrinsicTypeSpec": "0x55c2dfb2c090-IntrinsicTypeSpec" + }, + { + "id": "0x55c2dfb2c090-IntrinsicTypeSpec", + "variantKey": "IntegerTypeSpec", + "IntegerTypeSpec": "0x55c2dfb2c090-IntegerTypeSpec" + }, + { + "id": "0x55c2dfb2c090-IntegerTypeSpec" + }, + { + "id": "0x55c2dfb353f0-AttrSpec", + "variantKey": "Pointer", + "Pointer": "0x55c2dfb353f0-Pointer" + }, + { + "id": "0x55c2dfb353f0-Pointer", + "keyword": "Pointer" + }, + { + "id": "0x55c2dfb2c980-EntityDecl", + "Name": "0x55c2dfb2ca38-Name", + "ArraySpec": "0x55c2dfb2ca00-ArraySpec", + "Initialization": "0x55c2dfb2c980-Initialization" + }, + { + "id": "0x55c2dfb2ca38-Name", + "source": "ptr_lbound" + }, + { + "id": "0x55c2dfb2ca00-ArraySpec", + "variantKey": "DeferredShapeSpecList", + "DeferredShapeSpecList": "0x55c2dfb2ca00-DeferredShapeSpecList" + }, + { + "id": "0x55c2dfb2ca00-DeferredShapeSpecList", + "int": "1" + }, + { + "id": "0x55c2dfb2c980-Initialization", + "variantKey": "NullInit", + "NullInit": "0x55c2dfb2c980-NullInit" + }, + { + "id": "0x55c2dfb2c980-NullInit", + "Expr": "0x55c2dfb2c890-Expr" + }, + { + "id": "0x55c2dfb2c890-Expr", + "variantKey": "FunctionReference", + "FunctionReference": "0x55c2dfb44950-FunctionReference" + }, + { + "id": "0x55c2dfb44950-FunctionReference", + "Call": "0x55c2dfb44950-Call" + }, + { + "id": "0x55c2dfb44950-Call", + "ProcedureDesignator": "0x55c2dfb44968-ProcedureDesignator" + }, + { + "id": "0x55c2dfb44968-ProcedureDesignator", + "variantKey": "Name", + "Name": "0x55c2dfb44968-Name" + }, + { + "id": "0x55c2dfb44968-Name", + "source": "null" + }, + { + "id": "0x55c2dfb2cd20-DeclarationConstruct", + "variantKey": "SpecificationConstruct", + "SpecificationConstruct": "0x55c2dfb2cd20-SpecificationConstruct" + }, + { + "id": "0x55c2dfb2cd20-SpecificationConstruct", + "variantKey": "Statement", + "Statement": "0x55c2dfb2cd20-Statement" + }, + { + "id": "0x55c2dfb2cd20-Statement", + "statement": "0x55c2dfb2c2b0-TypeDeclarationStmt", + "source": "integer, pointer :: ptr_bounds(:) => null()" + }, + { + "id": "0x55c2dfb2c2b0-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x55c2dfb2c2e0-DeclarationTypeSpec", + "AttrSpec": [ + "0x55c2dfb3df50-AttrSpec" + ], + "EntityDecl": [ + "0x55c2dfb2cc30-EntityDecl" + ] + }, + { + "id": "0x55c2dfb2c2e0-DeclarationTypeSpec", + "variantKey": "IntrinsicTypeSpec", + "IntrinsicTypeSpec": "0x55c2dfb2c2e0-IntrinsicTypeSpec" + }, + { + "id": "0x55c2dfb2c2e0-IntrinsicTypeSpec", + "variantKey": "IntegerTypeSpec", + "IntegerTypeSpec": "0x55c2dfb2c2e0-IntegerTypeSpec" + }, + { + "id": "0x55c2dfb2c2e0-IntegerTypeSpec" + }, + { + "id": "0x55c2dfb3df50-AttrSpec", + "variantKey": "Pointer", + "Pointer": "0x55c2dfb3df50-Pointer" + }, + { + "id": "0x55c2dfb3df50-Pointer", + "keyword": "Pointer" + }, + { + "id": "0x55c2dfb2cc30-EntityDecl", + "Name": "0x55c2dfb2cce8-Name", + "ArraySpec": "0x55c2dfb2ccb0-ArraySpec", + "Initialization": "0x55c2dfb2cc30-Initialization" + }, + { + "id": "0x55c2dfb2cce8-Name", + "source": "ptr_bounds" + }, + { + "id": "0x55c2dfb2ccb0-ArraySpec", + "variantKey": "DeferredShapeSpecList", + "DeferredShapeSpecList": "0x55c2dfb2ccb0-DeferredShapeSpecList" + }, + { + "id": "0x55c2dfb2ccb0-DeferredShapeSpecList", + "int": "1" + }, + { + "id": "0x55c2dfb2cc30-Initialization", + "variantKey": "NullInit", + "NullInit": "0x55c2dfb2cc30-NullInit" + }, + { + "id": "0x55c2dfb2cc30-NullInit", + "Expr": "0x55c2dfb2cb40-Expr" + }, + { + "id": "0x55c2dfb2cb40-Expr", + "variantKey": "FunctionReference", + "FunctionReference": "0x55c2dfb44be0-FunctionReference" + }, + { + "id": "0x55c2dfb44be0-FunctionReference", + "Call": "0x55c2dfb44be0-Call" + }, + { + "id": "0x55c2dfb44be0-Call", + "ProcedureDesignator": "0x55c2dfb44bf8-ProcedureDesignator" + }, + { + "id": "0x55c2dfb44bf8-ProcedureDesignator", + "variantKey": "Name", + "Name": "0x55c2dfb44bf8-Name" + }, + { + "id": "0x55c2dfb44bf8-Name", + "source": "null" + }, + { + "id": "0x55c2dfb2d020-DeclarationConstruct", + "variantKey": "SpecificationConstruct", + "SpecificationConstruct": "0x55c2dfb2d020-SpecificationConstruct" + }, + { + "id": "0x55c2dfb2d020-SpecificationConstruct", + "variantKey": "Statement", + "Statement": "0x55c2dfb2d020-Statement" + }, + { + "id": "0x55c2dfb2d020-Statement", + "statement": "0x55c2dfb2c560-TypeDeclarationStmt", + "source": "integer, pointer :: ptr_2d(:, :) => null()" + }, + { + "id": "0x55c2dfb2c560-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x55c2dfb2c590-DeclarationTypeSpec", + "AttrSpec": [ + "0x55c2dfb2cd80-AttrSpec" + ], + "EntityDecl": [ + "0x55c2dfb2cf30-EntityDecl" + ] + }, + { + "id": "0x55c2dfb2c590-DeclarationTypeSpec", + "variantKey": "IntrinsicTypeSpec", + "IntrinsicTypeSpec": "0x55c2dfb2c590-IntrinsicTypeSpec" + }, + { + "id": "0x55c2dfb2c590-IntrinsicTypeSpec", + "variantKey": "IntegerTypeSpec", + "IntegerTypeSpec": "0x55c2dfb2c590-IntegerTypeSpec" + }, + { + "id": "0x55c2dfb2c590-IntegerTypeSpec" + }, + { + "id": "0x55c2dfb2cd80-AttrSpec", + "variantKey": "Pointer", + "Pointer": "0x55c2dfb2cd80-Pointer" + }, + { + "id": "0x55c2dfb2cd80-Pointer", + "keyword": "Pointer" + }, + { + "id": "0x55c2dfb2cf30-EntityDecl", + "Name": "0x55c2dfb2cfe8-Name", + "ArraySpec": "0x55c2dfb2cfb0-ArraySpec", + "Initialization": "0x55c2dfb2cf30-Initialization" + }, + { + "id": "0x55c2dfb2cfe8-Name", + "source": "ptr_2d" + }, + { + "id": "0x55c2dfb2cfb0-ArraySpec", + "variantKey": "DeferredShapeSpecList", + "DeferredShapeSpecList": "0x55c2dfb2cfb0-DeferredShapeSpecList" + }, + { + "id": "0x55c2dfb2cfb0-DeferredShapeSpecList", + "int": "2" + }, + { + "id": "0x55c2dfb2cf30-Initialization", + "variantKey": "NullInit", + "NullInit": "0x55c2dfb2cf30-NullInit" + }, + { + "id": "0x55c2dfb2cf30-NullInit", + "Expr": "0x55c2dfb2ce40-Expr" + }, + { + "id": "0x55c2dfb2ce40-Expr", + "variantKey": "FunctionReference", + "FunctionReference": "0x55c2dfb44cc0-FunctionReference" + }, + { + "id": "0x55c2dfb44cc0-FunctionReference", + "Call": "0x55c2dfb44cc0-Call" + }, + { + "id": "0x55c2dfb44cc0-Call", + "ProcedureDesignator": "0x55c2dfb44cd8-ProcedureDesignator" + }, + { + "id": "0x55c2dfb44cd8-ProcedureDesignator", + "variantKey": "Name", + "Name": "0x55c2dfb44cd8-Name" + }, + { + "id": "0x55c2dfb44cd8-Name", + "source": "null" + }, + { + "id": "0x55c2dfb37670-DeclarationConstruct", + "variantKey": "SpecificationConstruct", + "SpecificationConstruct": "0x55c2dfb37670-SpecificationConstruct" + }, + { + "id": "0x55c2dfb37670-SpecificationConstruct", + "variantKey": "InterfaceBlock", + "InterfaceBlock": "0x55c2dfb2d520-InterfaceBlock" + }, + { + "id": "0x55c2dfb2d520-InterfaceBlock", + "Statement": "0x55c2dfb2d598-Statement", + "InterfaceSpecification": [ + "0x55c2dfad6790-InterfaceSpecification" + ], + "Statement": "0x55c2dfb2d520-Statement" + }, + { + "id": "0x55c2dfb2d598-Statement", + "statement": "0x55c2dfb2d5a8-InterfaceStmt", + "source": "abstract interface" + }, + { + "id": "0x55c2dfb2d5a8-InterfaceStmt", + "variantKey": "Abstract", + "Abstract": "0x55c2dfb2d5a8-Abstract" + }, + { + "id": "0x55c2dfb2d5a8-Abstract" + }, + { + "id": "0x55c2dfad6790-InterfaceSpecification", + "variantKey": "InterfaceBody", + "InterfaceBody": "0x55c2dfad6790-InterfaceBody" + }, + { + "id": "0x55c2dfad6790-InterfaceBody", + "variantKey": "Function", + "Function": "0x55c2dfad6790-Function" + }, + { + "id": "0x55c2dfad6790-Function", + "Statement": "0x55c2dfad67d8-Statement", + "SpecificationPart": "0x55c2dfa9db00-SpecificationPart", + "Statement": "0x55c2dfad6790-Statement" + }, + { + "id": "0x55c2dfad67d8-Statement", + "statement": "0x55c2dfad67e8-FunctionStmt", + "source": "function func_interface(x) result(res)" + }, + { + "id": "0x55c2dfad67e8-FunctionStmt", + "prefix": [], + "functionName": "0x55c2dfad6848-Name", + "paramNames": [ + "0x55c2dfb3bf60-Name" + ], + "suffix": "0x55c2dfad67e8-Suffix" + }, + { + "id": "0x55c2dfad6848-Name", + "source": "func_interface" + }, + { + "id": "0x55c2dfb3bf60-Name", + "source": "x" + }, + { + "id": "0x55c2dfad67e8-Suffix", + "resultName": "0x55c2dfad6808-Name" + }, + { + "id": "0x55c2dfad6808-Name", + "source": "res" + }, + { + "id": "0x55c2dfa9db00-SpecificationPart", + "ImplicitPart": "0x55c2dfa9db18-ImplicitPart", + "DeclarationConstruct": [ + "0x55c2dfaff4e0-DeclarationConstruct", + "0x55c2dfb0dda0-DeclarationConstruct" + ] + }, + { + "id": "0x55c2dfa9db18-ImplicitPart" + }, + { + "id": "0x55c2dfaff4e0-DeclarationConstruct", + "variantKey": "SpecificationConstruct", + "SpecificationConstruct": "0x55c2dfaff4e0-SpecificationConstruct" + }, + { + "id": "0x55c2dfaff4e0-SpecificationConstruct", + "variantKey": "Statement", + "Statement": "0x55c2dfaff4e0-Statement" + }, + { + "id": "0x55c2dfaff4e0-Statement", + "statement": "0x55c2dfb2d0f0-TypeDeclarationStmt", + "source": "integer, intent(in) :: x" + }, + { + "id": "0x55c2dfb2d0f0-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x55c2dfb2d120-DeclarationTypeSpec", + "AttrSpec": [ + "0x55c2dfb2d200-AttrSpec" + ], + "EntityDecl": [ + "0x55c2dfb2d250-EntityDecl" + ] + }, + { + "id": "0x55c2dfb2d120-DeclarationTypeSpec", + "variantKey": "IntrinsicTypeSpec", + "IntrinsicTypeSpec": "0x55c2dfb2d120-IntrinsicTypeSpec" + }, + { + "id": "0x55c2dfb2d120-IntrinsicTypeSpec", + "variantKey": "IntegerTypeSpec", + "IntegerTypeSpec": "0x55c2dfb2d120-IntegerTypeSpec" + }, + { + "id": "0x55c2dfb2d120-IntegerTypeSpec" + }, + { + "id": "0x55c2dfb2d200-AttrSpec", + "variantKey": "IntentSpec", + "IntentSpec": "0x55c2dfb2d200-IntentSpec" + }, + { + "id": "0x55c2dfb2d200-IntentSpec", + "Intent": "0x55c2dfb2d200-Intent", + "intent": "In" + }, + { + "id": "0x55c2dfb2d200-Intent", + "disambiguation": "Fortran::parser::IntentSpec::Intent", + "value": "In" + }, + { + "id": "0x55c2dfb2d250-EntityDecl", + "Name": "0x55c2dfb2d308-Name" + }, + { + "id": "0x55c2dfb2d308-Name", + "source": "x" + }, + { + "id": "0x55c2dfb0dda0-DeclarationConstruct", + "variantKey": "SpecificationConstruct", + "SpecificationConstruct": "0x55c2dfb0dda0-SpecificationConstruct" + }, + { + "id": "0x55c2dfb0dda0-SpecificationConstruct", + "variantKey": "Statement", + "Statement": "0x55c2dfb0dda0-Statement" + }, + { + "id": "0x55c2dfb0dda0-Statement", + "statement": "0x55c2dfb2d170-TypeDeclarationStmt", + "source": "integer :: res" + }, + { + "id": "0x55c2dfb2d170-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x55c2dfb2d1a0-DeclarationTypeSpec", + "EntityDecl": [ + "0x55c2dfb2d3c0-EntityDecl" + ] + }, + { + "id": "0x55c2dfb2d1a0-DeclarationTypeSpec", + "variantKey": "IntrinsicTypeSpec", + "IntrinsicTypeSpec": "0x55c2dfb2d1a0-IntrinsicTypeSpec" + }, + { + "id": "0x55c2dfb2d1a0-IntrinsicTypeSpec", + "variantKey": "IntegerTypeSpec", + "IntegerTypeSpec": "0x55c2dfb2d1a0-IntegerTypeSpec" + }, + { + "id": "0x55c2dfb2d1a0-IntegerTypeSpec" + }, + { + "id": "0x55c2dfb2d3c0-EntityDecl", + "Name": "0x55c2dfb2d478-Name" + }, + { + "id": "0x55c2dfb2d478-Name", + "source": "res" + }, + { + "id": "0x55c2dfad6790-Statement", + "statement": "0x55c2dfad67a0-EndFunctionStmt", + "source": "end function func_interface" + }, + { + "id": "0x55c2dfad67a0-EndFunctionStmt", + "Name": "0x55c2dfad67a0-Name" + }, + { + "id": "0x55c2dfad67a0-Name", + "source": "func_interface" + }, + { + "id": "0x55c2dfb2d520-Statement", + "statement": "0x55c2dfb2d530-EndInterfaceStmt", + "source": "end interface" + }, + { + "id": "0x55c2dfb2d530-EndInterfaceStmt" + }, + { + "id": "0x55c2dfb2d880-DeclarationConstruct", + "variantKey": "SpecificationConstruct", + "SpecificationConstruct": "0x55c2dfb2d880-SpecificationConstruct" + }, + { + "id": "0x55c2dfb2d880-SpecificationConstruct", + "variantKey": "Statement", + "Statement": "0x55c2dfb2d880-Statement" + }, + { + "id": "0x55c2dfb2d880-Statement", + "statement": "0x55c2dfb43e40-ProcedureDeclarationStmt", + "source": "procedure(func_interface), pointer :: ptr_proc => null()" + }, + { + "id": "0x55c2dfb43e40-ProcedureDeclarationStmt", + "ProcInterface": "0x55c2dfb43e70-ProcInterface", + "ProcAttrSpec": [ + "0x55c2dfb3c040-ProcAttrSpec" + ], + "ProcDecl": [ + "0x55c2dfb2d7c0-ProcDecl" + ] + }, + { + "id": "0x55c2dfb43e70-ProcInterface", + "variantKey": "Name", + "Name": "0x55c2dfb43e70-Name" + }, + { + "id": "0x55c2dfb43e70-Name", + "source": "func_interface" + }, + { + "id": "0x55c2dfb3c040-ProcAttrSpec", + "variantKey": "Pointer", + "Pointer": "0x55c2dfb3c040-Pointer" + }, + { + "id": "0x55c2dfb3c040-Pointer", + "keyword": "Pointer" + }, + { + "id": "0x55c2dfb2d7c0-ProcDecl", + "Name": "0x55c2dfb2d7e8-Name", + "ProcPointerInit": "0x55c2dfb2d7c0-ProcPointerInit" + }, + { + "id": "0x55c2dfb2d7e8-Name", + "source": "ptr_proc" + }, + { + "id": "0x55c2dfb2d7c0-ProcPointerInit", + "variantKey": "NullInit", + "NullInit": "0x55c2dfb2d7c0-NullInit" + }, + { + "id": "0x55c2dfb2d7c0-NullInit", + "Expr": "0x55c2dfb2d6d0-Expr" + }, + { + "id": "0x55c2dfb2d6d0-Expr", + "variantKey": "FunctionReference", + "FunctionReference": "0x55c2dfb443b0-FunctionReference" + }, + { + "id": "0x55c2dfb443b0-FunctionReference", + "Call": "0x55c2dfb443b0-Call" + }, + { + "id": "0x55c2dfb443b0-Call", + "ProcedureDesignator": "0x55c2dfb443c8-ProcedureDesignator" + }, + { + "id": "0x55c2dfb443c8-ProcedureDesignator", + "variantKey": "Name", + "Name": "0x55c2dfb443c8-Name" + }, + { + "id": "0x55c2dfb443c8-Name", + "source": "null" + }, + { + "id": "0x55c2dfb3e1e8-ExecutionPart", + "ExecutionPartConstruct": [ + "0x55c2dfb43a50-ExecutionPartConstruct", + "0x55c2dfb2e8e0-ExecutionPartConstruct", + "0x55c2dfb2ea70-ExecutionPartConstruct", + "0x55c2dfb2ee70-ExecutionPartConstruct", + "0x55c2dfb2f000-ExecutionPartConstruct", + "0x55c2dfb2f400-ExecutionPartConstruct", + "0x55c2dfb2f860-ExecutionPartConstruct", + "0x55c2dfb2fba0-ExecutionPartConstruct", + "0x55c2dfb2ff20-ExecutionPartConstruct", + "0x55c2dfb319d0-ExecutionPartConstruct", + "0x55c2dfb444b0-ExecutionPartConstruct", + "0x55c2dfb32a00-ExecutionPartConstruct", + "0x55c2dfb31270-ExecutionPartConstruct", + "0x55c2dfb301a0-ExecutionPartConstruct", + "0x55c2dfb32390-ExecutionPartConstruct", + "0x55c2dfb32330-ExecutionPartConstruct", + "0x55c2dfb324d0-ExecutionPartConstruct", + "0x55c2dfb34090-ExecutionPartConstruct", + "0x55c2dfb34220-ExecutionPartConstruct", + "0x55c2dfb343b0-ExecutionPartConstruct", + "0x55c2dfb34540-ExecutionPartConstruct", + "0x55c2dfb346d0-ExecutionPartConstruct", + "0x55c2dfb34860-ExecutionPartConstruct", + "0x55c2dfb349f0-ExecutionPartConstruct", + "0x55c2dfb457a0-ExecutionPartConstruct" + ] + }, + { + "id": "0x55c2dfb3e1e8-ExecutionPartConstruct" + }, + { + "id": "0x55c2dfb43a50-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55c2dfb43a50-ExecutableConstruct" + }, + { + "id": "0x55c2dfb43a50-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55c2dfb43a50-Statement" + }, + { + "id": "0x55c2dfb43a50-Statement", + "statement": "0x55c2dfb43a60-ActionStmt", + "source": "ptr_scalar => scalar_target" + }, + { + "id": "0x55c2dfb43a60-ActionStmt", + "variantKey": "PointerAssignmentStmt", + "PointerAssignmentStmt": "0x55c2dfb43910-PointerAssignmentStmt" + }, + { + "id": "0x55c2dfb43910-PointerAssignmentStmt", + "DataRef": "0x55c2dfb43a10-DataRef", + "Bounds": "0x55c2dfb439f0-Bounds", + "Expr": "0x55c2dfb43920-Expr", + "variantKey": "BoundsSpec", + "BoundsSpec": [] + }, + { + "id": "0x55c2dfb43a10-DataRef", + "variantKey": "Name", + "Name": "0x55c2dfb43a10-Name" + }, + { + "id": "0x55c2dfb43a10-Name", + "source": "ptr_scalar" + }, + { + "id": "0x55c2dfb439f0-Bounds", + "variantKey": "list" + }, + { + "id": "0x55c2dfb43920-Expr", + "variantKey": "Designator", + "Designator": "0x55c2dfb2d610-Designator" + }, + { + "id": "0x55c2dfb2d610-Designator", + "variantKey": "DataRef", + "DataRef": "0x55c2dfb2d620-DataRef" + }, + { + "id": "0x55c2dfb2d620-DataRef", + "variantKey": "Name", + "Name": "0x55c2dfb2d620-Name" + }, + { + "id": "0x55c2dfb2d620-Name", + "source": "scalar_target" + }, + { + "id": "0x55c2dfb2e8e0-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55c2dfb2e8e0-ExecutableConstruct" + }, + { + "id": "0x55c2dfb2e8e0-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55c2dfb2e8e0-Statement" + }, + { + "id": "0x55c2dfb2e8e0-Statement", + "statement": "0x55c2dfb2e8f0-ActionStmt", + "source": "print *, \"1. Scalar pointer:\", ptr_scalar" + }, + { + "id": "0x55c2dfb2e8f0-ActionStmt", + "variantKey": "PrintStmt", + "PrintStmt": "0x55c2dfb2e760-PrintStmt" + }, + { + "id": "0x55c2dfb2e760-PrintStmt", + "Format": "0x55c2dfb2e778-Format", + "OutputItem": [ + "0x55c2dfb2e610-OutputItem", + "0x55c2dfb2e520-OutputItem" + ] + }, + { + "id": "0x55c2dfb2e778-Format", + "variantKey": "Star", + "Star": "0x55c2dfb2e778-Star" + }, + { + "id": "0x55c2dfb2e778-Star" + }, + { + "id": "0x55c2dfb2e610-OutputItem", + "variantKey": "Expr", + "Expr": "0x55c2dfb2e610-Expr" + }, + { + "id": "0x55c2dfb2e610-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55c2dfb2e630-LiteralConstant" + }, + { + "id": "0x55c2dfb2e630-LiteralConstant", + "variantKey": "CharLiteralConstant", + "CharLiteralConstant": "0x55c2dfb2e630-CharLiteralConstant" + }, + { + "id": "0x55c2dfb2e630-CharLiteralConstant", + "string": "1. Scalar pointer:" + }, + { + "id": "0x55c2dfb2e520-OutputItem", + "variantKey": "Expr", + "Expr": "0x55c2dfb2e520-Expr" + }, + { + "id": "0x55c2dfb2e520-Expr", + "variantKey": "Designator", + "Designator": "0x55c2dfb2e170-Designator" + }, + { + "id": "0x55c2dfb2e170-Designator", + "variantKey": "DataRef", + "DataRef": "0x55c2dfb2e180-DataRef" + }, + { + "id": "0x55c2dfb2e180-DataRef", + "variantKey": "Name", + "Name": "0x55c2dfb2e180-Name" + }, + { + "id": "0x55c2dfb2e180-Name", + "source": "ptr_scalar" + }, + { + "id": "0x55c2dfb2ea70-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55c2dfb2ea70-ExecutableConstruct" + }, + { + "id": "0x55c2dfb2ea70-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55c2dfb2ea70-Statement" + }, + { + "id": "0x55c2dfb2ea70-Statement", + "statement": "0x55c2dfb2ea80-ActionStmt", + "source": "ptr_copy => ptr_scalar" + }, + { + "id": "0x55c2dfb2ea80-ActionStmt", + "variantKey": "PointerAssignmentStmt", + "PointerAssignmentStmt": "0x55c2dfb2e930-PointerAssignmentStmt" + }, + { + "id": "0x55c2dfb2e930-PointerAssignmentStmt", + "DataRef": "0x55c2dfb2ea30-DataRef", + "Bounds": "0x55c2dfb2ea10-Bounds", + "Expr": "0x55c2dfb2e940-Expr", + "variantKey": "BoundsSpec", + "BoundsSpec": [] + }, + { + "id": "0x55c2dfb2ea30-DataRef", + "variantKey": "Name", + "Name": "0x55c2dfb2ea30-Name" + }, + { + "id": "0x55c2dfb2ea30-Name", + "source": "ptr_copy" + }, + { + "id": "0x55c2dfb2ea10-Bounds", + "variantKey": "list" + }, + { + "id": "0x55c2dfb2e940-Expr", + "variantKey": "Designator", + "Designator": "0x55c2dfb2df50-Designator" + }, + { + "id": "0x55c2dfb2df50-Designator", + "variantKey": "DataRef", + "DataRef": "0x55c2dfb2df60-DataRef" + }, + { + "id": "0x55c2dfb2df60-DataRef", + "variantKey": "Name", + "Name": "0x55c2dfb2df60-Name" + }, + { + "id": "0x55c2dfb2df60-Name", + "source": "ptr_scalar" + }, + { + "id": "0x55c2dfb2ee70-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55c2dfb2ee70-ExecutableConstruct" + }, + { + "id": "0x55c2dfb2ee70-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55c2dfb2ee70-Statement" + }, + { + "id": "0x55c2dfb2ee70-Statement", + "statement": "0x55c2dfb2ee80-ActionStmt", + "source": "print *, \"2. Pointer copy:\", ptr_copy" + }, + { + "id": "0x55c2dfb2ee80-ActionStmt", + "variantKey": "PrintStmt", + "PrintStmt": "0x55c2dfb2ed60-PrintStmt" + }, + { + "id": "0x55c2dfb2ed60-PrintStmt", + "Format": "0x55c2dfb2ed78-Format", + "OutputItem": [ + "0x55c2dfb2ec80-OutputItem", + "0x55c2dfb2eb90-OutputItem" + ] + }, + { + "id": "0x55c2dfb2ed78-Format", + "variantKey": "Star", + "Star": "0x55c2dfb2ed78-Star" + }, + { + "id": "0x55c2dfb2ed78-Star" + }, + { + "id": "0x55c2dfb2ec80-OutputItem", + "variantKey": "Expr", + "Expr": "0x55c2dfb2ec80-Expr" + }, + { + "id": "0x55c2dfb2ec80-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55c2dfb2eca0-LiteralConstant" + }, + { + "id": "0x55c2dfb2eca0-LiteralConstant", + "variantKey": "CharLiteralConstant", + "CharLiteralConstant": "0x55c2dfb2eca0-CharLiteralConstant" + }, + { + "id": "0x55c2dfb2eca0-CharLiteralConstant", + "string": "2. Pointer copy:" + }, + { + "id": "0x55c2dfb2eb90-OutputItem", + "variantKey": "Expr", + "Expr": "0x55c2dfb2eb90-Expr" + }, + { + "id": "0x55c2dfb2eb90-Expr", + "variantKey": "Designator", + "Designator": "0x55c2dfb2eb20-Designator" + }, + { + "id": "0x55c2dfb2eb20-Designator", + "variantKey": "DataRef", + "DataRef": "0x55c2dfb2eb30-DataRef" + }, + { + "id": "0x55c2dfb2eb30-DataRef", + "variantKey": "Name", + "Name": "0x55c2dfb2eb30-Name" + }, + { + "id": "0x55c2dfb2eb30-Name", + "source": "ptr_copy" + }, + { + "id": "0x55c2dfb2f000-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55c2dfb2f000-ExecutableConstruct" + }, + { + "id": "0x55c2dfb2f000-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55c2dfb2f000-Statement" + }, + { + "id": "0x55c2dfb2f000-Statement", + "statement": "0x55c2dfb2f010-ActionStmt", + "source": "ptr_array => array_target" + }, + { + "id": "0x55c2dfb2f010-ActionStmt", + "variantKey": "PointerAssignmentStmt", + "PointerAssignmentStmt": "0x55c2dfb2eec0-PointerAssignmentStmt" + }, + { + "id": "0x55c2dfb2eec0-PointerAssignmentStmt", + "DataRef": "0x55c2dfb2efc0-DataRef", + "Bounds": "0x55c2dfb2efa0-Bounds", + "Expr": "0x55c2dfb2eed0-Expr", + "variantKey": "BoundsSpec", + "BoundsSpec": [] + }, + { + "id": "0x55c2dfb2efc0-DataRef", + "variantKey": "Name", + "Name": "0x55c2dfb2efc0-Name" + }, + { + "id": "0x55c2dfb2efc0-Name", + "source": "ptr_array" + }, + { + "id": "0x55c2dfb2efa0-Bounds", + "variantKey": "list" + }, + { + "id": "0x55c2dfb2eed0-Expr", + "variantKey": "Designator", + "Designator": "0x55c2dfb2eac0-Designator" + }, + { + "id": "0x55c2dfb2eac0-Designator", + "variantKey": "DataRef", + "DataRef": "0x55c2dfb2ead0-DataRef" + }, + { + "id": "0x55c2dfb2ead0-DataRef", + "variantKey": "Name", + "Name": "0x55c2dfb2ead0-Name" + }, + { + "id": "0x55c2dfb2ead0-Name", + "source": "array_target" + }, + { + "id": "0x55c2dfb2f400-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55c2dfb2f400-ExecutableConstruct" + }, + { + "id": "0x55c2dfb2f400-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55c2dfb2f400-Statement" + }, + { + "id": "0x55c2dfb2f400-Statement", + "statement": "0x55c2dfb2f410-ActionStmt", + "source": "print *, \"3. Whole array:\", ptr_array" + }, + { + "id": "0x55c2dfb2f410-ActionStmt", + "variantKey": "PrintStmt", + "PrintStmt": "0x55c2dfb2f2f0-PrintStmt" + }, + { + "id": "0x55c2dfb2f2f0-PrintStmt", + "Format": "0x55c2dfb2f308-Format", + "OutputItem": [ + "0x55c2dfb2f210-OutputItem", + "0x55c2dfb2f120-OutputItem" + ] + }, + { + "id": "0x55c2dfb2f308-Format", + "variantKey": "Star", + "Star": "0x55c2dfb2f308-Star" + }, + { + "id": "0x55c2dfb2f308-Star" + }, + { + "id": "0x55c2dfb2f210-OutputItem", + "variantKey": "Expr", + "Expr": "0x55c2dfb2f210-Expr" + }, + { + "id": "0x55c2dfb2f210-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55c2dfb2f230-LiteralConstant" + }, + { + "id": "0x55c2dfb2f230-LiteralConstant", + "variantKey": "CharLiteralConstant", + "CharLiteralConstant": "0x55c2dfb2f230-CharLiteralConstant" + }, + { + "id": "0x55c2dfb2f230-CharLiteralConstant", + "string": "3. Whole array:" + }, + { + "id": "0x55c2dfb2f120-OutputItem", + "variantKey": "Expr", + "Expr": "0x55c2dfb2f120-Expr" + }, + { + "id": "0x55c2dfb2f120-Expr", + "variantKey": "Designator", + "Designator": "0x55c2dfb2f0b0-Designator" + }, + { + "id": "0x55c2dfb2f0b0-Designator", + "variantKey": "DataRef", + "DataRef": "0x55c2dfb2f0c0-DataRef" + }, + { + "id": "0x55c2dfb2f0c0-DataRef", + "variantKey": "Name", + "Name": "0x55c2dfb2f0c0-Name" + }, + { + "id": "0x55c2dfb2f0c0-Name", + "source": "ptr_array" + }, + { + "id": "0x55c2dfb2f860-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55c2dfb2f860-ExecutableConstruct" + }, + { + "id": "0x55c2dfb2f860-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55c2dfb2f860-Statement" + }, + { + "id": "0x55c2dfb2f860-Statement", + "statement": "0x55c2dfb2f870-ActionStmt", + "source": "ptr_slice => array_target(2:4)" + }, + { + "id": "0x55c2dfb2f870-ActionStmt", + "variantKey": "PointerAssignmentStmt", + "PointerAssignmentStmt": "0x55c2dfb2f720-PointerAssignmentStmt" + }, + { + "id": "0x55c2dfb2f720-PointerAssignmentStmt", + "DataRef": "0x55c2dfb2f820-DataRef", + "Bounds": "0x55c2dfb2f800-Bounds", + "Expr": "0x55c2dfb2f730-Expr", + "variantKey": "BoundsSpec", + "BoundsSpec": [] + }, + { + "id": "0x55c2dfb2f820-DataRef", + "variantKey": "Name", + "Name": "0x55c2dfb2f820-Name" + }, + { + "id": "0x55c2dfb2f820-Name", + "source": "ptr_slice" + }, + { + "id": "0x55c2dfb2f800-Bounds", + "variantKey": "list" + }, + { + "id": "0x55c2dfb2f730-Expr", + "variantKey": "Designator", + "Designator": "0x55c2dfb2f6c0-Designator" + }, + { + "id": "0x55c2dfb2f6c0-Designator", + "variantKey": "DataRef", + "DataRef": "0x55c2dfb2f6d0-DataRef" + }, + { + "id": "0x55c2dfb2f6d0-DataRef", + "variantKey": "ArrayElement", + "ArrayElement": "0x55c2dfb3c070-ArrayElement" + }, + { + "id": "0x55c2dfb3c070-ArrayElement", + "base": "0x55c2dfb3c070-DataRef", + "subscripts": [ + "0x55c2dfb2f620-SectionSubscript" + ] + }, + { + "id": "0x55c2dfb3c070-DataRef", + "variantKey": "Name", + "Name": "0x55c2dfb3c070-Name" + }, + { + "id": "0x55c2dfb3c070-Name", + "source": "array_target" + }, + { + "id": "0x55c2dfb2f620-SectionSubscript", + "variantKey": "SubscriptTriplet", + "SubscriptTriplet": "0x55c2dfb2f620-SubscriptTriplet" + }, + { + "id": "0x55c2dfb2f620-SubscriptTriplet", + "start": "0x55c2dfb2f450-Expr", + "end": "0x55c2dfb2f530-Expr" + }, + { + "id": "0x55c2dfb2f450-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55c2dfb2f470-LiteralConstant" + }, + { + "id": "0x55c2dfb2f470-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55c2dfb2f470-IntLiteralConstant" + }, + { + "id": "0x55c2dfb2f470-IntLiteralConstant", + "CharBlock": "2" + }, + { + "id": "0x55c2dfb2f530-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55c2dfb2f550-LiteralConstant" + }, + { + "id": "0x55c2dfb2f550-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55c2dfb2f550-IntLiteralConstant" + }, + { + "id": "0x55c2dfb2f550-IntLiteralConstant", + "CharBlock": "4" + }, + { + "id": "0x55c2dfb2fba0-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55c2dfb2fba0-ExecutableConstruct" + }, + { + "id": "0x55c2dfb2fba0-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55c2dfb2fba0-Statement" + }, + { + "id": "0x55c2dfb2fba0-Statement", + "statement": "0x55c2dfb2fbb0-ActionStmt", + "source": "print *, \"4. Array slice (2:4):\", ptr_slice" + }, + { + "id": "0x55c2dfb2fbb0-ActionStmt", + "variantKey": "PrintStmt", + "PrintStmt": "0x55c2dfb2fa90-PrintStmt" + }, + { + "id": "0x55c2dfb2fa90-PrintStmt", + "Format": "0x55c2dfb2faa8-Format", + "OutputItem": [ + "0x55c2dfb2f9b0-OutputItem", + "0x55c2dfb2f8c0-OutputItem" + ] + }, + { + "id": "0x55c2dfb2faa8-Format", + "variantKey": "Star", + "Star": "0x55c2dfb2faa8-Star" + }, + { + "id": "0x55c2dfb2faa8-Star" + }, + { + "id": "0x55c2dfb2f9b0-OutputItem", + "variantKey": "Expr", + "Expr": "0x55c2dfb2f9b0-Expr" + }, + { + "id": "0x55c2dfb2f9b0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55c2dfb2f9d0-LiteralConstant" + }, + { + "id": "0x55c2dfb2f9d0-LiteralConstant", + "variantKey": "CharLiteralConstant", + "CharLiteralConstant": "0x55c2dfb2f9d0-CharLiteralConstant" + }, + { + "id": "0x55c2dfb2f9d0-CharLiteralConstant", + "string": "4. Array slice (2:4):" + }, + { + "id": "0x55c2dfb2f8c0-OutputItem", + "variantKey": "Expr", + "Expr": "0x55c2dfb2f8c0-Expr" + }, + { + "id": "0x55c2dfb2f8c0-Expr", + "variantKey": "Designator", + "Designator": "0x55c2dfb2f660-Designator" + }, + { + "id": "0x55c2dfb2f660-Designator", + "variantKey": "DataRef", + "DataRef": "0x55c2dfb2f670-DataRef" + }, + { + "id": "0x55c2dfb2f670-DataRef", + "variantKey": "Name", + "Name": "0x55c2dfb2f670-Name" + }, + { + "id": "0x55c2dfb2f670-Name", + "source": "ptr_slice" + }, + { + "id": "0x55c2dfb2ff20-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55c2dfb2ff20-ExecutableConstruct" + }, + { + "id": "0x55c2dfb2ff20-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55c2dfb2ff20-Statement" + }, + { + "id": "0x55c2dfb2ff20-Statement", + "statement": "0x55c2dfb2ff30-ActionStmt", + "source": "ptr_lbound(10:) => array_target" + }, + { + "id": "0x55c2dfb2ff30-ActionStmt", + "variantKey": "PointerAssignmentStmt", + "PointerAssignmentStmt": "0x55c2dfb2fde0-PointerAssignmentStmt" + }, + { + "id": "0x55c2dfb2fde0-PointerAssignmentStmt", + "DataRef": "0x55c2dfb2fee0-DataRef", + "Bounds": "0x55c2dfb2fec0-Bounds", + "Expr": "0x55c2dfb2fdf0-Expr", + "variantKey": "BoundsSpec", + "BoundsSpec": [ + "0x55c2dfb3c020-BoundsSpec" + ] + }, + { + "id": "0x55c2dfb2fee0-DataRef", + "variantKey": "Name", + "Name": "0x55c2dfb2fee0-Name" + }, + { + "id": "0x55c2dfb2fee0-Name", + "source": "ptr_lbound" + }, + { + "id": "0x55c2dfb2fec0-Bounds", + "variantKey": "BoundsSpec", + "BoundsSpec": [ + "0x55c2dfb3c020-BoundsSpec" + ] + }, + { + "id": "0x55c2dfb3c020-BoundsSpec", + "Expr": "0x55c2dfb2fbf0-Expr" + }, + { + "id": "0x55c2dfb2fbf0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55c2dfb2fc10-LiteralConstant" + }, + { + "id": "0x55c2dfb2fc10-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55c2dfb2fc10-IntLiteralConstant" + }, + { + "id": "0x55c2dfb2fc10-IntLiteralConstant", + "CharBlock": "10" + }, + { + "id": "0x55c2dfb2fdf0-Expr", + "variantKey": "Designator", + "Designator": "0x55c2dfb2fd80-Designator" + }, + { + "id": "0x55c2dfb2fd80-Designator", + "variantKey": "DataRef", + "DataRef": "0x55c2dfb2fd90-DataRef" + }, + { + "id": "0x55c2dfb2fd90-DataRef", + "variantKey": "Name", + "Name": "0x55c2dfb2fd90-Name" + }, + { + "id": "0x55c2dfb2fd90-Name", + "source": "array_target" + }, + { + "id": "0x55c2dfb319d0-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55c2dfb319d0-ExecutableConstruct" + }, + { + "id": "0x55c2dfb319d0-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55c2dfb319d0-Statement" + }, + { + "id": "0x55c2dfb319d0-Statement", + "statement": "0x55c2dfb319e0-ActionStmt", + "source": "print *, \"5. Lower bound remapped | LBound:\", lbound(ptr_lbound, 1), \"| ptr(10):\", ptr_lbound(10)" + }, + { + "id": "0x55c2dfb319e0-ActionStmt", + "variantKey": "PrintStmt", + "PrintStmt": "0x55c2dfb31850-PrintStmt" + }, + { + "id": "0x55c2dfb31850-PrintStmt", + "Format": "0x55c2dfb31868-Format", + "OutputItem": [ + "0x55c2dfb31700-OutputItem", + "0x55c2dfb308e0-OutputItem", + "0x55c2dfb30c60-OutputItem", + "0x55c2dfb31610-OutputItem" + ] + }, + { + "id": "0x55c2dfb31868-Format", + "variantKey": "Star", + "Star": "0x55c2dfb31868-Star" + }, + { + "id": "0x55c2dfb31868-Star" + }, + { + "id": "0x55c2dfb31700-OutputItem", + "variantKey": "Expr", + "Expr": "0x55c2dfb31700-Expr" + }, + { + "id": "0x55c2dfb31700-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55c2dfb31720-LiteralConstant" + }, + { + "id": "0x55c2dfb31720-LiteralConstant", + "variantKey": "CharLiteralConstant", + "CharLiteralConstant": "0x55c2dfb31720-CharLiteralConstant" + }, + { + "id": "0x55c2dfb31720-CharLiteralConstant", + "string": "5. Lower bound remapped | LBound:" + }, + { + "id": "0x55c2dfb308e0-OutputItem", + "variantKey": "Expr", + "Expr": "0x55c2dfb308e0-Expr" + }, + { + "id": "0x55c2dfb308e0-Expr", + "variantKey": "FunctionReference", + "FunctionReference": "0x55c2dfb307f0-FunctionReference" + }, + { + "id": "0x55c2dfb307f0-FunctionReference", + "Call": "0x55c2dfb307f0-Call" + }, + { + "id": "0x55c2dfb307f0-Call", + "ProcedureDesignator": "0x55c2dfb30808-ProcedureDesignator", + "ActualArgSpec": [ + "0x55c2dfb30680-ActualArgSpec", + "0x55c2dfb0ecf0-ActualArgSpec" + ] + }, + { + "id": "0x55c2dfb30808-ProcedureDesignator", + "variantKey": "Name", + "Name": "0x55c2dfb30808-Name" + }, + { + "id": "0x55c2dfb30808-Name", + "source": "lbound" + }, + { + "id": "0x55c2dfb30680-ActualArgSpec", + "ActualArg": "0x55c2dfb30680-ActualArg" + }, + { + "id": "0x55c2dfb30680-ActualArg", + "variantKey": "Expr", + "Expr": "0x55c2dfb303b0-Expr" + }, + { + "id": "0x55c2dfb303b0-Expr", + "variantKey": "Designator", + "Designator": "0x55c2dfb2ffe0-Designator" + }, + { + "id": "0x55c2dfb2ffe0-Designator", + "variantKey": "DataRef", + "DataRef": "0x55c2dfb2fff0-DataRef" + }, + { + "id": "0x55c2dfb2fff0-DataRef", + "variantKey": "Name", + "Name": "0x55c2dfb2fff0-Name" + }, + { + "id": "0x55c2dfb2fff0-Name", + "source": "ptr_lbound" + }, + { + "id": "0x55c2dfb0ecf0-ActualArgSpec", + "ActualArg": "0x55c2dfb0ecf0-ActualArg" + }, + { + "id": "0x55c2dfb0ecf0-ActualArg", + "variantKey": "Expr", + "Expr": "0x55c2dfb300b0-Expr" + }, + { + "id": "0x55c2dfb300b0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55c2dfb300d0-LiteralConstant" + }, + { + "id": "0x55c2dfb300d0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55c2dfb300d0-IntLiteralConstant" + }, + { + "id": "0x55c2dfb300d0-IntLiteralConstant", + "CharBlock": "1" + }, + { + "id": "0x55c2dfb30c60-OutputItem", + "variantKey": "Expr", + "Expr": "0x55c2dfb30c60-Expr" + }, + { + "id": "0x55c2dfb30c60-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55c2dfb30c80-LiteralConstant" + }, + { + "id": "0x55c2dfb30c80-LiteralConstant", + "variantKey": "CharLiteralConstant", + "CharLiteralConstant": "0x55c2dfb30c80-CharLiteralConstant" + }, + { + "id": "0x55c2dfb30c80-CharLiteralConstant", + "string": "| ptr(10):" + }, + { + "id": "0x55c2dfb31610-OutputItem", + "variantKey": "Expr", + "Expr": "0x55c2dfb31610-Expr" + }, + { + "id": "0x55c2dfb31610-Expr", + "variantKey": "Designator", + "Designator": "0x55c2dfb6e420-Designator" + }, + { + "id": "0x55c2dfb6e420-Designator", + "variantKey": "DataRef", + "DataRef": "0x55c2dfb6e430-DataRef" + }, + { + "id": "0x55c2dfb6e430-DataRef", + "variantKey": "ArrayElement", + "ArrayElement": "0x55c2dfb353a0-ArrayElement" + }, + { + "id": "0x55c2dfb353a0-ArrayElement", + "base": "0x55c2dfb353a0-DataRef", + "subscripts": [ + "0x55c2dfb562e0-SectionSubscript" + ] + }, + { + "id": "0x55c2dfb353a0-DataRef", + "variantKey": "Name", + "Name": "0x55c2dfb353a0-Name" + }, + { + "id": "0x55c2dfb353a0-Name", + "source": "ptr_lbound" + }, + { + "id": "0x55c2dfb562e0-SectionSubscript", + "variantKey": "Expr", + "Expr": "0x55c2dfb6afd0-Expr" + }, + { + "id": "0x55c2dfb6afd0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55c2dfb6aff0-LiteralConstant" + }, + { + "id": "0x55c2dfb6aff0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55c2dfb6aff0-IntLiteralConstant" + }, + { + "id": "0x55c2dfb6aff0-IntLiteralConstant", + "CharBlock": "10" + }, + { + "id": "0x55c2dfb444b0-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55c2dfb444b0-ExecutableConstruct" + }, + { + "id": "0x55c2dfb444b0-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55c2dfb444b0-Statement" + }, + { + "id": "0x55c2dfb444b0-Statement", + "statement": "0x55c2dfb444c0-ActionStmt", + "source": "ptr_bounds(0:4) => array_target" + }, + { + "id": "0x55c2dfb444c0-ActionStmt", + "variantKey": "PointerAssignmentStmt", + "PointerAssignmentStmt": "0x55c2dfb31cf0-PointerAssignmentStmt" + }, + { + "id": "0x55c2dfb31cf0-PointerAssignmentStmt", + "DataRef": "0x55c2dfb31df0-DataRef", + "Bounds": "0x55c2dfb31dd0-Bounds", + "Expr": "0x55c2dfb31d00-Expr", + "variantKey": "BoundsRemapping", + "BoundsRemapping": [ + "0x55c2dfb3c140-BoundsRemapping" + ] + }, + { + "id": "0x55c2dfb31df0-DataRef", + "variantKey": "Name", + "Name": "0x55c2dfb31df0-Name" + }, + { + "id": "0x55c2dfb31df0-Name", + "source": "ptr_bounds" + }, + { + "id": "0x55c2dfb31dd0-Bounds", + "variantKey": "BoundsRemapping", + "BoundsRemapping": [ + "0x55c2dfb3c140-BoundsRemapping" + ] + }, + { + "id": "0x55c2dfb3c140-BoundsRemapping", + "lower": "0x55c2dfb31a20-Expr", + "upper": "0x55c2dfb31b00-Expr" + }, + { + "id": "0x55c2dfb31a20-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55c2dfb31a40-LiteralConstant" + }, + { + "id": "0x55c2dfb31a40-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55c2dfb31a40-IntLiteralConstant" + }, + { + "id": "0x55c2dfb31a40-IntLiteralConstant", + "CharBlock": "0" + }, + { + "id": "0x55c2dfb31b00-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55c2dfb31b20-LiteralConstant" + }, + { + "id": "0x55c2dfb31b20-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55c2dfb31b20-IntLiteralConstant" + }, + { + "id": "0x55c2dfb31b20-IntLiteralConstant", + "CharBlock": "4" + }, + { + "id": "0x55c2dfb31d00-Expr", + "variantKey": "Designator", + "Designator": "0x55c2dfb2e2f0-Designator" + }, + { + "id": "0x55c2dfb2e2f0-Designator", + "variantKey": "DataRef", + "DataRef": "0x55c2dfb2e300-DataRef" + }, + { + "id": "0x55c2dfb2e300-DataRef", + "variantKey": "Name", + "Name": "0x55c2dfb2e300-Name" + }, + { + "id": "0x55c2dfb2e300-Name", + "source": "array_target" + }, + { + "id": "0x55c2dfb32a00-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55c2dfb32a00-ExecutableConstruct" + }, + { + "id": "0x55c2dfb32a00-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55c2dfb32a00-Statement" + }, + { + "id": "0x55c2dfb32a00-Statement", + "statement": "0x55c2dfb32a10-ActionStmt", + "source": "print *, \"6. Full bounds remapped | LBound:\", lbound(ptr_bounds, 1), \"| ptr(0):\", ptr_bounds(0)" + }, + { + "id": "0x55c2dfb32a10-ActionStmt", + "variantKey": "PrintStmt", + "PrintStmt": "0x55c2dfb32880-PrintStmt" + }, + { + "id": "0x55c2dfb32880-PrintStmt", + "Format": "0x55c2dfb32898-Format", + "OutputItem": [ + "0x55c2dfb32730-OutputItem", + "0x55c2dfb32150-OutputItem", + "0x55c2dfb32240-OutputItem", + "0x55c2dfb32640-OutputItem" + ] + }, + { + "id": "0x55c2dfb32898-Format", + "variantKey": "Star", + "Star": "0x55c2dfb32898-Star" + }, + { + "id": "0x55c2dfb32898-Star" + }, + { + "id": "0x55c2dfb32730-OutputItem", + "variantKey": "Expr", + "Expr": "0x55c2dfb32730-Expr" + }, + { + "id": "0x55c2dfb32730-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55c2dfb32750-LiteralConstant" + }, + { + "id": "0x55c2dfb32750-LiteralConstant", + "variantKey": "CharLiteralConstant", + "CharLiteralConstant": "0x55c2dfb32750-CharLiteralConstant" + }, + { + "id": "0x55c2dfb32750-CharLiteralConstant", + "string": "6. Full bounds remapped | LBound:" + }, + { + "id": "0x55c2dfb32150-OutputItem", + "variantKey": "Expr", + "Expr": "0x55c2dfb32150-Expr" + }, + { + "id": "0x55c2dfb32150-Expr", + "variantKey": "FunctionReference", + "FunctionReference": "0x55c2dfb43ca0-FunctionReference" + }, + { + "id": "0x55c2dfb43ca0-FunctionReference", + "Call": "0x55c2dfb43ca0-Call" + }, + { + "id": "0x55c2dfb43ca0-Call", + "ProcedureDesignator": "0x55c2dfb43cb8-ProcedureDesignator", + "ActualArgSpec": [ + "0x55c2dfb32040-ActualArgSpec", + "0x55c2dfb31bf0-ActualArgSpec" + ] + }, + { + "id": "0x55c2dfb43cb8-ProcedureDesignator", + "variantKey": "Name", + "Name": "0x55c2dfb43cb8-Name" + }, + { + "id": "0x55c2dfb43cb8-Name", + "source": "lbound" + }, + { + "id": "0x55c2dfb32040-ActualArgSpec", + "ActualArg": "0x55c2dfb32040-ActualArg" + }, + { + "id": "0x55c2dfb32040-ActualArg", + "variantKey": "Expr", + "Expr": "0x55c2dfb31f00-Expr" + }, + { + "id": "0x55c2dfb31f00-Expr", + "variantKey": "Designator", + "Designator": "0x55c2dfb2fd20-Designator" + }, + { + "id": "0x55c2dfb2fd20-Designator", + "variantKey": "DataRef", + "DataRef": "0x55c2dfb2fd30-DataRef" + }, + { + "id": "0x55c2dfb2fd30-DataRef", + "variantKey": "Name", + "Name": "0x55c2dfb2fd30-Name" + }, + { + "id": "0x55c2dfb2fd30-Name", + "source": "ptr_bounds" + }, + { + "id": "0x55c2dfb31bf0-ActualArgSpec", + "ActualArg": "0x55c2dfb31bf0-ActualArg" + }, + { + "id": "0x55c2dfb31bf0-ActualArg", + "variantKey": "Expr", + "Expr": "0x55c2dfb31e20-Expr" + }, + { + "id": "0x55c2dfb31e20-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55c2dfb31e40-LiteralConstant" + }, + { + "id": "0x55c2dfb31e40-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55c2dfb31e40-IntLiteralConstant" + }, + { + "id": "0x55c2dfb31e40-IntLiteralConstant", + "CharBlock": "1" + }, + { + "id": "0x55c2dfb32240-OutputItem", + "variantKey": "Expr", + "Expr": "0x55c2dfb32240-Expr" + }, + { + "id": "0x55c2dfb32240-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55c2dfb32260-LiteralConstant" + }, + { + "id": "0x55c2dfb32260-LiteralConstant", + "variantKey": "CharLiteralConstant", + "CharLiteralConstant": "0x55c2dfb32260-CharLiteralConstant" + }, + { + "id": "0x55c2dfb32260-CharLiteralConstant", + "string": "| ptr(0):" + }, + { + "id": "0x55c2dfb32640-OutputItem", + "variantKey": "Expr", + "Expr": "0x55c2dfb32640-Expr" + }, + { + "id": "0x55c2dfb32640-Expr", + "variantKey": "Designator", + "Designator": "0x55c2dfb6da80-Designator" + }, + { + "id": "0x55c2dfb6da80-Designator", + "variantKey": "DataRef", + "DataRef": "0x55c2dfb6da90-DataRef" + }, + { + "id": "0x55c2dfb6da90-DataRef", + "variantKey": "ArrayElement", + "ArrayElement": "0x55c2dfb37bc0-ArrayElement" + }, + { + "id": "0x55c2dfb37bc0-ArrayElement", + "base": "0x55c2dfb37bc0-DataRef", + "subscripts": [ + "0x55c2dfb63990-SectionSubscript" + ] + }, + { + "id": "0x55c2dfb37bc0-DataRef", + "variantKey": "Name", + "Name": "0x55c2dfb37bc0-Name" + }, + { + "id": "0x55c2dfb37bc0-Name", + "source": "ptr_bounds" + }, + { + "id": "0x55c2dfb63990-SectionSubscript", + "variantKey": "Expr", + "Expr": "0x55c2dfb31180-Expr" + }, + { + "id": "0x55c2dfb31180-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55c2dfb311a0-LiteralConstant" + }, + { + "id": "0x55c2dfb311a0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55c2dfb311a0-IntLiteralConstant" + }, + { + "id": "0x55c2dfb311a0-IntLiteralConstant", + "CharBlock": "0" + }, + { + "id": "0x55c2dfb31270-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55c2dfb31270-ExecutableConstruct" + }, + { + "id": "0x55c2dfb31270-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55c2dfb31270-Statement" + }, + { + "id": "0x55c2dfb31270-Statement", + "statement": "0x55c2dfb31280-ActionStmt", + "source": "ptr_2d(1:2, 1:2) => array_target(1:4)" + }, + { + "id": "0x55c2dfb31280-ActionStmt", + "variantKey": "PointerAssignmentStmt", + "PointerAssignmentStmt": "0x55c2dfb330a0-PointerAssignmentStmt" + }, + { + "id": "0x55c2dfb330a0-PointerAssignmentStmt", + "DataRef": "0x55c2dfb331a0-DataRef", + "Bounds": "0x55c2dfb33180-Bounds", + "Expr": "0x55c2dfb330b0-Expr", + "variantKey": "BoundsRemapping", + "BoundsRemapping": [ + "0x55c2dfb3a1e0-BoundsRemapping", + "0x55c2dfb39ff0-BoundsRemapping" + ] + }, + { + "id": "0x55c2dfb331a0-DataRef", + "variantKey": "Name", + "Name": "0x55c2dfb331a0-Name" + }, + { + "id": "0x55c2dfb331a0-Name", + "source": "ptr_2d" + }, + { + "id": "0x55c2dfb33180-Bounds", + "variantKey": "BoundsRemapping", + "BoundsRemapping": [ + "0x55c2dfb3a1e0-BoundsRemapping", + "0x55c2dfb39ff0-BoundsRemapping" + ] + }, + { + "id": "0x55c2dfb3a1e0-BoundsRemapping", + "lower": "0x55c2dfb32b30-Expr", + "upper": "0x55c2dfb32a50-Expr" + }, + { + "id": "0x55c2dfb32b30-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55c2dfb32b50-LiteralConstant" + }, + { + "id": "0x55c2dfb32b50-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55c2dfb32b50-IntLiteralConstant" + }, + { + "id": "0x55c2dfb32b50-IntLiteralConstant", + "CharBlock": "1" + }, + { + "id": "0x55c2dfb32a50-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55c2dfb32a70-LiteralConstant" + }, + { + "id": "0x55c2dfb32a70-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55c2dfb32a70-IntLiteralConstant" + }, + { + "id": "0x55c2dfb32a70-IntLiteralConstant", + "CharBlock": "2" + }, + { + "id": "0x55c2dfb39ff0-BoundsRemapping", + "lower": "0x55c2dfb32c10-Expr", + "upper": "0x55c2dfb32cf0-Expr" + }, + { + "id": "0x55c2dfb32c10-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55c2dfb32c30-LiteralConstant" + }, + { + "id": "0x55c2dfb32c30-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55c2dfb32c30-IntLiteralConstant" + }, + { + "id": "0x55c2dfb32c30-IntLiteralConstant", + "CharBlock": "1" + }, + { + "id": "0x55c2dfb32cf0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55c2dfb32d10-LiteralConstant" + }, + { + "id": "0x55c2dfb32d10-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55c2dfb32d10-IntLiteralConstant" + }, + { + "id": "0x55c2dfb32d10-IntLiteralConstant", + "CharBlock": "2" + }, + { + "id": "0x55c2dfb330b0-Expr", + "variantKey": "Designator", + "Designator": "0x55c2dfb2f050-Designator" + }, + { + "id": "0x55c2dfb2f050-Designator", + "variantKey": "DataRef", + "DataRef": "0x55c2dfb2f060-DataRef" + }, + { + "id": "0x55c2dfb2f060-DataRef", + "variantKey": "ArrayElement", + "ArrayElement": "0x55c2dfb3a950-ArrayElement" + }, + { + "id": "0x55c2dfb3a950-ArrayElement", + "base": "0x55c2dfb3a950-DataRef", + "subscripts": [ + "0x55c2dfb304f0-SectionSubscript" + ] + }, + { + "id": "0x55c2dfb3a950-DataRef", + "variantKey": "Name", + "Name": "0x55c2dfb3a950-Name" + }, + { + "id": "0x55c2dfb3a950-Name", + "source": "array_target" + }, + { + "id": "0x55c2dfb304f0-SectionSubscript", + "variantKey": "SubscriptTriplet", + "SubscriptTriplet": "0x55c2dfb304f0-SubscriptTriplet" + }, + { + "id": "0x55c2dfb304f0-SubscriptTriplet", + "start": "0x55c2dfb32ee0-Expr", + "end": "0x55c2dfb32fc0-Expr" + }, + { + "id": "0x55c2dfb32ee0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55c2dfb32f00-LiteralConstant" + }, + { + "id": "0x55c2dfb32f00-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55c2dfb32f00-IntLiteralConstant" + }, + { + "id": "0x55c2dfb32f00-IntLiteralConstant", + "CharBlock": "1" + }, + { + "id": "0x55c2dfb32fc0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55c2dfb32fe0-LiteralConstant" + }, + { + "id": "0x55c2dfb32fe0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55c2dfb32fe0-IntLiteralConstant" + }, + { + "id": "0x55c2dfb32fe0-IntLiteralConstant", + "CharBlock": "4" + }, + { + "id": "0x55c2dfb301a0-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55c2dfb301a0-ExecutableConstruct" + }, + { + "id": "0x55c2dfb301a0-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55c2dfb301a0-Statement" + }, + { + "id": "0x55c2dfb301a0-Statement", + "statement": "0x55c2dfb301b0-ActionStmt", + "source": "print *, \"7. Rank remapped 2D pointer (element 2,2):\", ptr_2d(2, 2)" + }, + { + "id": "0x55c2dfb301b0-ActionStmt", + "variantKey": "PrintStmt", + "PrintStmt": "0x55c2dfb33720-PrintStmt" + }, + { + "id": "0x55c2dfb33720-PrintStmt", + "Format": "0x55c2dfb33738-Format", + "OutputItem": [ + "0x55c2dfb33640-OutputItem", + "0x55c2dfb33550-OutputItem" + ] + }, + { + "id": "0x55c2dfb33738-Format", + "variantKey": "Star", + "Star": "0x55c2dfb33738-Star" + }, + { + "id": "0x55c2dfb33738-Star" + }, + { + "id": "0x55c2dfb33640-OutputItem", + "variantKey": "Expr", + "Expr": "0x55c2dfb33640-Expr" + }, + { + "id": "0x55c2dfb33640-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55c2dfb33660-LiteralConstant" + }, + { + "id": "0x55c2dfb33660-LiteralConstant", + "variantKey": "CharLiteralConstant", + "CharLiteralConstant": "0x55c2dfb33660-CharLiteralConstant" + }, + { + "id": "0x55c2dfb33660-CharLiteralConstant", + "string": "7. Rank remapped 2D pointer (element 2,2):" + }, + { + "id": "0x55c2dfb33550-OutputItem", + "variantKey": "Expr", + "Expr": "0x55c2dfb33550-Expr" + }, + { + "id": "0x55c2dfb33550-Expr", + "variantKey": "Designator", + "Designator": "0x55c2dfb6edc0-Designator" + }, + { + "id": "0x55c2dfb6edc0-Designator", + "variantKey": "DataRef", + "DataRef": "0x55c2dfb6edd0-DataRef" + }, + { + "id": "0x55c2dfb6edd0-DataRef", + "variantKey": "ArrayElement", + "ArrayElement": "0x55c2dfb3df90-ArrayElement" + }, + { + "id": "0x55c2dfb3df90-ArrayElement", + "base": "0x55c2dfb3df90-DataRef", + "subscripts": [ + "0x55c2dfb552d0-SectionSubscript", + "0x55c2dfb5d3d0-SectionSubscript" + ] + }, + { + "id": "0x55c2dfb3df90-DataRef", + "variantKey": "Name", + "Name": "0x55c2dfb3df90-Name" + }, + { + "id": "0x55c2dfb3df90-Name", + "source": "ptr_2d" + }, + { + "id": "0x55c2dfb552d0-SectionSubscript", + "variantKey": "Expr", + "Expr": "0x55c2dfb323e0-Expr" + }, + { + "id": "0x55c2dfb323e0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55c2dfb32400-LiteralConstant" + }, + { + "id": "0x55c2dfb32400-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55c2dfb32400-IntLiteralConstant" + }, + { + "id": "0x55c2dfb32400-IntLiteralConstant", + "CharBlock": "2" + }, + { + "id": "0x55c2dfb5d3d0-SectionSubscript", + "variantKey": "Expr", + "Expr": "0x55c2dfb4e670-Expr" + }, + { + "id": "0x55c2dfb4e670-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55c2dfb4e690-LiteralConstant" + }, + { + "id": "0x55c2dfb4e690-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55c2dfb4e690-IntLiteralConstant" + }, + { + "id": "0x55c2dfb4e690-IntLiteralConstant", + "CharBlock": "2" + }, + { + "id": "0x55c2dfb32390-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55c2dfb32390-ExecutableConstruct" + }, + { + "id": "0x55c2dfb32390-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55c2dfb32390-Statement" + }, + { + "id": "0x55c2dfb32390-Statement", + "statement": "0x55c2dfb323a0-ActionStmt", + "source": "ptr_proc => double_val" + }, + { + "id": "0x55c2dfb323a0-ActionStmt", + "variantKey": "PointerAssignmentStmt", + "PointerAssignmentStmt": "0x55c2dfb33820-PointerAssignmentStmt" + }, + { + "id": "0x55c2dfb33820-PointerAssignmentStmt", + "DataRef": "0x55c2dfb33920-DataRef", + "Bounds": "0x55c2dfb33900-Bounds", + "Expr": "0x55c2dfb33830-Expr", + "variantKey": "BoundsSpec", + "BoundsSpec": [] + }, + { + "id": "0x55c2dfb33920-DataRef", + "variantKey": "Name", + "Name": "0x55c2dfb33920-Name" + }, + { + "id": "0x55c2dfb33920-Name", + "source": "ptr_proc" + }, + { + "id": "0x55c2dfb33900-Bounds", + "variantKey": "list" + }, + { + "id": "0x55c2dfb33830-Expr", + "variantKey": "Designator", + "Designator": "0x55c2dfb30530-Designator" + }, + { + "id": "0x55c2dfb30530-Designator", + "variantKey": "DataRef", + "DataRef": "0x55c2dfb30540-DataRef" + }, + { + "id": "0x55c2dfb30540-DataRef", + "variantKey": "Name", + "Name": "0x55c2dfb30540-Name" + }, + { + "id": "0x55c2dfb30540-Name", + "source": "double_val" + }, + { + "id": "0x55c2dfb32330-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55c2dfb32330-ExecutableConstruct" + }, + { + "id": "0x55c2dfb32330-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55c2dfb32330-Statement" + }, + { + "id": "0x55c2dfb32330-Statement", + "statement": "0x55c2dfb32340-ActionStmt", + "source": "print *, \"8. Procedure pointer result:\", ptr_proc(5)" + }, + { + "id": "0x55c2dfb32340-ActionStmt", + "variantKey": "PrintStmt", + "PrintStmt": "0x55c2dfb33d20-PrintStmt" + }, + { + "id": "0x55c2dfb33d20-PrintStmt", + "Format": "0x55c2dfb33d38-Format", + "OutputItem": [ + "0x55c2dfb33c40-OutputItem", + "0x55c2dfb33b50-OutputItem" + ] + }, + { + "id": "0x55c2dfb33d38-Format", + "variantKey": "Star", + "Star": "0x55c2dfb33d38-Star" + }, + { + "id": "0x55c2dfb33d38-Star" + }, + { + "id": "0x55c2dfb33c40-OutputItem", + "variantKey": "Expr", + "Expr": "0x55c2dfb33c40-Expr" + }, + { + "id": "0x55c2dfb33c40-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55c2dfb33c60-LiteralConstant" + }, + { + "id": "0x55c2dfb33c60-LiteralConstant", + "variantKey": "CharLiteralConstant", + "CharLiteralConstant": "0x55c2dfb33c60-CharLiteralConstant" + }, + { + "id": "0x55c2dfb33c60-CharLiteralConstant", + "string": "8. Procedure pointer result:" + }, + { + "id": "0x55c2dfb33b50-OutputItem", + "variantKey": "Expr", + "Expr": "0x55c2dfb33b50-Expr" + }, + { + "id": "0x55c2dfb33b50-Expr", + "variantKey": "FunctionReference", + "FunctionReference": "0x55c2dfb44340-FunctionReference" + }, + { + "id": "0x55c2dfb44340-FunctionReference", + "Call": "0x55c2dfb44340-Call" + }, + { + "id": "0x55c2dfb44340-Call", + "ProcedureDesignator": "0x55c2dfb44358-ProcedureDesignator", + "ActualArgSpec": [ + "0x55c2dfb33a40-ActualArgSpec" + ] + }, + { + "id": "0x55c2dfb44358-ProcedureDesignator", + "variantKey": "Name", + "Name": "0x55c2dfb44358-Name" + }, + { + "id": "0x55c2dfb44358-Name", + "source": "ptr_proc" + }, + { + "id": "0x55c2dfb33a40-ActualArgSpec", + "ActualArg": "0x55c2dfb33a40-ActualArg" + }, + { + "id": "0x55c2dfb33a40-ActualArg", + "variantKey": "Expr", + "Expr": "0x55c2dfb33950-Expr" + }, + { + "id": "0x55c2dfb33950-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55c2dfb33970-LiteralConstant" + }, + { + "id": "0x55c2dfb33970-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55c2dfb33970-IntLiteralConstant" + }, + { + "id": "0x55c2dfb33970-IntLiteralConstant", + "CharBlock": "5" + }, + { + "id": "0x55c2dfb324d0-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55c2dfb324d0-ExecutableConstruct" + }, + { + "id": "0x55c2dfb324d0-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55c2dfb324d0-Statement" + }, + { + "id": "0x55c2dfb324d0-Statement", + "statement": "0x55c2dfb324e0-ActionStmt", + "source": "ptr_scalar => null()" + }, + { + "id": "0x55c2dfb324e0-ActionStmt", + "variantKey": "PointerAssignmentStmt", + "PointerAssignmentStmt": "0x55c2dfb33e20-PointerAssignmentStmt" + }, + { + "id": "0x55c2dfb33e20-PointerAssignmentStmt", + "DataRef": "0x55c2dfb33f20-DataRef", + "Bounds": "0x55c2dfb33f00-Bounds", + "Expr": "0x55c2dfb33e30-Expr", + "variantKey": "BoundsSpec", + "BoundsSpec": [] + }, + { + "id": "0x55c2dfb33f20-DataRef", + "variantKey": "Name", + "Name": "0x55c2dfb33f20-Name" + }, + { + "id": "0x55c2dfb33f20-Name", + "source": "ptr_scalar" + }, + { + "id": "0x55c2dfb33f00-Bounds", + "variantKey": "list" + }, + { + "id": "0x55c2dfb33e30-Expr", + "variantKey": "FunctionReference", + "FunctionReference": "0x55c2dfb2dd90-FunctionReference" + }, + { + "id": "0x55c2dfb2dd90-FunctionReference", + "Call": "0x55c2dfb2dd90-Call" + }, + { + "id": "0x55c2dfb2dd90-Call", + "ProcedureDesignator": "0x55c2dfb2dda8-ProcedureDesignator" + }, + { + "id": "0x55c2dfb2dda8-ProcedureDesignator", + "variantKey": "Name", + "Name": "0x55c2dfb2dda8-Name" + }, + { + "id": "0x55c2dfb2dda8-Name", + "source": "null" + }, + { + "id": "0x55c2dfb34090-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55c2dfb34090-ExecutableConstruct" + }, + { + "id": "0x55c2dfb34090-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55c2dfb34090-Statement" + }, + { + "id": "0x55c2dfb34090-Statement", + "statement": "0x55c2dfb340a0-ActionStmt", + "source": "ptr_copy => null()" + }, + { + "id": "0x55c2dfb340a0-ActionStmt", + "variantKey": "PointerAssignmentStmt", + "PointerAssignmentStmt": "0x55c2dfb33f50-PointerAssignmentStmt" + }, + { + "id": "0x55c2dfb33f50-PointerAssignmentStmt", + "DataRef": "0x55c2dfb34050-DataRef", + "Bounds": "0x55c2dfb34030-Bounds", + "Expr": "0x55c2dfb33f60-Expr", + "variantKey": "BoundsSpec", + "BoundsSpec": [] + }, + { + "id": "0x55c2dfb34050-DataRef", + "variantKey": "Name", + "Name": "0x55c2dfb34050-Name" + }, + { + "id": "0x55c2dfb34050-Name", + "source": "ptr_copy" + }, + { + "id": "0x55c2dfb34030-Bounds", + "variantKey": "list" + }, + { + "id": "0x55c2dfb33f60-Expr", + "variantKey": "FunctionReference", + "FunctionReference": "0x55c2dfb314b0-FunctionReference" + }, + { + "id": "0x55c2dfb314b0-FunctionReference", + "Call": "0x55c2dfb314b0-Call" + }, + { + "id": "0x55c2dfb314b0-Call", + "ProcedureDesignator": "0x55c2dfb314c8-ProcedureDesignator" + }, + { + "id": "0x55c2dfb314c8-ProcedureDesignator", + "variantKey": "Name", + "Name": "0x55c2dfb314c8-Name" + }, + { + "id": "0x55c2dfb314c8-Name", + "source": "null" + }, + { + "id": "0x55c2dfb34220-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55c2dfb34220-ExecutableConstruct" + }, + { + "id": "0x55c2dfb34220-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55c2dfb34220-Statement" + }, + { + "id": "0x55c2dfb34220-Statement", + "statement": "0x55c2dfb34230-ActionStmt", + "source": "ptr_array => null()" + }, + { + "id": "0x55c2dfb34230-ActionStmt", + "variantKey": "PointerAssignmentStmt", + "PointerAssignmentStmt": "0x55c2dfb340e0-PointerAssignmentStmt" + }, + { + "id": "0x55c2dfb340e0-PointerAssignmentStmt", + "DataRef": "0x55c2dfb341e0-DataRef", + "Bounds": "0x55c2dfb341c0-Bounds", + "Expr": "0x55c2dfb340f0-Expr", + "variantKey": "BoundsSpec", + "BoundsSpec": [] + }, + { + "id": "0x55c2dfb341e0-DataRef", + "variantKey": "Name", + "Name": "0x55c2dfb341e0-Name" + }, + { + "id": "0x55c2dfb341e0-Name", + "source": "ptr_array" + }, + { + "id": "0x55c2dfb341c0-Bounds", + "variantKey": "list" + }, + { + "id": "0x55c2dfb340f0-Expr", + "variantKey": "FunctionReference", + "FunctionReference": "0x55c2dfb2de00-FunctionReference" + }, + { + "id": "0x55c2dfb2de00-FunctionReference", + "Call": "0x55c2dfb2de00-Call" + }, + { + "id": "0x55c2dfb2de00-Call", + "ProcedureDesignator": "0x55c2dfb2de18-ProcedureDesignator" + }, + { + "id": "0x55c2dfb2de18-ProcedureDesignator", + "variantKey": "Name", + "Name": "0x55c2dfb2de18-Name" + }, + { + "id": "0x55c2dfb2de18-Name", + "source": "null" + }, + { + "id": "0x55c2dfb343b0-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55c2dfb343b0-ExecutableConstruct" + }, + { + "id": "0x55c2dfb343b0-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55c2dfb343b0-Statement" + }, + { + "id": "0x55c2dfb343b0-Statement", + "statement": "0x55c2dfb343c0-ActionStmt", + "source": "ptr_slice => null()" + }, + { + "id": "0x55c2dfb343c0-ActionStmt", + "variantKey": "PointerAssignmentStmt", + "PointerAssignmentStmt": "0x55c2dfb34270-PointerAssignmentStmt" + }, + { + "id": "0x55c2dfb34270-PointerAssignmentStmt", + "DataRef": "0x55c2dfb34370-DataRef", + "Bounds": "0x55c2dfb34350-Bounds", + "Expr": "0x55c2dfb34280-Expr", + "variantKey": "BoundsSpec", + "BoundsSpec": [] + }, + { + "id": "0x55c2dfb34370-DataRef", + "variantKey": "Name", + "Name": "0x55c2dfb34370-Name" + }, + { + "id": "0x55c2dfb34370-Name", + "source": "ptr_slice" + }, + { + "id": "0x55c2dfb34350-Bounds", + "variantKey": "list" + }, + { + "id": "0x55c2dfb34280-Expr", + "variantKey": "FunctionReference", + "FunctionReference": "0x55c2dfb2e6f0-FunctionReference" + }, + { + "id": "0x55c2dfb2e6f0-FunctionReference", + "Call": "0x55c2dfb2e6f0-Call" + }, + { + "id": "0x55c2dfb2e6f0-Call", + "ProcedureDesignator": "0x55c2dfb2e708-ProcedureDesignator" + }, + { + "id": "0x55c2dfb2e708-ProcedureDesignator", + "variantKey": "Name", + "Name": "0x55c2dfb2e708-Name" + }, + { + "id": "0x55c2dfb2e708-Name", + "source": "null" + }, + { + "id": "0x55c2dfb34540-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55c2dfb34540-ExecutableConstruct" + }, + { + "id": "0x55c2dfb34540-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55c2dfb34540-Statement" + }, + { + "id": "0x55c2dfb34540-Statement", + "statement": "0x55c2dfb34550-ActionStmt", + "source": "ptr_lbound => null()" + }, + { + "id": "0x55c2dfb34550-ActionStmt", + "variantKey": "PointerAssignmentStmt", + "PointerAssignmentStmt": "0x55c2dfb34400-PointerAssignmentStmt" + }, + { + "id": "0x55c2dfb34400-PointerAssignmentStmt", + "DataRef": "0x55c2dfb34500-DataRef", + "Bounds": "0x55c2dfb344e0-Bounds", + "Expr": "0x55c2dfb34410-Expr", + "variantKey": "BoundsSpec", + "BoundsSpec": [] + }, + { + "id": "0x55c2dfb34500-DataRef", + "variantKey": "Name", + "Name": "0x55c2dfb34500-Name" + }, + { + "id": "0x55c2dfb34500-Name", + "source": "ptr_lbound" + }, + { + "id": "0x55c2dfb344e0-Bounds", + "variantKey": "list" + }, + { + "id": "0x55c2dfb34410-Expr", + "variantKey": "FunctionReference", + "FunctionReference": "0x55c2dfb2e020-FunctionReference" + }, + { + "id": "0x55c2dfb2e020-FunctionReference", + "Call": "0x55c2dfb2e020-Call" + }, + { + "id": "0x55c2dfb2e020-Call", + "ProcedureDesignator": "0x55c2dfb2e038-ProcedureDesignator" + }, + { + "id": "0x55c2dfb2e038-ProcedureDesignator", + "variantKey": "Name", + "Name": "0x55c2dfb2e038-Name" + }, + { + "id": "0x55c2dfb2e038-Name", + "source": "null" + }, + { + "id": "0x55c2dfb346d0-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55c2dfb346d0-ExecutableConstruct" + }, + { + "id": "0x55c2dfb346d0-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55c2dfb346d0-Statement" + }, + { + "id": "0x55c2dfb346d0-Statement", + "statement": "0x55c2dfb346e0-ActionStmt", + "source": "ptr_bounds => null()" + }, + { + "id": "0x55c2dfb346e0-ActionStmt", + "variantKey": "PointerAssignmentStmt", + "PointerAssignmentStmt": "0x55c2dfb34590-PointerAssignmentStmt" + }, + { + "id": "0x55c2dfb34590-PointerAssignmentStmt", + "DataRef": "0x55c2dfb34690-DataRef", + "Bounds": "0x55c2dfb34670-Bounds", + "Expr": "0x55c2dfb345a0-Expr", + "variantKey": "BoundsSpec", + "BoundsSpec": [] + }, + { + "id": "0x55c2dfb34690-DataRef", + "variantKey": "Name", + "Name": "0x55c2dfb34690-Name" + }, + { + "id": "0x55c2dfb34690-Name", + "source": "ptr_bounds" + }, + { + "id": "0x55c2dfb34670-Bounds", + "variantKey": "list" + }, + { + "id": "0x55c2dfb345a0-Expr", + "variantKey": "FunctionReference", + "FunctionReference": "0x55c2dfb31110-FunctionReference" + }, + { + "id": "0x55c2dfb31110-FunctionReference", + "Call": "0x55c2dfb31110-Call" + }, + { + "id": "0x55c2dfb31110-Call", + "ProcedureDesignator": "0x55c2dfb31128-ProcedureDesignator" + }, + { + "id": "0x55c2dfb31128-ProcedureDesignator", + "variantKey": "Name", + "Name": "0x55c2dfb31128-Name" + }, + { + "id": "0x55c2dfb31128-Name", + "source": "null" + }, + { + "id": "0x55c2dfb34860-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55c2dfb34860-ExecutableConstruct" + }, + { + "id": "0x55c2dfb34860-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55c2dfb34860-Statement" + }, + { + "id": "0x55c2dfb34860-Statement", + "statement": "0x55c2dfb34870-ActionStmt", + "source": "ptr_2d => null()" + }, + { + "id": "0x55c2dfb34870-ActionStmt", + "variantKey": "PointerAssignmentStmt", + "PointerAssignmentStmt": "0x55c2dfb34720-PointerAssignmentStmt" + }, + { + "id": "0x55c2dfb34720-PointerAssignmentStmt", + "DataRef": "0x55c2dfb34820-DataRef", + "Bounds": "0x55c2dfb34800-Bounds", + "Expr": "0x55c2dfb34730-Expr", + "variantKey": "BoundsSpec", + "BoundsSpec": [] + }, + { + "id": "0x55c2dfb34820-DataRef", + "variantKey": "Name", + "Name": "0x55c2dfb34820-Name" + }, + { + "id": "0x55c2dfb34820-Name", + "source": "ptr_2d" + }, + { + "id": "0x55c2dfb34800-Bounds", + "variantKey": "list" + }, + { + "id": "0x55c2dfb34730-Expr", + "variantKey": "FunctionReference", + "FunctionReference": "0x55c2dfb30fc0-FunctionReference" + }, + { + "id": "0x55c2dfb30fc0-FunctionReference", + "Call": "0x55c2dfb30fc0-Call" + }, + { + "id": "0x55c2dfb30fc0-Call", + "ProcedureDesignator": "0x55c2dfb30fd8-ProcedureDesignator" + }, + { + "id": "0x55c2dfb30fd8-ProcedureDesignator", + "variantKey": "Name", + "Name": "0x55c2dfb30fd8-Name" + }, + { + "id": "0x55c2dfb30fd8-Name", + "source": "null" + }, + { + "id": "0x55c2dfb349f0-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55c2dfb349f0-ExecutableConstruct" + }, + { + "id": "0x55c2dfb349f0-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55c2dfb349f0-Statement" + }, + { + "id": "0x55c2dfb349f0-Statement", + "statement": "0x55c2dfb34a00-ActionStmt", + "source": "ptr_proc => null()" + }, + { + "id": "0x55c2dfb34a00-ActionStmt", + "variantKey": "PointerAssignmentStmt", + "PointerAssignmentStmt": "0x55c2dfb348b0-PointerAssignmentStmt" + }, + { + "id": "0x55c2dfb348b0-PointerAssignmentStmt", + "DataRef": "0x55c2dfb349b0-DataRef", + "Bounds": "0x55c2dfb34990-Bounds", + "Expr": "0x55c2dfb348c0-Expr", + "variantKey": "BoundsSpec", + "BoundsSpec": [] + }, + { + "id": "0x55c2dfb349b0-DataRef", + "variantKey": "Name", + "Name": "0x55c2dfb349b0-Name" + }, + { + "id": "0x55c2dfb349b0-Name", + "source": "ptr_proc" + }, + { + "id": "0x55c2dfb34990-Bounds", + "variantKey": "list" + }, + { + "id": "0x55c2dfb348c0-Expr", + "variantKey": "FunctionReference", + "FunctionReference": "0x55c2dfb2b850-FunctionReference" + }, + { + "id": "0x55c2dfb2b850-FunctionReference", + "Call": "0x55c2dfb2b850-Call" + }, + { + "id": "0x55c2dfb2b850-Call", + "ProcedureDesignator": "0x55c2dfb2b868-ProcedureDesignator" + }, + { + "id": "0x55c2dfb2b868-ProcedureDesignator", + "variantKey": "Name", + "Name": "0x55c2dfb2b868-Name" + }, + { + "id": "0x55c2dfb2b868-Name", + "source": "null" + }, + { + "id": "0x55c2dfb457a0-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55c2dfb457a0-ExecutableConstruct" + }, + { + "id": "0x55c2dfb457a0-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55c2dfb457a0-Statement" + }, + { + "id": "0x55c2dfb457a0-Statement", + "statement": "0x55c2dfb457b0-ActionStmt", + "source": "print *, \"9. Any pointers still associated?\", associated(ptr_scalar) .or. associated(ptr_proc)" + }, + { + "id": "0x55c2dfb457b0-ActionStmt", + "variantKey": "PrintStmt", + "PrintStmt": "0x55c2dfb45620-PrintStmt" + }, + { + "id": "0x55c2dfb45620-PrintStmt", + "Format": "0x55c2dfb45638-Format", + "OutputItem": [ + "0x55c2dfb454d0-OutputItem", + "0x55c2dfb453e0-OutputItem" + ] + }, + { + "id": "0x55c2dfb45638-Format", + "variantKey": "Star", + "Star": "0x55c2dfb45638-Star" + }, + { + "id": "0x55c2dfb45638-Star" + }, + { + "id": "0x55c2dfb454d0-OutputItem", + "variantKey": "Expr", + "Expr": "0x55c2dfb454d0-Expr" + }, + { + "id": "0x55c2dfb454d0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55c2dfb454f0-LiteralConstant" + }, + { + "id": "0x55c2dfb454f0-LiteralConstant", + "variantKey": "CharLiteralConstant", + "CharLiteralConstant": "0x55c2dfb454f0-CharLiteralConstant" + }, + { + "id": "0x55c2dfb454f0-CharLiteralConstant", + "string": "9. Any pointers still associated?" + }, + { + "id": "0x55c2dfb453e0-OutputItem", + "variantKey": "Expr", + "Expr": "0x55c2dfb453e0-Expr" + }, + { + "id": "0x55c2dfb453e0-Expr", + "variantKey": "OR", + "OR": "0x55c2dfb45400-OR" + }, + { + "id": "0x55c2dfb45400-OR", + "left": "0x55c2dfb452f0-Expr", + "right": "0x55c2dfb45210-Expr", + "op": "OR" + }, + { + "id": "0x55c2dfb452f0-Expr", + "variantKey": "FunctionReference", + "FunctionReference": "0x55c2dfb30260-FunctionReference" + }, + { + "id": "0x55c2dfb30260-FunctionReference", + "Call": "0x55c2dfb30260-Call" + }, + { + "id": "0x55c2dfb30260-Call", + "ProcedureDesignator": "0x55c2dfb30278-ProcedureDesignator", + "ActualArgSpec": [ + "0x55c2dfb34c50-ActualArgSpec" + ] + }, + { + "id": "0x55c2dfb30278-ProcedureDesignator", + "variantKey": "Name", + "Name": "0x55c2dfb30278-Name" + }, + { + "id": "0x55c2dfb30278-Name", + "source": "associated" + }, + { + "id": "0x55c2dfb34c50-ActualArgSpec", + "ActualArg": "0x55c2dfb34c50-ActualArg" + }, + { + "id": "0x55c2dfb34c50-ActualArg", + "variantKey": "Expr", + "Expr": "0x55c2dfb34b00-Expr" + }, + { + "id": "0x55c2dfb34b00-Expr", + "variantKey": "Designator", + "Designator": "0x55c2dfb34aa0-Designator" + }, + { + "id": "0x55c2dfb34aa0-Designator", + "variantKey": "DataRef", + "DataRef": "0x55c2dfb34ab0-DataRef" + }, + { + "id": "0x55c2dfb34ab0-DataRef", + "variantKey": "Name", + "Name": "0x55c2dfb34ab0-Name" + }, + { + "id": "0x55c2dfb34ab0-Name", + "source": "ptr_scalar" + }, + { + "id": "0x55c2dfb45210-Expr", + "variantKey": "FunctionReference", + "FunctionReference": "0x55c2dfb352e0-FunctionReference" + }, + { + "id": "0x55c2dfb352e0-FunctionReference", + "Call": "0x55c2dfb352e0-Call" + }, + { + "id": "0x55c2dfb352e0-Call", + "ProcedureDesignator": "0x55c2dfb352f8-ProcedureDesignator", + "ActualArgSpec": [ + "0x55c2dfb35170-ActualArgSpec" + ] + }, + { + "id": "0x55c2dfb352f8-ProcedureDesignator", + "variantKey": "Name", + "Name": "0x55c2dfb352f8-Name" + }, + { + "id": "0x55c2dfb352f8-Name", + "source": "associated" + }, + { + "id": "0x55c2dfb35170-ActualArgSpec", + "ActualArg": "0x55c2dfb35170-ActualArg" + }, + { + "id": "0x55c2dfb35170-ActualArg", + "variantKey": "Expr", + "Expr": "0x55c2dfb34f40-Expr" + }, + { + "id": "0x55c2dfb34f40-Expr", + "variantKey": "Designator", + "Designator": "0x55c2dfb34e70-Designator" + }, + { + "id": "0x55c2dfb34e70-Designator", + "variantKey": "DataRef", + "DataRef": "0x55c2dfb34e80-DataRef" + }, + { + "id": "0x55c2dfb34e80-DataRef", + "variantKey": "Name", + "Name": "0x55c2dfb34e80-Name" + }, + { + "id": "0x55c2dfb34e80-Name", + "source": "ptr_proc" + }, + { + "id": "0x55c2dfb3e1a0-InternalSubprogramPart", + "Statement": "0x55c2dfb3e1b8-Statement", + "InternalSubprogram": [ + "0x55c2dfb3a530-InternalSubprogram" + ] + }, + { + "id": "0x55c2dfb3e1b8-Statement", + "statement": "0x55c2dfb3e1c8-ContainsStmt", + "source": "contains" + }, + { + "id": "0x55c2dfb3e1c8-ContainsStmt" + }, + { + "id": "0x55c2dfb3a530-InternalSubprogram", + "variantKey": "FunctionSubprogram", + "FunctionSubprogram": "0x55c2dfb457f0-FunctionSubprogram" + }, + { + "id": "0x55c2dfb457f0-FunctionSubprogram", + "Statement": "0x55c2dfb45938-Statement", + "SpecificationPart": "0x55c2dfb45890-SpecificationPart", + "ExecutionPart": "0x55c2dfb45878-ExecutionPart", + "Statement": "0x55c2dfb457f0-Statement" + }, + { + "id": "0x55c2dfb45938-Statement", + "statement": "0x55c2dfb45948-FunctionStmt", + "source": "function double_val(x) result(res)" + }, + { + "id": "0x55c2dfb45948-FunctionStmt", + "prefix": [], + "functionName": "0x55c2dfb459a8-Name", + "paramNames": [ + "0x55c2dfb3a3a0-Name" + ], + "suffix": "0x55c2dfb45948-Suffix" + }, + { + "id": "0x55c2dfb459a8-Name", + "source": "double_val" + }, + { + "id": "0x55c2dfb3a3a0-Name", + "source": "x" + }, + { + "id": "0x55c2dfb45948-Suffix", + "resultName": "0x55c2dfb45968-Name" + }, + { + "id": "0x55c2dfb45968-Name", + "source": "res" + }, + { + "id": "0x55c2dfb45890-SpecificationPart", + "ImplicitPart": "0x55c2dfb458a8-ImplicitPart", + "DeclarationConstruct": [ + "0x55c2dfb34a50-DeclarationConstruct", + "0x55c2dfb34bf0-DeclarationConstruct" + ] + }, + { + "id": "0x55c2dfb458a8-ImplicitPart" + }, + { + "id": "0x55c2dfb34a50-DeclarationConstruct", + "variantKey": "SpecificationConstruct", + "SpecificationConstruct": "0x55c2dfb34a50-SpecificationConstruct" + }, + { + "id": "0x55c2dfb34a50-SpecificationConstruct", + "variantKey": "Statement", + "Statement": "0x55c2dfb34a50-Statement" + }, + { + "id": "0x55c2dfb34a50-Statement", + "statement": "0x55c2dfb47120-TypeDeclarationStmt", + "source": "integer, intent(in) :: x" + }, + { + "id": "0x55c2dfb47120-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x55c2dfb47150-DeclarationTypeSpec", + "AttrSpec": [ + "0x55c2dfb333f0-AttrSpec" + ], + "EntityDecl": [ + "0x55c2dfb47720-EntityDecl" + ] + }, + { + "id": "0x55c2dfb47150-DeclarationTypeSpec", + "variantKey": "IntrinsicTypeSpec", + "IntrinsicTypeSpec": "0x55c2dfb47150-IntrinsicTypeSpec" + }, + { + "id": "0x55c2dfb47150-IntrinsicTypeSpec", + "variantKey": "IntegerTypeSpec", + "IntegerTypeSpec": "0x55c2dfb47150-IntegerTypeSpec" + }, + { + "id": "0x55c2dfb47150-IntegerTypeSpec" + }, + { + "id": "0x55c2dfb333f0-AttrSpec", + "variantKey": "IntentSpec", + "IntentSpec": "0x55c2dfb333f0-IntentSpec" + }, + { + "id": "0x55c2dfb333f0-IntentSpec", + "Intent": "0x55c2dfb333f0-Intent", + "intent": "In" + }, + { + "id": "0x55c2dfb333f0-Intent", + "disambiguation": "Fortran::parser::IntentSpec::Intent", + "value": "In" + }, + { + "id": "0x55c2dfb47720-EntityDecl", + "Name": "0x55c2dfb477d8-Name" + }, + { + "id": "0x55c2dfb477d8-Name", + "source": "x" + }, + { + "id": "0x55c2dfb34bf0-DeclarationConstruct", + "variantKey": "SpecificationConstruct", + "SpecificationConstruct": "0x55c2dfb34bf0-SpecificationConstruct" + }, + { + "id": "0x55c2dfb34bf0-SpecificationConstruct", + "variantKey": "Statement", + "Statement": "0x55c2dfb34bf0-Statement" + }, + { + "id": "0x55c2dfb34bf0-Statement", + "statement": "0x55c2dfb45a30-TypeDeclarationStmt", + "source": "integer :: res" + }, + { + "id": "0x55c2dfb45a30-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x55c2dfb45a60-DeclarationTypeSpec", + "EntityDecl": [ + "0x55c2dfb2d8e0-EntityDecl" + ] + }, + { + "id": "0x55c2dfb45a60-DeclarationTypeSpec", + "variantKey": "IntrinsicTypeSpec", + "IntrinsicTypeSpec": "0x55c2dfb45a60-IntrinsicTypeSpec" + }, + { + "id": "0x55c2dfb45a60-IntrinsicTypeSpec", + "variantKey": "IntegerTypeSpec", + "IntegerTypeSpec": "0x55c2dfb45a60-IntegerTypeSpec" + }, + { + "id": "0x55c2dfb45a60-IntegerTypeSpec" + }, + { + "id": "0x55c2dfb2d8e0-EntityDecl", + "Name": "0x55c2dfb2d998-Name" + }, + { + "id": "0x55c2dfb2d998-Name", + "source": "res" + }, + { + "id": "0x55c2dfb45878-ExecutionPart", + "ExecutionPartConstruct": [ + "0x55c2dfb30f70-ExecutionPartConstruct" + ] + }, + { + "id": "0x55c2dfb45878-ExecutionPartConstruct" + }, + { + "id": "0x55c2dfb30f70-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x55c2dfb30f70-ExecutableConstruct" + }, + { + "id": "0x55c2dfb30f70-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x55c2dfb30f70-Statement" + }, + { + "id": "0x55c2dfb30f70-Statement", + "statement": "0x55c2dfb30f80-ActionStmt", + "source": "res = x * 2" + }, + { + "id": "0x55c2dfb30f80-ActionStmt", + "variantKey": "AssignmentStmt", + "AssignmentStmt": "0x55c2dfb45ca0-AssignmentStmt" + }, + { + "id": "0x55c2dfb45ca0-AssignmentStmt", + "Variable": "0x55c2dfb45d80-Variable", + "Expr": "0x55c2dfb45cb0-Expr" + }, + { + "id": "0x55c2dfb45d80-Variable", + "variantKey": "Designator", + "Designator": "0x55c2dfb2d670-Designator" + }, + { + "id": "0x55c2dfb2d670-Designator", + "variantKey": "DataRef", + "DataRef": "0x55c2dfb2d680-DataRef" + }, + { + "id": "0x55c2dfb2d680-DataRef", + "variantKey": "Name", + "Name": "0x55c2dfb2d680-Name" + }, + { + "id": "0x55c2dfb2d680-Name", + "source": "res" + }, + { + "id": "0x55c2dfb45cb0-Expr", + "variantKey": "Multiply", + "Multiply": "0x55c2dfb45cd0-Multiply" + }, + { + "id": "0x55c2dfb45cd0-Multiply", + "left": "0x55c2dfb45bc0-Expr", + "right": "0x55c2dfb2e350-Expr", + "op": "MULTIPLY" + }, + { + "id": "0x55c2dfb45bc0-Expr", + "variantKey": "Designator", + "Designator": "0x55c2dfb30d40-Designator" + }, + { + "id": "0x55c2dfb30d40-Designator", + "variantKey": "DataRef", + "DataRef": "0x55c2dfb30d50-DataRef" + }, + { + "id": "0x55c2dfb30d50-DataRef", + "variantKey": "Name", + "Name": "0x55c2dfb30d50-Name" + }, + { + "id": "0x55c2dfb30d50-Name", + "source": "x" + }, + { + "id": "0x55c2dfb2e350-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55c2dfb2e370-LiteralConstant" + }, + { + "id": "0x55c2dfb2e370-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55c2dfb2e370-IntLiteralConstant" + }, + { + "id": "0x55c2dfb2e370-IntLiteralConstant", + "CharBlock": "2" + }, + { + "id": "0x55c2dfb457f0-Statement", + "statement": "0x55c2dfb45800-EndFunctionStmt", + "source": "end function double_val" + }, + { + "id": "0x55c2dfb45800-EndFunctionStmt", + "Name": "0x55c2dfb45800-Name" + }, + { + "id": "0x55c2dfb45800-Name", + "source": "double_val" + }, + { + "id": "0x55c2dfb3e160-Statement", + "statement": "0x55c2dfb3e170-EndProgramStmt", + "source": "end program POINTER_ASSIGN" + }, + { + "id": "0x55c2dfb3e170-EndProgramStmt", + "Name": "0x55c2dfb3e170-Name" + }, + { + "id": "0x55c2dfb3e170-Name", + "source": "POINTER_ASSIGN" + } + ], + "comments": [ + { + "text": " Targets", + "stmtId": "0x55c2dfb0e110-Statement", + "trailing": false + }, + { + "text": " Pointers", + "stmtId": "0x55c2dfb44890-Statement", + "trailing": false + }, + { + "text": " Procedure Pointer", + "stmtId": "0x55c2dfb2d598-Statement", + "trailing": false + }, + { + "text": " 1. Scalar pointer assignment", + "stmtId": "0x55c2dfb43a50-Statement", + "trailing": false + }, + { + "text": " 2. Pointer-to-pointer assignment", + "stmtId": "0x55c2dfb2ea70-Statement", + "trailing": false + }, + { + "text": " 3. Whole array assignment", + "stmtId": "0x55c2dfb2f000-Statement", + "trailing": false + }, + { + "text": " 4. Array section / slice assignment", + "stmtId": "0x55c2dfb2f860-Statement", + "trailing": false + }, + { + "text": " 5. Lower bound remapping", + "stmtId": "0x55c2dfb2ff20-Statement", + "trailing": false + }, + { + "text": " 6. Full bounds remapping (same rank)", + "stmtId": "0x55c2dfb444b0-Statement", + "trailing": false + }, + { + "text": " 7. Rank remapping (1D contiguous target to 2D pointer)", + "stmtId": "0x55c2dfb31270-Statement", + "trailing": false + }, + { + "text": " 8. Procedure pointer assignment", + "stmtId": "0x55c2dfb32390-Statement", + "trailing": false + }, + { + "text": " 9. Nullification pointer assignments", + "stmtId": "0x55c2dfb324d0-Statement", + "trailing": false + } + ], + "enums": { + "Fortran::common::CUDADataAttr": [ + "Constant", + "Device", + "Managed", + "Pinned", + "Shared", + "Texture", + "Unified" + ], + "Fortran::common::CUDASubprogramAttrs": [ + "Host", + "Device", + "HostDevice", + "Global", + "Grid_Global" + ], + "Fortran::common::ImportKind": [ + "Default", + "Only", + "None", + "All" + ], + "Fortran::common::OmpDependenceKind": [ + "In", + "Out", + "Inout", + "Inoutset", + "Mutexinoutset", + "Depobj" + ], + "Fortran::common::OmpMemoryOrderType": [ + "Acq_Rel", + "Acquire", + "Relaxed", + "Release", + "Seq_Cst" + ], + "Fortran::common::OpenACCDeviceType": [ + "Star", + "Default", + "Nvidia", + "Radeon", + "Host", + "Multicore", + "None" + ], + "Fortran::parser::AccDataModifier::Modifier": [ + "ReadOnly", + "Zero" + ], + "Fortran::parser::AccessSpec::Kind": [ + "Public", + "Private" + ], + "Fortran::parser::BindEntity::Kind": [ + "Object", + "Common" + ], + "Fortran::parser::CompilerDirective::VectorLength::Kind": [ + "Auto", + "Fixed", + "Scalable" + ], + "Fortran::parser::ConnectSpec::CharExpr::Kind": [ + "Access", + "Action", + "Asynchronous", + "Blank", + "Decimal", + "Delim", + "Encoding", + "Form", + "Pad", + "Position", + "Round", + "Sign", + "Carriagecontrol", + "Convert", + "Dispose" + ], + "Fortran::parser::DefinedOperator::IntrinsicOperator": [ + "Power", + "Multiply", + "Divide", + "Add", + "Subtract", + "Concat", + "LT", + "LE", + "EQ", + "NE", + "GE", + "GT", + "NOT", + "AND", + "OR", + "EQV", + "NEQV" + ], + "Fortran::parser::ImplicitStmt::ImplicitNoneNameSpec": [ + "External", + "Type" + ], + "Fortran::parser::InquireSpec::CharVar::Kind": [ + "Access", + "Action", + "Asynchronous", + "Blank", + "Decimal", + "Delim", + "Direct", + "Encoding", + "Form", + "Formatted", + "Iomsg", + "Name", + "Pad", + "Position", + "Read", + "Readwrite", + "Round", + "Sequential", + "Sign", + "Stream", + "Status", + "Unformatted", + "Write", + "Carriagecontrol", + "Convert", + "Dispose" + ], + "Fortran::parser::InquireSpec::IntVar::Kind": [ + "Iostat", + "Nextrec", + "Number", + "Pos", + "Recl", + "Size" + ], + "Fortran::parser::InquireSpec::LogVar::Kind": [ + "Exist", + "Named", + "Opened", + "Pending" + ], + "Fortran::parser::IntentSpec::Intent": [ + "In", + "Out", + "InOut" + ], + "Fortran::parser::IoControlSpec::CharExpr::Kind": [ + "Advance", + "Blank", + "Decimal", + "Delim", + "Pad", + "Round", + "Sign" + ], + "Fortran::parser::ReductionOperator::Operator": [ + "Plus", + "Multiply", + "Max", + "Min", + "Iand", + "Ior", + "Ieor", + "And", + "Or", + "Eqv", + "Neqv" + ], + "Fortran::parser::OmpAccessGroup::Value": [ + "Cgroup" + ], + "Fortran::parser::OmpAdjustArgsClause::OmpAdjustOp::Value": [ + "Nothing", + "Need_Device_Ptr" + ], + "Fortran::parser::OmpAlwaysModifier::Value": [ + "Always" + ], + "Fortran::parser::OmpAtClause::ActionTime": [ + "Compilation", + "Execution" + ], + "Fortran::parser::OmpAttachModifier::Value": [ + "Always", + "Never", + "Auto" + ], + "Fortran::parser::OmpAutomapModifier::Value": [ + "Automap" + ], + "Fortran::parser::OmpBindClause::Binding": [ + "Parallel", + "Teams", + "Thread" + ], + "Fortran::parser::OmpChunkModifier::Value": [ + "Simd" + ], + "Fortran::parser::OmpCloseModifier::Value": [ + "Close" + ], + "Fortran::parser::OmpDefaultClause::DataSharingAttribute": [ + "Private", + "Firstprivate", + "Shared", + "None" + ], + "Fortran::parser::OmpDefaultmapClause::ImplicitBehavior": [ + "Alloc", + "To", + "From", + "Tofrom", + "Firstprivate", + "None", + "Default", + "Present" + ], + "Fortran::parser::OmpDeleteModifier::Value": [ + "Delete" + ], + "Fortran::parser::OmpDependenceType::Value": [ + "Sink", + "Source" + ], + "Fortran::parser::OmpDeviceModifier::Value": [ + "Ancestor", + "Device_Num" + ], + "Fortran::parser::OmpDeviceTypeClause::DeviceTypeDescription": [ + "Any", + "Host", + "Nohost" + ], + "Fortran::parser::OmpDirectiveSpecification::Flag": [ + "DeprecatedSyntax", + "CrossesLabelDo" + ], + "Fortran::parser::OmpExpectation::Value": [ + "Present" + ], + "Fortran::parser::OmpInteropType::Value": [ + "Target", + "Targetsync" + ], + "Fortran::parser::OmpLastprivateModifier::Value": [ + "Conditional" + ], + "Fortran::parser::OmpLinearModifier::Value": [ + "Ref", + "Uval", + "Val" + ], + "Fortran::parser::OmpMapType::Value": [ + "Alloc", + "Delete", + "From", + "Release", + "Storage", + "To", + "Tofrom" + ], + "Fortran::parser::OmpMapTypeModifier::Value": [ + "Always", + "Close", + "Present", + "Ompx_Hold" + ], + "Fortran::parser::OmpObject::Invalid::Kind": [ + "BlankCommonBlock" + ], + "Fortran::parser::OmpOrderClause::Ordering": [ + "Concurrent" + ], + "Fortran::parser::OmpOrderingModifier::Value": [ + "Monotonic", + "Nonmonotonic", + "Simd" + ], + "Fortran::parser::OmpOrderModifier::Value": [ + "Reproducible", + "Unconstrained" + ], + "Fortran::parser::OmpPrescriptiveness::Value": [ + "Strict" + ], + "Fortran::parser::OmpPresentModifier::Value": [ + "Present" + ], + "Fortran::parser::OmpProcBindClause::AffinityPolicy": [ + "Close", + "Master", + "Spread", + "Primary" + ], + "Fortran::parser::OmpReductionModifier::Value": [ + "Default", + "Inscan", + "Task" + ], + "Fortran::parser::OmpRefModifier::Value": [ + "Ref_Ptee", + "Ref_Ptr", + "Ref_Ptr_Ptee" + ], + "Fortran::parser::OmpScheduleClause::Kind": [ + "Static", + "Dynamic", + "Guided", + "Auto", + "Runtime" + ], + "Fortran::parser::OmpSelfModifier::Value": [ + "Self" + ], + "Fortran::parser::OmpSeverityClause::SevLevel": [ + "Fatal", + "Warning" + ], + "Fortran::parser::OmpThreadsetClause::ThreadsetPolicy": [ + "Omp_Pool", + "Omp_Team" + ], + "Fortran::parser::OmpTraitSelectorName::Value": [ + "Arch", + "Atomic_Default_Mem_Order", + "Condition", + "Device_Num", + "Extension", + "Isa", + "Kind", + "Requires", + "Simd", + "Uid", + "Vendor" + ], + "Fortran::parser::OmpTraitSetSelectorName::Value": [ + "Construct", + "Device", + "Implementation", + "Target_Device", + "User" + ], + "Fortran::parser::OmpVariableCategory::Value": [ + "Aggregate", + "All", + "Allocatable", + "Pointer", + "Scalar" + ], + "Fortran::parser::OmpxHoldModifier::Value": [ + "Ompx_Hold" + ], + "Fortran::parser::ProcedureStmt::Kind": [ + "ModuleProcedure", + "Procedure" + ], + "Fortran::parser::SavedEntity::Kind": [ + "Entity", + "Common" + ], + "Fortran::parser::StopStmt::Kind": [ + "Stop", + "ErrorStop" + ], + "Fortran::parser::UseStmt::ModuleNature": [ + "Intrinsic", + "Non_Intrinsic" + ] + } +} diff --git a/FortranParser/resources-test/fortran/parser/stmt/return.expected.f90 b/FortranParser/resources-test/fortran/parser/stmt/return.expected.f90 new file mode 100644 index 00000000..be421a8d --- /dev/null +++ b/FortranParser/resources-test/fortran/parser/stmt/return.expected.f90 @@ -0,0 +1,6 @@ +SUBROUTINE check_positive(n, *) + INTEGER, INTENT(IN) :: n + + IF (n < 0) RETURN 1 ! Exit and jump to 1st label argument (*) + RETURN ! Exit normally +END SUBROUTINE check_positive \ No newline at end of file diff --git a/FortranParser/resources-test/fortran/parser/stmt/return.f90 b/FortranParser/resources-test/fortran/parser/stmt/return.f90 new file mode 100644 index 00000000..3ca97627 --- /dev/null +++ b/FortranParser/resources-test/fortran/parser/stmt/return.f90 @@ -0,0 +1,6 @@ +subroutine check_positive(n, *) + integer, intent(in) :: n + + if (n < 0) return 1 ! Exit and jump to 1st label argument (*) + return ! Exit normally +end subroutine check_positive \ No newline at end of file diff --git a/FortranParser/resources-test/fortran/parser/stmt/return.json b/FortranParser/resources-test/fortran/parser/stmt/return.json new file mode 100644 index 00000000..cbd8e391 --- /dev/null +++ b/FortranParser/resources-test/fortran/parser/stmt/return.json @@ -0,0 +1,657 @@ +{ + "fileExtension": "f90", + "nodes": [ + { + "id": "0x555915b0df00-Program", + "ProgramUnit": [ + "0x555915b42c70-ProgramUnit" + ] + }, + { + "id": "0x555915b42c70-ProgramUnit", + "variantKey": "SubroutineSubprogram", + "SubroutineSubprogram": "0x555915b3baf0-SubroutineSubprogram" + }, + { + "id": "0x555915b3baf0-SubroutineSubprogram", + "Statement": "0x555915b3bc38-Statement", + "SpecificationPart": "0x555915b3bb90-SpecificationPart", + "ExecutionPart": "0x555915b3bb78-ExecutionPart", + "Statement": "0x555915b3baf0-Statement" + }, + { + "id": "0x555915b3bc38-Statement", + "statement": "0x555915b3bc48-SubroutineStmt", + "source": "subroutine check_positive(n, *)" + }, + { + "id": "0x555915b3bc48-SubroutineStmt", + "Name": "0x555915b3bc80-Name", + "DummyArg": [ + "0x555915b50a00-DummyArg", + "0x555915b50320-DummyArg" + ] + }, + { + "id": "0x555915b3bc80-Name", + "source": "check_positive" + }, + { + "id": "0x555915b50a00-DummyArg", + "variantKey": "Name", + "Name": "0x555915b50a00-Name" + }, + { + "id": "0x555915b50a00-Name", + "source": "n" + }, + { + "id": "0x555915b50320-DummyArg", + "variantKey": "Star", + "Star": "0x555915b50320-Star" + }, + { + "id": "0x555915b50320-Star" + }, + { + "id": "0x555915b3bb90-SpecificationPart", + "ImplicitPart": "0x555915b3bba8-ImplicitPart", + "DeclarationConstruct": [ + "0x555915b1b170-DeclarationConstruct" + ] + }, + { + "id": "0x555915b3bba8-ImplicitPart" + }, + { + "id": "0x555915b1b170-DeclarationConstruct", + "variantKey": "SpecificationConstruct", + "SpecificationConstruct": "0x555915b1b170-SpecificationConstruct" + }, + { + "id": "0x555915b1b170-SpecificationConstruct", + "variantKey": "Statement", + "Statement": "0x555915b1b170-Statement" + }, + { + "id": "0x555915b1b170-Statement", + "statement": "0x555915b4b180-TypeDeclarationStmt", + "source": "integer, intent(in) :: n" + }, + { + "id": "0x555915b4b180-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x555915b4b1b0-DeclarationTypeSpec", + "AttrSpec": [ + "0x555915b35100-AttrSpec" + ], + "EntityDecl": [ + "0x555915ac3260-EntityDecl" + ] + }, + { + "id": "0x555915b4b1b0-DeclarationTypeSpec", + "variantKey": "IntrinsicTypeSpec", + "IntrinsicTypeSpec": "0x555915b4b1b0-IntrinsicTypeSpec" + }, + { + "id": "0x555915b4b1b0-IntrinsicTypeSpec", + "variantKey": "IntegerTypeSpec", + "IntegerTypeSpec": "0x555915b4b1b0-IntegerTypeSpec" + }, + { + "id": "0x555915b4b1b0-IntegerTypeSpec" + }, + { + "id": "0x555915b35100-AttrSpec", + "variantKey": "IntentSpec", + "IntentSpec": "0x555915b35100-IntentSpec" + }, + { + "id": "0x555915b35100-IntentSpec", + "Intent = In": "0x555915b35100-Intent = In", + "intent": "In" + }, + { + "id": "0x555915b35100-Intent = In", + "disambiguation": "Fortran::parser::IntentSpec::Intent", + "value": "In" + }, + { + "id": "0x555915ac3260-EntityDecl", + "Name": "0x555915ac3318-Name" + }, + { + "id": "0x555915ac3318-Name", + "source": "n" + }, + { + "id": "0x555915b3bb78-ExecutionPart", + "ExecutionPartConstruct": [ + "0x555915b38b00-ExecutionPartConstruct", + "0x555915b1ada0-ExecutionPartConstruct" + ] + }, + { + "id": "0x555915b3bb78-ExecutionPartConstruct" + }, + { + "id": "0x555915b38b00-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x555915b38b00-ExecutableConstruct" + }, + { + "id": "0x555915b38b00-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x555915b38b00-Statement" + }, + { + "id": "0x555915b38b00-Statement", + "statement": "0x555915b38b10-ActionStmt", + "source": "if(n < 0) return 1" + }, + { + "id": "0x555915b38b10-ActionStmt", + "variantKey": "IfStmt", + "IfStmt": "0x555915b42c30-IfStmt" + }, + { + "id": "0x555915b42c30-IfStmt", + "Expr": "0x555915b4d0c0-Expr", + "UnlabeledStatement": "0x555915b42c30-UnlabeledStatement" + }, + { + "id": "0x555915b4d0c0-Expr", + "variantKey": "LT", + "LT": "0x555915b4d0e0-LT" + }, + { + "id": "0x555915b4d0e0-LT", + "left": "0x555915b388c0-Expr", + "right": "0x555915b4d1a0-Expr", + "op": "LT" + }, + { + "id": "0x555915b388c0-Expr", + "variantKey": "Designator", + "Designator": "0x555915b4d750-Designator" + }, + { + "id": "0x555915b4d750-Designator", + "variantKey": "DataRef", + "DataRef": "0x555915b4d760-DataRef" + }, + { + "id": "0x555915b4d760-DataRef", + "variantKey": "Name", + "Name": "0x555915b4d760-Name" + }, + { + "id": "0x555915b4d760-Name", + "source": "n" + }, + { + "id": "0x555915b4d1a0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x555915b4d1c0-LiteralConstant" + }, + { + "id": "0x555915b4d1c0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x555915b4d1c0-IntLiteralConstant" + }, + { + "id": "0x555915b4d1c0-IntLiteralConstant", + "CharBlock": "0" + }, + { + "id": "0x555915b42c30-UnlabeledStatement", + "statement": "0x555915b42c40-ActionStmt", + "source": "return 1" + }, + { + "id": "0x555915b42c40-ActionStmt", + "variantKey": "ReturnStmt", + "ReturnStmt": "0x555915b42b90-ReturnStmt" + }, + { + "id": "0x555915b42b90-ReturnStmt", + "Expr": "0x555915aad790-Expr" + }, + { + "id": "0x555915aad790-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x555915aad7b0-LiteralConstant" + }, + { + "id": "0x555915aad7b0-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x555915aad7b0-IntLiteralConstant" + }, + { + "id": "0x555915aad7b0-IntLiteralConstant", + "CharBlock": "1" + }, + { + "id": "0x555915b1ada0-ExecutionPartConstruct", + "variantKey": "ExecutableConstruct", + "ExecutableConstruct": "0x555915b1ada0-ExecutableConstruct" + }, + { + "id": "0x555915b1ada0-ExecutableConstruct", + "variantKey": "Statement", + "Statement": "0x555915b1ada0-Statement" + }, + { + "id": "0x555915b1ada0-Statement", + "statement": "0x555915b1adb0-ActionStmt", + "source": "return" + }, + { + "id": "0x555915b1adb0-ActionStmt", + "variantKey": "ReturnStmt", + "ReturnStmt": "0x555915b4fd10-ReturnStmt" + }, + { + "id": "0x555915b4fd10-ReturnStmt" + }, + { + "id": "0x555915b3baf0-Statement", + "statement": "0x555915b3bb00-EndSubroutineStmt", + "source": "end subroutine check_positive" + }, + { + "id": "0x555915b3bb00-EndSubroutineStmt", + "Name": "0x555915b3bb00-Name" + }, + { + "id": "0x555915b3bb00-Name", + "source": "check_positive" + } + ], + "comments": [ + { + "text": " Exit and jump to 1st label argument (*)", + "stmtId": "0x555915b38b00-Statement", + "trailing": true + }, + { + "text": " Exit normally", + "stmtId": "0x555915b1ada0-Statement", + "trailing": true + } + ], + "enums": { + "Fortran::common::CUDADataAttr": [ + "Constant", + "Device", + "Managed", + "Pinned", + "Shared", + "Texture", + "Unified" + ], + "Fortran::common::CUDASubprogramAttrs": [ + "Host", + "Device", + "HostDevice", + "Global", + "Grid_Global" + ], + "Fortran::common::ImportKind": [ + "Default", + "Only", + "None", + "All" + ], + "Fortran::common::OmpDependenceKind": [ + "In", + "Out", + "Inout", + "Inoutset", + "Mutexinoutset", + "Depobj" + ], + "Fortran::common::OmpMemoryOrderType": [ + "Acq_Rel", + "Acquire", + "Relaxed", + "Release", + "Seq_Cst" + ], + "Fortran::common::OpenACCDeviceType": [ + "Star", + "Default", + "Nvidia", + "Radeon", + "Host", + "Multicore", + "None" + ], + "Fortran::parser::AccDataModifier::Modifier": [ + "ReadOnly", + "Zero" + ], + "Fortran::parser::AccessSpec::Kind": [ + "Public", + "Private" + ], + "Fortran::parser::BindEntity::Kind": [ + "Object", + "Common" + ], + "Fortran::parser::CompilerDirective::VectorLength::Kind": [ + "Auto", + "Fixed", + "Scalable" + ], + "Fortran::parser::ConnectSpec::CharExpr::Kind": [ + "Access", + "Action", + "Asynchronous", + "Blank", + "Decimal", + "Delim", + "Encoding", + "Form", + "Pad", + "Position", + "Round", + "Sign", + "Carriagecontrol", + "Convert", + "Dispose" + ], + "Fortran::parser::DefinedOperator::IntrinsicOperator": [ + "Power", + "Multiply", + "Divide", + "Add", + "Subtract", + "Concat", + "LT", + "LE", + "EQ", + "NE", + "GE", + "GT", + "NOT", + "AND", + "OR", + "EQV", + "NEQV" + ], + "Fortran::parser::ImplicitStmt::ImplicitNoneNameSpec": [ + "External", + "Type" + ], + "Fortran::parser::InquireSpec::CharVar::Kind": [ + "Access", + "Action", + "Asynchronous", + "Blank", + "Decimal", + "Delim", + "Direct", + "Encoding", + "Form", + "Formatted", + "Iomsg", + "Name", + "Pad", + "Position", + "Read", + "Readwrite", + "Round", + "Sequential", + "Sign", + "Stream", + "Status", + "Unformatted", + "Write", + "Carriagecontrol", + "Convert", + "Dispose" + ], + "Fortran::parser::InquireSpec::IntVar::Kind": [ + "Iostat", + "Nextrec", + "Number", + "Pos", + "Recl", + "Size" + ], + "Fortran::parser::InquireSpec::LogVar::Kind": [ + "Exist", + "Named", + "Opened", + "Pending" + ], + "Fortran::parser::IntentSpec::Intent": [ + "In", + "Out", + "InOut" + ], + "Fortran::parser::IoControlSpec::CharExpr::Kind": [ + "Advance", + "Blank", + "Decimal", + "Delim", + "Pad", + "Round", + "Sign" + ], + "Fortran::parser::ReductionOperator::Operator": [ + "Plus", + "Multiply", + "Max", + "Min", + "Iand", + "Ior", + "Ieor", + "And", + "Or", + "Eqv", + "Neqv" + ], + "Fortran::parser::OmpAccessGroup::Value": [ + "Cgroup" + ], + "Fortran::parser::OmpAdjustArgsClause::OmpAdjustOp::Value": [ + "Nothing", + "Need_Device_Ptr" + ], + "Fortran::parser::OmpAlwaysModifier::Value": [ + "Always" + ], + "Fortran::parser::OmpAtClause::ActionTime": [ + "Compilation", + "Execution" + ], + "Fortran::parser::OmpAttachModifier::Value": [ + "Always", + "Never", + "Auto" + ], + "Fortran::parser::OmpAutomapModifier::Value": [ + "Automap" + ], + "Fortran::parser::OmpBindClause::Binding": [ + "Parallel", + "Teams", + "Thread" + ], + "Fortran::parser::OmpChunkModifier::Value": [ + "Simd" + ], + "Fortran::parser::OmpCloseModifier::Value": [ + "Close" + ], + "Fortran::parser::OmpDefaultClause::DataSharingAttribute": [ + "Private", + "Firstprivate", + "Shared", + "None" + ], + "Fortran::parser::OmpDefaultmapClause::ImplicitBehavior": [ + "Alloc", + "To", + "From", + "Tofrom", + "Firstprivate", + "None", + "Default", + "Present" + ], + "Fortran::parser::OmpDeleteModifier::Value": [ + "Delete" + ], + "Fortran::parser::OmpDependenceType::Value": [ + "Sink", + "Source" + ], + "Fortran::parser::OmpDeviceModifier::Value": [ + "Ancestor", + "Device_Num" + ], + "Fortran::parser::OmpDeviceTypeClause::DeviceTypeDescription": [ + "Any", + "Host", + "Nohost" + ], + "Fortran::parser::OmpDirectiveSpecification::Flag": [ + "DeprecatedSyntax", + "CrossesLabelDo" + ], + "Fortran::parser::OmpExpectation::Value": [ + "Present" + ], + "Fortran::parser::OmpInteropType::Value": [ + "Target", + "Targetsync" + ], + "Fortran::parser::OmpLastprivateModifier::Value": [ + "Conditional" + ], + "Fortran::parser::OmpLinearModifier::Value": [ + "Ref", + "Uval", + "Val" + ], + "Fortran::parser::OmpMapType::Value": [ + "Alloc", + "Delete", + "From", + "Release", + "Storage", + "To", + "Tofrom" + ], + "Fortran::parser::OmpMapTypeModifier::Value": [ + "Always", + "Close", + "Present", + "Ompx_Hold" + ], + "Fortran::parser::OmpObject::Invalid::Kind": [ + "BlankCommonBlock" + ], + "Fortran::parser::OmpOrderClause::Ordering": [ + "Concurrent" + ], + "Fortran::parser::OmpOrderingModifier::Value": [ + "Monotonic", + "Nonmonotonic", + "Simd" + ], + "Fortran::parser::OmpOrderModifier::Value": [ + "Reproducible", + "Unconstrained" + ], + "Fortran::parser::OmpPrescriptiveness::Value": [ + "Strict" + ], + "Fortran::parser::OmpPresentModifier::Value": [ + "Present" + ], + "Fortran::parser::OmpProcBindClause::AffinityPolicy": [ + "Close", + "Master", + "Spread", + "Primary" + ], + "Fortran::parser::OmpReductionModifier::Value": [ + "Default", + "Inscan", + "Task" + ], + "Fortran::parser::OmpRefModifier::Value": [ + "Ref_Ptee", + "Ref_Ptr", + "Ref_Ptr_Ptee" + ], + "Fortran::parser::OmpScheduleClause::Kind": [ + "Static", + "Dynamic", + "Guided", + "Auto", + "Runtime" + ], + "Fortran::parser::OmpSelfModifier::Value": [ + "Self" + ], + "Fortran::parser::OmpSeverityClause::SevLevel": [ + "Fatal", + "Warning" + ], + "Fortran::parser::OmpThreadsetClause::ThreadsetPolicy": [ + "Omp_Pool", + "Omp_Team" + ], + "Fortran::parser::OmpTraitSelectorName::Value": [ + "Arch", + "Atomic_Default_Mem_Order", + "Condition", + "Device_Num", + "Extension", + "Isa", + "Kind", + "Requires", + "Simd", + "Uid", + "Vendor" + ], + "Fortran::parser::OmpTraitSetSelectorName::Value": [ + "Construct", + "Device", + "Implementation", + "Target_Device", + "User" + ], + "Fortran::parser::OmpVariableCategory::Value": [ + "Aggregate", + "All", + "Allocatable", + "Pointer", + "Scalar" + ], + "Fortran::parser::OmpxHoldModifier::Value": [ + "Ompx_Hold" + ], + "Fortran::parser::ProcedureStmt::Kind": [ + "ModuleProcedure", + "Procedure" + ], + "Fortran::parser::SavedEntity::Kind": [ + "Entity", + "Common" + ], + "Fortran::parser::StopStmt::Kind": [ + "Stop", + "ErrorStop" + ], + "Fortran::parser::UseStmt::ModuleNature": [ + "Intrinsic", + "Non_Intrinsic" + ] + } +} diff --git a/FortranParser/resources-test/fortran/parser/stmt/stop.expected.f90 b/FortranParser/resources-test/fortran/parser/stmt/stop.expected.f90 index 8bee84e1..17d47877 100644 --- a/FortranParser/resources-test/fortran/parser/stmt/stop.expected.f90 +++ b/FortranParser/resources-test/fortran/parser/stmt/stop.expected.f90 @@ -12,5 +12,5 @@ PROGRAM STOP ERROR STOP "Fatal error: Something went terribly wrong!" PRINT *, "Executing quiet STOP..." - STOP 55, QUIET = .true. + STOP 55, QUIET = .TRUE. END PROGRAM STOP \ No newline at end of file diff --git a/FortranParser/resources-test/fortran/parser/subroutine.expected.f90 b/FortranParser/resources-test/fortran/parser/subroutine.expected.f90 index 4043bc3c..fb5650c7 100644 --- a/FortranParser/resources-test/fortran/parser/subroutine.expected.f90 +++ b/FortranParser/resources-test/fortran/parser/subroutine.expected.f90 @@ -1,7 +1,7 @@ SUBROUTINE add_numbers(a, b, result, useless) - INTEGER, intent(in) :: a, b - INTEGER, intent(out) :: result - INTEGER, intent(inout) :: useless + INTEGER, INTENT(IN) :: a, b + INTEGER, INTENT(OUT) :: result + INTEGER, INTENT(INOUT) :: useless result = a + b END SUBROUTINE add_numbers diff --git a/FortranParser/resources-test/fortran/parser/type/length_selector.expected.f90 b/FortranParser/resources-test/fortran/parser/type/length_selector.expected.f90 new file mode 100644 index 00000000..159a339d --- /dev/null +++ b/FortranParser/resources-test/fortran/parser/type/length_selector.expected.f90 @@ -0,0 +1,18 @@ +PROGRAM LENGTH_SELECTOR + INTEGER, PARAMETER :: c_kind = selected_char_kind("DEFAULT") + + CHARACTER(LEN=10) :: c_len_keyword ! Explicit keyword + CHARACTER(LEN=10) :: c_len_positional ! Positional shorthand + CHARACTER*10 :: c_len_legacy ! Legacy asterisk notation + + CHARACTER(KIND=c_kind) :: c_kind_only + + CHARACTER(KIND=c_kind, LEN=20) :: c_both_keywords ! Standard keyword order + CHARACTER(KIND=c_kind, LEN=20) :: c_swapped_kw ! Reversed keyword order + CHARACTER(KIND=c_kind, LEN=20) :: c_both_positional ! Positional (len, kind) + CHARACTER(KIND=c_kind, LEN=20) :: c_mixed ! Positional len + keyword kind + + CHARACTER(LEN=:), ALLOCATABLE :: c_deferred ! Deferred length character + + CHARACTER(LEN=*), PARAMETER :: c_const = "Hello, Fortran!" ! Constant length character +END PROGRAM LENGTH_SELECTOR \ No newline at end of file diff --git a/FortranParser/resources-test/fortran/parser/type/length_selector.f90 b/FortranParser/resources-test/fortran/parser/type/length_selector.f90 new file mode 100644 index 00000000..65000bf4 --- /dev/null +++ b/FortranParser/resources-test/fortran/parser/type/length_selector.f90 @@ -0,0 +1,18 @@ +program length_selector + integer, parameter :: c_kind = selected_char_kind('DEFAULT') + + character(len=10) :: c_len_keyword ! Explicit keyword + character(10) :: c_len_positional ! Positional shorthand + character*10 :: c_len_legacy ! Legacy asterisk notation + + character(kind=c_kind) :: c_kind_only + + character(len=20, kind=c_kind) :: c_both_keywords ! Standard keyword order + character(kind=c_kind, len=20) :: c_swapped_kw ! Reversed keyword order + character(20, c_kind) :: c_both_positional ! Positional (len, kind) + character(20, kind=c_kind) :: c_mixed ! Positional len + keyword kind + + character(len=:), allocatable :: c_deferred ! Deferred length character + + character(len=*), parameter :: C_CONST = "Hello, Fortran!" ! Constant length character +end program length_selector \ No newline at end of file diff --git a/FortranParser/resources-test/fortran/parser/type/length_selector.json b/FortranParser/resources-test/fortran/parser/type/length_selector.json new file mode 100644 index 00000000..32d6c543 --- /dev/null +++ b/FortranParser/resources-test/fortran/parser/type/length_selector.json @@ -0,0 +1,1418 @@ +{ + "fileExtension": "f90", + "nodes": [ + { + "id": "0x55e3c58aff00-Program", + "ProgramUnit": [ + "0x55e3c58ec110-ProgramUnit" + ] + }, + { + "id": "0x55e3c58ec110-ProgramUnit", + "variantKey": "MainProgram", + "MainProgram": "0x55e3c58ecfd0-MainProgram" + }, + { + "id": "0x55e3c58ecfd0-MainProgram", + "Statement": "0x55e3c58ed118-Statement", + "SpecificationPart": "0x55e3c58ed070-SpecificationPart", + "ExecutionPart": "0x55e3c58ed058-ExecutionPart", + "Statement": "0x55e3c58ecfd0-Statement" + }, + { + "id": "0x55e3c58ed118-Statement", + "statement": "0x55e3c58ed128-ProgramStmt", + "source": "program LENGTH_SELECTOR" + }, + { + "id": "0x55e3c58ed128-ProgramStmt", + "Name": "0x55e3c58ed128-Name" + }, + { + "id": "0x55e3c58ed128-Name", + "source": "LENGTH_SELECTOR" + }, + { + "id": "0x55e3c58ed070-SpecificationPart", + "ImplicitPart": "0x55e3c58ed088-ImplicitPart", + "DeclarationConstruct": [ + "0x55e3c58daf20-DeclarationConstruct", + "0x55e3c58bd110-DeclarationConstruct", + "0x55e3c58bcda0-DeclarationConstruct", + "0x55e3c58bd170-DeclarationConstruct", + "0x55e3c58dbcf0-DeclarationConstruct", + "0x55e3c58dc080-DeclarationConstruct", + "0x55e3c58dc6f0-DeclarationConstruct", + "0x55e3c58dc2a0-DeclarationConstruct", + "0x55e3c58dce10-DeclarationConstruct", + "0x55e3c58dc3e0-DeclarationConstruct", + "0x55e3c58dd1b0-DeclarationConstruct" + ] + }, + { + "id": "0x55e3c58ed088-ImplicitPart" + }, + { + "id": "0x55e3c58daf20-DeclarationConstruct", + "variantKey": "SpecificationConstruct", + "SpecificationConstruct": "0x55e3c58daf20-SpecificationConstruct" + }, + { + "id": "0x55e3c58daf20-SpecificationConstruct", + "variantKey": "Statement", + "Statement": "0x55e3c58daf20-Statement" + }, + { + "id": "0x55e3c58daf20-Statement", + "statement": "0x55e3c58ec9a0-TypeDeclarationStmt", + "source": "integer, parameter :: c_kind = selected_char_kind('DEFAULT')" + }, + { + "id": "0x55e3c58ec9a0-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x55e3c58ec9d0-DeclarationTypeSpec", + "AttrSpec": [ + "0x55e3c58f3e30-AttrSpec" + ], + "EntityDecl": [ + "0x55e3c58dad50-EntityDecl" + ] + }, + { + "id": "0x55e3c58ec9d0-DeclarationTypeSpec", + "variantKey": "IntrinsicTypeSpec", + "IntrinsicTypeSpec": "0x55e3c58ec9d0-IntrinsicTypeSpec" + }, + { + "id": "0x55e3c58ec9d0-IntrinsicTypeSpec", + "variantKey": "IntegerTypeSpec", + "IntegerTypeSpec": "0x55e3c58ec9d0-IntegerTypeSpec" + }, + { + "id": "0x55e3c58ec9d0-IntegerTypeSpec" + }, + { + "id": "0x55e3c58f3e30-AttrSpec", + "variantKey": "Parameter", + "Parameter": "0x55e3c58f3e30-Parameter" + }, + { + "id": "0x55e3c58f3e30-Parameter", + "keyword": "Parameter" + }, + { + "id": "0x55e3c58dad50-EntityDecl", + "Name": "0x55e3c58dae08-Name", + "Initialization": "0x55e3c58dad50-Initialization" + }, + { + "id": "0x55e3c58dae08-Name", + "source": "c_kind" + }, + { + "id": "0x55e3c58dad50-Initialization", + "variantKey": "Expr", + "Expr": "0x55e3c58dac60-Expr" + }, + { + "id": "0x55e3c58dac60-Expr", + "variantKey": "FunctionReference", + "FunctionReference": "0x55e3c58dab80-FunctionReference" + }, + { + "id": "0x55e3c58dab80-FunctionReference", + "Call": "0x55e3c58dab80-Call" + }, + { + "id": "0x55e3c58dab80-Call", + "ProcedureDesignator": "0x55e3c58dab98-ProcedureDesignator", + "ActualArgSpec": [ + "0x55e3c58ed170-ActualArgSpec" + ] + }, + { + "id": "0x55e3c58dab98-ProcedureDesignator", + "variantKey": "Name", + "Name": "0x55e3c58dab98-Name" + }, + { + "id": "0x55e3c58dab98-Name", + "source": "selected_char_kind" + }, + { + "id": "0x55e3c58ed170-ActualArgSpec", + "ActualArg": "0x55e3c58ed170-ActualArg" + }, + { + "id": "0x55e3c58ed170-ActualArg", + "variantKey": "Expr", + "Expr": "0x55e3c584f790-Expr" + }, + { + "id": "0x55e3c584f790-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55e3c584f7b0-LiteralConstant" + }, + { + "id": "0x55e3c584f7b0-LiteralConstant", + "variantKey": "CharLiteralConstant", + "CharLiteralConstant": "0x55e3c584f7b0-CharLiteralConstant" + }, + { + "id": "0x55e3c584f7b0-CharLiteralConstant", + "string": "DEFAULT" + }, + { + "id": "0x55e3c58bd110-DeclarationConstruct", + "variantKey": "SpecificationConstruct", + "SpecificationConstruct": "0x55e3c58bd110-SpecificationConstruct" + }, + { + "id": "0x55e3c58bd110-SpecificationConstruct", + "variantKey": "Statement", + "Statement": "0x55e3c58bd110-Statement" + }, + { + "id": "0x55e3c58bd110-Statement", + "statement": "0x55e3c58eca20-TypeDeclarationStmt", + "source": "character(len=10) :: c_len_keyword" + }, + { + "id": "0x55e3c58eca20-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x55e3c58eca50-DeclarationTypeSpec", + "EntityDecl": [ + "0x55e3c58db0e0-EntityDecl" + ] + }, + { + "id": "0x55e3c58eca50-DeclarationTypeSpec", + "variantKey": "IntrinsicTypeSpec", + "IntrinsicTypeSpec": "0x55e3c58eca50-IntrinsicTypeSpec" + }, + { + "id": "0x55e3c58eca50-IntrinsicTypeSpec", + "variantKey": "Character", + "Character": "0x55e3c58eca50-Character" + }, + { + "id": "0x55e3c58eca50-Character", + "CharSelector": "0x55e3c58eca50-CharSelector" + }, + { + "id": "0x55e3c58eca50-CharSelector", + "variantKey": "LengthSelector", + "LengthSelector": "0x55e3c58eca50-LengthSelector" + }, + { + "id": "0x55e3c58eca50-LengthSelector", + "variantKey": "TypeParamValue", + "TypeParamValue": "0x55e3c58eca50-TypeParamValue" + }, + { + "id": "0x55e3c58eca50-TypeParamValue", + "variantKey": "Expr", + "Expr": "0x55e3c58daff0-Expr" + }, + { + "id": "0x55e3c58daff0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55e3c58db010-LiteralConstant" + }, + { + "id": "0x55e3c58db010-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55e3c58db010-IntLiteralConstant" + }, + { + "id": "0x55e3c58db010-IntLiteralConstant", + "CharBlock": "10" + }, + { + "id": "0x55e3c58db0e0-EntityDecl", + "Name": "0x55e3c58db198-Name" + }, + { + "id": "0x55e3c58db198-Name", + "source": "c_len_keyword" + }, + { + "id": "0x55e3c58bcda0-DeclarationConstruct", + "variantKey": "SpecificationConstruct", + "SpecificationConstruct": "0x55e3c58bcda0-SpecificationConstruct" + }, + { + "id": "0x55e3c58bcda0-SpecificationConstruct", + "variantKey": "Statement", + "Statement": "0x55e3c58bcda0-Statement" + }, + { + "id": "0x55e3c58bcda0-Statement", + "statement": "0x55e3c58da780-TypeDeclarationStmt", + "source": "character(10) :: c_len_positional" + }, + { + "id": "0x55e3c58da780-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x55e3c58da7b0-DeclarationTypeSpec", + "EntityDecl": [ + "0x55e3c58db330-EntityDecl" + ] + }, + { + "id": "0x55e3c58da7b0-DeclarationTypeSpec", + "variantKey": "IntrinsicTypeSpec", + "IntrinsicTypeSpec": "0x55e3c58da7b0-IntrinsicTypeSpec" + }, + { + "id": "0x55e3c58da7b0-IntrinsicTypeSpec", + "variantKey": "Character", + "Character": "0x55e3c58da7b0-Character" + }, + { + "id": "0x55e3c58da7b0-Character", + "CharSelector": "0x55e3c58da7b0-CharSelector" + }, + { + "id": "0x55e3c58da7b0-CharSelector", + "variantKey": "LengthSelector", + "LengthSelector": "0x55e3c58da7b0-LengthSelector" + }, + { + "id": "0x55e3c58da7b0-LengthSelector", + "variantKey": "TypeParamValue", + "TypeParamValue": "0x55e3c58da7b0-TypeParamValue" + }, + { + "id": "0x55e3c58da7b0-TypeParamValue", + "variantKey": "Expr", + "Expr": "0x55e3c58db240-Expr" + }, + { + "id": "0x55e3c58db240-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55e3c58db260-LiteralConstant" + }, + { + "id": "0x55e3c58db260-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55e3c58db260-IntLiteralConstant" + }, + { + "id": "0x55e3c58db260-IntLiteralConstant", + "CharBlock": "10" + }, + { + "id": "0x55e3c58db330-EntityDecl", + "Name": "0x55e3c58db3e8-Name" + }, + { + "id": "0x55e3c58db3e8-Name", + "source": "c_len_positional" + }, + { + "id": "0x55e3c58bd170-DeclarationConstruct", + "variantKey": "SpecificationConstruct", + "SpecificationConstruct": "0x55e3c58bd170-SpecificationConstruct" + }, + { + "id": "0x55e3c58bd170-SpecificationConstruct", + "variantKey": "Statement", + "Statement": "0x55e3c58bd170-Statement" + }, + { + "id": "0x55e3c58bd170-Statement", + "statement": "0x55e3c58daf70-TypeDeclarationStmt", + "source": "character*10 :: c_len_legacy" + }, + { + "id": "0x55e3c58daf70-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x55e3c58dafa0-DeclarationTypeSpec", + "EntityDecl": [ + "0x55e3c58db420-EntityDecl" + ] + }, + { + "id": "0x55e3c58dafa0-DeclarationTypeSpec", + "variantKey": "IntrinsicTypeSpec", + "IntrinsicTypeSpec": "0x55e3c58dafa0-IntrinsicTypeSpec" + }, + { + "id": "0x55e3c58dafa0-IntrinsicTypeSpec", + "variantKey": "Character", + "Character": "0x55e3c58dafa0-Character" + }, + { + "id": "0x55e3c58dafa0-Character", + "CharSelector": "0x55e3c58dafa0-CharSelector" + }, + { + "id": "0x55e3c58dafa0-CharSelector", + "variantKey": "LengthSelector", + "LengthSelector": "0x55e3c58dafa0-LengthSelector" + }, + { + "id": "0x55e3c58dafa0-LengthSelector", + "variantKey": "CharLength", + "CharLength": "0x55e3c58dafa0-CharLength" + }, + { + "id": "0x55e3c58dafa0-CharLength", + "variantKey": "uint64_t", + "uint64_t": "10" + }, + { + "id": "0x55e3c58db420-EntityDecl", + "Name": "0x55e3c58db4d8-Name" + }, + { + "id": "0x55e3c58db4d8-Name", + "source": "c_len_legacy" + }, + { + "id": "0x55e3c58dbcf0-DeclarationConstruct", + "variantKey": "SpecificationConstruct", + "SpecificationConstruct": "0x55e3c58dbcf0-SpecificationConstruct" + }, + { + "id": "0x55e3c58dbcf0-SpecificationConstruct", + "variantKey": "Statement", + "Statement": "0x55e3c58dbcf0-Statement" + }, + { + "id": "0x55e3c58dbcf0-Statement", + "statement": "0x55e3c58db1c0-TypeDeclarationStmt", + "source": "character(kind=c_kind) :: c_kind_only" + }, + { + "id": "0x55e3c58db1c0-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x55e3c58db1f0-DeclarationTypeSpec", + "EntityDecl": [ + "0x55e3c58dbb20-EntityDecl" + ] + }, + { + "id": "0x55e3c58db1f0-DeclarationTypeSpec", + "variantKey": "IntrinsicTypeSpec", + "IntrinsicTypeSpec": "0x55e3c58db1f0-IntrinsicTypeSpec" + }, + { + "id": "0x55e3c58db1f0-IntrinsicTypeSpec", + "variantKey": "Character", + "Character": "0x55e3c58db1f0-Character" + }, + { + "id": "0x55e3c58db1f0-Character", + "CharSelector": "0x55e3c58db1f0-CharSelector" + }, + { + "id": "0x55e3c58db1f0-CharSelector", + "variantKey": "LengthAndKind", + "LengthAndKind": "0x55e3c58db1f0-LengthAndKind" + }, + { + "id": "0x55e3c58db1f0-LengthAndKind", + "Expr": "0x55e3c58db7c0-Expr" + }, + { + "id": "0x55e3c58db7c0-Expr", + "variantKey": "Designator", + "Designator": "0x55e3c58db900-Designator" + }, + { + "id": "0x55e3c58db900-Designator", + "variantKey": "DataRef", + "DataRef": "0x55e3c58db910-DataRef" + }, + { + "id": "0x55e3c58db910-DataRef", + "variantKey": "Name", + "Name": "0x55e3c58db910-Name" + }, + { + "id": "0x55e3c58db910-Name", + "source": "c_kind" + }, + { + "id": "0x55e3c58dbb20-EntityDecl", + "Name": "0x55e3c58dbbd8-Name" + }, + { + "id": "0x55e3c58dbbd8-Name", + "source": "c_kind_only" + }, + { + "id": "0x55e3c58dc080-DeclarationConstruct", + "variantKey": "SpecificationConstruct", + "SpecificationConstruct": "0x55e3c58dc080-SpecificationConstruct" + }, + { + "id": "0x55e3c58dc080-SpecificationConstruct", + "variantKey": "Statement", + "Statement": "0x55e3c58dc080-Statement" + }, + { + "id": "0x55e3c58dc080-Statement", + "statement": "0x55e3c58db500-TypeDeclarationStmt", + "source": "character(len=20, kind=c_kind) :: c_both_keywords" + }, + { + "id": "0x55e3c58db500-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x55e3c58db530-DeclarationTypeSpec", + "EntityDecl": [ + "0x55e3c58dbf90-EntityDecl" + ] + }, + { + "id": "0x55e3c58db530-DeclarationTypeSpec", + "variantKey": "IntrinsicTypeSpec", + "IntrinsicTypeSpec": "0x55e3c58db530-IntrinsicTypeSpec" + }, + { + "id": "0x55e3c58db530-IntrinsicTypeSpec", + "variantKey": "Character", + "Character": "0x55e3c58db530-Character" + }, + { + "id": "0x55e3c58db530-Character", + "CharSelector": "0x55e3c58db530-CharSelector" + }, + { + "id": "0x55e3c58db530-CharSelector", + "variantKey": "LengthAndKind", + "LengthAndKind": "0x55e3c58db530-LengthAndKind" + }, + { + "id": "0x55e3c58db530-LengthAndKind", + "TypeParamValue": "0x55e3c58db538-TypeParamValue", + "Expr": "0x55e3c58dbea0-Expr" + }, + { + "id": "0x55e3c58db538-TypeParamValue", + "variantKey": "Expr", + "Expr": "0x55e3c58dbd40-Expr" + }, + { + "id": "0x55e3c58dbd40-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55e3c58dbd60-LiteralConstant" + }, + { + "id": "0x55e3c58dbd60-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55e3c58dbd60-IntLiteralConstant" + }, + { + "id": "0x55e3c58dbd60-IntLiteralConstant", + "CharBlock": "20" + }, + { + "id": "0x55e3c58dbea0-Expr", + "variantKey": "Designator", + "Designator": "0x55e3c58db760-Designator" + }, + { + "id": "0x55e3c58db760-Designator", + "variantKey": "DataRef", + "DataRef": "0x55e3c58db770-DataRef" + }, + { + "id": "0x55e3c58db770-DataRef", + "variantKey": "Name", + "Name": "0x55e3c58db770-Name" + }, + { + "id": "0x55e3c58db770-Name", + "source": "c_kind" + }, + { + "id": "0x55e3c58dbf90-EntityDecl", + "Name": "0x55e3c58dc048-Name" + }, + { + "id": "0x55e3c58dc048-Name", + "source": "c_both_keywords" + }, + { + "id": "0x55e3c58dc6f0-DeclarationConstruct", + "variantKey": "SpecificationConstruct", + "SpecificationConstruct": "0x55e3c58dc6f0-SpecificationConstruct" + }, + { + "id": "0x55e3c58dc6f0-SpecificationConstruct", + "variantKey": "Statement", + "Statement": "0x55e3c58dc6f0-Statement" + }, + { + "id": "0x55e3c58dc6f0-Statement", + "statement": "0x55e3c58db580-TypeDeclarationStmt", + "source": "character(kind=c_kind, len=20) :: c_swapped_kw" + }, + { + "id": "0x55e3c58db580-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x55e3c58db5b0-DeclarationTypeSpec", + "EntityDecl": [ + "0x55e3c58dc520-EntityDecl" + ] + }, + { + "id": "0x55e3c58db5b0-DeclarationTypeSpec", + "variantKey": "IntrinsicTypeSpec", + "IntrinsicTypeSpec": "0x55e3c58db5b0-IntrinsicTypeSpec" + }, + { + "id": "0x55e3c58db5b0-IntrinsicTypeSpec", + "variantKey": "Character", + "Character": "0x55e3c58db5b0-Character" + }, + { + "id": "0x55e3c58db5b0-Character", + "CharSelector": "0x55e3c58db5b0-CharSelector" + }, + { + "id": "0x55e3c58db5b0-CharSelector", + "variantKey": "LengthAndKind", + "LengthAndKind": "0x55e3c58db5b0-LengthAndKind" + }, + { + "id": "0x55e3c58db5b0-LengthAndKind", + "TypeParamValue": "0x55e3c58db5b8-TypeParamValue", + "Expr": "0x55e3c58dc150-Expr" + }, + { + "id": "0x55e3c58db5b8-TypeParamValue", + "variantKey": "Expr", + "Expr": "0x55e3c58dc2f0-Expr" + }, + { + "id": "0x55e3c58dc2f0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55e3c58dc310-LiteralConstant" + }, + { + "id": "0x55e3c58dc310-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55e3c58dc310-IntLiteralConstant" + }, + { + "id": "0x55e3c58dc310-IntLiteralConstant", + "CharBlock": "20" + }, + { + "id": "0x55e3c58dc150-Expr", + "variantKey": "Designator", + "Designator": "0x55e3c58dc230-Designator" + }, + { + "id": "0x55e3c58dc230-Designator", + "variantKey": "DataRef", + "DataRef": "0x55e3c58dc240-DataRef" + }, + { + "id": "0x55e3c58dc240-DataRef", + "variantKey": "Name", + "Name": "0x55e3c58dc240-Name" + }, + { + "id": "0x55e3c58dc240-Name", + "source": "c_kind" + }, + { + "id": "0x55e3c58dc520-EntityDecl", + "Name": "0x55e3c58dc5d8-Name" + }, + { + "id": "0x55e3c58dc5d8-Name", + "source": "c_swapped_kw" + }, + { + "id": "0x55e3c58dc2a0-DeclarationConstruct", + "variantKey": "SpecificationConstruct", + "SpecificationConstruct": "0x55e3c58dc2a0-SpecificationConstruct" + }, + { + "id": "0x55e3c58dc2a0-SpecificationConstruct", + "variantKey": "Statement", + "Statement": "0x55e3c58dc2a0-Statement" + }, + { + "id": "0x55e3c58dc2a0-Statement", + "statement": "0x55e3c58db600-TypeDeclarationStmt", + "source": "character(20, c_kind) :: c_both_positional" + }, + { + "id": "0x55e3c58db600-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x55e3c58db630-DeclarationTypeSpec", + "EntityDecl": [ + "0x55e3c58dc990-EntityDecl" + ] + }, + { + "id": "0x55e3c58db630-DeclarationTypeSpec", + "variantKey": "IntrinsicTypeSpec", + "IntrinsicTypeSpec": "0x55e3c58db630-IntrinsicTypeSpec" + }, + { + "id": "0x55e3c58db630-IntrinsicTypeSpec", + "variantKey": "Character", + "Character": "0x55e3c58db630-Character" + }, + { + "id": "0x55e3c58db630-Character", + "CharSelector": "0x55e3c58db630-CharSelector" + }, + { + "id": "0x55e3c58db630-CharSelector", + "variantKey": "LengthAndKind", + "LengthAndKind": "0x55e3c58db630-LengthAndKind" + }, + { + "id": "0x55e3c58db630-LengthAndKind", + "TypeParamValue": "0x55e3c58db638-TypeParamValue", + "Expr": "0x55e3c58dc8a0-Expr" + }, + { + "id": "0x55e3c58db638-TypeParamValue", + "variantKey": "Expr", + "Expr": "0x55e3c58dc740-Expr" + }, + { + "id": "0x55e3c58dc740-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55e3c58dc760-LiteralConstant" + }, + { + "id": "0x55e3c58dc760-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55e3c58dc760-IntLiteralConstant" + }, + { + "id": "0x55e3c58dc760-IntLiteralConstant", + "CharBlock": "20" + }, + { + "id": "0x55e3c58dc8a0-Expr", + "variantKey": "Designator", + "Designator": "0x55e3c58ae4d0-Designator" + }, + { + "id": "0x55e3c58ae4d0-Designator", + "variantKey": "DataRef", + "DataRef": "0x55e3c58ae4e0-DataRef" + }, + { + "id": "0x55e3c58ae4e0-DataRef", + "variantKey": "Name", + "Name": "0x55e3c58ae4e0-Name" + }, + { + "id": "0x55e3c58ae4e0-Name", + "source": "c_kind" + }, + { + "id": "0x55e3c58dc990-EntityDecl", + "Name": "0x55e3c58dca48-Name" + }, + { + "id": "0x55e3c58dca48-Name", + "source": "c_both_positional" + }, + { + "id": "0x55e3c58dce10-DeclarationConstruct", + "variantKey": "SpecificationConstruct", + "SpecificationConstruct": "0x55e3c58dce10-SpecificationConstruct" + }, + { + "id": "0x55e3c58dce10-SpecificationConstruct", + "variantKey": "Statement", + "Statement": "0x55e3c58dce10-Statement" + }, + { + "id": "0x55e3c58dce10-Statement", + "statement": "0x55e3c58db680-TypeDeclarationStmt", + "source": "character(20, kind=c_kind) :: c_mixed" + }, + { + "id": "0x55e3c58db680-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x55e3c58db6b0-DeclarationTypeSpec", + "EntityDecl": [ + "0x55e3c58dcd20-EntityDecl" + ] + }, + { + "id": "0x55e3c58db6b0-DeclarationTypeSpec", + "variantKey": "IntrinsicTypeSpec", + "IntrinsicTypeSpec": "0x55e3c58db6b0-IntrinsicTypeSpec" + }, + { + "id": "0x55e3c58db6b0-IntrinsicTypeSpec", + "variantKey": "Character", + "Character": "0x55e3c58db6b0-Character" + }, + { + "id": "0x55e3c58db6b0-Character", + "CharSelector": "0x55e3c58db6b0-CharSelector" + }, + { + "id": "0x55e3c58db6b0-CharSelector", + "variantKey": "LengthAndKind", + "LengthAndKind": "0x55e3c58db6b0-LengthAndKind" + }, + { + "id": "0x55e3c58db6b0-LengthAndKind", + "TypeParamValue": "0x55e3c58db6b8-TypeParamValue", + "Expr": "0x55e3c58dcbd0-Expr" + }, + { + "id": "0x55e3c58db6b8-TypeParamValue", + "variantKey": "Expr", + "Expr": "0x55e3c58dca70-Expr" + }, + { + "id": "0x55e3c58dca70-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55e3c58dca90-LiteralConstant" + }, + { + "id": "0x55e3c58dca90-LiteralConstant", + "variantKey": "IntLiteralConstant", + "IntLiteralConstant": "0x55e3c58dca90-IntLiteralConstant" + }, + { + "id": "0x55e3c58dca90-IntLiteralConstant", + "CharBlock": "20" + }, + { + "id": "0x55e3c58dcbd0-Expr", + "variantKey": "Designator", + "Designator": "0x55e3c58db9d0-Designator" + }, + { + "id": "0x55e3c58db9d0-Designator", + "variantKey": "DataRef", + "DataRef": "0x55e3c58db9e0-DataRef" + }, + { + "id": "0x55e3c58db9e0-DataRef", + "variantKey": "Name", + "Name": "0x55e3c58db9e0-Name" + }, + { + "id": "0x55e3c58db9e0-Name", + "source": "c_kind" + }, + { + "id": "0x55e3c58dcd20-EntityDecl", + "Name": "0x55e3c58dcdd8-Name" + }, + { + "id": "0x55e3c58dcdd8-Name", + "source": "c_mixed" + }, + { + "id": "0x55e3c58dc3e0-DeclarationConstruct", + "variantKey": "SpecificationConstruct", + "SpecificationConstruct": "0x55e3c58dc3e0-SpecificationConstruct" + }, + { + "id": "0x55e3c58dc3e0-SpecificationConstruct", + "variantKey": "Statement", + "Statement": "0x55e3c58dc3e0-Statement" + }, + { + "id": "0x55e3c58dc3e0-Statement", + "statement": "0x55e3c58dbe20-TypeDeclarationStmt", + "source": "character(len=:), allocatable :: c_deferred" + }, + { + "id": "0x55e3c58dbe20-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x55e3c58dbe50-DeclarationTypeSpec", + "AttrSpec": [ + "0x55e3c58ecdc0-AttrSpec" + ], + "EntityDecl": [ + "0x55e3c58dce70-EntityDecl" + ] + }, + { + "id": "0x55e3c58dbe50-DeclarationTypeSpec", + "variantKey": "IntrinsicTypeSpec", + "IntrinsicTypeSpec": "0x55e3c58dbe50-IntrinsicTypeSpec" + }, + { + "id": "0x55e3c58dbe50-IntrinsicTypeSpec", + "variantKey": "Character", + "Character": "0x55e3c58dbe50-Character" + }, + { + "id": "0x55e3c58dbe50-Character", + "CharSelector": "0x55e3c58dbe50-CharSelector" + }, + { + "id": "0x55e3c58dbe50-CharSelector", + "variantKey": "LengthSelector", + "LengthSelector": "0x55e3c58dbe50-LengthSelector" + }, + { + "id": "0x55e3c58dbe50-LengthSelector", + "variantKey": "TypeParamValue", + "TypeParamValue": "0x55e3c58dbe50-TypeParamValue" + }, + { + "id": "0x55e3c58dbe50-TypeParamValue", + "variantKey": "Deferred", + "Deferred": "0x55e3c58dbe50-Deferred" + }, + { + "id": "0x55e3c58dbe50-Deferred" + }, + { + "id": "0x55e3c58ecdc0-AttrSpec", + "variantKey": "Allocatable", + "Allocatable": "0x55e3c58ecdc0-Allocatable" + }, + { + "id": "0x55e3c58ecdc0-Allocatable", + "keyword": "Allocatable" + }, + { + "id": "0x55e3c58dce70-EntityDecl", + "Name": "0x55e3c58dcf28-Name" + }, + { + "id": "0x55e3c58dcf28-Name", + "source": "c_deferred" + }, + { + "id": "0x55e3c58dd1b0-DeclarationConstruct", + "variantKey": "SpecificationConstruct", + "SpecificationConstruct": "0x55e3c58dd1b0-SpecificationConstruct" + }, + { + "id": "0x55e3c58dd1b0-SpecificationConstruct", + "variantKey": "Statement", + "Statement": "0x55e3c58dd1b0-Statement" + }, + { + "id": "0x55e3c58dd1b0-Statement", + "statement": "0x55e3c58dc0d0-TypeDeclarationStmt", + "source": "character(len=*), parameter :: c_const = \"Hello, Fortran!\"" + }, + { + "id": "0x55e3c58dc0d0-TypeDeclarationStmt", + "DeclarationTypeSpec": "0x55e3c58dc100-DeclarationTypeSpec", + "AttrSpec": [ + "0x55e3c58ed280-AttrSpec" + ], + "EntityDecl": [ + "0x55e3c58dd0c0-EntityDecl" + ] + }, + { + "id": "0x55e3c58dc100-DeclarationTypeSpec", + "variantKey": "IntrinsicTypeSpec", + "IntrinsicTypeSpec": "0x55e3c58dc100-IntrinsicTypeSpec" + }, + { + "id": "0x55e3c58dc100-IntrinsicTypeSpec", + "variantKey": "Character", + "Character": "0x55e3c58dc100-Character" + }, + { + "id": "0x55e3c58dc100-Character", + "CharSelector": "0x55e3c58dc100-CharSelector" + }, + { + "id": "0x55e3c58dc100-CharSelector", + "variantKey": "LengthSelector", + "LengthSelector": "0x55e3c58dc100-LengthSelector" + }, + { + "id": "0x55e3c58dc100-LengthSelector", + "variantKey": "TypeParamValue", + "TypeParamValue": "0x55e3c58dc100-TypeParamValue" + }, + { + "id": "0x55e3c58dc100-TypeParamValue", + "variantKey": "Star", + "Star": "0x55e3c58dc100-Star" + }, + { + "id": "0x55e3c58dc100-Star" + }, + { + "id": "0x55e3c58ed280-AttrSpec", + "variantKey": "Parameter", + "Parameter": "0x55e3c58ed280-Parameter" + }, + { + "id": "0x55e3c58ed280-Parameter", + "keyword": "Parameter" + }, + { + "id": "0x55e3c58dd0c0-EntityDecl", + "Name": "0x55e3c58dd178-Name", + "Initialization": "0x55e3c58dd0c0-Initialization" + }, + { + "id": "0x55e3c58dd178-Name", + "source": "c_const" + }, + { + "id": "0x55e3c58dd0c0-Initialization", + "variantKey": "Expr", + "Expr": "0x55e3c58dcfd0-Expr" + }, + { + "id": "0x55e3c58dcfd0-Expr", + "variantKey": "LiteralConstant", + "LiteralConstant": "0x55e3c58dcff0-LiteralConstant" + }, + { + "id": "0x55e3c58dcff0-LiteralConstant", + "variantKey": "CharLiteralConstant", + "CharLiteralConstant": "0x55e3c58dcff0-CharLiteralConstant" + }, + { + "id": "0x55e3c58dcff0-CharLiteralConstant", + "string": "Hello, Fortran!" + }, + { + "id": "0x55e3c58ed058-ExecutionPart" + }, + { + "id": "0x55e3c58ed058-list" + }, + { + "id": "0x55e3c58ecfd0-Statement", + "statement": "0x55e3c58ecfe0-EndProgramStmt", + "source": "end program LENGTH_SELECTOR" + }, + { + "id": "0x55e3c58ecfe0-EndProgramStmt", + "Name": "0x55e3c58ecfe0-Name" + }, + { + "id": "0x55e3c58ecfe0-Name", + "source": "LENGTH_SELECTOR" + } + ], + "comments": [ + { + "text": " Explicit keyword", + "stmtId": "0x55e3c58bd110-Statement", + "trailing": true + }, + { + "text": " Positional shorthand", + "stmtId": "0x55e3c58bcda0-Statement", + "trailing": true + }, + { + "text": " Legacy asterisk notation", + "stmtId": "0x55e3c58bd170-Statement", + "trailing": true + }, + { + "text": " Standard keyword order", + "stmtId": "0x55e3c58dc080-Statement", + "trailing": true + }, + { + "text": " Reversed keyword order", + "stmtId": "0x55e3c58dc6f0-Statement", + "trailing": true + }, + { + "text": " Positional (len, kind)", + "stmtId": "0x55e3c58dc2a0-Statement", + "trailing": true + }, + { + "text": " Positional len + keyword kind", + "stmtId": "0x55e3c58dce10-Statement", + "trailing": true + }, + { + "text": " Deferred length character", + "stmtId": "0x55e3c58dc3e0-Statement", + "trailing": true + }, + { + "text": " Constant length character", + "stmtId": "0x55e3c58dd1b0-Statement", + "trailing": true + } + ], + "enums": { + "Fortran::common::CUDADataAttr": [ + "Constant", + "Device", + "Managed", + "Pinned", + "Shared", + "Texture", + "Unified" + ], + "Fortran::common::CUDASubprogramAttrs": [ + "Host", + "Device", + "HostDevice", + "Global", + "Grid_Global" + ], + "Fortran::common::ImportKind": [ + "Default", + "Only", + "None", + "All" + ], + "Fortran::common::OmpDependenceKind": [ + "In", + "Out", + "Inout", + "Inoutset", + "Mutexinoutset", + "Depobj" + ], + "Fortran::common::OmpMemoryOrderType": [ + "Acq_Rel", + "Acquire", + "Relaxed", + "Release", + "Seq_Cst" + ], + "Fortran::common::OpenACCDeviceType": [ + "Star", + "Default", + "Nvidia", + "Radeon", + "Host", + "Multicore", + "None" + ], + "Fortran::parser::AccDataModifier::Modifier": [ + "ReadOnly", + "Zero" + ], + "Fortran::parser::AccessSpec::Kind": [ + "Public", + "Private" + ], + "Fortran::parser::BindEntity::Kind": [ + "Object", + "Common" + ], + "Fortran::parser::CompilerDirective::VectorLength::Kind": [ + "Auto", + "Fixed", + "Scalable" + ], + "Fortran::parser::ConnectSpec::CharExpr::Kind": [ + "Access", + "Action", + "Asynchronous", + "Blank", + "Decimal", + "Delim", + "Encoding", + "Form", + "Pad", + "Position", + "Round", + "Sign", + "Carriagecontrol", + "Convert", + "Dispose" + ], + "Fortran::parser::DefinedOperator::IntrinsicOperator": [ + "Power", + "Multiply", + "Divide", + "Add", + "Subtract", + "Concat", + "LT", + "LE", + "EQ", + "NE", + "GE", + "GT", + "NOT", + "AND", + "OR", + "EQV", + "NEQV" + ], + "Fortran::parser::ImplicitStmt::ImplicitNoneNameSpec": [ + "External", + "Type" + ], + "Fortran::parser::InquireSpec::CharVar::Kind": [ + "Access", + "Action", + "Asynchronous", + "Blank", + "Decimal", + "Delim", + "Direct", + "Encoding", + "Form", + "Formatted", + "Iomsg", + "Name", + "Pad", + "Position", + "Read", + "Readwrite", + "Round", + "Sequential", + "Sign", + "Stream", + "Status", + "Unformatted", + "Write", + "Carriagecontrol", + "Convert", + "Dispose" + ], + "Fortran::parser::InquireSpec::IntVar::Kind": [ + "Iostat", + "Nextrec", + "Number", + "Pos", + "Recl", + "Size" + ], + "Fortran::parser::InquireSpec::LogVar::Kind": [ + "Exist", + "Named", + "Opened", + "Pending" + ], + "Fortran::parser::IntentSpec::Intent": [ + "In", + "Out", + "InOut" + ], + "Fortran::parser::IoControlSpec::CharExpr::Kind": [ + "Advance", + "Blank", + "Decimal", + "Delim", + "Pad", + "Round", + "Sign" + ], + "Fortran::parser::ReductionOperator::Operator": [ + "Plus", + "Multiply", + "Max", + "Min", + "Iand", + "Ior", + "Ieor", + "And", + "Or", + "Eqv", + "Neqv" + ], + "Fortran::parser::OmpAccessGroup::Value": [ + "Cgroup" + ], + "Fortran::parser::OmpAdjustArgsClause::OmpAdjustOp::Value": [ + "Nothing", + "Need_Device_Ptr" + ], + "Fortran::parser::OmpAlwaysModifier::Value": [ + "Always" + ], + "Fortran::parser::OmpAtClause::ActionTime": [ + "Compilation", + "Execution" + ], + "Fortran::parser::OmpAttachModifier::Value": [ + "Always", + "Never", + "Auto" + ], + "Fortran::parser::OmpAutomapModifier::Value": [ + "Automap" + ], + "Fortran::parser::OmpBindClause::Binding": [ + "Parallel", + "Teams", + "Thread" + ], + "Fortran::parser::OmpChunkModifier::Value": [ + "Simd" + ], + "Fortran::parser::OmpCloseModifier::Value": [ + "Close" + ], + "Fortran::parser::OmpDefaultClause::DataSharingAttribute": [ + "Private", + "Firstprivate", + "Shared", + "None" + ], + "Fortran::parser::OmpDefaultmapClause::ImplicitBehavior": [ + "Alloc", + "To", + "From", + "Tofrom", + "Firstprivate", + "None", + "Default", + "Present" + ], + "Fortran::parser::OmpDeleteModifier::Value": [ + "Delete" + ], + "Fortran::parser::OmpDependenceType::Value": [ + "Sink", + "Source" + ], + "Fortran::parser::OmpDeviceModifier::Value": [ + "Ancestor", + "Device_Num" + ], + "Fortran::parser::OmpDeviceTypeClause::DeviceTypeDescription": [ + "Any", + "Host", + "Nohost" + ], + "Fortran::parser::OmpDirectiveSpecification::Flag": [ + "DeprecatedSyntax", + "CrossesLabelDo" + ], + "Fortran::parser::OmpExpectation::Value": [ + "Present" + ], + "Fortran::parser::OmpInteropType::Value": [ + "Target", + "Targetsync" + ], + "Fortran::parser::OmpLastprivateModifier::Value": [ + "Conditional" + ], + "Fortran::parser::OmpLinearModifier::Value": [ + "Ref", + "Uval", + "Val" + ], + "Fortran::parser::OmpMapType::Value": [ + "Alloc", + "Delete", + "From", + "Release", + "Storage", + "To", + "Tofrom" + ], + "Fortran::parser::OmpMapTypeModifier::Value": [ + "Always", + "Close", + "Present", + "Ompx_Hold" + ], + "Fortran::parser::OmpObject::Invalid::Kind": [ + "BlankCommonBlock" + ], + "Fortran::parser::OmpOrderClause::Ordering": [ + "Concurrent" + ], + "Fortran::parser::OmpOrderingModifier::Value": [ + "Monotonic", + "Nonmonotonic", + "Simd" + ], + "Fortran::parser::OmpOrderModifier::Value": [ + "Reproducible", + "Unconstrained" + ], + "Fortran::parser::OmpPrescriptiveness::Value": [ + "Strict" + ], + "Fortran::parser::OmpPresentModifier::Value": [ + "Present" + ], + "Fortran::parser::OmpProcBindClause::AffinityPolicy": [ + "Close", + "Master", + "Spread", + "Primary" + ], + "Fortran::parser::OmpReductionModifier::Value": [ + "Default", + "Inscan", + "Task" + ], + "Fortran::parser::OmpRefModifier::Value": [ + "Ref_Ptee", + "Ref_Ptr", + "Ref_Ptr_Ptee" + ], + "Fortran::parser::OmpScheduleClause::Kind": [ + "Static", + "Dynamic", + "Guided", + "Auto", + "Runtime" + ], + "Fortran::parser::OmpSelfModifier::Value": [ + "Self" + ], + "Fortran::parser::OmpSeverityClause::SevLevel": [ + "Fatal", + "Warning" + ], + "Fortran::parser::OmpThreadsetClause::ThreadsetPolicy": [ + "Omp_Pool", + "Omp_Team" + ], + "Fortran::parser::OmpTraitSelectorName::Value": [ + "Arch", + "Atomic_Default_Mem_Order", + "Condition", + "Device_Num", + "Extension", + "Isa", + "Kind", + "Requires", + "Simd", + "Uid", + "Vendor" + ], + "Fortran::parser::OmpTraitSetSelectorName::Value": [ + "Construct", + "Device", + "Implementation", + "Target_Device", + "User" + ], + "Fortran::parser::OmpVariableCategory::Value": [ + "Aggregate", + "All", + "Allocatable", + "Pointer", + "Scalar" + ], + "Fortran::parser::OmpxHoldModifier::Value": [ + "Ompx_Hold" + ], + "Fortran::parser::ProcedureStmt::Kind": [ + "ModuleProcedure", + "Procedure" + ], + "Fortran::parser::SavedEntity::Kind": [ + "Entity", + "Common" + ], + "Fortran::parser::StopStmt::Kind": [ + "Stop", + "ErrorStop" + ], + "Fortran::parser::UseStmt::ModuleNature": [ + "Intrinsic", + "Non_Intrinsic" + ] + } +} diff --git a/FortranParser/src/pt/up/fe/specs/fortran/parser/AlwaysClassMapper.java b/FortranParser/src/pt/up/fe/specs/fortran/parser/AlwaysClassMapper.java new file mode 100644 index 00000000..54e66967 --- /dev/null +++ b/FortranParser/src/pt/up/fe/specs/fortran/parser/AlwaysClassMapper.java @@ -0,0 +1,21 @@ +package pt.up.fe.specs.fortran.parser; + +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Optional; + +public class AlwaysClassMapper extends ClassMapper { + public AlwaysClassMapper(Class clazz) { + super(clazz); + } + + @Override + public Optional> get(FlangAttributes attrs) { + return Optional.of(gerSuperClass()); + } + + @Override + public boolean has(FlangAttributes attrs) { + return true; + } +} diff --git a/FortranParser/src/pt/up/fe/specs/fortran/parser/CaseClassMapper.java b/FortranParser/src/pt/up/fe/specs/fortran/parser/CaseClassMapper.java new file mode 100644 index 00000000..d99d7eba --- /dev/null +++ b/FortranParser/src/pt/up/fe/specs/fortran/parser/CaseClassMapper.java @@ -0,0 +1,55 @@ +package pt.up.fe.specs.fortran.parser; + +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; + +public class CaseClassMapper extends ClassMapper { + private final Map>> caseMap; + + public CaseClassMapper(Class clazz, Map>> caseMap) { + super(clazz); + this.caseMap = new HashMap<>(caseMap); + } + + public CaseClassMapper(Class clazz) { + this(clazz, Map.of()); + } + + public CaseClassMapper map(String variantKey, Class clazz) { + caseMap.put(variantKey, Optional.of(clazz)); + return this; + } + + public CaseClassMapper map(FlangName variantKey, Class clazz) { + return map(variantKey.getString(), clazz); + } + + public CaseClassMapper ignore(String variantKey) { + caseMap.put(variantKey, Optional.empty()); + return this; + } + + public CaseClassMapper ignore(FlangName variantKey) { + return ignore(variantKey.getString()); + } + + @Override + public Optional> get(FlangAttributes attrs) { + var variantKey = attrs.getVariantKey(); + var clazz = caseMap.get(variantKey); + Objects.requireNonNull(clazz, () -> "Could not find variant node of '" + gerSuperClass().getName() + + "' for variant key '" + variantKey + "'"); + + return clazz; + } + + @Override + public boolean has(FlangAttributes attrs) { + var clazz = caseMap.get(attrs.getVariantKey()); + return clazz != null && clazz.isPresent(); + } +} diff --git a/FortranParser/src/pt/up/fe/specs/fortran/parser/ClassMapper.java b/FortranParser/src/pt/up/fe/specs/fortran/parser/ClassMapper.java new file mode 100644 index 00000000..8cf1f631 --- /dev/null +++ b/FortranParser/src/pt/up/fe/specs/fortran/parser/ClassMapper.java @@ -0,0 +1,28 @@ +package pt.up.fe.specs.fortran.parser; + +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; + +import java.util.Optional; + +public abstract class ClassMapper { + private final Class superClass; + + public ClassMapper(Class superClass) { + this.superClass = superClass; + } + + public Class gerSuperClass() { + return superClass; + } + + public abstract Optional> get(FlangAttributes attrs); + public abstract boolean has(FlangAttributes attrs); + + public static AlwaysClassMapper always(Class superClass) { + return new AlwaysClassMapper<>(superClass); + } + + public static CaseClassMapper caseFor(Class superClass) { + return new CaseClassMapper<>(superClass); + } +} diff --git a/FortranParser/src/pt/up/fe/specs/fortran/parser/FlangAttributes.java b/FortranParser/src/pt/up/fe/specs/fortran/parser/FlangAttributes.java index 00b14ec4..b5270f77 100644 --- a/FortranParser/src/pt/up/fe/specs/fortran/parser/FlangAttributes.java +++ b/FortranParser/src/pt/up/fe/specs/fortran/parser/FlangAttributes.java @@ -95,7 +95,11 @@ public List getList(StringProvider key, Function converter) { public List getList(String key, Function converter) { var value = attributes.get(key); - Objects.requireNonNull(value, () -> "Attrs do not have a value for key '" + key + "': " + attributes); +// Objects.requireNonNull(value, () -> "Attrs do not have a value for key '" + key + "': " + attributes); + if (value == null) { + return List.of(); + } + if (value instanceof List list) { return list.stream().map(o -> converter.apply(o)).toList(); } @@ -115,6 +119,12 @@ public String getVariantString() { return getString(getVariantKey()); } + public FlangName getVariantName() { + var variantKey = getVariantKey(); + return FlangName.convertTry(variantKey).orElseThrow(() -> new RuntimeException( + "Variant key '" + variantKey + "' is not a valid Flang name.")); + } + /** * Adds the given attributes to the current attributes, without overwritting existing attributes. * diff --git a/FortranParser/src/pt/up/fe/specs/fortran/parser/FlangData.java b/FortranParser/src/pt/up/fe/specs/fortran/parser/FlangData.java index 1f4bd84e..32f78d37 100644 --- a/FortranParser/src/pt/up/fe/specs/fortran/parser/FlangData.java +++ b/FortranParser/src/pt/up/fe/specs/fortran/parser/FlangData.java @@ -29,7 +29,9 @@ public FlangData(Map attributes) { } public FlangAttributes get(String id) { - return attributes.get(id); + var attrs = attributes.get(id); + Objects.requireNonNull(attrs, () -> "Could not find attributes for id '" + id + "'"); + return attrs; } public boolean isIdInteger(String id) { @@ -53,7 +55,7 @@ public Optional getDerivedId(String id, boolean isNode) { } // If there is already a concrete FortranAst class for this id, there is no derivation - if (FlangToClass.isClass(getKind(id))) { + if (FlangToClass.isClass(getKind(id), getAttrs(id))) { return Optional.empty(); } @@ -152,8 +154,6 @@ public Optional getOptionalString(FortranNode node, String key, FlangNam } public Optional getOptional(FortranNode node, String key, FlangName... path) { - var currentId = node.get(FortranNode.ID); - // Get base attrs var currentAttrs = getAttrs(node); @@ -206,18 +206,29 @@ public String getVariantChildId(FortranNode node) { } public List getChildrenIds(FortranNode node, FlangName attribute) { + // TODO(Process-ing): Do this also on getStringList + // TODO(Process-ing): Make processors better use this + if (!getAttrs(node).has(attribute)) + return List.of(); + return getAttrs(node).getStringList(attribute).stream() .map(this::getChildId) .toList(); } public List getChildrenIds(String key, FlangName attribute) { + if (!getAttrs(key).has(attribute)) + return List.of(); + return getAttrs(key).getStringList(attribute).stream() .map(this::getChildId) .toList(); } public List getChildrenIds(FortranNode node, String attribute) { + if (!getAttrs(node).has(attribute)) + return List.of(); + return getAttrs(node).getStringList(attribute).stream() .map(this::getChildId) .toList(); diff --git a/FortranParser/src/pt/up/fe/specs/fortran/parser/FlangName.java b/FortranParser/src/pt/up/fe/specs/fortran/parser/FlangName.java index 0552e087..f649ab1a 100644 --- a/FortranParser/src/pt/up/fe/specs/fortran/parser/FlangName.java +++ b/FortranParser/src/pt/up/fe/specs/fortran/parser/FlangName.java @@ -12,17 +12,21 @@ public enum FlangName implements StringProvider { MAIN_PROGRAM, PROGRAM_UNIT, SUBROUTINE_SUBPROGRAM, + FUNCTION_SUBPROGRAM, SPECIFICATION_PART, INTERNAL_SUBPROGRAM_PART, + MODULE, + MODULE_SUBPROGRAM_PART, + MODULE_SUBPROGRAM, DECLARATION_CONSTRUCT, IMPLICIT_PART, + IMPLICIT_PART_STMT, EXECUTION_PART, INTERNAL_SUBPROGRAM, BLOCK, EXECUTION_PART_CONSTRUCT, EXECUTABLE_CONSTRUCT, ALLOCATION, - FUNCTION_SUBPROGRAM, /// DECLs ENTITY_DECL, @@ -31,19 +35,71 @@ public enum FlangName implements StringProvider { DATA_STMT_VALUE, DATA_STMT_REPEAT, DATA_STMT_CONSTANT, + TYPE_PARAM_VALUE, + DEFERRED, + DEFINED_OPERATOR, + DEFINED_OP_NAME, + INTRINSIC_OPERATOR, + GENERIC_SPEC, + ASSIGNMENT, + READ_FORMATTED, + READ_UNFORMATTED, + WRITE_FORMATTED, + WRITE_UNFORMATTED, + PREFIX_SPEC, + ELEMENTAL, + IMPURE, + NON_RECURSIVE("Non_Recursive"), + PURE, + RECURSIVE, + DERIVED_TYPE_DEF, + DERIVED_TYPE_STMT, + TYPE_ATTR_SPEC, + ABSTRACT, + BIND_C, + EXTENDS, + TYPE_PARAM_DEF_STMT, + PRIVATE_OR_SEQUENCE, + COMPONENT_DEF_STMT, + DATA_COMPONENT_DEF_STMT, + COMPONENT_ATTR_SPEC, + CONTIGUOUS, + COMPONENT_ARRAY_SPEC, + POINTER, + CUDA_DATA_ATTR("CUDADataAttr"), + COMPONENT_OR_FILL, + COMPONENT_DECL, + TYPE_BOUND_PROCEDURE_PART, + END_TYPE_STMT, + INTERFACE_BLOCK, + INTERFACE_STMT, + INTERFACE_SPECIFICATION, + INTERFACE_BODY, + FUNCTION, + SUBROUTINE, + PROCEDURE_STMT, + END_INTERFACE_STMT, + PROC_POINTER_INIT, + PROC_INTERFACE, + PROC_DECL, + PROC_ATTR_SPEC, /// STMTs STATEMENT, PROGRAM_STMT, END_PROGRAM_STMT, SUBROUTINE_STMT, - FUNCTION_STMT, END_SUBROUTINE_STMT, + FUNCTION_STMT, + SUFFIX, + LANGUAGE_BINDING_SPEC, + END_FUNCTION_STMT, + MODULE_STMT, + END_MODULE_STMT, ACTION_STMT, PRINT_STMT, FORMAT_STMT, NAME, - FORMAT, OUTPUT_ITEM, TYPE_DECLARATION_STMT, ASSIGNMENT_STMT, @@ -53,13 +109,14 @@ public enum FlangName implements StringProvider { CALL_STMT, COMPILER_DIRECTIVE, GOTO_STMT, - WRITE_STMT, - IO_UNIT, - IO_CONTROL_SPEC, CONTAINS_STMT, ALLOCATE_STMT, DEALLOCATE_STMT, USE_STMT, + ONLY, + RENAME, + NAMES, + OPERATORS, CONTINUE_STMT, PARAMETER_STMT, EXTERNAL_STMT, @@ -70,8 +127,16 @@ public enum FlangName implements StringProvider { COMMON_STMT, COMMON_STMT_BLOCK, COMMON_BLOCK_OBJECT, - OPEN_STMT, - CLOSE_STMT, + DIMENSION_STMT, + DECLARATION, + NAMELIST_STMT, + GROUP, + IMPLICIT_STMT, + IMPLICIT_SPEC, + LETTER_SPEC, + LOCATION, + IMPLICIT_NONE_NAME_SPEC, + EXTERNAL, /// Conditional Statements IF_CONSTRUCT, @@ -92,11 +157,22 @@ public enum FlangName implements StringProvider { RANGE, DEFAULT, END_SELECT_STMT, + ACCESS_STMT, + ACCESS_SPEC, + ACCESS_ID, + IMPORT_STMT, + IMPORT_KIND, + POINTER_ASSIGNMENT_STMT, + BOUNDS, + BOUNDS_SPEC, + BOUNDS_REMAPPING, + PROCEDURE_DECLARATION_STMT, // Variables VARIABLE, DESIGNATOR, DATA_REF, + FUNCTION_REFERENCE, /// EXPRs EXPR, @@ -106,6 +182,8 @@ public enum FlangName implements StringProvider { SIGNED_INT_LITERAL_CONSTANT, LOGICAL_LITERAL_CONSTANT, REAL_LITERAL_CONSTANT, + SIGN, + SIGNED_REAL_LITERAL_CONSTANT, KIND_PARAM, STAR, PARENTHESES, @@ -124,11 +202,21 @@ public enum FlangName implements StringProvider { GT("GT"), GE("GE"), AND("AND"), + OR("OR"), + EQV("EQV"), + NEQV("NEQV"), + CONCAT, SCALAR, PROCEDURE_DESIGNATOR, ACTUAL_ARG_SPEC, ACTUAL_ARG, CALL, + NAMED_LITERAL, + COMPLEX_PART, + COMPLEX_LITERAL_CONSTANT, + SUBSTRING, + SUBSTRING_RANGE, + NULL_INIT, // ARRAYs ARRAY_CONSTRUCTOR, @@ -142,7 +230,6 @@ public enum FlangName implements StringProvider { AC_IMPLIED_DO_CONTROL, /// TYPEs - DECLARATION_TYPE_SPEC, INTEGER_TYPE_SPEC, KIND_SELECTOR, STAR_SIZE, @@ -151,7 +238,19 @@ public enum FlangName implements StringProvider { CHARACTER, REAL, CHAR_SELECTOR, + CHAR_LENGTH, LENGTH_SELECTOR, + LENGTH_AND_KIND, + COMPLEX, + TYPE_PARAM_SPEC, + KEYWORD, + DERIVED_TYPE_SPEC, + DECLARATION_TYPE_SPEC, + TYPE, + CLASS, + CLASS_STAR, + TYPE_STAR, + INTRINSIC_TYPE_SPEC, /// LOOP LOOP_BOUNDS, @@ -161,6 +260,41 @@ public enum FlangName implements StringProvider { CONCURRENT_CONTROL, LOCALITY_SPEC, + /// IO + OPEN_STMT, + CONNECT_SPEC, + KIND, + FILE_UNIT_NUMBER, + FILE_NAME_EXPR, + CHAR_EXPR, + MSG_VARIABLE, + STAT_VARIABLE, + RECL, + NEWUNIT, + ERR_LABEL, + STATUS_EXPR, + WRITE_STMT, + IO_CONTROL_SPEC, + IO_UNIT, + FORMAT, + END_LABEL, + EOR_LABEL, + ID_VARIABLE, + POS, + REC, + SIZE, + REWIND_STMT, + POSITION_OR_FLUSH_SPEC, + READ_STMT, + INPUT_ITEM, + INPUT_IMPLIED_DO, + OUTPUT_IMPLIED_DO, + WAIT_STMT, + WAIT_SPEC, + ID_EXPR, + CLOSE_STMT, + CLOSE_SPEC, + /// OPENMP OPENMP_CONSTRUCT("OpenMPConstruct"), OMP_BLOCK_CONSTRUCT, @@ -190,21 +324,37 @@ public enum FlangName implements StringProvider { ARRAY_SPEC, EXPLICIT_SHAPE_SPEC, ALLOCATE_SHAPE_SPEC, + ALLOCATE_COSHAPE_SPEC, + ASSUMED_SHAPE_SPEC, + ASSUMED_SIZE_SPEC, IMPLIED_SHAPE_SPEC, + COARRAY_SPEC, + DEFERRED_COSHAPE_SPEC_LIST, + EXPLICIT_COSHAPE_SPEC, ALLOCATABLE, ASYNCHRONOUS, INTENT_SPEC, PARAMETER, - ASSUMED_SIZE_SPEC, ASSUMED_IMPLIED_SPEC, - + ASSUMED_RANK_SPEC, + INTRINSIC, + OPTIONAL, + PROTECTED, + SAVE, + TARGET, + VALUE, + VOLATILE, // OTHER INITIALIZATION, NAME_VALUE, ALLOCATE_OBJECT, ALLOC_OPT, - STAT_VARIABLE, + MOLD, + SOURCE, + STAT_OR_ERRMSG, + STREAM, + PINNED, NAMED_CONSTANT, NAMED_CONSTANT_DEF, diff --git a/FortranParser/src/pt/up/fe/specs/fortran/parser/FlangToClass.java b/FortranParser/src/pt/up/fe/specs/fortran/parser/FlangToClass.java index 9a03247e..e65fc432 100644 --- a/FortranParser/src/pt/up/fe/specs/fortran/parser/FlangToClass.java +++ b/FortranParser/src/pt/up/fe/specs/fortran/parser/FlangToClass.java @@ -1,14 +1,21 @@ package pt.up.fe.specs.fortran.parser; import pt.up.fe.specs.fortran.ast.nodes.FortranNode; -import pt.up.fe.specs.fortran.ast.nodes.decl.*; +import pt.up.fe.specs.fortran.ast.nodes.alloc.AllocOption; import pt.up.fe.specs.fortran.ast.nodes.alloc.Allocation; -import pt.up.fe.specs.fortran.ast.nodes.alloc.StatVariable; -import pt.up.fe.specs.fortran.ast.nodes.decl.DataStmtValue; -import pt.up.fe.specs.fortran.ast.nodes.decl.DummyArgumentDecl; -import pt.up.fe.specs.fortran.ast.nodes.decl.EntityDecl; -import pt.up.fe.specs.fortran.ast.nodes.decl.KindSelector; +import pt.up.fe.specs.fortran.ast.nodes.alloc.ExprAllocOption; +import pt.up.fe.specs.fortran.ast.nodes.alloc.VarAllocOption; +import pt.up.fe.specs.fortran.ast.nodes.decl.*; +import pt.up.fe.specs.fortran.ast.nodes.decl.component.ComponentDecl; +import pt.up.fe.specs.fortran.ast.nodes.decl.component.attr.*; +import pt.up.fe.specs.fortran.ast.nodes.decl.init.*; +import pt.up.fe.specs.fortran.ast.nodes.decl.proc.ProcDecl; +import pt.up.fe.specs.fortran.ast.nodes.decl.proc.attr.*; +import pt.up.fe.specs.fortran.ast.nodes.decl.proc.interfaces.NamedProcInterface; +import pt.up.fe.specs.fortran.ast.nodes.decl.proc.interfaces.ProcInterface; +import pt.up.fe.specs.fortran.ast.nodes.decl.proc.interfaces.TypeProcInterface; import pt.up.fe.specs.fortran.ast.nodes.expr.*; +import pt.up.fe.specs.fortran.ast.nodes.io.*; import pt.up.fe.specs.fortran.ast.nodes.loops.ConcurrentLoopControl; import pt.up.fe.specs.fortran.ast.nodes.loops.ConcurrentRange; import pt.up.fe.specs.fortran.ast.nodes.loops.RangeLoopControl; @@ -17,193 +24,457 @@ import pt.up.fe.specs.fortran.ast.nodes.omp.clause.OmpDataSharingClause; import pt.up.fe.specs.fortran.ast.nodes.omp.clause.OmpNowaitClause; import pt.up.fe.specs.fortran.ast.nodes.omp.clause.OmpReductionClause; -import pt.up.fe.specs.fortran.ast.nodes.program.*; -import pt.up.fe.specs.fortran.ast.nodes.specification.ArraySpecification; -import pt.up.fe.specs.fortran.ast.nodes.specification.NamedConstantDef; +import pt.up.fe.specs.fortran.ast.nodes.program.Execution; +import pt.up.fe.specs.fortran.ast.nodes.program.FortranFile; +import pt.up.fe.specs.fortran.ast.nodes.program.InternalSubprogramPart; +import pt.up.fe.specs.fortran.ast.nodes.program.Specification; +import pt.up.fe.specs.fortran.ast.nodes.program.subprogram.*; +import pt.up.fe.specs.fortran.ast.nodes.program.unit.*; +import pt.up.fe.specs.fortran.ast.nodes.program.unit.Module; +import pt.up.fe.specs.fortran.ast.nodes.specification.*; +import pt.up.fe.specs.fortran.ast.nodes.specification.coshape.DeferredCoshapeSpec; +import pt.up.fe.specs.fortran.ast.nodes.specification.coshape.ExplicitCoshapeSpec; +import pt.up.fe.specs.fortran.ast.nodes.specification.funcspec.DeclTypeFunctionSpec; +import pt.up.fe.specs.fortran.ast.nodes.specification.funcspec.EmptyFunctionSpec; +import pt.up.fe.specs.fortran.ast.nodes.specification.funcspec.FunctionSpec; +import pt.up.fe.specs.fortran.ast.nodes.specification.genericspec.GenericSpec; +import pt.up.fe.specs.fortran.ast.nodes.specification.genericspec.NameGenericSpec; +import pt.up.fe.specs.fortran.ast.nodes.specification.genericspec.OpGenericSpec; +import pt.up.fe.specs.fortran.ast.nodes.specification.genericspec.OtherGenericSpec; +import pt.up.fe.specs.fortran.ast.nodes.specification.interfaces.InterfaceBlock; +import pt.up.fe.specs.fortran.ast.nodes.specification.interfaces.InterfaceFunction; +import pt.up.fe.specs.fortran.ast.nodes.specification.interfaces.InterfaceSubroutine; +import pt.up.fe.specs.fortran.ast.nodes.specification.shape.*; +import pt.up.fe.specs.fortran.ast.nodes.specification.type.*; import pt.up.fe.specs.fortran.ast.nodes.stmt.*; import pt.up.fe.specs.fortran.ast.nodes.stmt.datastmt.DataStmt; import pt.up.fe.specs.fortran.ast.nodes.stmt.datastmt.DataStmtSet; +import pt.up.fe.specs.fortran.ast.nodes.stmt.dimstmt.DimensionDecl; +import pt.up.fe.specs.fortran.ast.nodes.stmt.dimstmt.DimensionStmt; import pt.up.fe.specs.fortran.ast.nodes.stmt.ifstmt.*; +import pt.up.fe.specs.fortran.ast.nodes.stmt.implicit.DefaultImplicitStmt; +import pt.up.fe.specs.fortran.ast.nodes.stmt.implicit.ImplicitNoneStmt; +import pt.up.fe.specs.fortran.ast.nodes.stmt.implicit.ImplicitStmt; +import pt.up.fe.specs.fortran.ast.nodes.stmt.interfaces.AbstractInterfaceStmt; +import pt.up.fe.specs.fortran.ast.nodes.stmt.interfaces.DefaultInterfaceStmt; +import pt.up.fe.specs.fortran.ast.nodes.stmt.interfaces.EndInterfaceStmt; +import pt.up.fe.specs.fortran.ast.nodes.stmt.interfaces.InterfaceStmt; import pt.up.fe.specs.fortran.ast.nodes.stmt.loop.DoConstruct; import pt.up.fe.specs.fortran.ast.nodes.stmt.loop.DoStmt; import pt.up.fe.specs.fortran.ast.nodes.stmt.loop.EndDoStmt; +import pt.up.fe.specs.fortran.ast.nodes.stmt.pointerassign.DoubleBound; +import pt.up.fe.specs.fortran.ast.nodes.stmt.pointerassign.DoubleBoundPointerAssignStmt; +import pt.up.fe.specs.fortran.ast.nodes.stmt.pointerassign.PointerAssignStmt; +import pt.up.fe.specs.fortran.ast.nodes.stmt.pointerassign.SingleBoundPointerAssignStmt; import pt.up.fe.specs.fortran.ast.nodes.stmt.selectcase.CaseBlock; import pt.up.fe.specs.fortran.ast.nodes.stmt.selectcase.CaseConstruct; import pt.up.fe.specs.fortran.ast.nodes.stmt.selectcase.EndSelectStmt; import pt.up.fe.specs.fortran.ast.nodes.stmt.selectcase.SelectCaseStmt; +import pt.up.fe.specs.fortran.ast.nodes.stmt.typedef.DataComponentDefStmt; +import pt.up.fe.specs.fortran.ast.nodes.stmt.typedef.DerivedTypeStmt; +import pt.up.fe.specs.fortran.ast.nodes.stmt.typedef.EndTypeStmt; +import pt.up.fe.specs.fortran.ast.nodes.stmt.usestmt.*; import pt.up.fe.specs.fortran.ast.nodes.type.*; -import pt.up.fe.specs.fortran.ast.nodes.type.attributes.AllocatableKeyword; -import pt.up.fe.specs.fortran.ast.nodes.type.attributes.IntentSpec; -import pt.up.fe.specs.fortran.ast.nodes.type.attributes.ParameterKeyword; -import pt.up.fe.specs.fortran.ast.nodes.type.shapes.AllocateShapeSpecification; -import pt.up.fe.specs.fortran.ast.nodes.type.shapes.AssumedImpliedShapeSpec; -import pt.up.fe.specs.fortran.ast.nodes.type.shapes.DeferredShapeSpecList; -import pt.up.fe.specs.fortran.ast.nodes.type.shapes.ExplicitShapeSpecification; -import pt.up.fe.specs.fortran.ast.nodes.utils.*; +import pt.up.fe.specs.fortran.ast.nodes.type.attributes.*; +import pt.up.fe.specs.fortran.ast.nodes.type.decltype.DeclType; +import pt.up.fe.specs.fortran.ast.nodes.type.decltype.DerivedDeclType; +import pt.up.fe.specs.fortran.ast.nodes.type.decltype.IntrinsicDeclType; +import pt.up.fe.specs.fortran.ast.nodes.type.decltype.StarDeclType; +import pt.up.fe.specs.fortran.ast.nodes.type.lenselector.*; +import pt.up.fe.specs.fortran.ast.nodes.type.typeparam.*; +import pt.up.fe.specs.fortran.ast.nodes.utils.NameValue; import java.util.HashMap; import java.util.Map; import java.util.Optional; public class FlangToClass { - - private static final Map> NAME_TO_CLASS = new HashMap<>(); + private static final Map> NAME_TO_MAPPER = new HashMap<>(); static { - NAME_TO_CLASS.put(FlangName.PROGRAM, FortranFile.class); - NAME_TO_CLASS.put(FlangName.MAIN_PROGRAM, MainProgram.class); - NAME_TO_CLASS.put(FlangName.PROGRAM_STMT, ProgramStmt.class); - NAME_TO_CLASS.put(FlangName.END_PROGRAM_STMT, EndProgramStmt.class); - NAME_TO_CLASS.put(FlangName.SPECIFICATION_PART, Specification.class); - NAME_TO_CLASS.put(FlangName.EXECUTION_PART, Execution.class); - NAME_TO_CLASS.put(FlangName.INTERNAL_SUBPROGRAM_PART, InternalSubprogram.class); - NAME_TO_CLASS.put(FlangName.SUBROUTINE_SUBPROGRAM, Subroutine.class); - NAME_TO_CLASS.put(FlangName.SUBROUTINE_STMT, SubroutineStmt.class); - NAME_TO_CLASS.put(FlangName.END_SUBROUTINE_STMT, EndSubroutineStmt.class); - NAME_TO_CLASS.put(FlangName.ALLOCATION, Allocation.class); - NAME_TO_CLASS.put(FlangName.FUNCTION_SUBPROGRAM, Function.class); + NAME_TO_MAPPER.put(FlangName.PROGRAM, ClassMapper.always(FortranFile.class)); + NAME_TO_MAPPER.put(FlangName.PROGRAM_UNIT, ClassMapper.caseFor(ProgramUnit.class) + .ignore(FlangName.MAIN_PROGRAM) + .map(FlangName.SUBROUTINE_SUBPROGRAM, SubprogramUnit.class) + .map(FlangName.FUNCTION_SUBPROGRAM, SubprogramUnit.class) + .ignore(FlangName.MODULE)); + NAME_TO_MAPPER.put(FlangName.MAIN_PROGRAM, ClassMapper.always(MainProgram.class)); + NAME_TO_MAPPER.put(FlangName.PROGRAM_STMT, ClassMapper.always(ProgramStmt.class)); + NAME_TO_MAPPER.put(FlangName.END_PROGRAM_STMT, ClassMapper.always(EndProgramStmt.class)); + NAME_TO_MAPPER.put(FlangName.SPECIFICATION_PART, ClassMapper.always(Specification.class)); + NAME_TO_MAPPER.put(FlangName.EXECUTION_PART, ClassMapper.always(Execution.class)); + NAME_TO_MAPPER.put(FlangName.INTERNAL_SUBPROGRAM_PART, ClassMapper.always(InternalSubprogramPart.class)); + NAME_TO_MAPPER.put(FlangName.SUBROUTINE_SUBPROGRAM, ClassMapper.always(Subroutine.class)); + NAME_TO_MAPPER.put(FlangName.FUNCTION_SUBPROGRAM, ClassMapper.always(Function.class)); + NAME_TO_MAPPER.put(FlangName.SUBROUTINE_STMT, ClassMapper.always(SubroutineStmt.class)); + NAME_TO_MAPPER.put(FlangName.END_SUBROUTINE_STMT, ClassMapper.always(EndSubroutineStmt.class)); + NAME_TO_MAPPER.put(FlangName.MODULE, ClassMapper.always(Module.class)); + NAME_TO_MAPPER.put(FlangName.MODULE_SUBPROGRAM_PART, ClassMapper.always(ModuleSubprogramPart.class)); + NAME_TO_MAPPER.put(FlangName.MODULE_STMT, ClassMapper.always(ModuleStmt.class)); + NAME_TO_MAPPER.put(FlangName.END_MODULE_STMT, ClassMapper.always(EndModuleStmt.class)); + NAME_TO_MAPPER.put(FlangName.ALLOCATION, ClassMapper.always(Allocation.class)); /// DECLs - NAME_TO_CLASS.put(FlangName.ENTITY_DECL, EntityDecl.class); - NAME_TO_CLASS.put(FlangName.DUMMY_ARG, DummyArgumentDecl.class); - NAME_TO_CLASS.put(FlangName.DATA_STMT_VALUE, DataStmtValue.class); - NAME_TO_CLASS.put(FlangName.DATA_STMT_SET, DataStmtSet.class); + NAME_TO_MAPPER.put(FlangName.ENTITY_DECL, ClassMapper.always(EntityDecl.class)); + NAME_TO_MAPPER.put(FlangName.DUMMY_ARG, ClassMapper.caseFor(Parameter.class) + .map(FlangName.NAME, NamedParameter.class) + .map(FlangName.STAR, StarParameter.class)); + NAME_TO_MAPPER.put(FlangName.DATA_STMT_VALUE, ClassMapper.always(DataStmtValue.class)); + NAME_TO_MAPPER.put(FlangName.DEFINED_OP_NAME, ClassMapper.always(NamedOperator.class)); + NAME_TO_MAPPER.put(FlangName.INTRINSIC_OPERATOR, ClassMapper.always(IntrinsicOperator.class)); + NAME_TO_MAPPER.put(FlangName.GENERIC_SPEC, ClassMapper.caseFor(GenericSpec.class) + .map(FlangName.NAME, NameGenericSpec.class) + .map(FlangName.DEFINED_OPERATOR, OpGenericSpec.class) + .map(FlangName.ASSIGNMENT, OtherGenericSpec.class) + .map(FlangName.READ_FORMATTED, OtherGenericSpec.class) + .map(FlangName.READ_UNFORMATTED, OtherGenericSpec.class) + .map(FlangName.WRITE_FORMATTED, OtherGenericSpec.class) + .map(FlangName.WRITE_UNFORMATTED, OtherGenericSpec.class)); + NAME_TO_MAPPER.put(FlangName.PREFIX_SPEC, ClassMapper.caseFor(FunctionSpec.class) + .map(FlangName.DECLARATION_TYPE_SPEC, DeclTypeFunctionSpec.class) + .map(FlangName.ELEMENTAL, EmptyFunctionSpec.class) + .map(FlangName.IMPURE, EmptyFunctionSpec.class) + .map(FlangName.MODULE, EmptyFunctionSpec.class) + .map(FlangName.NON_RECURSIVE, EmptyFunctionSpec.class) + .map(FlangName.PURE, EmptyFunctionSpec.class) + .map(FlangName.RECURSIVE, EmptyFunctionSpec.class)); + NAME_TO_MAPPER.put(FlangName.DERIVED_TYPE_DEF, ClassMapper.always(DerivedTypeDef.class)); + NAME_TO_MAPPER.put(FlangName.TYPE_ATTR_SPEC, ClassMapper.caseFor(TypeAttr.class) + .map(FlangName.ABSTRACT, AbstractTypeAttr.class) + .map(FlangName.ACCESS_SPEC, AccessTypeAttr.class) + .map(FlangName.BIND_C, BindTypeAttr.class) + .map(FlangName.EXTENDS, ExtendsTypeAttr.class)); + NAME_TO_MAPPER.put(FlangName.INTERFACE_BLOCK, ClassMapper.always(InterfaceBlock.class)); + NAME_TO_MAPPER.put(FlangName.FUNCTION, ClassMapper.always(InterfaceFunction.class)); + NAME_TO_MAPPER.put(FlangName.SUBROUTINE, ClassMapper.always(InterfaceSubroutine.class)); + NAME_TO_MAPPER.put(FlangName.INITIALIZATION, ClassMapper.caseFor(Initialization.class) + .map(FlangName.EXPR, ExprInitialization.class) + .map(FlangName.NULL_INIT, NullInitialization.class) + .map(FlangName.DESIGNATOR, DataTargetInitialization.class) + .map(FlangName.DATA_STMT_VALUE, ListInitialization.class)); + NAME_TO_MAPPER.put(FlangName.PROC_POINTER_INIT, ClassMapper.caseFor(ProcPointerInit.class) + .map(FlangName.NAME, NameProcPointerInit.class) + .map(FlangName.NULL_INIT, NullProcPointerInit.class)); + NAME_TO_MAPPER.put(FlangName.PROC_INTERFACE, ClassMapper.caseFor(ProcInterface.class) + .map(FlangName.NAME, NamedProcInterface.class) + .map(FlangName.DECLARATION_TYPE_SPEC, TypeProcInterface.class)); + NAME_TO_MAPPER.put(FlangName.PROC_ATTR_SPEC, ClassMapper.caseFor(ProcAttr.class) + .map(FlangName.ACCESS_SPEC, AccessProcAttr.class) + .map(FlangName.LANGUAGE_BINDING_SPEC, LangBindProcAttr.class) + .map(FlangName.INTENT_SPEC, IntentProcAttr.class) + .map(FlangName.OPTIONAL, OtherProcAttr.class) + .map(FlangName.POINTER, OtherProcAttr.class) + .map(FlangName.PROTECTED, OtherProcAttr.class) + .map(FlangName.SAVE, OtherProcAttr.class)); + NAME_TO_MAPPER.put(FlangName.PROC_DECL, ClassMapper.always(ProcDecl.class)); /// STMTs - NAME_TO_CLASS.put(FlangName.PRINT_STMT, PrintStmt.class); - NAME_TO_CLASS.put(FlangName.FORMAT_STMT, FormatStmt.class); - NAME_TO_CLASS.put(FlangName.TYPE_DECLARATION_STMT, TypeDeclarationStmt.class); - NAME_TO_CLASS.put(FlangName.ASSIGNMENT_STMT, AssignmentStmt.class); - NAME_TO_CLASS.put(FlangName.DO_CONSTRUCT, DoConstruct.class); - NAME_TO_CLASS.put(FlangName.NON_LABEL_DO_STMT, DoStmt.class); - NAME_TO_CLASS.put(FlangName.END_DO_STMT, EndDoStmt.class); - NAME_TO_CLASS.put(FlangName.COMPILER_DIRECTIVE, CompilerDirective.class); - NAME_TO_CLASS.put(FlangName.GOTO_STMT, GotoStmt.class); - NAME_TO_CLASS.put(FlangName.STOP_STMT, StopStmt.class); - NAME_TO_CLASS.put(FlangName.COMMON_STMT, CommonStmt.class); - NAME_TO_CLASS.put(FlangName.COMMON_STMT_BLOCK, CommonBlock.class); - NAME_TO_CLASS.put(FlangName.COMMON_BLOCK_OBJECT, CommonBlockObject.class); - - NAME_TO_CLASS.put(FlangName.IF_CONSTRUCT, IfConstruct.class); - NAME_TO_CLASS.put(FlangName.IF_THEN_STMT, IfThenStmt.class); - NAME_TO_CLASS.put(FlangName.ELSE_IF_BLOCK, ElseIfBlock.class); - NAME_TO_CLASS.put(FlangName.ELSE_IF_STMT, ElseIfStmt.class); - NAME_TO_CLASS.put(FlangName.ELSE_BLOCK, ElseBlock.class); - NAME_TO_CLASS.put(FlangName.ELSE_STMT, ElseStmt.class); - NAME_TO_CLASS.put(FlangName.END_IF_STMT, EndIfStmt.class); - NAME_TO_CLASS.put(FlangName.IF_STMT, IfStmt.class); - - NAME_TO_CLASS.put(FlangName.CASE_CONSTRUCT, CaseConstruct.class); - NAME_TO_CLASS.put(FlangName.SELECT_CASE_STMT, SelectCaseStmt.class); - NAME_TO_CLASS.put(FlangName.CASE, CaseBlock.class); - NAME_TO_CLASS.put(FlangName.END_SELECT_STMT, EndSelectStmt.class); - - NAME_TO_CLASS.put(FlangName.CALL_STMT, CallStmt.class); - NAME_TO_CLASS.put(FlangName.WRITE_STMT, WriteStmt.class); - NAME_TO_CLASS.put(FlangName.CONTAINS_STMT, ContainsStmt.class); - NAME_TO_CLASS.put(FlangName.ALLOCATE_STMT, AllocateStmt.class); - NAME_TO_CLASS.put(FlangName.DEALLOCATE_STMT, DeallocateStmt.class); - NAME_TO_CLASS.put(FlangName.USE_STMT, UseStmt.class); - NAME_TO_CLASS.put(FlangName.CONTINUE_STMT, ContinueStmt.class); - NAME_TO_CLASS.put(FlangName.PARAMETER_STMT, ParameterStmt.class); - NAME_TO_CLASS.put(FlangName.COMMON_STMT, CommonStmt.class); - NAME_TO_CLASS.put(FlangName.EXTERNAL_STMT, ExternalStmt.class); - NAME_TO_CLASS.put(FlangName.RETURN_STMT, ReturnStmt.class); - NAME_TO_CLASS.put(FlangName.DATA_STMT, DataStmt.class); - NAME_TO_CLASS.put(FlangName.OPEN_STMT, OpenStmt.class); - NAME_TO_CLASS.put(FlangName.CLOSE_STMT, CloseStmt.class); - NAME_TO_CLASS.put(FlangName.NAMED_CONSTANT_DEF, NamedConstantDef.class); - - NAME_TO_CLASS.put(FlangName.DATA_STMT, DataStmt.class); - NAME_TO_CLASS.put(FlangName.DATA_STMT_SET, DataStmtSet.class); + NAME_TO_MAPPER.put(FlangName.PRINT_STMT, ClassMapper.always(PrintStmt.class)); + NAME_TO_MAPPER.put(FlangName.FORMAT_STMT, ClassMapper.always(FormatStmt.class)); + NAME_TO_MAPPER.put(FlangName.TYPE_DECLARATION_STMT, ClassMapper.always(TypeDeclarationStmt.class)); + NAME_TO_MAPPER.put(FlangName.ASSIGNMENT_STMT, ClassMapper.always(AssignmentStmt.class)); + NAME_TO_MAPPER.put(FlangName.DO_CONSTRUCT, ClassMapper.always(DoConstruct.class)); + NAME_TO_MAPPER.put(FlangName.NON_LABEL_DO_STMT, ClassMapper.always(DoStmt.class)); + NAME_TO_MAPPER.put(FlangName.END_DO_STMT, ClassMapper.always(EndDoStmt.class)); + NAME_TO_MAPPER.put(FlangName.COMPILER_DIRECTIVE, ClassMapper.always(CompilerDirective.class)); + NAME_TO_MAPPER.put(FlangName.GOTO_STMT, ClassMapper.always(GotoStmt.class)); + NAME_TO_MAPPER.put(FlangName.STOP_STMT, ClassMapper.always(StopStmt.class)); + NAME_TO_MAPPER.put(FlangName.COMMON_STMT, ClassMapper.always(CommonStmt.class)); + NAME_TO_MAPPER.put(FlangName.COMMON_STMT_BLOCK, ClassMapper.always(CommonBlock.class)); + NAME_TO_MAPPER.put(FlangName.COMMON_BLOCK_OBJECT, ClassMapper.always(CommonBlockObject.class)); + + NAME_TO_MAPPER.put(FlangName.IF_CONSTRUCT, ClassMapper.always(IfConstruct.class)); + NAME_TO_MAPPER.put(FlangName.IF_THEN_STMT, ClassMapper.always(IfThenStmt.class)); + NAME_TO_MAPPER.put(FlangName.ELSE_IF_BLOCK, ClassMapper.always(ElseIfBlock.class)); + NAME_TO_MAPPER.put(FlangName.ELSE_IF_STMT, ClassMapper.always(ElseIfStmt.class)); + NAME_TO_MAPPER.put(FlangName.ELSE_BLOCK, ClassMapper.always(ElseBlock.class)); + NAME_TO_MAPPER.put(FlangName.ELSE_STMT, ClassMapper.always(ElseStmt.class)); + NAME_TO_MAPPER.put(FlangName.END_IF_STMT, ClassMapper.always(EndIfStmt.class)); + NAME_TO_MAPPER.put(FlangName.IF_STMT, ClassMapper.always(IfStmt.class)); + + NAME_TO_MAPPER.put(FlangName.CASE_CONSTRUCT, ClassMapper.always(CaseConstruct.class)); + NAME_TO_MAPPER.put(FlangName.SELECT_CASE_STMT, ClassMapper.always(SelectCaseStmt.class)); + NAME_TO_MAPPER.put(FlangName.CASE, ClassMapper.always(CaseBlock.class)); + NAME_TO_MAPPER.put(FlangName.END_SELECT_STMT, ClassMapper.always(EndSelectStmt.class)); + + NAME_TO_MAPPER.put(FlangName.CALL_STMT, ClassMapper.always(CallStmt.class)); + NAME_TO_MAPPER.put(FlangName.CONTAINS_STMT, ClassMapper.always(ContainsStmt.class)); + NAME_TO_MAPPER.put(FlangName.ALLOCATE_STMT, ClassMapper.always(AllocateStmt.class)); + NAME_TO_MAPPER.put(FlangName.DEALLOCATE_STMT, ClassMapper.always(DeallocateStmt.class)); + NAME_TO_MAPPER.put(FlangName.USE_STMT, ClassMapper.caseFor(UseStmt.class) + .map(FlangName.RENAME, UseRenameStmt.class) + .map(FlangName.ONLY, UseOnlyStmt.class)); + NAME_TO_MAPPER.put(FlangName.ONLY, ClassMapper.caseFor(Only.class) + .map(FlangName.GENERIC_SPEC, OnlyGenericSpec.class) + .map(FlangName.NAME, UseName.class) + .ignore(FlangName.RENAME)); + NAME_TO_MAPPER.put(FlangName.NAMES, ClassMapper.always(NamesRename.class)); + NAME_TO_MAPPER.put(FlangName.OPERATORS, ClassMapper.always(OperatorsRename.class)); + NAME_TO_MAPPER.put(FlangName.CONTINUE_STMT, ClassMapper.always(ContinueStmt.class)); + NAME_TO_MAPPER.put(FlangName.PARAMETER_STMT, ClassMapper.always(ParameterStmt.class)); + NAME_TO_MAPPER.put(FlangName.NAMED_CONSTANT_DEF, ClassMapper.always(NamedConstantDef.class)); + NAME_TO_MAPPER.put(FlangName.DATA_STMT, ClassMapper.always(DataStmt.class)); + NAME_TO_MAPPER.put(FlangName.DATA_STMT_SET, ClassMapper.always(DataStmtSet.class)); + NAME_TO_MAPPER.put(FlangName.RETURN_STMT, ClassMapper.always(ReturnStmt.class)); + NAME_TO_MAPPER.put(FlangName.DIMENSION_STMT, ClassMapper.always(DimensionStmt.class)); + NAME_TO_MAPPER.put(FlangName.DECLARATION, ClassMapper.always(DimensionDecl.class)); + NAME_TO_MAPPER.put(FlangName.NAMELIST_STMT, ClassMapper.always(NamelistStmt.class)); + NAME_TO_MAPPER.put(FlangName.GROUP, ClassMapper.always(NamelistGroup.class)); + NAME_TO_MAPPER.put(FlangName.FUNCTION_STMT, ClassMapper.always(FunctionStmt.class)); + NAME_TO_MAPPER.put(FlangName.LANGUAGE_BINDING_SPEC, ClassMapper.always(LanguageBindingSpec.class)); + NAME_TO_MAPPER.put(FlangName.END_FUNCTION_STMT, ClassMapper.always(EndFunctionStmt.class)); + NAME_TO_MAPPER.put(FlangName.EXTERNAL_STMT, ClassMapper.always(ExternalStmt.class)); + NAME_TO_MAPPER.put(FlangName.ACCESS_STMT, ClassMapper.always(AccessStmt.class)); + NAME_TO_MAPPER.put(FlangName.IMPORT_STMT, ClassMapper.always(ImportStmt.class)); + NAME_TO_MAPPER.put(FlangName.IMPLICIT_STMT, ClassMapper.caseFor(ImplicitStmt.class) + .map(FlangName.IMPLICIT_SPEC, DefaultImplicitStmt.class) + .map(FlangName.IMPLICIT_NONE_NAME_SPEC, ImplicitNoneStmt.class)); + NAME_TO_MAPPER.put(FlangName.IMPLICIT_SPEC, ClassMapper.always(ImplicitSpec.class)); + NAME_TO_MAPPER.put(FlangName.LETTER_SPEC, ClassMapper.always(LetterSpec.class)); + NAME_TO_MAPPER.put(FlangName.DERIVED_TYPE_STMT, ClassMapper.always(DerivedTypeStmt.class)); + NAME_TO_MAPPER.put(FlangName.DATA_COMPONENT_DEF_STMT, ClassMapper.always(DataComponentDefStmt.class)); + NAME_TO_MAPPER.put(FlangName.COMPONENT_ATTR_SPEC, ClassMapper.caseFor(ComponentAttr.class) + .map(FlangName.ACCESS_SPEC, AccessComponentAttr.class) + .map(FlangName.ALLOCATABLE, OtherComponentAttr.class) + .map(FlangName.COARRAY_SPEC, CodimComponentAttr.class) + .map(FlangName.CONTIGUOUS, OtherComponentAttr.class) + .map(FlangName.COMPONENT_ARRAY_SPEC, DimComponentAttr.class) + .map(FlangName.POINTER, OtherComponentAttr.class)); + NAME_TO_MAPPER.put(FlangName.COMPONENT_DECL, ClassMapper.always(ComponentDecl.class)); + NAME_TO_MAPPER.put(FlangName.END_TYPE_STMT, ClassMapper.always(EndTypeStmt.class)); + NAME_TO_MAPPER.put(FlangName.INTERFACE_STMT, ClassMapper.caseFor(InterfaceStmt.class) + .map(FlangName.GENERIC_SPEC, DefaultInterfaceStmt.class) + .map(FlangName.ABSTRACT, AbstractInterfaceStmt.class)); + NAME_TO_MAPPER.put(FlangName.END_INTERFACE_STMT, ClassMapper.always(EndInterfaceStmt.class)); + NAME_TO_MAPPER.put(FlangName.PROCEDURE_DECLARATION_STMT, ClassMapper.always(ProcDeclStmt.class)); + NAME_TO_MAPPER.put(FlangName.POINTER_ASSIGNMENT_STMT, ClassMapper.caseFor(PointerAssignStmt.class) + .map(FlangName.BOUNDS_SPEC, SingleBoundPointerAssignStmt.class) + .map(FlangName.BOUNDS_REMAPPING, DoubleBoundPointerAssignStmt.class)); + NAME_TO_MAPPER.put(FlangName.BOUNDS_REMAPPING, ClassMapper.always(DoubleBound.class)); /// Variables - //NAME_TO_CLASS.put(FlangName.DATA_REF, DataRef.class); - NAME_TO_CLASS.put(FlangName.NAME, DataRef.class); + //NAME_TO_CLASS.put(FlangName.DATA_REF, DataRef.class); // TODO(Process-ing): Improve this + NAME_TO_MAPPER.put(FlangName.NAME, ClassMapper.always(DataRef.class)); + NAME_TO_MAPPER.put(FlangName.VARIABLE, ClassMapper.caseFor(Variable.class) + .map(FlangName.DESIGNATOR, DesignatorVariable.class) + .map(FlangName.FUNCTION_REFERENCE, FunctionRefVariable.class)); /// EXPRs - NAME_TO_CLASS.put(FlangName.CHAR_LITERAL_CONSTANT, StringLiteral.class); - NAME_TO_CLASS.put(FlangName.INT_LITERAL_CONSTANT, IntLiteral.class); - NAME_TO_CLASS.put(FlangName.SIGNED_INT_LITERAL_CONSTANT, IntLiteral.class); - NAME_TO_CLASS.put(FlangName.KIND_SELECTOR, KindSelector.class); - NAME_TO_CLASS.put(FlangName.LOGICAL_LITERAL_CONSTANT, LogicalLiteral.class); - NAME_TO_CLASS.put(FlangName.REAL_LITERAL_CONSTANT, RealLiteral.class); - NAME_TO_CLASS.put(FlangName.FORMAT, Format.class); - NAME_TO_CLASS.put(FlangName.STAR, Star.class); - NAME_TO_CLASS.put(FlangName.PARENTHESES, ParenExpr.class); - NAME_TO_CLASS.put(FlangName.UNARY_PLUS, UnaryOperator.class); - NAME_TO_CLASS.put(FlangName.NEGATE, UnaryOperator.class); - NAME_TO_CLASS.put(FlangName.NOT, UnaryOperator.class); - NAME_TO_CLASS.put(FlangName.ADD, BinaryOperator.class); - NAME_TO_CLASS.put(FlangName.SUBTRACT, BinaryOperator.class); - NAME_TO_CLASS.put(FlangName.MULTIPLY, BinaryOperator.class); - NAME_TO_CLASS.put(FlangName.DIVIDE, BinaryOperator.class); - NAME_TO_CLASS.put(FlangName.POWER, BinaryOperator.class); - NAME_TO_CLASS.put(FlangName.EQ, BinaryOperator.class); - NAME_TO_CLASS.put(FlangName.NE, BinaryOperator.class); - NAME_TO_CLASS.put(FlangName.LT, BinaryOperator.class); - NAME_TO_CLASS.put(FlangName.LE, BinaryOperator.class); - NAME_TO_CLASS.put(FlangName.GT, BinaryOperator.class); - NAME_TO_CLASS.put(FlangName.GE, BinaryOperator.class); - NAME_TO_CLASS.put(FlangName.AND, BinaryOperator.class); - NAME_TO_CLASS.put(FlangName.ARRAY_CONSTRUCTOR, ArrayConstructor.class); - NAME_TO_CLASS.put(FlangName.AC_SPEC, AcSpecification.class); - NAME_TO_CLASS.put(FlangName.ARRAY_ELEMENT, ArraySubscriptExpr.class); - NAME_TO_CLASS.put(FlangName.SUBSCRIPT, Subscript.class); - NAME_TO_CLASS.put(FlangName.SUBSCRIPT_TRIPLET, SubscriptTriplet.class); - NAME_TO_CLASS.put(FlangName.CALL, Call.class); - NAME_TO_CLASS.put(FlangName.ACTUAL_ARG_SPEC, Argument.class); - NAME_TO_CLASS.put(FlangName.AC_IMPLIED_DO, AcImpliedDo.class); - NAME_TO_CLASS.put(FlangName.AC_IMPLIED_DO_CONTROL, AcImpliedDoControl.class); + NAME_TO_MAPPER.put(FlangName.CHAR_LITERAL_CONSTANT, ClassMapper.always(StringLiteral.class)); + NAME_TO_MAPPER.put(FlangName.INT_LITERAL_CONSTANT, ClassMapper.always(IntLiteral.class)); + NAME_TO_MAPPER.put(FlangName.SIGNED_INT_LITERAL_CONSTANT, ClassMapper.always(IntLiteral.class)); + NAME_TO_MAPPER.put(FlangName.KIND_SELECTOR, ClassMapper.always(KindSelector.class)); + NAME_TO_MAPPER.put(FlangName.LOGICAL_LITERAL_CONSTANT, ClassMapper.always(LogicalLiteral.class)); + NAME_TO_MAPPER.put(FlangName.REAL_LITERAL_CONSTANT, ClassMapper.always(RealLiteral.class)); + NAME_TO_MAPPER.put(FlangName.SIGNED_REAL_LITERAL_CONSTANT, ClassMapper.always(RealLiteral.class)); + NAME_TO_MAPPER.put(FlangName.PARENTHESES, ClassMapper.always(ParenExpr.class)); + NAME_TO_MAPPER.put(FlangName.UNARY_PLUS, ClassMapper.always(UnaryOperator.class)); + NAME_TO_MAPPER.put(FlangName.NEGATE, ClassMapper.always(UnaryOperator.class)); + NAME_TO_MAPPER.put(FlangName.NOT, ClassMapper.always(UnaryOperator.class)); + NAME_TO_MAPPER.put(FlangName.ADD, ClassMapper.always(BinaryOperator.class)); + NAME_TO_MAPPER.put(FlangName.SUBTRACT, ClassMapper.always(BinaryOperator.class)); + NAME_TO_MAPPER.put(FlangName.MULTIPLY, ClassMapper.always(BinaryOperator.class)); + NAME_TO_MAPPER.put(FlangName.DIVIDE, ClassMapper.always(BinaryOperator.class)); + NAME_TO_MAPPER.put(FlangName.POWER, ClassMapper.always(BinaryOperator.class)); + NAME_TO_MAPPER.put(FlangName.EQ, ClassMapper.always(BinaryOperator.class)); + NAME_TO_MAPPER.put(FlangName.NE, ClassMapper.always(BinaryOperator.class)); + NAME_TO_MAPPER.put(FlangName.LT, ClassMapper.always(BinaryOperator.class)); + NAME_TO_MAPPER.put(FlangName.LE, ClassMapper.always(BinaryOperator.class)); + NAME_TO_MAPPER.put(FlangName.GT, ClassMapper.always(BinaryOperator.class)); + NAME_TO_MAPPER.put(FlangName.GE, ClassMapper.always(BinaryOperator.class)); + NAME_TO_MAPPER.put(FlangName.AND, ClassMapper.always(BinaryOperator.class)); + NAME_TO_MAPPER.put(FlangName.OR, ClassMapper.always(BinaryOperator.class)); + NAME_TO_MAPPER.put(FlangName.EQV, ClassMapper.always(BinaryOperator.class)); + NAME_TO_MAPPER.put(FlangName.NEQV, ClassMapper.always(BinaryOperator.class)); + NAME_TO_MAPPER.put(FlangName.CONCAT, ClassMapper.always(BinaryOperator.class)); + NAME_TO_MAPPER.put(FlangName.ARRAY_CONSTRUCTOR, ClassMapper.always(ArrayConstructor.class)); + NAME_TO_MAPPER.put(FlangName.AC_SPEC, ClassMapper.always(AcSpecification.class)); + NAME_TO_MAPPER.put(FlangName.ARRAY_ELEMENT, ClassMapper.always(ArraySubscriptExpr.class)); + NAME_TO_MAPPER.put(FlangName.SUBSCRIPT, ClassMapper.always(Subscript.class)); + NAME_TO_MAPPER.put(FlangName.SUBSCRIPT_TRIPLET, ClassMapper.always(SubscriptTriplet.class)); + NAME_TO_MAPPER.put(FlangName.CALL, ClassMapper.always(Call.class)); + NAME_TO_MAPPER.put(FlangName.ACTUAL_ARG_SPEC, ClassMapper.always(Argument.class)); + NAME_TO_MAPPER.put(FlangName.AC_IMPLIED_DO, ClassMapper.always(AcImpliedDo.class)); + NAME_TO_MAPPER.put(FlangName.AC_IMPLIED_DO_CONTROL, ClassMapper.always(AcImpliedDoControl.class)); + NAME_TO_MAPPER.put(FlangName.NAMED_CONSTANT, ClassMapper.always(NamedLiteral.class)); + NAME_TO_MAPPER.put(FlangName.COMPLEX_LITERAL_CONSTANT, ClassMapper.always(ComplexLiteral.class)); + NAME_TO_MAPPER.put(FlangName.COMPLEX_PART, ClassMapper.caseFor(ComplexPart.class) + .map(FlangName.SIGNED_INT_LITERAL_CONSTANT, IntComplexPart.class) + .map(FlangName.SIGNED_REAL_LITERAL_CONSTANT, RealComplexPart.class) + .map(FlangName.NAMED_CONSTANT, NamedComplexPart.class)); + NAME_TO_MAPPER.put(FlangName.SUBSTRING, ClassMapper.always(Substring.class)); + NAME_TO_MAPPER.put(FlangName.NULL_INIT, ClassMapper.always(NullInit.class)); + NAME_TO_MAPPER.put(FlangName.PROCEDURE_DESIGNATOR, ClassMapper.caseFor(ProcDesignator.class) + .map(FlangName.NAME, NamedProcDesignator.class)); /// TYPEs - NAME_TO_CLASS.put(FlangName.INTEGER_TYPE_SPEC, IntegerType.class); - NAME_TO_CLASS.put(FlangName.LOGICAL, LogicalType.class); - NAME_TO_CLASS.put(FlangName.DOUBLE_PRECISION, DoublePrecisionType.class); - NAME_TO_CLASS.put(FlangName.CHARACTER, CharacterType.class); - NAME_TO_CLASS.put(FlangName.REAL, RealType.class); - NAME_TO_CLASS.put(FlangName.LENGTH_SELECTOR, LengthSelector.class); + NAME_TO_MAPPER.put(FlangName.INTEGER_TYPE_SPEC, ClassMapper.always(IntegerType.class)); + NAME_TO_MAPPER.put(FlangName.LOGICAL, ClassMapper.always(LogicalType.class)); + NAME_TO_MAPPER.put(FlangName.DOUBLE_PRECISION, ClassMapper.always(DoublePrecisionType.class)); + NAME_TO_MAPPER.put(FlangName.CHARACTER, ClassMapper.always(CharacterType.class)); + NAME_TO_MAPPER.put(FlangName.REAL, ClassMapper.always(RealType.class)); + NAME_TO_MAPPER.put(FlangName.COMPLEX, ClassMapper.always(ComplexType.class)); + NAME_TO_MAPPER.put(FlangName.CHAR_LENGTH, ClassMapper.caseFor(CharLenSelector.class) + .map(FlangName.TYPE_PARAM_VALUE, ParamCharLenSelector.class) + .map("uint64_t", ConstLenSelector.class)); + NAME_TO_MAPPER.put(FlangName.LENGTH_SELECTOR, ClassMapper.caseFor(LenSelector.class) + .map(FlangName.TYPE_PARAM_VALUE, ParamLenSelector.class) + .ignore(FlangName.CHAR_LENGTH)); + NAME_TO_MAPPER.put(FlangName.LENGTH_AND_KIND, ClassMapper.always(KindParamLenSelector.class)); + NAME_TO_MAPPER.put(FlangName.TYPE_PARAM_VALUE, ClassMapper.caseFor(TypeParamValue.class) + .map(FlangName.EXPR, ExprTypeParamValue.class) + .map(FlangName.STAR, StarTypeParamValue.class) + .map(FlangName.DEFERRED, DeferredTypeParamValue.class)); + NAME_TO_MAPPER.put(FlangName.TYPE_PARAM_SPEC, ClassMapper.always(TypeParam.class)); + NAME_TO_MAPPER.put(FlangName.DERIVED_TYPE_SPEC, ClassMapper.always(DerivedType.class)); + NAME_TO_MAPPER.put(FlangName.DECLARATION_TYPE_SPEC, ClassMapper.caseFor(DeclType.class) + .map(FlangName.INTRINSIC_TYPE_SPEC, IntrinsicDeclType.class) + .map(FlangName.TYPE, DerivedDeclType.class) + .map(FlangName.CLASS, DerivedDeclType.class) + .map(FlangName.CLASS_STAR, StarDeclType.class) + .map(FlangName.TYPE_STAR, StarDeclType.class)); /// LOOP - NAME_TO_CLASS.put(FlangName.LOOP_BOUNDS, RangeLoopControl.class); - NAME_TO_CLASS.put(FlangName.CONCURRENT, ConcurrentLoopControl.class); - NAME_TO_CLASS.put(FlangName.CONCURRENT_CONTROL, ConcurrentRange.class); + NAME_TO_MAPPER.put(FlangName.LOOP_BOUNDS, ClassMapper.always(RangeLoopControl.class)); + NAME_TO_MAPPER.put(FlangName.CONCURRENT, ClassMapper.always(ConcurrentLoopControl.class)); + NAME_TO_MAPPER.put(FlangName.CONCURRENT_CONTROL, ClassMapper.always(ConcurrentRange.class)); /// ATTRIBUTES - NAME_TO_CLASS.put(FlangName.ARRAY_SPEC, ArraySpecification.class); - NAME_TO_CLASS.put(FlangName.ALLOCATABLE, AllocatableKeyword.class); - NAME_TO_CLASS.put(FlangName.INTENT_SPEC, IntentSpec.class); - NAME_TO_CLASS.put(FlangName.PARAMETER, ParameterKeyword.class); - NAME_TO_CLASS.put(FlangName.NAMED_CONSTANT_DEF, NamedConstantDef.class); + NAME_TO_MAPPER.put(FlangName.ATTR_SPEC, ClassMapper.caseFor(AttrSpec.class) + .map(FlangName.ACCESS_SPEC, AccessAttrSpec.class) + .map(FlangName.ALLOCATABLE, OtherAttrSpec.class) + .map(FlangName.ASYNCHRONOUS, OtherAttrSpec.class) + .map(FlangName.COARRAY_SPEC, CodimAttrSpec.class) + .map(FlangName.CONTIGUOUS, OtherAttrSpec.class) + .map(FlangName.ARRAY_SPEC, DimAttrSpec.class) + .map(FlangName.EXTERNAL, OtherAttrSpec.class) + .map(FlangName.INTENT_SPEC, IntentAttrSpec.class) + .map(FlangName.INTRINSIC, OtherAttrSpec.class) + .map(FlangName.LANGUAGE_BINDING_SPEC, LangBindAttrSpec.class) + .map(FlangName.OPTIONAL, OtherAttrSpec.class) + .map(FlangName.PARAMETER, OtherAttrSpec.class) + .map(FlangName.POINTER, OtherAttrSpec.class) + .map(FlangName.PROTECTED, OtherAttrSpec.class) + .map(FlangName.SAVE, OtherAttrSpec.class) + .map(FlangName.TARGET, OtherAttrSpec.class) + .map(FlangName.VALUE, OtherAttrSpec.class) + .map(FlangName.VOLATILE, OtherAttrSpec.class)); /// SHAPES - NAME_TO_CLASS.put(FlangName.EXPLICIT_SHAPE_SPEC, ExplicitShapeSpecification.class); - NAME_TO_CLASS.put(FlangName.DEFERRED_SHAPE_SPEC_LIST, DeferredShapeSpecList.class); - NAME_TO_CLASS.put(FlangName.ALLOCATE_SHAPE_SPEC, AllocateShapeSpecification.class); - NAME_TO_CLASS.put(FlangName.ASSUMED_IMPLIED_SPEC, AssumedImpliedShapeSpec.class); + NAME_TO_MAPPER.put(FlangName.EXPLICIT_SHAPE_SPEC, ClassMapper.always(ExplicitShape.class)); + NAME_TO_MAPPER.put(FlangName.ALLOCATE_SHAPE_SPEC, ClassMapper.always(ExplicitShape.class)); + NAME_TO_MAPPER.put(FlangName.ALLOCATE_COSHAPE_SPEC, ClassMapper.always(ExplicitShape.class)); + NAME_TO_MAPPER.put(FlangName.ASSUMED_SHAPE_SPEC, ClassMapper.always(AssumedShape.class)); + NAME_TO_MAPPER.put(FlangName.ASSUMED_IMPLIED_SPEC, ClassMapper.always(AssumedImpliedShape.class)); + NAME_TO_MAPPER.put(FlangName.ARRAY_SPEC, ClassMapper.caseFor(ArraySpec.class) + .map(FlangName.EXPLICIT_SHAPE_SPEC, ExplicitShapeArraySpec.class) + .map(FlangName.ASSUMED_SHAPE_SPEC, AssumedShapeArraySpec.class) + .ignore(FlangName.DEFERRED_SHAPE_SPEC_LIST) + .ignore(FlangName.ASSUMED_SIZE_SPEC) + .ignore(FlangName.IMPLIED_SHAPE_SPEC) + .ignore(FlangName.ASSUMED_RANK_SPEC)); + NAME_TO_MAPPER.put(FlangName.DEFERRED_SHAPE_SPEC_LIST, ClassMapper.always(DeferredShapeSpec.class)); + NAME_TO_MAPPER.put(FlangName.ASSUMED_SIZE_SPEC, ClassMapper.always(AssumedSizeSpec.class)); + NAME_TO_MAPPER.put(FlangName.IMPLIED_SHAPE_SPEC, ClassMapper.always(ImpliedShapeSpec.class)); + NAME_TO_MAPPER.put(FlangName.ASSUMED_RANK_SPEC, ClassMapper.always(AssumedSizeSpec.class)); + NAME_TO_MAPPER.put(FlangName.DEFERRED_COSHAPE_SPEC_LIST, ClassMapper.always(DeferredCoshapeSpec.class)); + NAME_TO_MAPPER.put(FlangName.EXPLICIT_COSHAPE_SPEC, ClassMapper.always(ExplicitCoshapeSpec.class)); + + /// IO + NAME_TO_MAPPER.put(FlangName.OPEN_STMT, ClassMapper.always(OpenStmt.class)); + NAME_TO_MAPPER.put(FlangName.CONNECT_SPEC, ClassMapper.caseFor(ConnectSpec.class) + .map(FlangName.FILE_UNIT_NUMBER, ExprConnectSpec.class) + .map(FlangName.EXPR, ExprConnectSpec.class) + .map(FlangName.CHAR_EXPR, ExprConnectSpec.class) + .map(FlangName.MSG_VARIABLE, VarConnectSpec.class) + .map(FlangName.STAT_VARIABLE, VarConnectSpec.class) + .map(FlangName.RECL, ExprConnectSpec.class) + .map(FlangName.NEWUNIT, VarConnectSpec.class) + .map(FlangName.ERR_LABEL, ErrConnectSpec.class) + .map(FlangName.STATUS_EXPR, ExprConnectSpec.class)); + NAME_TO_MAPPER.put(FlangName.IO_UNIT, ClassMapper.caseFor(IoControlSpec.class) + .map(FlangName.EXPR, ExprIoControlSpec.class) + .map(FlangName.VARIABLE, VarIoControlSpec.class) + .map(FlangName.STAR, StarUnitIoControlSpec.class)); + NAME_TO_MAPPER.put(FlangName.REWIND_STMT, ClassMapper.always(RewindStmt.class)); + NAME_TO_MAPPER.put(FlangName.POSITION_OR_FLUSH_SPEC, ClassMapper.caseFor(PosFlushSpec.class) + .map(FlangName.FILE_UNIT_NUMBER, UnitPosFlushSpec.class) + .map(FlangName.MSG_VARIABLE, VarPosFlushSpec.class) + .map(FlangName.STAT_VARIABLE, VarPosFlushSpec.class) + .map(FlangName.ERR_LABEL, ErrPosFlushSpec.class)); + NAME_TO_MAPPER.put(FlangName.IO_CONTROL_SPEC, ClassMapper.caseFor(IoControlSpec.class) + .ignore(FlangName.IO_UNIT) + .map(FlangName.FORMAT, FormatIoControlSpec.class) + .map(FlangName.NAME, NamelistIoControlSpec.class) + .map(FlangName.CHAR_EXPR, ExprIoControlSpec.class) + .map(FlangName.ASYNCHRONOUS, ExprIoControlSpec.class) + .map(FlangName.END_LABEL, LabelIoControlSpec.class) + .map(FlangName.EOR_LABEL, LabelIoControlSpec.class) + .map(FlangName.ERR_LABEL, LabelIoControlSpec.class) + .map(FlangName.ID_VARIABLE, VarIoControlSpec.class) + .map(FlangName.MSG_VARIABLE, VarIoControlSpec.class) + .map(FlangName.STAT_VARIABLE, VarIoControlSpec.class) + .map(FlangName.POS, ExprIoControlSpec.class) + .map(FlangName.REC, ExprIoControlSpec.class) + .map(FlangName.SIZE, VarIoControlSpec.class)); + NAME_TO_MAPPER.put(FlangName.READ_STMT, ClassMapper.always(ReadStmt.class)); + NAME_TO_MAPPER.put(FlangName.INPUT_ITEM, ClassMapper.caseFor(InputItem.class) + .map(FlangName.VARIABLE, VarInputItem.class) + .map(FlangName.INPUT_IMPLIED_DO, InputImpliedDoItem.class)); + NAME_TO_MAPPER.put(FlangName.WRITE_STMT, ClassMapper.always(WriteStmt.class)); + NAME_TO_MAPPER.put(FlangName.OUTPUT_ITEM, ClassMapper.caseFor(OutputItem.class) + .map(FlangName.EXPR, ExprOutputItem.class) + .map(FlangName.OUTPUT_IMPLIED_DO, OutputImpliedDoItem.class)); + NAME_TO_MAPPER.put(FlangName.WAIT_STMT, ClassMapper.always(WaitStmt.class)); + NAME_TO_MAPPER.put(FlangName.WAIT_SPEC, ClassMapper.caseFor(WaitSpec.class) + .map(FlangName.FILE_UNIT_NUMBER, ExprWaitSpec.class) + .map(FlangName.END_LABEL, LabelWaitSpec.class) + .map(FlangName.EOR_LABEL, LabelWaitSpec.class) + .map(FlangName.ERR_LABEL, LabelWaitSpec.class) + .map(FlangName.ID_EXPR, ExprWaitSpec.class) + .map(FlangName.MSG_VARIABLE, VarWaitSpec.class) + .map(FlangName.STAT_VARIABLE, VarWaitSpec.class)); + NAME_TO_MAPPER.put(FlangName.CLOSE_STMT, ClassMapper.always(CloseStmt.class)); + NAME_TO_MAPPER.put(FlangName.CLOSE_SPEC, ClassMapper.caseFor(CloseSpec.class) + .map(FlangName.FILE_UNIT_NUMBER, ExprCloseSpec.class) + .map(FlangName.STAT_VARIABLE, VarCloseSpec.class) + .map(FlangName.MSG_VARIABLE, VarCloseSpec.class) + .map(FlangName.ERR_LABEL, ErrCloseSpec.class) + .map(FlangName.STATUS_EXPR, ExprCloseSpec.class)); + NAME_TO_MAPPER.put(FlangName.FORMAT, ClassMapper.caseFor(Format.class) + .map(FlangName.EXPR, ExprFormat.class) + .map("uint64_t", LabelFormat.class) + .map(FlangName.STAR, StarFormat.class)); /// UTILs - NAME_TO_CLASS.put(FlangName.NAME_VALUE, NameValue.class); - NAME_TO_CLASS.put(FlangName.IO_UNIT, IoUnit.class); - NAME_TO_CLASS.put(FlangName.IO_CONTROL_SPEC, IoControlSpec.class); - NAME_TO_CLASS.put(FlangName.STAT_VARIABLE, StatVariable.class); + NAME_TO_MAPPER.put(FlangName.NAME_VALUE, ClassMapper.always(NameValue.class)); + NAME_TO_MAPPER.put(FlangName.ALLOC_OPT, ClassMapper.caseFor(AllocOption.class) + .map(FlangName.MOLD, ExprAllocOption.class) + .map(FlangName.SOURCE, ExprAllocOption.class) + .map(FlangName.STAT_OR_ERRMSG, VarAllocOption.class) + .map(FlangName.STREAM, ExprAllocOption.class) + .map(FlangName.PINNED, VarAllocOption.class)); /// OPENMP - NAME_TO_CLASS.put(FlangName.OMP_BLOCK_CONSTRUCT, OmpBlockConstruct.class); - NAME_TO_CLASS.put(FlangName.OPENMP_LOOP_CONSTRUCT, OmpLoopConstruct.class); - NAME_TO_CLASS.put(FlangName.SHARED, OmpDataSharingClause.class); - NAME_TO_CLASS.put(FlangName.PRIVATE, OmpDataSharingClause.class); - NAME_TO_CLASS.put(FlangName.FIRST_PRIVATE, OmpDataSharingClause.class); - NAME_TO_CLASS.put(FlangName.REDUCTION, OmpReductionClause.class); - NAME_TO_CLASS.put(FlangName.NOWAIT, OmpNowaitClause.class); + NAME_TO_MAPPER.put(FlangName.OMP_BLOCK_CONSTRUCT, ClassMapper.always(OmpBlockConstruct.class)); + NAME_TO_MAPPER.put(FlangName.OPENMP_LOOP_CONSTRUCT, ClassMapper.always(OmpLoopConstruct.class)); + NAME_TO_MAPPER.put(FlangName.SHARED, ClassMapper.always(OmpDataSharingClause.class)); + NAME_TO_MAPPER.put(FlangName.PRIVATE, ClassMapper.always(OmpDataSharingClause.class)); + NAME_TO_MAPPER.put(FlangName.FIRST_PRIVATE, ClassMapper.always(OmpDataSharingClause.class)); + NAME_TO_MAPPER.put(FlangName.REDUCTION, ClassMapper.always(OmpReductionClause.class)); + NAME_TO_MAPPER.put(FlangName.NOWAIT, ClassMapper.always(OmpNowaitClause.class)); } - public static boolean isClass(String type) { - return FlangName.convertTry(type).map(NAME_TO_CLASS::containsKey).orElse(false); + public static boolean isClass(String type, FlangAttributes attrs) { + return FlangName.convertTry(type) + .flatMap(name -> Optional.ofNullable(NAME_TO_MAPPER.get(name))) + .map(mapper -> mapper.has(attrs)) + .orElse(false); } - public static Optional> getClass(String type) { - return FlangName.convertTry(type).map(NAME_TO_CLASS::get); + public static Optional> getClass(String type, FlangAttributes attrs) { + return FlangName.convertTry(type) + .flatMap(name -> Optional.ofNullable(NAME_TO_MAPPER.get(name))) + .flatMap(mapper -> mapper.get(attrs)); } - } diff --git a/FortranParser/src/pt/up/fe/specs/fortran/parser/FortranAstBuilder.java b/FortranParser/src/pt/up/fe/specs/fortran/parser/FortranAstBuilder.java index e90319ab..3f3a1529 100644 --- a/FortranParser/src/pt/up/fe/specs/fortran/parser/FortranAstBuilder.java +++ b/FortranParser/src/pt/up/fe/specs/fortran/parser/FortranAstBuilder.java @@ -2,13 +2,13 @@ import pt.up.fe.specs.fortran.ast.nodes.FortranNode; import pt.up.fe.specs.fortran.ast.nodes.decl.LabelDecl; -import pt.up.fe.specs.fortran.ast.nodes.program.ProgramUnit; +import pt.up.fe.specs.fortran.ast.nodes.program.unit.ProgramUnit; import pt.up.fe.specs.fortran.ast.nodes.utils.LabelRef; import pt.up.fe.specs.fortran.parser.processors.Nodes; -import pt.up.fe.specs.util.SpecsCheck; import java.util.HashMap; import java.util.Map; +import java.util.Objects; import java.util.Optional; /** @@ -75,7 +75,7 @@ private void connectLabelDeclsRefs() { var id = getLabelDeclId(prefix, labelRef.getLabel()); var labelDecl = labelDecls.get(id); - SpecsCheck.checkNotNull(labelDecl, () -> "Expected to find a LabelDecl for '" + id + "', but none was found: " + labelDecls); + Objects.requireNonNull(labelDecl, () -> "Expected to find a LabelDecl for '" + id + "', but none was found: " + labelDecls); labelRef.set(LabelRef.LABEL_DECL, labelDecl); } } diff --git a/FortranParser/src/pt/up/fe/specs/fortran/parser/FortranJsonParser.java b/FortranParser/src/pt/up/fe/specs/fortran/parser/FortranJsonParser.java index 78a28fb5..ea938a03 100644 --- a/FortranParser/src/pt/up/fe/specs/fortran/parser/FortranJsonParser.java +++ b/FortranParser/src/pt/up/fe/specs/fortran/parser/FortranJsonParser.java @@ -5,9 +5,13 @@ import pt.up.fe.specs.fortran.ast.FortranContext; import pt.up.fe.specs.fortran.ast.nodes.FortranNode; import pt.up.fe.specs.util.SpecsCheck; +import pt.up.fe.specs.util.SpecsIo; import pt.up.fe.specs.util.SpecsLogs; -import java.io.*; +import java.io.File; +import java.io.IOException; +import java.io.Reader; +import java.io.StringReader; import java.util.*; public class FortranJsonParser implements JsonReaderParser { @@ -31,20 +35,28 @@ private FortranJsonParser(FortranContext context) { public static FortranJsonResult parse(File file, FortranContext context) { - try { - context.set(FortranContext.LAST_PARSED_FILE, Optional.of(file)); - return parse(new FileReader(file), context); - } catch (FileNotFoundException e) { - throw new RuntimeException("Could not read file '" + file + "'", e); + context.set(FortranContext.LAST_PARSED_FILE, Optional.of(file)); + + var parser = new FortranJsonParser(context); + var code = SpecsIo.read(file); + + if (code == null) { + throw new RuntimeException("Could not read file '" + file + "'"); } + + return parser.parsePrivate(new StringReader(code), context); } - public static FortranJsonResult parse(Reader input, FortranContext context) { - var parser = new FortranJsonParser(context); - return parser.parsePrivate(input); + public static FortranJsonResult parse(String code, FortranContext context) { + // Create temporary file for dumping the input + var tempFile = SpecsIo.getTempFile("", "json"); + SpecsIo.write(tempFile, code); + var result = parse(tempFile, context); + SpecsIo.delete(tempFile); + return result; } - private FortranJsonResult parsePrivate(Reader input) { + private FortranJsonResult parsePrivate(Reader input, FortranContext context) { JsonReader reader = new JsonReader(input); try { @@ -55,6 +67,9 @@ private FortranJsonResult parsePrivate(Reader input) { var objectsType = nextName(reader); switch (objectsType) { + case "fileExtension": + parseFileExtension(reader, context); + break; case "nodes": parseNodes(reader); break; @@ -78,6 +93,14 @@ private FortranJsonResult parsePrivate(Reader input) { return new FortranJsonResult(context, firstNode, ids, fortranNodes, FlangData.convert(attributes)); } + private void parseFileExtension(JsonReader reader, FortranContext context) { + try { + context.setOptional(FortranContext.LAST_PARSED_FILE_EXT, reader.nextString()); + } catch (IOException e) { + throw new RuntimeException("Problem while parsing Fortran json", e); + } + } + private void parseEnums(JsonReader reader) { try { reader.beginObject(); @@ -128,7 +151,7 @@ private void processNodeData(Map nodeData) { // Get class corresponding to the kind - var fortranClassTry = FlangToClass.getClass(kind); + var fortranClassTry = FlangToClass.getClass(kind, new FlangAttributes(nodeData)); // If no class assume that kind is to be ignored // Otherwise, create node @@ -165,6 +188,8 @@ private void processCommentData(Map commentData) { if (trailing.equals("false")) { stmtAttrs.putIfAbsent("leadingComments", new ArrayList<>()); + + @SuppressWarnings("unchecked") // leadingComments list will always only contain strings var stmtComments = (List) stmtAttrs.get("leadingComments"); stmtComments.add(content); } else { diff --git a/FortranParser/src/pt/up/fe/specs/fortran/parser/FortranNativeParser.java b/FortranParser/src/pt/up/fe/specs/fortran/parser/FortranNativeParser.java index ee9f8adb..0beb3c99 100644 --- a/FortranParser/src/pt/up/fe/specs/fortran/parser/FortranNativeParser.java +++ b/FortranParser/src/pt/up/fe/specs/fortran/parser/FortranNativeParser.java @@ -53,7 +53,6 @@ public FortranJsonResult parse(File file) { context.set(FortranContext.LAST_PARSED_FILE, Optional.of(file)); var plugin = FLANG_DUMPER.get(); - System.out.println("PLUGIN : " + plugin.getAbsolutePath()); // Execute flang to obtain json var command = List.of(getFlangCommand(), "-fc1", "-fopenmp", "-load", plugin.getAbsolutePath(), "-plugin", "dump-ast", file.getAbsolutePath()); @@ -80,21 +79,21 @@ public FortranJsonResult parse(File file) { } private FortranJsonResult parseStream(InputStream stream, File jsonOutput) { - if (jsonOutput == null) { - return FortranJsonParser.parse(new InputStreamReader(stream), context); - } - // Read the stream to a string first var json = SpecsIo.read(stream); + if (jsonOutput == null) { + return FortranJsonParser.parse(json, context); + } + SpecsIo.write(jsonOutput, json); SpecsLogs.info("Wrote JSON output at '" + jsonOutput.getAbsolutePath() + "'"); - return FortranJsonParser.parse(new StringReader(json), context); + return FortranJsonParser.parse(jsonOutput, context); } - public FortranJsonResult parse(InputStream input) { + public FortranJsonResult parse(InputStream input, String extension) { // Create temporary file for dumping the input - var tempFile = SpecsIo.getTempFile("", "f90"); + var tempFile = SpecsIo.getTempFile("", extension); var code = SpecsIo.read(input); SpecsIo.write(tempFile, code); var result = parse(tempFile); diff --git a/FortranParser/src/pt/up/fe/specs/fortran/parser/processors/ANodeProcessor.java b/FortranParser/src/pt/up/fe/specs/fortran/parser/processors/ANodeProcessor.java index 6b21ddd5..6aaf022c 100644 --- a/FortranParser/src/pt/up/fe/specs/fortran/parser/processors/ANodeProcessor.java +++ b/FortranParser/src/pt/up/fe/specs/fortran/parser/processors/ANodeProcessor.java @@ -1,5 +1,10 @@ package pt.up.fe.specs.fortran.parser.processors; +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.program.construct.DeclConstruct; +import pt.up.fe.specs.fortran.ast.nodes.program.construct.ExecPartConstruct; +import pt.up.fe.specs.fortran.ast.nodes.program.construct.SpecConstruct; +import pt.up.fe.specs.fortran.ast.nodes.stmt.*; import pt.up.fe.specs.fortran.parser.FortranJsonResult; public class ANodeProcessor implements NodeProcessor { @@ -15,4 +20,66 @@ public ANodeProcessor(FortranJsonResult data) { public FortranJsonResult data() { return data; } + + // Utility functions + + public DeclConstruct toDeclConstruct(FortranNode node) { + if (node instanceof DeclConstruct declConstruct) { + return declConstruct; + } + + if (node instanceof DeclStmt declStmt) { + return factory().declStmtAdapter(declStmt); + } + + if (node instanceof IDEStmt ideStmt) { + return factory().ideStmtDeclAdapter(ideStmt); + } + + if (node instanceof SpecStmt || node instanceof ISStmt || node instanceof CompilerDirective) { + return toSpecConstruct(node); + } + + throw new RuntimeException("Cannot convert node to DeclConstruct: " + node); + } + + public SpecConstruct toSpecConstruct(FortranNode node) { + if (node instanceof SpecConstruct specConstruct) { + return specConstruct; + } + + if (node instanceof SpecStmt specStmt) { + return factory().specStmtAdapter(specStmt); + } + + if (node instanceof CompilerDirective compilerDirective) { + return factory().directiveSpecAdapter(compilerDirective); + } + + if (node instanceof ISStmt isStmt) { + return factory().isStmtSpecAdapter(isStmt); + } + + throw new RuntimeException("Cannot convert node to SpecConstruct: " + node); + } + + public ExecPartConstruct toExecPartConstruct(FortranNode node) { + if (node instanceof ExecPartConstruct execPartConstruct) { + return execPartConstruct; + } + + if (node instanceof ActionStmt actionStmt) { + return factory().actionStmtAdapter(actionStmt); + } + + if (node instanceof IDEStmt ideStmt) { + return factory().ideStmtExecAdapter(ideStmt); + } + + if (node instanceof CompilerDirective compilerDirective) { + return factory().directiveExecAdapter(compilerDirective); + } + + throw new RuntimeException("Cannot convert node to ExecPartConstruct: " + node); + } } diff --git a/FortranParser/src/pt/up/fe/specs/fortran/parser/processors/AllocProcessors.java b/FortranParser/src/pt/up/fe/specs/fortran/parser/processors/AllocProcessors.java index 21deb8e0..e31f1506 100644 --- a/FortranParser/src/pt/up/fe/specs/fortran/parser/processors/AllocProcessors.java +++ b/FortranParser/src/pt/up/fe/specs/fortran/parser/processors/AllocProcessors.java @@ -1,7 +1,11 @@ package pt.up.fe.specs.fortran.parser.processors; import pt.up.fe.specs.fortran.ast.nodes.alloc.Allocation; -import pt.up.fe.specs.fortran.ast.nodes.alloc.StatVariable; +import pt.up.fe.specs.fortran.ast.nodes.alloc.ExprAllocOption; +import pt.up.fe.specs.fortran.ast.nodes.alloc.VarAllocOption; +import pt.up.fe.specs.fortran.ast.nodes.alloc.enums.ExprAllocOptionKind; +import pt.up.fe.specs.fortran.ast.nodes.alloc.enums.VarAllocOptionKind; +import pt.up.fe.specs.fortran.parser.FlangAttributes; import pt.up.fe.specs.fortran.parser.FlangName; import pt.up.fe.specs.fortran.parser.FortranJsonResult; @@ -15,7 +19,43 @@ public void allocation(Allocation allocation) { allocation.addChildren(getChildren(allocation, FlangName.ALLOCATE_SHAPE_SPEC)); } - public void statVariable(StatVariable statVariable) { - statVariable.addChild(getChild(statVariable, FlangName.EXPR)); + public void exprAllocOption(ExprAllocOption option) { + var attrs = attributes(option); + var variant = attrs.getVariantName(); + + var kind = switch (variant) { + case MOLD -> ExprAllocOptionKind.MOLD; + case SOURCE -> ExprAllocOptionKind.SOURCE; + case STREAM -> ExprAllocOptionKind.STREAM; + default -> throw new RuntimeException("Unknown variant: " + variant); + }; + option.set(ExprAllocOption.KIND, kind); + + var exprId = attributes().getString(option, FlangName.EXPR.getString(), variant); + var expr = getChild(exprId); + option.addChild(expr); + } + + public void varAllocOption(VarAllocOption option) { + var attrs = attributes(option); + var variant = attrs.getVariantName(); + + if (variant == FlangName.STAT_OR_ERRMSG) { + attrs = attributes().get(attrs.getVariantString()); + variant = attrs.getVariantName(); + } + + var kind = switch (variant) { + case STAT_VARIABLE -> VarAllocOptionKind.STAT; + case MSG_VARIABLE -> VarAllocOptionKind.ERRMSG; + case PINNED -> VarAllocOptionKind.PINNED; + default -> throw new RuntimeException("Unknown variant: " + variant); + }; + option.set(VarAllocOption.KIND, kind); + + var childId = attrs.getVariantString(); + var variableId = attributes().get(childId).getString(FlangName.VARIABLE); + var variable = getChild(variableId); + option.addChild(variable); } } diff --git a/FortranParser/src/pt/up/fe/specs/fortran/parser/processors/AttributesProcessor.java b/FortranParser/src/pt/up/fe/specs/fortran/parser/processors/AttributesProcessor.java index 2a8650aa..9bb36e42 100644 --- a/FortranParser/src/pt/up/fe/specs/fortran/parser/processors/AttributesProcessor.java +++ b/FortranParser/src/pt/up/fe/specs/fortran/parser/processors/AttributesProcessor.java @@ -1,12 +1,12 @@ package pt.up.fe.specs.fortran.parser.processors; import pt.up.fe.specs.fortran.ast.nodes.FortranNode; -import pt.up.fe.specs.fortran.ast.nodes.specification.ArraySpecification; +import pt.up.fe.specs.fortran.ast.nodes.specification.enums.AccessKind; +import pt.up.fe.specs.fortran.ast.nodes.specification.shape.ArraySpec; import pt.up.fe.specs.fortran.ast.nodes.specification.NamedConstantDef; -import pt.up.fe.specs.fortran.ast.nodes.type.attributes.IntentSpec; -import pt.up.fe.specs.fortran.ast.nodes.type.attributes.KeywordAttributeSpecifier; +import pt.up.fe.specs.fortran.ast.nodes.type.attributes.*; +import pt.up.fe.specs.fortran.ast.nodes.type.attributes.enums.AttrSpecKind; import pt.up.fe.specs.fortran.ast.nodes.type.attributes.enums.IntentKind; -import pt.up.fe.specs.fortran.parser.FlangData; import pt.up.fe.specs.fortran.parser.FlangName; import pt.up.fe.specs.fortran.parser.FortranJsonResult; @@ -25,7 +25,7 @@ public AttributesProcessor(FortranJsonResult data) { super(data); } - public void arraySpecification(ArraySpecification arraySpecification) { + public void arraySpecification(ArraySpec arraySpecification) { var variantKey = attributes(arraySpecification).getVariantKey(); List shapes; Optional additionalShape = Optional.empty(); @@ -47,17 +47,38 @@ else if (variantKey.equals(FlangName.IMPLIED_SHAPE_SPEC.getString())) { additionalShape.ifPresent(arraySpecification::addChild); } - public void keywordSpecifier(KeywordAttributeSpecifier keywordSpecifier) { - var keyword = attributes(keywordSpecifier).getString("keyword"); + public void accessAttrSpec(AccessAttrSpec accessAttrSpec) { + var accessKindSrc = attributes().getString(accessAttrSpec, "value", FlangName.ACCESS_SPEC, FlangName.KIND); + var accessKind = AccessKind.valueOf(accessKindSrc.toUpperCase()); + accessAttrSpec.set(AccessAttrSpec.ACCESS_KIND, accessKind); + } + + public void codimAttrSpec(CodimAttrSpec codimAttrSpec) { + var coarraySpec = getChild(codimAttrSpec, FlangName.COARRAY_SPEC); + codimAttrSpec.addChild(coarraySpec); + } + + public void dimAttrSpec(DimAttrSpec dimAttrSpec) { + var arraySpec = getChild(dimAttrSpec, FlangName.ARRAY_SPEC); + dimAttrSpec.addChild(arraySpec); + } + + public void intentAttrSpec(IntentAttrSpec intentAttrSpec) { + var intentKindSrc = attributes().getString(intentAttrSpec, "intent", FlangName.INTENT_SPEC); + var intentKind = IntentKind.convertTry(intentKindSrc) + .orElseThrow(() -> new RuntimeException("Invalid intent kind: " + intentKindSrc)); + intentAttrSpec.set(IntentAttrSpec.KIND, intentKind); + } - keywordSpecifier.set(KeywordAttributeSpecifier.KEYWORD, keyword); + public void langBindAttrSpec(LangBindAttrSpec langBindAttrSpec) { + var languageBindingSpec = getChild(langBindAttrSpec, FlangName.LANGUAGE_BINDING_SPEC); + langBindAttrSpec.addChild(languageBindingSpec); } - public void intentSpec(IntentSpec intentSpec) { - intentSpec.set( - IntentSpec.KIND, - IntentKind.convertTry(attributes(intentSpec).getString("intent")).get() - ); + public void otherAttrSpec(OtherAttrSpec otherAttrSpec) { + var variantKey = attributes(otherAttrSpec).getVariantKey(); + var kind = AttrSpecKind.valueOf(variantKey.toUpperCase()); + otherAttrSpec.set(OtherAttrSpec.KIND, kind); } public void namedConstantDef(NamedConstantDef namedConstantDef) { diff --git a/FortranParser/src/pt/up/fe/specs/fortran/parser/processors/DeclProcessors.java b/FortranParser/src/pt/up/fe/specs/fortran/parser/processors/DeclProcessors.java index 73c8f0dd..56fcb1e5 100644 --- a/FortranParser/src/pt/up/fe/specs/fortran/parser/processors/DeclProcessors.java +++ b/FortranParser/src/pt/up/fe/specs/fortran/parser/processors/DeclProcessors.java @@ -1,6 +1,46 @@ package pt.up.fe.specs.fortran.parser.processors; -import pt.up.fe.specs.fortran.ast.nodes.decl.*; +import pt.up.fe.specs.fortran.ast.nodes.decl.DataStmtValue; +import pt.up.fe.specs.fortran.ast.nodes.decl.EntityDecl; +import pt.up.fe.specs.fortran.ast.nodes.decl.NamedParameter; +import pt.up.fe.specs.fortran.ast.nodes.decl.StarParameter; +import pt.up.fe.specs.fortran.ast.nodes.decl.component.ComponentDecl; +import pt.up.fe.specs.fortran.ast.nodes.decl.component.attr.AccessComponentAttr; +import pt.up.fe.specs.fortran.ast.nodes.decl.component.attr.CodimComponentAttr; +import pt.up.fe.specs.fortran.ast.nodes.decl.component.attr.DimComponentAttr; +import pt.up.fe.specs.fortran.ast.nodes.decl.component.attr.OtherComponentAttr; +import pt.up.fe.specs.fortran.ast.nodes.decl.enums.ComponentAttrKind; +import pt.up.fe.specs.fortran.ast.nodes.decl.enums.ProcAttrKind; +import pt.up.fe.specs.fortran.ast.nodes.decl.init.*; +import pt.up.fe.specs.fortran.ast.nodes.decl.proc.ProcDecl; +import pt.up.fe.specs.fortran.ast.nodes.decl.proc.attr.AccessProcAttr; +import pt.up.fe.specs.fortran.ast.nodes.decl.proc.attr.IntentProcAttr; +import pt.up.fe.specs.fortran.ast.nodes.decl.proc.attr.LangBindProcAttr; +import pt.up.fe.specs.fortran.ast.nodes.decl.proc.attr.OtherProcAttr; +import pt.up.fe.specs.fortran.ast.nodes.decl.proc.interfaces.NamedProcInterface; +import pt.up.fe.specs.fortran.ast.nodes.decl.proc.interfaces.TypeProcInterface; +import pt.up.fe.specs.fortran.ast.nodes.expr.enums.BinaryOperatorKind; +import pt.up.fe.specs.fortran.ast.nodes.specification.*; +import pt.up.fe.specs.fortran.ast.nodes.specification.enums.AccessKind; +import pt.up.fe.specs.fortran.ast.nodes.specification.enums.EmptyFunctionSpecKind; +import pt.up.fe.specs.fortran.ast.nodes.specification.enums.GenericSpecKind; +import pt.up.fe.specs.fortran.ast.nodes.specification.funcspec.DeclTypeFunctionSpec; +import pt.up.fe.specs.fortran.ast.nodes.specification.funcspec.EmptyFunctionSpec; +import pt.up.fe.specs.fortran.ast.nodes.specification.genericspec.NameGenericSpec; +import pt.up.fe.specs.fortran.ast.nodes.specification.genericspec.OpGenericSpec; +import pt.up.fe.specs.fortran.ast.nodes.specification.genericspec.OtherGenericSpec; +import pt.up.fe.specs.fortran.ast.nodes.specification.interfaces.InterfaceBlock; +import pt.up.fe.specs.fortran.ast.nodes.specification.interfaces.InterfaceFunction; +import pt.up.fe.specs.fortran.ast.nodes.specification.interfaces.InterfaceSubroutine; +import pt.up.fe.specs.fortran.ast.nodes.specification.type.AbstractTypeAttr; +import pt.up.fe.specs.fortran.ast.nodes.specification.type.AccessTypeAttr; +import pt.up.fe.specs.fortran.ast.nodes.specification.type.BindTypeAttr; +import pt.up.fe.specs.fortran.ast.nodes.specification.type.ExtendsTypeAttr; +import pt.up.fe.specs.fortran.ast.nodes.stmt.AccessStmt; +import pt.up.fe.specs.fortran.ast.nodes.type.attributes.enums.IntentKind; +import pt.up.fe.specs.fortran.ast.nodes.type.typeparam.DeferredTypeParamValue; +import pt.up.fe.specs.fortran.ast.nodes.type.typeparam.ExprTypeParamValue; +import pt.up.fe.specs.fortran.ast.nodes.type.typeparam.StarTypeParamValue; import pt.up.fe.specs.fortran.parser.FlangName; import pt.up.fe.specs.fortran.parser.FortranJsonResult; @@ -23,36 +63,29 @@ public void entityDecl(EntityDecl entityDecl) { } if (attributes(entityDecl).has(FlangName.INITIALIZATION)) { - var initId = attributes(entityDecl).getString(FlangName.INITIALIZATION); - var init = buildInitialization(initId); + var init = getChild(entityDecl, FlangName.INITIALIZATION); entityDecl.addChild(init); } } - public Initialization buildInitialization(String id) { - var attrs = attributes().getAttrs(id); - var variantKey = attrs.getVariantKey(); - - if (variantKey.equals(FlangName.DATA_STMT_VALUE.getString())) { - var dataStmtValueIds = attrs.getStringList(FlangName.DATA_STMT_VALUE); - var dataStmtValues = dataStmtValueIds.stream() - .map(this::getNode) - .toList(); - - var init = factory().listInitialization(); - init.addChildren(dataStmtValues); - - return init; - } + public void exprInitialization(ExprInitialization exprInitialization) { + var expr = getChild(exprInitialization, FlangName.EXPR); + exprInitialization.addChild(expr); + } - // Otherwise, we assume it's an ExprInitialization - var childId = attrs.getString(variantKey); - var initExpr = getChild(childId); + public void nullInitialization(NullInitialization nullInitialization) { + var nullInit = getChild(nullInitialization, FlangName.NULL_INIT); + nullInitialization.addChild(nullInit); + } - var init = factory().exprInitialization(); - init.addChild(initExpr); + public void dataTargetInitialization(DataTargetInitialization dataTargetInitialization) { + var designator = getChild(dataTargetInitialization, FlangName.DESIGNATOR); + dataTargetInitialization.addChild(designator); + } - return init; + public void listInitialization(ListInitialization listInitialization) { + var dataStmtValues = getChildren(listInitialization, FlangName.DATA_STMT_VALUE); + listInitialization.addChildren(dataStmtValues); } public void dataStmtValue(DataStmtValue dataStmtValue) { @@ -65,15 +98,247 @@ public void dataStmtValue(DataStmtValue dataStmtValue) { dataStmtValue.addChild(constant); } - public void dummyArgumentDecl(DummyArgumentDecl dummyArgumentDecl) { - var nameId = attributes(dummyArgumentDecl).getVariantString(); - var name = attributes().get(nameId).getString("source"); + public void namedParameter(NamedParameter namedParameter) { + var name = attributes().getString(namedParameter, "source", FlangName.NAME); + namedParameter.set(NamedParameter.NAME, name); + } + + public void starParameter(StarParameter ignoredParameter) { + } + + public void exprTypeParamValue(ExprTypeParamValue value) { + var expr = getChild(value, FlangName.EXPR); + value.addChild(expr); + } + + public void starTypeParamValue(StarTypeParamValue ignoredValue) { + } + + public void deferredTypeParamValue(DeferredTypeParamValue ignoredValue) { + } + + public void namedOperator(NamedOperator namedOperator) { + var operatorName = attributes().getString(namedOperator, "source", FlangName.NAME); + namedOperator.set(NamedOperator.OPERATOR_NAME, operatorName); + } + + public void intrinsicOperator(IntrinsicOperator intrinsicOperator) { + var operatorKindSource = attributes(intrinsicOperator).getString("value"); + var operatorKind = BinaryOperatorKind.valueOf(operatorKindSource.toUpperCase()); + intrinsicOperator.set(IntrinsicOperator.OPERATOR_KIND, operatorKind); + } - dummyArgumentDecl.set(DummyArgumentDecl.NAME, name); + public void nameGenericSpec(NameGenericSpec spec) { + var name = attributes().getString(spec, "source", FlangName.NAME); + spec.set(NameGenericSpec.NAME, name); } - public void dataStmtSet(DataStmtSet dataStmtSet) { - dataStmtSet.addChildren(getChildren(dataStmtSet, FlangName.DATA_STMT_OBJECT)); - dataStmtSet.addChildren(getChildren(dataStmtSet, FlangName.DATA_STMT_VALUE)); + public void opGenericSpec(OpGenericSpec spec) { + var definedOperator = getChild(spec, FlangName.DEFINED_OPERATOR); + spec.addChild(definedOperator); + } + + public void otherGenericSpec(OtherGenericSpec spec) { + var variant = attributes(spec).getVariantName(); + + var kind = switch (variant) { + case ASSIGNMENT -> GenericSpecKind.ASSIGNMENT; + case READ_FORMATTED -> GenericSpecKind.READ_FORMATTED; + case READ_UNFORMATTED -> GenericSpecKind.READ_UNFORMATTED; + case WRITE_FORMATTED -> GenericSpecKind.WRITE_FORMATTED; + case WRITE_UNFORMATTED -> GenericSpecKind.WRITE_UNFORMATTED; + default -> throw new RuntimeException("Unknown generic spec kind: " + variant); + }; + spec.set(OtherGenericSpec.KIND, kind); + } + + public void letterSpec(LetterSpec letterSpec) { + var firstLetter = attributes(letterSpec).getString("firstLetter").charAt(0); + letterSpec.set(LetterSpec.FIRST_LETTER, firstLetter); + + var lastLetter = attributes(letterSpec) + .getOptionalString("lastLetter") + .map(s -> s.charAt(0)); + letterSpec.set(LetterSpec.LAST_LETTER, lastLetter); + } + + public void implicitSpec(ImplicitSpec implicitSpec) { + var declType = getChild(implicitSpec, FlangName.DECLARATION_TYPE_SPEC); + implicitSpec.addChild(declType); + + var letterSpecs = getChildren(implicitSpec, FlangName.LETTER_SPEC); + implicitSpec.addChildren(letterSpecs); + } + + public void declTypeFunctionSpec(DeclTypeFunctionSpec functionSpec) { + var declType = getChild(functionSpec, FlangName.DECLARATION_TYPE_SPEC); + functionSpec.addChild(declType); + } + + public void emptyFunctionSpec(EmptyFunctionSpec functionSpec) { + var variantKey = attributes(functionSpec).getVariantKey(); + var kind = EmptyFunctionSpecKind.valueOf(variantKey.toUpperCase()); + functionSpec.set(EmptyFunctionSpec.KIND, kind); + } + + public void abstractTypeAttr(AbstractTypeAttr ignoredAttr) { + } + + public void accessTypeAttr(AccessTypeAttr accessTypeAttr) { + var accessSpec = attributes().getString(accessTypeAttr, "value", FlangName.ACCESS_SPEC, FlangName.KIND); + var accessKind = AccessKind.valueOf(accessSpec.toUpperCase()); + accessTypeAttr.set(AccessStmt.ACCESS_KIND, accessKind); + } + + public void bindTypeAttr(BindTypeAttr ignoredAttr) { + } + + public void extendsTypeAttr(ExtendsTypeAttr extendsTypeAttr) { + var parentType = attributes().getString(extendsTypeAttr, "source", FlangName.EXTENDS, FlangName.NAME); + extendsTypeAttr.set(ExtendsTypeAttr.PARENT_TYPE, parentType); + } + + public void accessComponentAttr(AccessComponentAttr accessComponentAttr) { + var accessSpec = attributes().getString(accessComponentAttr, "value", FlangName.ACCESS_SPEC, FlangName.KIND); + var accessKind = AccessKind.valueOf(accessSpec.toUpperCase()); + accessComponentAttr.set(AccessStmt.ACCESS_KIND, accessKind); + } + + public void codimComponentAttr(CodimComponentAttr codimComponentAttr) { + var coarraySpec = getChild(codimComponentAttr, FlangName.COARRAY_SPEC); + codimComponentAttr.addChild(coarraySpec); + } + + public void dimComponentAttr(DimComponentAttr dimComponentAttr) { + var arraySpec = getChild(dimComponentAttr, FlangName.COMPONENT_ARRAY_SPEC); + dimComponentAttr.addChild(arraySpec); + } + + public void otherComponentAttr(OtherComponentAttr otherComponentAttr) { + var variantKey = attributes(otherComponentAttr).getVariantKey(); + var kind = ComponentAttrKind.valueOf(variantKey.toUpperCase()); + otherComponentAttr.set(OtherComponentAttr.KIND, kind); + } + + public void componentDecl(ComponentDecl componentDecl) { + var componentName = attributes().getString(componentDecl, "source", FlangName.NAME); + componentDecl.set(ComponentDecl.COMPONENT_NAME, componentName); + + var arraySpec = getChildOptional(componentDecl, FlangName.COMPONENT_ARRAY_SPEC); + arraySpec.ifPresent(componentDecl::addChild); + + var coarraySpec = getChildOptional(componentDecl, FlangName.COARRAY_SPEC); + coarraySpec.ifPresent(componentDecl::addChild); + + var charLenSelector = getChildOptional(componentDecl, FlangName.CHAR_LENGTH); + charLenSelector.ifPresent(componentDecl::addChild); + + var initialization = getChildOptional(componentDecl, FlangName.INITIALIZATION); + initialization.ifPresent(componentDecl::addChild); + } + + public void derivedTypeDef(DerivedTypeDef derivedTypeDef) { + var derivedTypeStmt = getStmtChild(derivedTypeDef, FlangName.DERIVED_TYPE_STMT); + derivedTypeDef.addChild(derivedTypeStmt); + +// var typeParamDefStmts = getChildren(derivedTypeDef, FlangName.TYPE_PARAM_DEF_STMT); +// derivedTypeDef.addChildren(typeParamDefStmts); +// +// var privateOrSequenceStmts = getChildren(derivedTypeDef, FlangName.PRIVATE_OR_SEQUENCE); +// derivedTypeDef.addChildren(privateOrSequenceStmts); + + var componentDefStmts = getChildren(derivedTypeDef, FlangName.COMPONENT_DEF_STMT.getStmtAttr()); + derivedTypeDef.addChildren(componentDefStmts); + +// var typeBoundProcedurePart = getChildOptional(derivedTypeDef, FlangName.TYPE_BOUND_PROCEDURE_PART); +// typeBoundProcedurePart.ifPresent(derivedTypeDef::addChild); + + var endTypeStmt = getStmtChild(derivedTypeDef, FlangName.END_TYPE_STMT); + derivedTypeDef.addChild(endTypeStmt); + } + + public void interfaceBlock(InterfaceBlock interfaceBlock) { + var interfaceStmt = getStmtChild(interfaceBlock, FlangName.INTERFACE_STMT); + interfaceBlock.addChild(interfaceStmt); + + var interfaceSpecifications = getChildren(interfaceBlock, FlangName.INTERFACE_SPECIFICATION); + interfaceBlock.addChildren(interfaceSpecifications); + + var endInterfaceStmt = getStmtChild(interfaceBlock, FlangName.END_INTERFACE_STMT); + interfaceBlock.addChild(endInterfaceStmt); + } + + public void interfaceFunction(InterfaceFunction interfaceFunction) { + var functionStmt = getStmtChild(interfaceFunction, FlangName.FUNCTION_STMT); + interfaceFunction.addChild(functionStmt); + + var specification = getChild(interfaceFunction, FlangName.SPECIFICATION_PART); + interfaceFunction.addChild(specification); + + var endFunctionStmt = getStmtChild(interfaceFunction, FlangName.END_FUNCTION_STMT); + interfaceFunction.addChild(endFunctionStmt); + } + + public void interfaceSubroutine(InterfaceSubroutine interfaceSubroutine) { + var subroutineStmt = getStmtChild(interfaceSubroutine, FlangName.SUBROUTINE_STMT); + interfaceSubroutine.addChild(subroutineStmt); + + var specification = getChild(interfaceSubroutine, FlangName.SPECIFICATION_PART); + interfaceSubroutine.addChild(specification); + + var endSubroutineStmt = getStmtChild(interfaceSubroutine, FlangName.END_SUBROUTINE_STMT); + interfaceSubroutine.addChild(endSubroutineStmt); + } + + public void nameProcPointerInit(NameProcPointerInit nameProcPointerInit) { + var name = attributes().getString(nameProcPointerInit, "source", FlangName.NAME); + nameProcPointerInit.set(NameProcPointerInit.NAME, name); + } + + public void nullProcPointerInit(NullProcPointerInit nullProcPointerInit) { + var nullInit = getChild(nullProcPointerInit, FlangName.NULL_INIT); + nullProcPointerInit.addChild(nullInit); + } + + public void namedProcInterface(NamedProcInterface namedProcInterface) { + var name = attributes().getString(namedProcInterface, "source", FlangName.NAME); + namedProcInterface.set(NamedProcInterface.NAME, name); + } + + public void typeProcInterface(TypeProcInterface typeProcInterface) { + var declType = getChild(typeProcInterface, FlangName.DECLARATION_TYPE_SPEC); + typeProcInterface.addChild(declType); + } + + public void accessProcAttr(AccessProcAttr accessProcAttr) { + var accessKindSrc = attributes().getString(accessProcAttr, "value", FlangName.ACCESS_SPEC, FlangName.KIND); + var accessKind = AccessKind.valueOf(accessKindSrc.toUpperCase()); + accessProcAttr.set(AccessProcAttr.ACCESS_KIND, accessKind); + } + + public void langBindProcAttr(LangBindProcAttr langBindProcAttr) { + var languageBindingSpec = getChild(langBindProcAttr, FlangName.LANGUAGE_BINDING_SPEC); + langBindProcAttr.addChild(languageBindingSpec); + } + + public void intentProcAttr(IntentProcAttr intentProcAttr) { + var intentKindSrc = attributes().getString(intentProcAttr, "intent", FlangName.INTENT_SPEC); + var intentKind = IntentKind.convertTry(intentKindSrc) + .orElseThrow(() -> new RuntimeException("Invalid intent kind: " + intentKindSrc)); + intentProcAttr.set(IntentProcAttr.INTENT_KIND, intentKind); + } + + public void otherProcAttr(OtherProcAttr otherProcAttr) { + var variantKey = attributes(otherProcAttr).getVariantKey(); + var kind = ProcAttrKind.valueOf(variantKey.toUpperCase()); + otherProcAttr.set(OtherProcAttr.KIND, kind); + } + + public void procDecl(ProcDecl procDecl) { + var name = attributes().getString(procDecl, "source", FlangName.NAME); + procDecl.set(ProcDecl.NAME, name); + + var init = getChildOptional(procDecl, FlangName.PROC_POINTER_INIT); + init.ifPresent(procDecl::addChild); } } diff --git a/FortranParser/src/pt/up/fe/specs/fortran/parser/processors/ExprProcessors.java b/FortranParser/src/pt/up/fe/specs/fortran/parser/processors/ExprProcessors.java index 59972872..cd8f0935 100644 --- a/FortranParser/src/pt/up/fe/specs/fortran/parser/processors/ExprProcessors.java +++ b/FortranParser/src/pt/up/fe/specs/fortran/parser/processors/ExprProcessors.java @@ -6,6 +6,8 @@ import pt.up.fe.specs.fortran.parser.FlangName; import pt.up.fe.specs.fortran.parser.FortranJsonResult; +import java.util.Optional; + public class ExprProcessors extends ANodeProcessor { @@ -13,24 +15,79 @@ public ExprProcessors(FortranJsonResult data) { super(data); } + public Optional getKindParam(String kindParamId) { + var kindParamAttrs = attributes().get(kindParamId); + + switch (kindParamAttrs.getVariantKey()) { + case "uint64_t" -> { + var kindParam = kindParamAttrs.getString("uint64_t"); + return Optional.of(kindParam); + } + case "Name" -> { + var nameAttrs = attributes().get(kindParamAttrs.getString(FlangName.NAME)); + var kindParam = nameAttrs.getString("source"); + return Optional.of(kindParam); + } + default -> { + return Optional.empty(); + } + } + } + public void stringLiteral(StringLiteral stringLiteral) { - stringLiteral.set(StringLiteral.SOURCE_LITERAL, attributes().getString(stringLiteral, "string")); + var contents = attributes().getString(stringLiteral, "string"); + stringLiteral.set(StringLiteral.CONTENTS, contents); + + var kindParam = attributes(stringLiteral) + .getOptionalString(FlangName.KIND_PARAM) + .flatMap(this::getKindParam); + stringLiteral.set(StringLiteral.KIND_PARAM, kindParam); } public void intLiteral(IntLiteral intLiteral) { - intLiteral.set(StringLiteral.SOURCE_LITERAL, attributes().getString(intLiteral, "CharBlock")); + var source = attributes().getString(intLiteral, "CharBlock"); + intLiteral.set(IntLiteral.SOURCE, source); - if (attributes(intLiteral).has(FlangName.KIND_PARAM)) { - intLiteral.setOptional(IntLiteral.KIND_PARAM, attributes().getString(intLiteral, "uint64_t", FlangName.KIND_PARAM)); - } + var kindParam = attributes(intLiteral) + .getOptionalString(FlangName.KIND_PARAM) + .flatMap(this::getKindParam); + intLiteral.set(IntLiteral.KIND_PARAM, kindParam); } public void logicalLiteral(LogicalLiteral logicalLiteral) { - logicalLiteral.set(StringLiteral.SOURCE_LITERAL, attributes().getString(logicalLiteral, "bool")); + var value = attributes().getString(logicalLiteral, "bool").equals("1"); + logicalLiteral.set(LogicalLiteral.VALUE, value); + + var kindParam = attributes(logicalLiteral) + .getOptionalString(FlangName.KIND_PARAM) + .flatMap(this::getKindParam); + logicalLiteral.set(LogicalLiteral.KIND_PARAM, kindParam); } public void realLiteral(RealLiteral realLiteral) { - realLiteral.set(RealLiteral.SOURCE_LITERAL, attributes().get(attributes().getString(realLiteral, "real")).getString("source")); + var attrs = attributes(realLiteral); + var sign = ""; + + if (attrs.has(FlangName.REAL_LITERAL_CONSTANT)) { + sign = attrs.getOptionalString(FlangName.SIGN).orElseGet(() -> ""); + + var childId = attrs.getString(FlangName.REAL_LITERAL_CONSTANT); + attrs = attributes().get(childId); + } + + var realId = attrs.getString("real"); + var realSource = attributes().get(realId).getString("source"); + realLiteral.set(RealLiteral.SOURCE, sign + realSource); + + var kindParam = attrs.getOptionalString("kind") + .flatMap(this::getKindParam); + + realLiteral.set(RealLiteral.KIND_PARAM, kindParam); + } + + public void namedLiteral(NamedLiteral namedLiteral) { + var name = attributes().getString(namedLiteral, "source", FlangName.NAME); + namedLiteral.set(NamedLiteral.NAME, name); } public void parenExpr(ParenExpr parenExpr) { @@ -49,8 +106,7 @@ public void binaryOperator(BinaryOperator binaryOperator) { binaryOperator.addChild(getChild(binaryOperator, "left")); binaryOperator.addChild(getChild(binaryOperator, "right")); - String opName = attributes().getString(binaryOperator, "op"); - + var opName = attributes().getString(binaryOperator, "op"); binaryOperator.set(BinaryOperator.OP, BinaryOperatorKind.valueOf(opName.toUpperCase())); } @@ -140,4 +196,56 @@ public void acImpliedDoControl(AcImpliedDoControl control) { public void argument(Argument argument) { argument.addChild(getChild(argument, FlangName.ACTUAL_ARG)); } + + public void intComplexPart(IntComplexPart intComplexPart) { + var intLiteral = getChild(intComplexPart, FlangName.SIGNED_INT_LITERAL_CONSTANT); + intComplexPart.addChild(intLiteral); + } + + public void realComplexPart(RealComplexPart realComplexPart) { + var realLiteral = getChild(realComplexPart, FlangName.SIGNED_REAL_LITERAL_CONSTANT); + realComplexPart.addChild(realLiteral); + } + + public void namedComplexPart(NamedComplexPart namedComplexPart) { + var namedLiteral = getChild(namedComplexPart, FlangName.NAMED_CONSTANT); + namedComplexPart.addChild(namedLiteral); + } + + public void complexLiteral(ComplexLiteral complexLiteral) { + var real = getChild(complexLiteral, "real"); + complexLiteral.addChild(real); + + var imaginary = getChild(complexLiteral, "imaginary"); + complexLiteral.addChild(imaginary); + } + + public void substring(Substring substring) { + var ref = getChild(substring, FlangName.DATA_REF); + substring.addChild(ref); + + var lowerId = attributes().getOptionalString(substring, "lower", FlangName.SUBSTRING_RANGE); + var lowerExpr = lowerId.map(this::getChild); + lowerExpr.ifPresent(lower -> { + substring.addChild(lower); + substring.setOptional(Substring.LOWER_IDX, lower.indexOfSelf()); + }); + + var upperId = attributes().getOptionalString(substring, "upper", FlangName.SUBSTRING_RANGE); + var upperExpr = upperId.map(this::getChild); + upperExpr.ifPresent(upper -> { + substring.addChild(upper); + substring.setOptional(Substring.UPPER_IDX, upper.indexOfSelf()); + }); + } + + public void nullInit(NullInit nullInit) { + var nullRef = factory().namedProcDesignator("null"); + nullInit.addChild(nullRef); + } + + public void namedProcDesignator(NamedProcDesignator namedProcDesignator) { + var name = attributes().getString(namedProcDesignator, "source", FlangName.NAME); + namedProcDesignator.set(NamedProcDesignator.NAME, name); + } } diff --git a/FortranParser/src/pt/up/fe/specs/fortran/parser/processors/IoProcessors.java b/FortranParser/src/pt/up/fe/specs/fortran/parser/processors/IoProcessors.java new file mode 100644 index 00000000..ffac75bc --- /dev/null +++ b/FortranParser/src/pt/up/fe/specs/fortran/parser/processors/IoProcessors.java @@ -0,0 +1,388 @@ +package pt.up.fe.specs.fortran.parser.processors; + +import pt.up.fe.specs.fortran.ast.nodes.io.*; +import pt.up.fe.specs.fortran.ast.nodes.io.enums.*; +import pt.up.fe.specs.fortran.parser.FlangAttributes; +import pt.up.fe.specs.fortran.parser.FlangName; +import pt.up.fe.specs.fortran.parser.FortranJsonResult; + +import java.util.List; + +public class IoProcessors extends ANodeProcessor { + private final StmtProcessors stmtProcessors; + + public IoProcessors(FortranJsonResult data, StmtProcessors stmtProcessors) { + super(data); + + this.stmtProcessors = stmtProcessors; + } + + public void openStmt(OpenStmt openStmt) { + stmtProcessors.actionStmt(openStmt); + + var specs = getChildren(openStmt, FlangName.CONNECT_SPEC); + openStmt.addChildren(specs); + } + + private String getCharExprKind(FlangAttributes attrs) { + var kindId = attrs.getString(FlangName.KIND); + return attributes().get(kindId).getString("value"); + } + + public void exprConnectSpec(ExprConnectSpec spec) { + var attrs = attributes(spec); + var variant = attrs.getVariantName(); + + switch (variant) { + case FILE_UNIT_NUMBER -> { // UNIT + attrs = getChildAttrs(attrs); + spec.set(ExprConnectSpec.KIND, ExprConnectSpecKind.UNIT); + } + + case EXPR -> { // FILE + spec.set(ExprConnectSpec.KIND, ExprConnectSpecKind.FILE); + } + + // ACCESS, ACTION, ASYNCHRONOUS, BLANK, DECIMAL, DELIM, ENCODING, FORM, PAD, POSITION, ROUND, SIGN, + // CARRIAGECONTROL, CONVERT, DISPOSE + case CHAR_EXPR -> { + attrs = getChildAttrs(attrs); + + var kind = ExprConnectSpecKind.convert(getCharExprKind(attrs)); + spec.set(ExprConnectSpec.KIND, kind); + } + + case RECL -> { // RECL + attrs = getChildAttrs(attrs); + spec.set(ExprConnectSpec.KIND, ExprConnectSpecKind.RECL); + } + + case STATUS_EXPR -> { // STATUS + attrs = getChildAttrs(attrs); + spec.set(ExprConnectSpec.KIND, ExprConnectSpecKind.STATUS); + } + + default -> { + throw new RuntimeException("Variant '" + variant + "' of ExprConnectSpec is not handled."); + } + } + + var exprId = attrs.getString(FlangName.EXPR); + var expr = getChild(exprId); + spec.addChild(expr); + } + + private FlangAttributes getChildAttrs(FlangAttributes attrs) { + return attributes().get(attrs.getVariantString()); + } + + public void varConnectSpec(VarConnectSpec spec) { + var attrs = attributes(spec); + var variant = attrs.getVariantName(); + + var kind = switch (variant) { + case MSG_VARIABLE -> VarConnectSpecKind.IOMSG; + case STAT_VARIABLE -> VarConnectSpecKind.IOSTAT; + case NEWUNIT -> VarConnectSpecKind.NEWUNIT; + default -> throw new RuntimeException("Variant '" + variant + "' of VarConnectSpec is not handled."); + }; + spec.set(VarConnectSpec.KIND, kind); + + var childAttrs = attributes().get(attrs.getVariantString()); + var variable = getChild(childAttrs.getString(FlangName.VARIABLE)); + spec.addChild(variable); + } + + public void errConnectSpec(ErrConnectSpec spec) { + var label = attributes(spec).getString("uint64_t"); + spec.set(ErrConnectSpec.LABEL, Integer.parseInt(label)); + } + + public void exprIoControlSpec(ExprIoControlSpec spec) { + var attrs = attributes(spec); + var nodeKind = getNodeKind(spec); + + if (nodeKind == FlangName.IO_UNIT) { // If original node is IoUnit + spec.set(ExprIoControlSpec.KIND, ExprIoControlSpecKind.UNIT); + + } else if (nodeKind == FlangName.IO_CONTROL_SPEC) { // If original node is IoControlSpec + var variant = attrs.getVariantName(); + attrs = getChildAttrs(attrs); + + var kind = switch (variant) { + // ADVANCE, BLANK, DECIMAL, DELIM, PAD, ROUND, SIGN + case CHAR_EXPR -> ExprIoControlSpecKind.convert(getCharExprKind(attrs)); + case ASYNCHRONOUS -> ExprIoControlSpecKind.ASYNCHRONOUS; + case POS -> ExprIoControlSpecKind.POS; + case REC -> ExprIoControlSpecKind.REC; + default -> throw new RuntimeException("Variant '" + variant + "' of ExprIoControlSpec is not handled."); + }; + spec.set(ExprIoControlSpec.KIND, kind); + + } else { + throw new RuntimeException("Node kind '" + nodeKind + "' of ExprIoControlSpec is not handled."); + } + + var exprId = attrs.getString(FlangName.EXPR); + var expr = getChild(exprId); + spec.addChild(expr); + } + + public void varIoControlSpec(VarIoControlSpec spec) { + var attrs = attributes(spec); + var nodeKind = getNodeKind(spec); + + if (nodeKind == FlangName.IO_UNIT) { + spec.set(VarIoControlSpec.KIND, VarIoControlSpecKind.UNIT); + + } else if (nodeKind == FlangName.IO_CONTROL_SPEC) { + var variant = attrs.getVariantName(); + attrs = getChildAttrs(attrs); + + var kind = switch (variant) { + case ID_VARIABLE -> VarIoControlSpecKind.ID; + case MSG_VARIABLE -> VarIoControlSpecKind.IOMSG; + case STAT_VARIABLE -> VarIoControlSpecKind.IOSTAT; + case SIZE -> VarIoControlSpecKind.SIZE; + default -> throw new RuntimeException("Variant '" + variant + "' of VarIoControlSpec is not handled."); + }; + spec.set(VarIoControlSpec.KIND, kind); + + } else { + throw new RuntimeException("Node kind '" + nodeKind + "' of VarIoControlSpec is not handled."); + } + + var variableId = attrs.getString(FlangName.VARIABLE); + var variable = getChild(variableId); + spec.addChild(variable); + } + + public void labelIoControlSpec(LabelIoControlSpec spec) { + var attrs = attributes(spec); + var variant = attrs.getVariantName(); + + var kind = switch (variant) { + case END_LABEL -> LabelIoControlSpecKind.END; + case EOR_LABEL -> LabelIoControlSpecKind.EOR; + case ERR_LABEL -> LabelIoControlSpecKind.ERR; + default -> throw new RuntimeException("Variant '" + variant + "' of LabelIoControlSpec is not handled."); + }; + spec.set(LabelIoControlSpec.KIND, kind); + + var label = getChildAttrs(attrs).getString("uint64_t"); + spec.set(LabelIoControlSpec.LABEL, Integer.parseInt(label)); + } + + public void starUnitIoControlSpec(StarUnitIoControlSpec ignoredSpec) {} + + public void formatIoControlSpec(FormatIoControlSpec spec) { + var format = getChild(spec, FlangName.FORMAT); + spec.addChild(format); + } + + public void namelistIoControlSpec(NamelistIoControlSpec spec) { + var namelistName = attributes().getString(spec, "source", FlangName.NAME); + spec.set(NamelistIoControlSpec.NAMELIST_NAME, namelistName); + } + + public void rewindStmt(RewindStmt rewindStmt) { + stmtProcessors.actionStmt(rewindStmt); + + if (attributes(rewindStmt).has(FlangName.POSITION_OR_FLUSH_SPEC)) { + var children = getChildren(rewindStmt, FlangName.POSITION_OR_FLUSH_SPEC); + rewindStmt.addChildren(children); + } + } + + public void unitPosFlushSpec(UnitPosFlushSpec spec) { + var exprId = attributes().getString(spec, FlangName.EXPR.getString(), FlangName.FILE_UNIT_NUMBER); + var expr = getChild(exprId); + spec.addChild(expr); + } + + public void varPosFlushSpec(VarPosFlushSpec spec) { + var attrs = attributes(spec); + var variant = attrs.getVariantName(); + + var kind = switch (variant) { + case MSG_VARIABLE -> VarPosFlushSpecKind.IOMSG; + case STAT_VARIABLE -> VarPosFlushSpecKind.IOSTAT; + default -> throw new RuntimeException("Variant '" + variant + "' of VarPosFlushSpec is not handled."); + }; + spec.set(VarPosFlushSpec.KIND, kind); + + var variableId = getChildAttrs(attrs).getString(FlangName.VARIABLE); + var variable = getChild(variableId); + spec.addChild(variable); + } + + public void errPosFlushSpec(ErrPosFlushSpec spec) { + var label = attributes().getString(spec, "uint64_t", FlangName.ERR_LABEL); + spec.set(ErrPosFlushSpec.LABEL, Integer.parseInt(label)); + } + + public void readStmt(ReadStmt readStmt) { + stmtProcessors.actionStmt(readStmt); + + if (attributes(readStmt).has("iounit")) { + var ioUnit = getChild(readStmt, "iounit"); + readStmt.addChild(ioUnit); + } + + if (attributes(readStmt).has("format")) { + var format = getChild(readStmt, "format"); + var spec = factory().newNode(FormatIoControlSpec.class, List.of(format)); + readStmt.addChild(spec); + } + + if (attributes(readStmt).has("controls")) { + var ioControlSpecs = getChildren(readStmt, "controls"); + readStmt.addChildren(ioControlSpecs); + } + + if (attributes(readStmt).has("items")) { + var inputItems = getChildren(readStmt, "items"); + readStmt.addChildren(inputItems); + } + } + + public void varInputItem(VarInputItem item) { + var variable = getChild(item, FlangName.VARIABLE); + item.addChild(variable); + } + + public void writeStmt(WriteStmt writeStmt) { + stmtProcessors.actionStmt(writeStmt); + + if (attributes(writeStmt).has("iounit")) { + writeStmt.addChild(getChild(writeStmt, "iounit")); + } + + if (attributes(writeStmt).has("format")) { + var format = getChild(writeStmt, "format"); + var spec = factory().newNode(FormatIoControlSpec.class, List.of(format)); + writeStmt.addChild(spec); + } + + if (attributes(writeStmt).has("controls")) { + writeStmt.addChildren(getChildren(writeStmt, "controls")); + } + + if (attributes(writeStmt).has("items")) { + writeStmt.addChildren(getChildren(writeStmt, "items")); + } + } + + public void exprOutputItem(ExprOutputItem item) { + var expr = getChild(item, FlangName.EXPR); + item.addChild(expr); + } + + public void waitStmt(WaitStmt waitStmt) { + stmtProcessors.actionStmt(waitStmt); + + var specs = getChildren(waitStmt, FlangName.WAIT_SPEC); + waitStmt.addChildren(specs); + } + + public void exprWaitSpec(ExprWaitSpec spec) { + var variant = attributes(spec).getVariantName(); + + var kind = switch (variant) { + case FILE_UNIT_NUMBER -> ExprWaitSpecKind.UNIT; + case ID_EXPR -> ExprWaitSpecKind.ID; + default -> throw new RuntimeException("Variant '" + variant + "' of ExprWaitSpec is not handled."); + }; + spec.set(ExprWaitSpec.KIND, kind); + + var exprId = attributes().getString(spec, FlangName.EXPR.getString(), variant); + var expr = getChild(exprId); + spec.addChild(expr); + } + + public void varWaitSpec(VarWaitSpec spec) { + var variant = attributes(spec).getVariantName(); + + var kind = switch (variant) { + case MSG_VARIABLE -> VarWaitSpecKind.IOMSG; + case STAT_VARIABLE -> VarWaitSpecKind.IOSTAT; + default -> throw new RuntimeException("Variant '" + variant + "' of VarWaitSpec is not handled."); + }; + spec.set(VarWaitSpec.KIND, kind); + + var variableId = attributes().getString(spec, FlangName.VARIABLE.getString(), variant); + var variable = getChild(variableId); + spec.addChild(variable); + } + + public void labelWaitSpec(LabelWaitSpec spec) { + var variant = attributes(spec).getVariantName(); + + var kind = switch (variant) { + case END_LABEL -> LabelWaitSpecKind.END; + case EOR_LABEL -> LabelWaitSpecKind.EOR; + case ERR_LABEL -> LabelWaitSpecKind.ERR; + default -> throw new RuntimeException("Variant '" + variant + "' of LabelWaitSpec is not handled."); + }; + spec.set(LabelWaitSpec.KIND, kind); + + var label = attributes().getString(spec, "uint64_t", variant); + spec.set(LabelWaitSpec.LABEL, Integer.parseInt(label)); + } + + public void closeStmt(CloseStmt closeStmt) { + stmtProcessors.actionStmt(closeStmt); + + if (attributes(closeStmt).has(FlangName.CLOSE_SPEC)) { + var closeSpecs = getChildren(closeStmt, FlangName.CLOSE_SPEC); + closeStmt.addChildren(closeSpecs); + } + } + + public void exprCloseSpec(ExprCloseSpec spec) { + var variant = attributes(spec).getVariantName(); + + var kind = switch (variant) { + case FILE_UNIT_NUMBER -> ExprCloseSpecKind.UNIT; + case STATUS_EXPR -> ExprCloseSpecKind.STATUS; + default -> throw new RuntimeException("Variant '" + variant + "' of ExprCloseSpec is not handled."); + }; + spec.set(ExprCloseSpec.KIND, kind); + + var exprId = attributes().getString(spec, FlangName.EXPR.getString(), variant); + var expr = getChild(exprId); + spec.addChild(expr); + } + + public void varCloseSpec(VarCloseSpec spec) { + var variant = attributes(spec).getVariantName(); + + var kind = switch (variant) { + case STAT_VARIABLE -> VarCloseSpecKind.IOSTAT; + case MSG_VARIABLE -> VarCloseSpecKind.IOMSG; + default -> throw new RuntimeException("Variant '" + variant + "' of VarCloseSpec is not handled."); + }; + spec.set(VarCloseSpec.KIND, kind); + + var variableId = attributes().getString(spec, FlangName.VARIABLE.getString(), variant); + var variable = getChild(variableId); + spec.addChild(variable); + } + + public void errCloseSpec(ErrCloseSpec spec) { + var label = attributes().getString(spec, "uint64_t", FlangName.ERR_LABEL); + spec.set(ErrCloseSpec.LABEL, Integer.parseInt(label)); + } + + public void exprFormat(ExprFormat format) { + var expr = getChild(format, FlangName.EXPR); + format.addChild(expr); + } + + public void labelFormat(LabelFormat format) { + var label = attributes(format).getString("uint64_t"); + format.set(LabelFormat.LABEL, Integer.parseInt(label)); + } + + public void starFormat(StarFormat ignoredFormat) {} +} diff --git a/FortranParser/src/pt/up/fe/specs/fortran/parser/processors/NodeProcessor.java b/FortranParser/src/pt/up/fe/specs/fortran/parser/processors/NodeProcessor.java index 8c78fb68..bc97a74c 100644 --- a/FortranParser/src/pt/up/fe/specs/fortran/parser/processors/NodeProcessor.java +++ b/FortranParser/src/pt/up/fe/specs/fortran/parser/processors/NodeProcessor.java @@ -30,7 +30,6 @@ default FortranNode getNode(String id) { return node; } - default FortranNode getChild(FortranNode node, FlangName name) { return getChild(node, name.getString()); } @@ -146,6 +145,12 @@ default String getKind(String id) { } */ + default FlangName getNodeKind(FortranNode node) { + var id = attributes(node).getString("id"); + var kindStr = attributes().getKind(id); + return FlangName.convertTry(kindStr).orElseThrow(() -> + new RuntimeException("Kind '" + kindStr + "' is not a valid Flang name.")); + } default FlangData attributes() { diff --git a/FortranParser/src/pt/up/fe/specs/fortran/parser/processors/Nodes.java b/FortranParser/src/pt/up/fe/specs/fortran/parser/processors/Nodes.java index 65acab19..72d06b42 100644 --- a/FortranParser/src/pt/up/fe/specs/fortran/parser/processors/Nodes.java +++ b/FortranParser/src/pt/up/fe/specs/fortran/parser/processors/Nodes.java @@ -1,14 +1,25 @@ package pt.up.fe.specs.fortran.parser.processors; import pt.up.fe.specs.fortran.ast.nodes.FortranNode; -import pt.up.fe.specs.fortran.ast.nodes.decl.*; import pt.up.fe.specs.fortran.ast.nodes.alloc.Allocation; -import pt.up.fe.specs.fortran.ast.nodes.alloc.StatVariable; -import pt.up.fe.specs.fortran.ast.nodes.decl.DataStmtValue; -import pt.up.fe.specs.fortran.ast.nodes.decl.DummyArgumentDecl; -import pt.up.fe.specs.fortran.ast.nodes.decl.EntityDecl; -import pt.up.fe.specs.fortran.ast.nodes.decl.KindSelector; +import pt.up.fe.specs.fortran.ast.nodes.alloc.ExprAllocOption; +import pt.up.fe.specs.fortran.ast.nodes.alloc.VarAllocOption; +import pt.up.fe.specs.fortran.ast.nodes.decl.*; +import pt.up.fe.specs.fortran.ast.nodes.decl.component.ComponentDecl; +import pt.up.fe.specs.fortran.ast.nodes.decl.component.attr.AccessComponentAttr; +import pt.up.fe.specs.fortran.ast.nodes.decl.component.attr.CodimComponentAttr; +import pt.up.fe.specs.fortran.ast.nodes.decl.component.attr.DimComponentAttr; +import pt.up.fe.specs.fortran.ast.nodes.decl.component.attr.OtherComponentAttr; +import pt.up.fe.specs.fortran.ast.nodes.decl.init.*; +import pt.up.fe.specs.fortran.ast.nodes.decl.proc.ProcDecl; +import pt.up.fe.specs.fortran.ast.nodes.decl.proc.attr.AccessProcAttr; +import pt.up.fe.specs.fortran.ast.nodes.decl.proc.attr.IntentProcAttr; +import pt.up.fe.specs.fortran.ast.nodes.decl.proc.attr.LangBindProcAttr; +import pt.up.fe.specs.fortran.ast.nodes.decl.proc.attr.OtherProcAttr; +import pt.up.fe.specs.fortran.ast.nodes.decl.proc.interfaces.NamedProcInterface; +import pt.up.fe.specs.fortran.ast.nodes.decl.proc.interfaces.TypeProcInterface; import pt.up.fe.specs.fortran.ast.nodes.expr.*; +import pt.up.fe.specs.fortran.ast.nodes.io.*; import pt.up.fe.specs.fortran.ast.nodes.loops.ConcurrentLoopControl; import pt.up.fe.specs.fortran.ast.nodes.loops.ConcurrentRange; import pt.up.fe.specs.fortran.ast.nodes.loops.RangeLoopControl; @@ -17,28 +28,70 @@ import pt.up.fe.specs.fortran.ast.nodes.omp.clause.OmpDataSharingClause; import pt.up.fe.specs.fortran.ast.nodes.omp.clause.OmpNowaitClause; import pt.up.fe.specs.fortran.ast.nodes.omp.clause.OmpReductionClause; -import pt.up.fe.specs.fortran.ast.nodes.program.*; -import pt.up.fe.specs.fortran.ast.nodes.specification.ArraySpecification; -import pt.up.fe.specs.fortran.ast.nodes.specification.NamedConstantDef; +import pt.up.fe.specs.fortran.ast.nodes.program.ExecBlock; +import pt.up.fe.specs.fortran.ast.nodes.program.FortranFile; +import pt.up.fe.specs.fortran.ast.nodes.program.InternalSubprogramPart; +import pt.up.fe.specs.fortran.ast.nodes.program.Specification; +import pt.up.fe.specs.fortran.ast.nodes.program.subprogram.*; +import pt.up.fe.specs.fortran.ast.nodes.program.unit.*; +import pt.up.fe.specs.fortran.ast.nodes.program.unit.Module; +import pt.up.fe.specs.fortran.ast.nodes.specification.*; +import pt.up.fe.specs.fortran.ast.nodes.specification.funcspec.DeclTypeFunctionSpec; +import pt.up.fe.specs.fortran.ast.nodes.specification.funcspec.EmptyFunctionSpec; +import pt.up.fe.specs.fortran.ast.nodes.specification.genericspec.NameGenericSpec; +import pt.up.fe.specs.fortran.ast.nodes.specification.genericspec.OpGenericSpec; +import pt.up.fe.specs.fortran.ast.nodes.specification.genericspec.OtherGenericSpec; +import pt.up.fe.specs.fortran.ast.nodes.specification.interfaces.InterfaceBlock; +import pt.up.fe.specs.fortran.ast.nodes.specification.interfaces.InterfaceFunction; +import pt.up.fe.specs.fortran.ast.nodes.specification.interfaces.InterfaceSubroutine; +import pt.up.fe.specs.fortran.ast.nodes.specification.shape.*; +import pt.up.fe.specs.fortran.ast.nodes.specification.type.AbstractTypeAttr; +import pt.up.fe.specs.fortran.ast.nodes.specification.type.AccessTypeAttr; +import pt.up.fe.specs.fortran.ast.nodes.specification.type.BindTypeAttr; +import pt.up.fe.specs.fortran.ast.nodes.specification.type.ExtendsTypeAttr; import pt.up.fe.specs.fortran.ast.nodes.stmt.*; import pt.up.fe.specs.fortran.ast.nodes.stmt.datastmt.DataStmt; import pt.up.fe.specs.fortran.ast.nodes.stmt.datastmt.DataStmtSet; +import pt.up.fe.specs.fortran.ast.nodes.stmt.dimstmt.DimensionDecl; +import pt.up.fe.specs.fortran.ast.nodes.stmt.dimstmt.DimensionStmt; import pt.up.fe.specs.fortran.ast.nodes.stmt.ifstmt.*; +import pt.up.fe.specs.fortran.ast.nodes.stmt.implicit.DefaultImplicitStmt; +import pt.up.fe.specs.fortran.ast.nodes.stmt.implicit.ImplicitNoneStmt; +import pt.up.fe.specs.fortran.ast.nodes.stmt.interfaces.AbstractInterfaceStmt; +import pt.up.fe.specs.fortran.ast.nodes.stmt.interfaces.DefaultInterfaceStmt; +import pt.up.fe.specs.fortran.ast.nodes.stmt.interfaces.EndInterfaceStmt; import pt.up.fe.specs.fortran.ast.nodes.stmt.loop.DoConstruct; import pt.up.fe.specs.fortran.ast.nodes.stmt.loop.DoStmt; import pt.up.fe.specs.fortran.ast.nodes.stmt.loop.EndDoStmt; +import pt.up.fe.specs.fortran.ast.nodes.stmt.pointerassign.DoubleBound; +import pt.up.fe.specs.fortran.ast.nodes.stmt.pointerassign.DoubleBoundPointerAssignStmt; +import pt.up.fe.specs.fortran.ast.nodes.stmt.pointerassign.SingleBoundPointerAssignStmt; import pt.up.fe.specs.fortran.ast.nodes.stmt.selectcase.CaseBlock; import pt.up.fe.specs.fortran.ast.nodes.stmt.selectcase.CaseConstruct; import pt.up.fe.specs.fortran.ast.nodes.stmt.selectcase.EndSelectStmt; import pt.up.fe.specs.fortran.ast.nodes.stmt.selectcase.SelectCaseStmt; +import pt.up.fe.specs.fortran.ast.nodes.stmt.typedef.DataComponentDefStmt; +import pt.up.fe.specs.fortran.ast.nodes.stmt.typedef.DerivedTypeStmt; +import pt.up.fe.specs.fortran.ast.nodes.stmt.typedef.EndTypeStmt; +import pt.up.fe.specs.fortran.ast.nodes.stmt.usestmt.NamesRename; +import pt.up.fe.specs.fortran.ast.nodes.stmt.usestmt.UseName; +import pt.up.fe.specs.fortran.ast.nodes.stmt.usestmt.UseOnlyStmt; +import pt.up.fe.specs.fortran.ast.nodes.stmt.usestmt.UseRenameStmt; import pt.up.fe.specs.fortran.ast.nodes.type.*; -import pt.up.fe.specs.fortran.ast.nodes.type.attributes.IntentSpec; -import pt.up.fe.specs.fortran.ast.nodes.type.attributes.KeywordAttributeSpecifier; -import pt.up.fe.specs.fortran.ast.nodes.type.shapes.AllocateShapeSpecification; -import pt.up.fe.specs.fortran.ast.nodes.type.shapes.AssumedImpliedShapeSpec; -import pt.up.fe.specs.fortran.ast.nodes.type.shapes.DeferredShapeSpecList; -import pt.up.fe.specs.fortran.ast.nodes.type.shapes.ExplicitShapeSpecification; -import pt.up.fe.specs.fortran.ast.nodes.utils.*; +import pt.up.fe.specs.fortran.ast.nodes.type.attributes.*; +import pt.up.fe.specs.fortran.ast.nodes.type.decltype.DerivedDeclType; +import pt.up.fe.specs.fortran.ast.nodes.type.decltype.IntrinsicDeclType; +import pt.up.fe.specs.fortran.ast.nodes.type.decltype.StarDeclType; +import pt.up.fe.specs.fortran.ast.nodes.type.lenselector.ConstLenSelector; +import pt.up.fe.specs.fortran.ast.nodes.type.lenselector.KindParamLenSelector; +import pt.up.fe.specs.fortran.ast.nodes.type.lenselector.ParamCharLenSelector; +import pt.up.fe.specs.fortran.ast.nodes.type.lenselector.ParamLenSelector; +import pt.up.fe.specs.fortran.ast.nodes.type.typeparam.DeferredTypeParamValue; +import pt.up.fe.specs.fortran.ast.nodes.type.typeparam.ExprTypeParamValue; +import pt.up.fe.specs.fortran.ast.nodes.type.typeparam.StarTypeParamValue; +import pt.up.fe.specs.fortran.ast.nodes.type.typeparam.TypeParam; +import pt.up.fe.specs.fortran.ast.nodes.utils.IoUnit; +import pt.up.fe.specs.fortran.ast.nodes.utils.NameValue; import pt.up.fe.specs.fortran.parser.FortranJsonResult; import pt.up.fe.specs.util.classmap.ConsumerClassMap; import pt.up.fe.specs.util.exceptions.NotImplementedException; @@ -56,30 +109,73 @@ public Nodes(FortranJsonResult data) { var p = new ProgramProcessors(data); processors.put(FortranFile.class, p::fortranFile); processors.put(MainProgram.class, p::mainProgram); + processors.put(SubprogramUnit.class, p::subprogramUnit); processors.put(Specification.class, p::specification); - processors.put(Execution.class, p::execution); + processors.put(ExecBlock.class, p::execBlock); processors.put(Subroutine.class, p::subroutine); - processors.put(InternalSubprogram.class, p::internalSubprogram); processors.put(Function.class, p::function); + processors.put(InternalSubprogramPart.class, p::internalSubprogramPart); + processors.put(Module.class, p::module); + processors.put(ModuleSubprogramPart.class, p::moduleSubprogramPart); var alloc = new AllocProcessors(data); processors.put(Allocation.class, alloc::allocation); - processors.put(StatVariable.class, alloc::statVariable); + processors.put(ExprAllocOption.class, alloc::exprAllocOption); + processors.put(VarAllocOption.class, alloc::varAllocOption); var d = new DeclProcessors(data); processors.put(EntityDecl.class, d::entityDecl); + processors.put(ExprInitialization.class, d::exprInitialization); + processors.put(NullInitialization.class, d::nullInitialization); + processors.put(DataTargetInitialization.class, d::dataTargetInitialization); + processors.put(ListInitialization.class, d::listInitialization); processors.put(DataStmtValue.class, d::dataStmtValue); - processors.put(DummyArgumentDecl.class, d::dummyArgumentDecl); + processors.put(NamedParameter.class, d::namedParameter); + processors.put(StarParameter.class, d::starParameter); + processors.put(ExprTypeParamValue.class, d::exprTypeParamValue); + processors.put(StarTypeParamValue.class, d::starTypeParamValue); + processors.put(DeferredTypeParamValue.class, d::deferredTypeParamValue); + processors.put(NamedOperator.class, d::namedOperator); + processors.put(IntrinsicOperator.class, d::intrinsicOperator); + processors.put(NameGenericSpec.class, d::nameGenericSpec); + processors.put(OpGenericSpec.class, d::opGenericSpec); + processors.put(OtherGenericSpec.class, d::otherGenericSpec); + processors.put(LetterSpec.class, d::letterSpec); + processors.put(ImplicitSpec.class, d::implicitSpec); + processors.put(DeclTypeFunctionSpec.class, d::declTypeFunctionSpec); + processors.put(EmptyFunctionSpec.class, d::emptyFunctionSpec); + processors.put(AbstractTypeAttr.class, d::abstractTypeAttr); + processors.put(AccessTypeAttr.class, d::accessTypeAttr); + processors.put(BindTypeAttr.class, d::bindTypeAttr); + processors.put(ExtendsTypeAttr.class, d::extendsTypeAttr); + processors.put(AccessComponentAttr.class, d::accessComponentAttr); + processors.put(CodimComponentAttr.class, d::codimComponentAttr); + processors.put(DimComponentAttr.class, d::dimComponentAttr); + processors.put(OtherComponentAttr.class, d::otherComponentAttr); + processors.put(ComponentDecl.class, d::componentDecl); + processors.put(DerivedTypeDef.class, d::derivedTypeDef); + processors.put(InterfaceBlock.class, d::interfaceBlock); + processors.put(InterfaceFunction.class, d::interfaceFunction); + processors.put(InterfaceSubroutine.class, d::interfaceSubroutine); + processors.put(NameProcPointerInit.class, d::nameProcPointerInit); + processors.put(NullProcPointerInit.class, d::nullProcPointerInit); + processors.put(NamedProcInterface.class, d::namedProcInterface); + processors.put(TypeProcInterface.class, d::typeProcInterface); + processors.put(AccessProcAttr.class, d::accessProcAttr); + processors.put(LangBindProcAttr.class, d::langBindProcAttr); + processors.put(IntentProcAttr.class, d::intentProcAttr); + processors.put(OtherProcAttr.class, d::otherProcAttr); + processors.put(ProcDecl.class, d::procDecl); var v = new VariableProcessor(data); - processors.put(DataRef.class, v::dataRefProcessor); + processors.put(DataRef.class, v::dataRef); + processors.put(DesignatorVariable.class, v::designatorVariable); var s = new StmtProcessors(data); processors.put(PrintStmt.class, s::printStmt); processors.put(FormatStmt.class, s::formatStmt); processors.put(TypeDeclarationStmt.class, s::typeDeclarationStmt); processors.put(AssignmentStmt.class, s::assignmentStmt); - processors.put(StmtBlock.class, s::stmtBlock); processors.put(CompilerDirective.class, s::compilerDirective); processors.put(GotoStmt.class, s::gotoStmt); processors.put(StopStmt.class, s::stopStmt); @@ -105,17 +201,16 @@ public Nodes(FortranJsonResult data) { processors.put(EndSelectStmt.class, s::endSelectStmt); processors.put(CallStmt.class, s::callStmt); - processors.put(UseStmt.class, s::useStmt); - processors.put(WriteStmt.class, s::writeStmt); + processors.put(UseRenameStmt.class, s::useRenameStmt); + processors.put(UseOnlyStmt.class, s::useOnlyStmt); + processors.put(UseName.class, s::useName); + processors.put(NamesRename.class, s::namesRename); processors.put(ContainsStmt.class, s::containsStmt); processors.put(AllocateStmt.class, s::allocateStmt); processors.put(DeallocateStmt.class, s::deallocateStmt); processors.put(ContinueStmt.class, s::continueStmt); processors.put(ParameterStmt.class, s::parameterStmt); processors.put(ExternalStmt.class, s::externalStmt); - processors.put(ReturnStmt.class, s::returnStmt); - processors.put(OpenStmt.class, s::openStmt); - processors.put(CloseStmt.class, s::closeStmt); processors.put(NamedConstantDef.class, s::namedConstantDef); processors.put(DataStmt.class, s::dataStmt); @@ -124,12 +219,37 @@ public Nodes(FortranJsonResult data) { processors.put(EndProgramStmt.class, s::endProgramStmt); processors.put(SubroutineStmt.class, s::subroutineStmt); processors.put(EndSubroutineStmt.class, s::endSubroutineStmt); + processors.put(ReturnStmt.class, s::returnStmt); + processors.put(DimensionStmt.class, s::dimensionStmt); + processors.put(DimensionDecl.class, s::dimensionDecl); + processors.put(NamelistStmt.class, s::namelistStmt); + processors.put(NamelistGroup.class, s::namelistGroup); + processors.put(FunctionStmt.class, s::functionStmt); + processors.put(LanguageBindingSpec.class, s::languageBindingSpec); + processors.put(EndFunctionStmt.class, s::endFunctionStmt); + processors.put(ModuleStmt.class, s::moduleStmt); + processors.put(EndModuleStmt.class, s::endModuleStmt); + processors.put(AccessStmt.class, s::accessStmt); + processors.put(ImportStmt.class, s::importStmt); + processors.put(DefaultImplicitStmt.class, s::defaultImplicitStmt); + processors.put(ImplicitNoneStmt.class, s::implicitNoneStmt); + processors.put(DerivedTypeStmt.class, s::derivedTypeStmt); + processors.put(DataComponentDefStmt.class, s::dataComponentDefStmt); + processors.put(EndTypeStmt.class, s::endTypeStmt); + processors.put(DefaultInterfaceStmt.class, s::defaultInterfaceStmt); + processors.put(AbstractInterfaceStmt.class, s::abstractInterfaceStmt); + processors.put(EndInterfaceStmt.class, s::endInterfaceStmt); + processors.put(ProcDeclStmt.class, s::procDeclStmt); + processors.put(SingleBoundPointerAssignStmt.class, s::singleBoundPointerAssignStmt); + processors.put(DoubleBoundPointerAssignStmt.class, s::doubleBoundPointerAssignStmt); + processors.put(DoubleBound.class, s::doubleBound); var e = new ExprProcessors(data); processors.put(StringLiteral.class, e::stringLiteral); processors.put(IntLiteral.class, e::intLiteral); processors.put(LogicalLiteral.class, e::logicalLiteral); processors.put(RealLiteral.class, e::realLiteral); + processors.put(NamedLiteral.class, e::namedLiteral); processors.put(ParenExpr.class, e::parenExpr); processors.put(UnaryOperator.class, e::unaryOperator); processors.put(BinaryOperator.class, e::binaryOperator); @@ -141,6 +261,13 @@ public Nodes(FortranJsonResult data) { processors.put(Argument.class, e::argument); processors.put(AcImpliedDo.class, e::acImpliedDo); processors.put(AcImpliedDoControl.class, e::acImpliedDoControl); + processors.put(IntComplexPart.class, e::intComplexPart); + processors.put(RealComplexPart.class, e::realComplexPart); + processors.put(NamedComplexPart.class, e::namedComplexPart); + processors.put(ComplexLiteral.class, e::complexLiteral); + processors.put(Substring.class, e::substring); + processors.put(NullInit.class, e::nullInit); + processors.put(NamedProcDesignator.class, e::namedProcDesignator); var t = new TypeProcessors(data); processors.put(IntegerType.class, t::integerType); @@ -148,33 +275,80 @@ public Nodes(FortranJsonResult data) { processors.put(LogicalType.class, t::logicalType); processors.put(DoublePrecisionType.class, t::doublePrecisionType); processors.put(CharacterType.class, t::characterType); + processors.put(ConstLenSelector.class, t::constLenSelector); + processors.put(ParamCharLenSelector.class, t::paramCharLenSelector); + processors.put(ParamLenSelector.class, t::paramLenSelector); + processors.put(KindParamLenSelector.class, t::kindParamLenSelector); processors.put(RealType.class, t::realType); - processors.put(LengthSelector.class, t::lengthSelector); + processors.put(ComplexType.class, t::complexType); + processors.put(DerivedType.class, t::derivedType); + processors.put(TypeParam.class, t::typeParam); + processors.put(IntrinsicDeclType.class, t::intrinsicDeclType); + processors.put(DerivedDeclType.class, t::derivedDeclType); + processors.put(StarDeclType.class, t::starDeclType); var a = new AttributesProcessor(data); - processors.put(ArraySpecification.class, a::arraySpecification); - processors.put(KeywordAttributeSpecifier.class, a::keywordSpecifier); - processors.put(IntentSpec.class, a::intentSpec); + processors.put(ArraySpec.class, a::arraySpecification); + processors.put(AccessAttrSpec.class, a::accessAttrSpec); + processors.put(CodimAttrSpec.class, a::codimAttrSpec); + processors.put(DimAttrSpec.class, a::dimAttrSpec); + processors.put(IntentAttrSpec.class, a::intentAttrSpec); + processors.put(LangBindAttrSpec.class, a::langBindAttrSpec); + processors.put(OtherAttrSpec.class, a::otherAttrSpec); processors.put(NamedConstantDef.class, a::namedConstantDef); var shapes = new ShapesProcessor(data); - processors.put(ExplicitShapeSpecification.class, shapes::explicitShapeSpec); - processors.put(DeferredShapeSpecList.class, shapes::deferredShapeSpecLis); - processors.put(AllocateShapeSpecification.class, shapes::allocateShapeSpec); - processors.put(AssumedImpliedShapeSpec.class, shapes::assumedImpliedShapeSpec); + processors.put(ExplicitShape.class, shapes::explicitShape); + processors.put(AssumedShape.class, shapes::assumedShape); + processors.put(AssumedImpliedShape.class, shapes::assumedImpliedShape); + processors.put(ExplicitShapeArraySpec.class, shapes::explicitShapeArraySpec); + processors.put(AssumedShapeArraySpec.class, shapes::assumedShapeArraySpec); + processors.put(DeferredShapeSpec.class, shapes::deferredShapeSpec); + processors.put(AssumedSizeSpec.class, shapes::assumedSizeSpec); + processors.put(ImpliedShapeSpec.class, shapes::impliedShapeSpec); + processors.put(AssumedRankSpec.class, shapes::assumedRankSpec); var u = new UtilsProcessors(data); - processors.put(Star.class, u::star); - processors.put(Format.class, u::format); processors.put(NameValue.class, u::nameValue); processors.put(IoUnit.class, u::ioUnit); - processors.put(IoControlSpec.class, u::ioControlSpec); + processors.put(ExprIoControlSpec.class, u::ioControlSpec); var l = new LoopProcessors(data); processors.put(RangeLoopControl.class, l::loopRange); processors.put(ConcurrentLoopControl.class, l::concurrentLoopControl); processors.put(ConcurrentRange.class, l::concurrentRange); + var i = new IoProcessors(data, s); + processors.put(OpenStmt.class, i::openStmt); + processors.put(ExprConnectSpec.class, i::exprConnectSpec); + processors.put(VarConnectSpec.class, i::varConnectSpec); + processors.put(ErrConnectSpec.class, i::errConnectSpec); + processors.put(ExprIoControlSpec.class, i::exprIoControlSpec); + processors.put(VarIoControlSpec.class, i::varIoControlSpec); + processors.put(LabelIoControlSpec.class, i::labelIoControlSpec); + processors.put(StarUnitIoControlSpec.class, i::starUnitIoControlSpec); + processors.put(FormatIoControlSpec.class, i::formatIoControlSpec); + processors.put(NamelistIoControlSpec.class, i::namelistIoControlSpec); + processors.put(RewindStmt.class, i::rewindStmt); + processors.put(UnitPosFlushSpec.class, i::unitPosFlushSpec); + processors.put(VarPosFlushSpec.class, i::varPosFlushSpec); + processors.put(ErrPosFlushSpec.class, i::errPosFlushSpec); + processors.put(ReadStmt.class, i::readStmt); + processors.put(VarInputItem.class, i::varInputItem); + processors.put(WriteStmt.class, i::writeStmt); + processors.put(ExprOutputItem.class, i::exprOutputItem); + processors.put(WaitStmt.class, i::waitStmt); + processors.put(ExprWaitSpec.class, i::exprWaitSpec); + processors.put(VarWaitSpec.class, i::varWaitSpec); + processors.put(LabelWaitSpec.class, i::labelWaitSpec); + processors.put(CloseStmt.class, i::closeStmt); + processors.put(ExprCloseSpec.class, i::exprCloseSpec); + processors.put(VarCloseSpec.class, i::varCloseSpec); + processors.put(ErrCloseSpec.class, i::errCloseSpec); + processors.put(ExprFormat.class, i::exprFormat); + processors.put(LabelFormat.class, i::labelFormat); + processors.put(StarFormat.class, i::starFormat); + var omp = new OmpProcessors(data, s); processors.put(OmpBlockConstruct.class, omp::ompBlockConstruct); processors.put(OmpLoopConstruct.class, omp::ompLoopConstruct); diff --git a/FortranParser/src/pt/up/fe/specs/fortran/parser/processors/OmpProcessors.java b/FortranParser/src/pt/up/fe/specs/fortran/parser/processors/OmpProcessors.java index 7608c1ef..51f1349a 100644 --- a/FortranParser/src/pt/up/fe/specs/fortran/parser/processors/OmpProcessors.java +++ b/FortranParser/src/pt/up/fe/specs/fortran/parser/processors/OmpProcessors.java @@ -25,8 +25,6 @@ public OmpProcessors(FortranJsonResult data, StmtProcessors stmtProcessors) { } public void ompBlockConstruct(OmpBlockConstruct ompBlockConstruct) { - stmtProcessors.stmt(ompBlockConstruct); - String directive = attributes().getString(ompBlockConstruct, "directive", FlangName.OMP_BEGIN_DIRECTIVE, FlangName.OMP_DIRECTIVE_NAME); String clauseList = attributes().getString(ompBlockConstruct, "id", FlangName.OMP_BEGIN_DIRECTIVE, FlangName.OMP_CLAUSE_LIST); @@ -34,7 +32,11 @@ public void ompBlockConstruct(OmpBlockConstruct ompBlockConstruct) { ompBlockConstruct.set(OmpBlockConstruct.KINDS, kinds); - Execution body = factory().newNode(Execution.class, getChildren(ompBlockConstruct, FlangName.EXECUTION_PART_CONSTRUCT)); + var rawInnerConstructs = getChildren(ompBlockConstruct, FlangName.EXECUTION_PART_CONSTRUCT); + var innerConstructs = rawInnerConstructs.stream() + .map(this::toExecPartConstruct) + .toList(); + var body = factory().execBlock(innerConstructs); ompBlockConstruct.addChild(body); if (attributes().get(clauseList).has(FlangName.OMP_CLAUSE)) @@ -42,8 +44,6 @@ public void ompBlockConstruct(OmpBlockConstruct ompBlockConstruct) { } public void ompLoopConstruct(OmpLoopConstruct ompLoopConstruct) { - stmtProcessors.stmt(ompLoopConstruct); - String directive = attributes().getString(ompLoopConstruct, "directive", FlangName.OMP_BEGIN_LOOP_DIRECTIVE, FlangName.OMP_DIRECTIVE_NAME); String clauseList = attributes().getString(ompLoopConstruct, "id", FlangName.OMP_BEGIN_LOOP_DIRECTIVE, FlangName.OMP_CLAUSE_LIST); String endClauseList = attributes().getString(ompLoopConstruct, "id", FlangName.OMP_END_LOOP_DIRECTIVE, FlangName.OMP_CLAUSE_LIST); diff --git a/FortranParser/src/pt/up/fe/specs/fortran/parser/processors/ProgramProcessors.java b/FortranParser/src/pt/up/fe/specs/fortran/parser/processors/ProgramProcessors.java index e803f6c2..2e20823f 100644 --- a/FortranParser/src/pt/up/fe/specs/fortran/parser/processors/ProgramProcessors.java +++ b/FortranParser/src/pt/up/fe/specs/fortran/parser/processors/ProgramProcessors.java @@ -3,6 +3,13 @@ import pt.up.fe.specs.fortran.ast.FortranContext; import pt.up.fe.specs.fortran.ast.nodes.FortranNode; import pt.up.fe.specs.fortran.ast.nodes.program.*; +import pt.up.fe.specs.fortran.ast.nodes.program.subprogram.Function; +import pt.up.fe.specs.fortran.ast.nodes.program.subprogram.Subroutine; +import pt.up.fe.specs.fortran.ast.nodes.program.unit.MainProgram; +import pt.up.fe.specs.fortran.ast.nodes.program.unit.Module; +import pt.up.fe.specs.fortran.ast.nodes.program.unit.ModuleSubprogramPart; +import pt.up.fe.specs.fortran.ast.nodes.program.unit.SubprogramUnit; +import pt.up.fe.specs.fortran.ast.nodes.stmt.*; import pt.up.fe.specs.fortran.parser.FlangName; import pt.up.fe.specs.fortran.parser.FortranJsonResult; import pt.up.fe.specs.util.SpecsIo; @@ -19,15 +26,27 @@ public ProgramProcessors(FortranJsonResult data) { public void fortranFile(FortranFile fortranFile) { fortranFile.setChildren(getChildren(fortranFile, FlangName.PROGRAM_UNIT)); - var lastParsedFile = fortranFile.get(FortranNode.CONTEXT).get(FortranContext.LAST_PARSED_FILE).orElse(null); - if (lastParsedFile != null) { - var fileName = lastParsedFile.getName(); + var context = fortranFile.getContext(); + var lastParsedFile = context.get(FortranContext.LAST_PARSED_FILE); + + lastParsedFile.ifPresent(parsedFile -> { + var fileName = parsedFile.getName(); + if (fileName.endsWith(".json")) { - fileName = SpecsIo.removeExtension(fileName) + ".f90"; + var fileExtension = context.get(FortranContext.LAST_PARSED_FILE_EXT).orElseGet(() -> "f90"); + fileName = SpecsIo.removeExtension(fileName) + "." + fileExtension; } fortranFile.set(FortranFile.FILE_NAME, fileName); - fortranFile.set(FortranFile.FOLDER_NAME, lastParsedFile.getParent()); + fortranFile.set(FortranFile.FOLDER_NAME, parsedFile.getParent()); + }); + + // The JSON parsing assumes this node is also a statement, which is the reason for the name of the key + if (attributes(fortranFile).has("leadingComments")) { + var finalComments = attributes(fortranFile).getStringList("leadingComments"); + fortranFile.set(FortranFile.FINAL_COMMENTS, finalComments); + } else { + fortranFile.set(FortranFile.FINAL_COMMENTS, List.of()); } // The JSON parsing assumes this node is also a statement, which is the reason for the name of the key @@ -39,52 +58,87 @@ public void fortranFile(FortranFile fortranFile) { } } + public void addSubprogramBody(FortranNode node) { + var specification = getChild(node, FlangName.SPECIFICATION_PART); + node.addChild(specification); + + var execution = getChild(node, FlangName.EXECUTION_PART); + node.addChild(execution); + + var internalPart = getChildOptional(node, FlangName.INTERNAL_SUBPROGRAM_PART); + internalPart.ifPresent(node::addChild); + } + public void mainProgram(MainProgram mainProgram) { var programStmt = getStmtChildOptional(mainProgram, FlangName.PROGRAM_STMT); programStmt.ifPresent(mainProgram::addChild); - var name = attributes().getOptionalString(mainProgram, "source", FlangName.PROGRAM_STMT, FlangName.NAME); - // [specification-part] - mainProgram.addChild(getChild(mainProgram, FlangName.SPECIFICATION_PART)); - // [execution-part] - mainProgram.addChild(getChild(mainProgram, FlangName.EXECUTION_PART)); - // [internal-subprogram-part] - if (attributes(mainProgram).has(FlangName.INTERNAL_SUBPROGRAM_PART)) { - mainProgram.addChild(getChild(mainProgram, FlangName.INTERNAL_SUBPROGRAM_PART)); - } + addSubprogramBody(mainProgram); var endProgramStmt = getStmtChild(mainProgram, FlangName.END_PROGRAM_STMT); mainProgram.addChild(endProgramStmt); + } + + public void subprogramUnit(SubprogramUnit subprogramUnit) { + var variant = attributes(subprogramUnit).getVariantName(); + if (variant != FlangName.SUBROUTINE_SUBPROGRAM) { + throw new RuntimeException("Unknown variant: " + variant); + } - mainProgram.set(MainProgram.NAME, name); + var child = getChild(subprogramUnit, variant); + subprogramUnit.addChild(child); } public void specification(Specification specification) { + var attrs = attributes(specification); + + if (attrs.has(FlangName.USE_STMT.getStmtAttr())) { + var useStmts = getChildren(specification, FlangName.USE_STMT.getStmtAttr()); + specification.addChildren(useStmts); + } - if (attributes(specification).has(FlangName.STATEMENT)) { - specification.addChildren(getChildren(specification, FlangName.STATEMENT)); + if (attrs.has(FlangName.IMPORT_STMT.getStmtAttr())) { + var importStmts = getChildren(specification, FlangName.IMPORT_STMT.getStmtAttr()); + specification.addChildren(importStmts); } - if (attributes(specification).has(FlangName.DECLARATION_CONSTRUCT)) { - specification.addChildren(getChildren(specification, FlangName.DECLARATION_CONSTRUCT)); + var implicitPartAttrs = attributes().get(attrs.getString(FlangName.IMPLICIT_PART)); + if (implicitPartAttrs.has(FlangName.IMPLICIT_PART_STMT)) { + var implicitPartIds = implicitPartAttrs.getStringList(FlangName.IMPLICIT_PART_STMT); + var implicitPartStmts = implicitPartIds.stream() + .map(this::getChild) + .toList(); + specification.addChildren(implicitPartStmts); } + if (attrs.has(FlangName.DECLARATION_CONSTRUCT)) { + var rawDeclConstructs = getChildren(specification, FlangName.DECLARATION_CONSTRUCT); - } + var declConstructs = rawDeclConstructs.stream() + .map(this::toDeclConstruct) + .toList(); - public void execution(Execution execution) { - if (attributes(execution).has(FlangName.EXECUTION_PART_CONSTRUCT)) { - execution.setChildren(getChildren(execution, FlangName.EXECUTION_PART_CONSTRUCT)); + specification.addChildren(declConstructs); } } - public void internalSubprogram(InternalSubprogram internalSubprogram) { - if (attributes(internalSubprogram).has(FlangName.CONTAINS_STMT.getStmtAttr())) { - internalSubprogram.addChild(getChild(internalSubprogram, FlangName.CONTAINS_STMT.getStmtAttr())); - } + public void execBlock(ExecBlock execBlock) { + var rawExecPartConstructs = getChildren(execBlock, FlangName.EXECUTION_PART_CONSTRUCT); - if (attributes(internalSubprogram).has(FlangName.INTERNAL_SUBPROGRAM)) { - internalSubprogram.addChildren(getChildren(internalSubprogram, FlangName.INTERNAL_SUBPROGRAM)); + var execPartConstructs = rawExecPartConstructs.stream() + .map(this::toExecPartConstruct) + .toList(); + + execBlock.addChildren(execPartConstructs); + } + + public void internalSubprogramPart(InternalSubprogramPart part) { + var containsStmt = getStmtChild(part, FlangName.CONTAINS_STMT); + part.addChild(containsStmt); + + if (attributes(part).has(FlangName.INTERNAL_SUBPROGRAM)) { + var subprograms = getChildren(part, FlangName.INTERNAL_SUBPROGRAM); + part.addChildren(subprograms); } } @@ -92,30 +146,43 @@ public void subroutine(Subroutine subroutine) { var subroutineStmt = getStmtChild(subroutine, FlangName.SUBROUTINE_STMT); subroutine.addChild(subroutineStmt); - var specification = getChild(subroutine, FlangName.SPECIFICATION_PART); - subroutine.addChild(specification); - - var execution = getChild(subroutine, FlangName.EXECUTION_PART); - subroutine.addChild(execution); + addSubprogramBody(subroutine); var endSubroutineStmt = getStmtChild(subroutine, FlangName.END_SUBROUTINE_STMT); subroutine.addChild(endSubroutineStmt); - - var name = attributes().getString(subroutine, "source", FlangName.SUBROUTINE_STMT, FlangName.NAME); - subroutine.set(Subroutine.NAME, name); } public void function(Function function) { - var name = attributes().getString(function, "source", FlangName.FUNCTION_STMT, FlangName.NAME); - // [specification-part] - function.addChild(getChild(function, FlangName.SPECIFICATION_PART)); - // [execution-part] - function.addChild(getChild(function, FlangName.EXECUTION_PART)); - // [internal-subprogram-part] + var functionStmt = getStmtChild(function, FlangName.FUNCTION_STMT); + function.addChild(functionStmt); - function.set(Function.FUNCTION_NAME, name); + addSubprogramBody(function); - String statementId = attributes().get(attributes(function).getString(FlangName.FUNCTION_STMT.getStmtAttr())).getString("statement"); - function.addChildren(getChildren(statementId, FlangName.FUNCTION_ARGUMENT_DECL)); + var endFunctionStmt = getStmtChild(function, FlangName.END_FUNCTION_STMT); + function.addChild(endFunctionStmt); + } + + public void module(Module module) { + var moduleStmt = getStmtChild(module, FlangName.MODULE_STMT); + module.addChild(moduleStmt); + + var specification = getChild(module, FlangName.SPECIFICATION_PART); + module.addChild(specification); + + var subprogramPart = getChildOptional(module, FlangName.MODULE_SUBPROGRAM_PART); + subprogramPart.ifPresent(module::addChild); + + var endModuleStmt = getStmtChild(module, FlangName.END_MODULE_STMT); + module.addChild(endModuleStmt); + } + + public void moduleSubprogramPart(ModuleSubprogramPart part) { + var containsStmt = getStmtChild(part, FlangName.CONTAINS_STMT); + part.addChild(containsStmt); + + if (attributes(part).has(FlangName.MODULE_SUBPROGRAM)) { + var subprograms = getChildren(part, FlangName.MODULE_SUBPROGRAM); + part.addChildren(subprograms); + } } } diff --git a/FortranParser/src/pt/up/fe/specs/fortran/parser/processors/ShapesProcessor.java b/FortranParser/src/pt/up/fe/specs/fortran/parser/processors/ShapesProcessor.java index d4b042b9..9cbfe949 100644 --- a/FortranParser/src/pt/up/fe/specs/fortran/parser/processors/ShapesProcessor.java +++ b/FortranParser/src/pt/up/fe/specs/fortran/parser/processors/ShapesProcessor.java @@ -1,6 +1,6 @@ package pt.up.fe.specs.fortran.parser.processors; -import pt.up.fe.specs.fortran.ast.nodes.type.shapes.*; +import pt.up.fe.specs.fortran.ast.nodes.specification.shape.*; import pt.up.fe.specs.fortran.parser.FlangName; import pt.up.fe.specs.fortran.parser.FortranJsonResult; @@ -9,29 +9,54 @@ public ShapesProcessor(FortranJsonResult data) { super(data); } - public void explicitShapeSpec(ExplicitShapeSpecification explicitShapeSpec) { - boundedShapeSpec(explicitShapeSpec); + public void explicitShape(ExplicitShape explicitShape) { + // TODO(Process-ing): Convert the JSON properties to the camel case standard + if (attributes(explicitShape).has("lower_bound")) { + var lowerBound = getChild(explicitShape, "lower_bound"); + explicitShape.addChild(lowerBound); + } + + var upperBound = getChild(explicitShape, "upper_bound"); + explicitShape.addChild(upperBound); } - public void allocateShapeSpec(AllocateShapeSpecification allocateShapeSpec) { - boundedShapeSpec(allocateShapeSpec); + public void assumedShape(AssumedShape assumedShape) { + var lowerBound = getChildOptional(assumedShape, FlangName.EXPR); + lowerBound.ifPresent(assumedShape::addChild); } - public void boundedShapeSpec(BoundedShapeSpecification boundedShapeSpec) { - if (attributes(boundedShapeSpec).has("lower_bound")) { - var lower_bound = getChild(boundedShapeSpec, "lower_bound"); - boundedShapeSpec.addChild(lower_bound); - } - var upper_bound = getChild(boundedShapeSpec, "upper_bound"); - boundedShapeSpec.addChild(upper_bound); + public void assumedImpliedShape(AssumedImpliedShape assumedImpliedShape) { + var lowerBound = getChildOptional(assumedImpliedShape, FlangName.EXPR); + lowerBound.ifPresent(assumedImpliedShape::addChild); + } + + public void explicitShapeArraySpec(ExplicitShapeArraySpec arraySpec) { + var explicitShapes = getChildren(arraySpec, FlangName.EXPLICIT_SHAPE_SPEC); + arraySpec.addChildren(explicitShapes); } - public void deferredShapeSpecLis(DeferredShapeSpecList deferredShapeSpecList) { - var numberOfColons = attributes(deferredShapeSpecList).getString("int"); - deferredShapeSpecList.set(DeferredShapeSpecList.RANK, Integer.parseInt(numberOfColons)); + public void assumedShapeArraySpec(AssumedShapeArraySpec arraySpec) { + var assumedShapes = getChildren(arraySpec, FlangName.ASSUMED_SHAPE_SPEC); + arraySpec.addChildren(assumedShapes); } - public void assumedImpliedShapeSpec(AssumedImpliedShapeSpec assumedImpliedShapeSpec) { + public void deferredShapeSpec(DeferredShapeSpec deferredShapeSpec) { + var numberOfColons = attributes(deferredShapeSpec).getString("int"); + deferredShapeSpec.set(DeferredShapeSpec.RANK, Integer.parseInt(numberOfColons)); + } + + public void assumedSizeSpec(AssumedSizeSpec assumedSizeSpec) { + var explicitShapes = getChildren(assumedSizeSpec, FlangName.EXPLICIT_SHAPE_SPEC); + assumedSizeSpec.addChildren(explicitShapes); + var assumedImpliedShape = getChild(assumedSizeSpec, FlangName.ASSUMED_IMPLIED_SPEC); + assumedSizeSpec.addChild(assumedImpliedShape); } + + public void impliedShapeSpec(ImpliedShapeSpec impliedShapeSpec) { + var assumedImpliedShapes = getChildren(impliedShapeSpec, FlangName.ASSUMED_IMPLIED_SPEC); + impliedShapeSpec.addChildren(assumedImpliedShapes); + } + + public void assumedRankSpec(AssumedRankSpec ignoredSpec) {} } diff --git a/FortranParser/src/pt/up/fe/specs/fortran/parser/processors/StmtProcessors.java b/FortranParser/src/pt/up/fe/specs/fortran/parser/processors/StmtProcessors.java index aa3a466f..61f6177a 100644 --- a/FortranParser/src/pt/up/fe/specs/fortran/parser/processors/StmtProcessors.java +++ b/FortranParser/src/pt/up/fe/specs/fortran/parser/processors/StmtProcessors.java @@ -1,26 +1,53 @@ package pt.up.fe.specs.fortran.parser.processors; import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.decl.NamedParameter; import pt.up.fe.specs.fortran.ast.nodes.expr.Expr; import pt.up.fe.specs.fortran.ast.nodes.loops.WhileLoopControl; -import pt.up.fe.specs.fortran.ast.nodes.program.*; -import pt.up.fe.specs.fortran.ast.nodes.specification.ArraySpecification; +import pt.up.fe.specs.fortran.ast.nodes.program.subprogram.EndFunctionStmt; +import pt.up.fe.specs.fortran.ast.nodes.program.subprogram.EndSubroutineStmt; +import pt.up.fe.specs.fortran.ast.nodes.program.subprogram.FunctionStmt; +import pt.up.fe.specs.fortran.ast.nodes.program.subprogram.SubroutineStmt; +import pt.up.fe.specs.fortran.ast.nodes.program.unit.EndModuleStmt; +import pt.up.fe.specs.fortran.ast.nodes.program.unit.EndProgramStmt; +import pt.up.fe.specs.fortran.ast.nodes.program.unit.ModuleStmt; +import pt.up.fe.specs.fortran.ast.nodes.program.unit.ProgramStmt; +import pt.up.fe.specs.fortran.ast.nodes.specification.LanguageBindingSpec; import pt.up.fe.specs.fortran.ast.nodes.specification.NamedConstantDef; +import pt.up.fe.specs.fortran.ast.nodes.specification.enums.AccessKind; +import pt.up.fe.specs.fortran.ast.nodes.specification.shape.ArraySpec; import pt.up.fe.specs.fortran.ast.nodes.stmt.*; import pt.up.fe.specs.fortran.ast.nodes.stmt.datastmt.DataStmt; import pt.up.fe.specs.fortran.ast.nodes.stmt.datastmt.DataStmtObject; import pt.up.fe.specs.fortran.ast.nodes.stmt.datastmt.DataStmtSet; import pt.up.fe.specs.fortran.ast.nodes.stmt.datastmt.DataStmtVariable; +import pt.up.fe.specs.fortran.ast.nodes.stmt.dimstmt.DimensionDecl; +import pt.up.fe.specs.fortran.ast.nodes.stmt.dimstmt.DimensionStmt; +import pt.up.fe.specs.fortran.ast.nodes.stmt.enums.ImportKind; import pt.up.fe.specs.fortran.ast.nodes.stmt.ifstmt.*; +import pt.up.fe.specs.fortran.ast.nodes.stmt.implicit.DefaultImplicitStmt; +import pt.up.fe.specs.fortran.ast.nodes.stmt.implicit.ImplicitNoneStmt; +import pt.up.fe.specs.fortran.ast.nodes.stmt.interfaces.AbstractInterfaceStmt; +import pt.up.fe.specs.fortran.ast.nodes.stmt.interfaces.DefaultInterfaceStmt; +import pt.up.fe.specs.fortran.ast.nodes.stmt.interfaces.EndInterfaceStmt; import pt.up.fe.specs.fortran.ast.nodes.stmt.loop.DoConstruct; import pt.up.fe.specs.fortran.ast.nodes.stmt.loop.DoStmt; import pt.up.fe.specs.fortran.ast.nodes.stmt.loop.EndDoStmt; +import pt.up.fe.specs.fortran.ast.nodes.stmt.pointerassign.DoubleBound; +import pt.up.fe.specs.fortran.ast.nodes.stmt.pointerassign.DoubleBoundPointerAssignStmt; +import pt.up.fe.specs.fortran.ast.nodes.stmt.pointerassign.SingleBoundPointerAssignStmt; import pt.up.fe.specs.fortran.ast.nodes.stmt.selectcase.*; -import pt.up.fe.specs.fortran.ast.nodes.type.attributes.DimensionSpec; +import pt.up.fe.specs.fortran.ast.nodes.stmt.typedef.DataComponentDefStmt; +import pt.up.fe.specs.fortran.ast.nodes.stmt.typedef.DerivedTypeStmt; +import pt.up.fe.specs.fortran.ast.nodes.stmt.typedef.EndTypeStmt; +import pt.up.fe.specs.fortran.ast.nodes.stmt.usestmt.*; +import pt.up.fe.specs.fortran.ast.nodes.type.attributes.DimAttrSpec; import pt.up.fe.specs.fortran.parser.FlangAttributes; import pt.up.fe.specs.fortran.parser.FlangName; import pt.up.fe.specs.fortran.parser.FortranJsonResult; +import pt.up.fe.specs.util.SpecsStrings; +import java.util.ArrayList; import java.util.List; import java.util.Optional; @@ -52,19 +79,10 @@ public void stmtWithAttrs(Stmt stmt, FlangAttributes attrs) { }); } - public void executableStmt(ExecutableStmt executableStmt) { - stmt(executableStmt); - - // Uncomment this if we really need the statement source - // executableStmt.set(ExecutableStmt.SOURCE, attributes(executableStmt).getString("source")); - } - - public void actionStmt(ActionStmt actionStmt) { - executableStmt(actionStmt); + stmt(actionStmt); } - public void printStmt(PrintStmt printStmt) { actionStmt(printStmt); @@ -73,7 +91,7 @@ public void printStmt(PrintStmt printStmt) { } public void formatStmt(FormatStmt formatStmt) { - executableStmt(formatStmt); + stmt(formatStmt); // TODO(Process-ing): Remove this var source = attributes(formatStmt).getString("source"); @@ -86,7 +104,9 @@ public void typeDeclarationStmt(TypeDeclarationStmt typeDeclarationStmt) { var entityDecls = getChildren(typeDeclarationStmt, FlangName.ENTITY_DECL); var type = getChild(typeDeclarationStmt, FlangName.DECLARATION_TYPE_SPEC); + typeDeclarationStmt.addChild(type); + // TODO(Process-ing): See why this is needed entityDecls.stream().forEach(entityDecl -> entityDecl.addChild(0, type)); typeDeclarationStmt.addChildren(entityDecls); @@ -94,8 +114,8 @@ public void typeDeclarationStmt(TypeDeclarationStmt typeDeclarationStmt) { if (attributes(typeDeclarationStmt).has(FlangName.ATTR_SPEC)) { var attributes = getChildren(typeDeclarationStmt, FlangName.ATTR_SPEC); var processedAttributes = attributes.stream() - .map(attr -> attr instanceof ArraySpecification - ? factory().newNode(DimensionSpec.class, List.of(attr)) + .map(attr -> attr instanceof ArraySpec + ? factory().newNode(DimAttrSpec.class, List.of(attr)) : attr) .toList(); typeDeclarationStmt.addChildren(processedAttributes); @@ -106,26 +126,21 @@ public void assignmentStmt(AssignmentStmt assignmentStmt) { actionStmt(assignmentStmt); var variable = getChild(assignmentStmt, FlangName.VARIABLE); - var expression = getChild(assignmentStmt, FlangName.EXPR); assignmentStmt.addChild(variable); - assignmentStmt.addChild(expression); - } - public void stmtBlock(StmtBlock stmtBlock) { - stmtBlock.setChildren(getChildren(stmtBlock, FlangName.EXECUTION_PART_CONSTRUCT)); + var expression = getChild(assignmentStmt, FlangName.EXPR); + assignmentStmt.addChild(expression); } public void ifConstruct(IfConstruct ifConstruct) { - executableStmt(ifConstruct); - // Add if-then block var ifThenStmt = getStmtChild(ifConstruct, FlangName.IF_THEN_STMT); - var thenBlock = factory().newNode(Execution.class); - if (attributes(ifConstruct).has(FlangName.EXECUTION_PART_CONSTRUCT)) { - var blockStatements = getChildren(ifConstruct, FlangName.EXECUTION_PART_CONSTRUCT); - thenBlock.addChildren(blockStatements); - } + var rawConstructs = getChildren(ifConstruct, FlangName.EXECUTION_PART_CONSTRUCT); + var constructs = rawConstructs.stream() + .map(this::toExecPartConstruct) + .toList(); + var thenBlock = factory().execBlock(constructs); var ifThenBlock = factory().newNode(IfThenBlock.class); ifThenBlock.addChild(ifThenStmt); @@ -169,9 +184,11 @@ public void elseIfBlock(ElseIfBlock ifElseBlock) { var elseIfStmt = getStmtChild(ifElseBlock, FlangName.ELSE_IF_STMT); ifElseBlock.addChild(elseIfStmt); - var blockStatements = getChildren(ifElseBlock, FlangName.EXECUTION_PART_CONSTRUCT); - var block = factory().newNode(Execution.class); - block.addChildren(blockStatements); + var rawConstructs = getChildren(ifElseBlock, FlangName.EXECUTION_PART_CONSTRUCT); + var constructs = rawConstructs.stream() + .map(this::toExecPartConstruct) + .toList(); + var block = factory().execBlock(constructs); ifElseBlock.addChild(block); } @@ -186,9 +203,10 @@ public void elseBlock(ElseBlock elseBlock) { var elseStmt = getStmtChild(elseBlock, FlangName.ELSE_STMT); elseBlock.addChild(elseStmt); - var blockStatements = getChildren(elseBlock, FlangName.EXECUTION_PART_CONSTRUCT); - var block = factory().newNode(Execution.class); - block.addChildren(blockStatements); + var blockStatements = getChildren(elseBlock, FlangName.EXECUTION_PART_CONSTRUCT).stream() + .map(this::toExecPartConstruct) + .toList(); + var block = factory().execBlock(blockStatements); elseBlock.addChild(block); } @@ -211,8 +229,6 @@ public void ifStmt(IfStmt ifStmt) { } public void caseConstruct(CaseConstruct caseConstruct) { - executableStmt(caseConstruct); - var selectCaseStmt = getStmtChild(caseConstruct, FlangName.SELECT_CASE_STMT); var caseBlocks = getChildren(caseConstruct, FlangName.CASE); var endSelectStmt = getStmtChild(caseConstruct, FlangName.END_SELECT_STMT); @@ -242,9 +258,11 @@ public void caseBlock(CaseBlock caseBlock) { var caseStmtId = attributes().get(caseStmtWrapperId).getString("statement"); var caseStmt = buildCaseStmt(caseStmtId); - var blockStatements = getChildren(caseBlock, FlangName.EXECUTION_PART_CONSTRUCT); - var block = factory().newNode(StmtBlock.class); - block.addChildren(blockStatements); + var rawConstructs = getChildren(caseBlock, FlangName.EXECUTION_PART_CONSTRUCT); + var constructs = rawConstructs.stream() + .map(this::toExecPartConstruct) + .toList(); + var block = factory().execBlock(constructs); caseBlock.addChild(caseStmt); caseBlock.addChild(block); @@ -338,21 +356,54 @@ public void endSelectStmt(EndSelectStmt endSelectStmt) { } public void doConstruct(DoConstruct doConstruct) { - executableStmt(doConstruct); - var name = attributes().getOptionalString(doConstruct, "source", FlangName.NON_LABEL_DO_STMT, FlangName.NAME); name.ifPresent(str -> doConstruct.setOptional(DoConstruct.NAME, str)); var doStmt = getStmtChild(doConstruct, FlangName.NON_LABEL_DO_STMT); doConstruct.addChild(doStmt); - var body = factory().newNode(Execution.class, getChildren(doConstruct, FlangName.EXECUTION_PART_CONSTRUCT)); + var doStmtSource = attributes(doStmt).getString("source"); + var doLabel = extractLabel(doStmtSource); + doConstruct.set(DoConstruct.DO_LABEL, doLabel); + + var rawConstructs = new ArrayList<>(getChildren(doConstruct, FlangName.EXECUTION_PART_CONSTRUCT)); + + // In labeled do loops with no continue statement at the end, Flang will add + // an empty continue statement at the end, which we want to ignore + var lastConstruct = rawConstructs.get(rawConstructs.size() - 1); + if (attributes(lastConstruct).getOptionalString("source").map(String::isEmpty).orElse(false)) { + rawConstructs.remove(rawConstructs.size() - 1); // Remove last element + } + + var constructs = rawConstructs.stream() + .map(this::toExecPartConstruct) + .toList(); + var body = factory().execBlock(constructs); doConstruct.addChild(body); var endDoStmt = getStmtChild(doConstruct, FlangName.END_DO_STMT); doConstruct.addChild(endDoStmt); } + private Optional extractLabel(String doStmtSource) { + // Ignore spaces, for compatibility with fixed-form (where the provided source lacks spacing) + doStmtSource = doStmtSource.replace(" ", ""); + + // Ignore 'do' keyword + doStmtSource = doStmtSource.substring(2); + var labelText = new StringBuilder(); + for (var i = 0; i < doStmtSource.length(); i++) { + var c = doStmtSource.charAt(i); + if (!Character.isDigit(c)) { + break; + } + + labelText.append(c); + } + + return SpecsStrings.tryGetDecimalInteger(labelText.toString()); + } + public void doStmt(DoStmt doStmt) { stmt(doStmt); @@ -390,7 +441,7 @@ public void endDoStmt(EndDoStmt endDoStmt) { } public void compilerDirective(CompilerDirective compilerDirective) { - executableStmt(compilerDirective); + stmt(compilerDirective); var variantKey = attributes(compilerDirective).getVariantKey(); compilerDirective.addChildren(getChildren(compilerDirective, variantKey)); @@ -411,35 +462,20 @@ public void gotoStmt(GotoStmt gotoStmt) { gotoStmt.set(GotoStmt.LABEL, label); } - public void writeStmt(WriteStmt writeStmt) { - actionStmt(writeStmt); - - if (attributes(writeStmt).has("iounit")) { - writeStmt.addChild(getChild(writeStmt, "iounit")); - } - - if (attributes(writeStmt).has("format")) { - writeStmt.addChild(getChild(writeStmt, "format")); - } - - if (attributes(writeStmt).has("controls")) { - writeStmt.addChildren(getChildren(writeStmt, "controls")); - } - - if (attributes(writeStmt).has("items")) { - writeStmt.addChildren(getChildren(writeStmt, "items")); - } - } - public void containsStmt(ContainsStmt containsStmt) { - executableStmt(containsStmt); + stmt(containsStmt); } public void allocateStmt(AllocateStmt allocateStmt) { actionStmt(allocateStmt); - allocateStmt.addChildren(getChildren(allocateStmt, FlangName.ALLOCATION)); - allocateStmt.addChildren(getChildren(allocateStmt, FlangName.ALLOC_OPT)); + var allocations = getChildren(allocateStmt, FlangName.ALLOCATION); + allocateStmt.addChildren(allocations); + + if (attributes(allocateStmt).has(FlangName.ALLOC_OPT)) { + var options = getChildren(allocateStmt, FlangName.ALLOC_OPT); + allocateStmt.addChildren(options); + } } public void deallocateStmt(DeallocateStmt deallocateStmt) { @@ -451,12 +487,44 @@ public void deallocateStmt(DeallocateStmt deallocateStmt) { public void useStmt(UseStmt useStmt) { stmt(useStmt); - String nameId = attributes(useStmt).getString("moduleName"); - String name = attributes().get(nameId).getString("source"); + var intrinsic = attributes(useStmt).getOptionalString("nature") + .map(nature -> !nature.endsWith("Non_Intrinsic")); + useStmt.set(UseStmt.INTRINSIC, intrinsic); + var nameId = attributes(useStmt).getString("moduleName"); + var name = attributes().get(nameId).getString("source"); useStmt.set(UseStmt.NAME, name); } + public void useRenameStmt(UseRenameStmt useRenameStmt) { + useStmt(useRenameStmt); + + var renameList = getChildren(useRenameStmt, FlangName.RENAME); + useRenameStmt.addChildren(renameList); + } + + public void useOnlyStmt(UseOnlyStmt useOnlyStmt) { + useStmt(useOnlyStmt); + + var onlyList = getChildren(useOnlyStmt, FlangName.ONLY); + useOnlyStmt.addChildren(onlyList); + } + + public void useName(UseName useName) { + var name = attributes().getString(useName, "source", FlangName.NAME); + useName.set(UseName.NAME, name); + } + + public void namesRename(NamesRename namesRename) { + var localNameId = attributes().getString(namesRename, "local"); + var localName = attributes().get(localNameId).getString("source"); + namesRename.set(NamesRename.LOCAL_NAME, localName); + + var globalNameId = attributes().getString(namesRename, "global"); + var globalName = attributes().get(globalNameId).getString("source"); + namesRename.set(NamesRename.GLOBAL_NAME, globalName); + } + public void continueStmt(ContinueStmt continueStmt) { actionStmt(continueStmt); } @@ -471,23 +539,8 @@ public void externalStmt(ExternalStmt externalStmt) { externalStmt.addChildren(getChildren(externalStmt, FlangName.NAME)); } - public void returnStmt(ReturnStmt returnStmt) { - actionStmt(returnStmt); - if (attributes(returnStmt).has(FlangName.EXPR)) { - returnStmt.addChild(getChild(returnStmt, FlangName.EXPR)); - } - } - - public void openStmt(OpenStmt openStmt) { - actionStmt(openStmt); - } - - public void closeStmt(CloseStmt closeStmt) { - actionStmt(closeStmt); - } - public void namedConstantDef(NamedConstantDef namedConstantDef) { -var ref = getChild(namedConstantDef, FlangName.NAMED_CONSTANT); + var ref = getChild(namedConstantDef, FlangName.NAMED_CONSTANT); namedConstantDef.addChild(ref); var expr = getChild(namedConstantDef, FlangName.EXPR); @@ -576,6 +629,9 @@ public void commonBlockObject(CommonBlockObject object) { public void programStmt(ProgramStmt programStmt) { stmt(programStmt); + + var name = attributes().getString(programStmt, "source", FlangName.NAME); + programStmt.set(ProgramStmt.PROGRAM_NAME, name); } public void endProgramStmt(EndProgramStmt endProgramStmt) { @@ -585,6 +641,9 @@ public void endProgramStmt(EndProgramStmt endProgramStmt) { public void subroutineStmt(SubroutineStmt subroutineStmt) { stmt(subroutineStmt); + var name = attributes().getString(subroutineStmt, "source", FlangName.NAME); + subroutineStmt.set(SubroutineStmt.SUBROUTINE_NAME, name); + if (attributes(subroutineStmt).has(FlangName.DUMMY_ARG)) { var dummyArgs = getChildren(subroutineStmt, FlangName.DUMMY_ARG); subroutineStmt.addChildren(dummyArgs); @@ -594,4 +653,254 @@ public void subroutineStmt(SubroutineStmt subroutineStmt) { public void endSubroutineStmt(EndSubroutineStmt endSubroutineStmt) { stmt(endSubroutineStmt); } + + public void returnStmt(ReturnStmt returnStmt) { + actionStmt(returnStmt); + + var target = attributes() + .getOptionalString(returnStmt, "CharBlock", FlangName.EXPR, FlangName.LITERAL_CONSTANT, FlangName.INT_LITERAL_CONSTANT) + .map(Integer::parseInt); + returnStmt.set(ReturnStmt.TARGET, target); + } + + public void dimensionStmt(DimensionStmt dimensionStmt) { + stmt(dimensionStmt); + + var decls = getChildren(dimensionStmt, FlangName.DECLARATION); + dimensionStmt.addChildren(decls); + } + + public void dimensionDecl(DimensionDecl dimensionDecl) { + var name = attributes().getString(dimensionDecl, "source", FlangName.NAME); + dimensionDecl.set(DimensionDecl.NAME, name); + + var arraySpec = getChild(dimensionDecl, FlangName.ARRAY_SPEC); + dimensionDecl.addChild(arraySpec); + } + + public void namelistStmt(NamelistStmt namelistStmt) { + stmt(namelistStmt); + + var groups = getChildren(namelistStmt, FlangName.GROUP); + namelistStmt.addChildren(groups); + } + + public void namelistGroup(NamelistGroup namelistGroup) { + var attrs = attributes(namelistGroup); + + var groupNameId = attrs.getString("groupName"); + var groupName = attributes().get(groupNameId).getString("source"); + namelistGroup.set(NamelistGroup.GROUP_NAME, groupName); + + var objectNames = attrs.getStringList("objectNames").stream() + .map(objectNameId -> attributes().get(objectNameId).getString("source")) + .toList(); + namelistGroup.set(NamelistGroup.OBJECT_NAMES, objectNames); + } + + public void functionStmt(FunctionStmt functionStmt) { + stmt(functionStmt); + + if (attributes(functionStmt).has("prefix")) { + var prefixSpecs = getChildren(functionStmt, "prefix"); + functionStmt.addChildren(prefixSpecs); + } + + var functionNameId = attributes(functionStmt).getString("functionName"); + var functionName = attributes().get(functionNameId).getString("source"); + functionStmt.set(FunctionStmt.FUNCTION_NAME, functionName); + + var parameterNames = attributes(functionStmt).getStringList("paramNames"); + var parameters = parameterNames.stream() + .map(this::toNamedParameter) + .toList(); + functionStmt.addChildren(parameters); + + var suffixId = attributes(functionStmt).getOptionalString("suffix"); + suffixId.map(id -> attributes().get(id)) + .ifPresent(suffixAttrs -> { + var bindingId = suffixAttrs.getOptionalString("binding"); + bindingId.ifPresent(id -> { + var binding = getChild(id); + functionStmt.addChild(binding); + }); + + var resultName = suffixAttrs.getOptionalString("resultName") + .map(nameId -> attributes().get(nameId).getString("source")); + functionStmt.set(FunctionStmt.RESULT_NAME, resultName); + }); + } + + private NamedParameter toNamedParameter(String nameId) { + var name = attributes().get(nameId).getString("source"); + return factory().namedParameter(name); + } + + public void languageBindingSpec(LanguageBindingSpec languageBindingSpec) { + var name = getChild(languageBindingSpec, FlangName.EXPR); + languageBindingSpec.addChild(name); + + var cDefined = attributes(languageBindingSpec).getString("bool"); + languageBindingSpec.set(LanguageBindingSpec.C_DEFINED, cDefined.equals("1")); + } + + public void endFunctionStmt(EndFunctionStmt endFunctionStmt) { + stmt(endFunctionStmt); + } + + public void moduleStmt(ModuleStmt moduleStmt) { + stmt(moduleStmt); + + var moduleName = attributes().getString(moduleStmt, "source", FlangName.NAME); + moduleStmt.set(ModuleStmt.MODULE_NAME, moduleName); + } + + public void endModuleStmt(EndModuleStmt endModuleStmt) { + stmt(endModuleStmt); + } + + public void accessStmt(AccessStmt accessStmt) { + stmt(accessStmt); + + var accessKindSrc = attributes().getString(accessStmt, "value", FlangName.ACCESS_SPEC, FlangName.KIND); + var accessKind = AccessKind.valueOf(accessKindSrc.toUpperCase()); + accessStmt.set(AccessStmt.ACCESS_KIND, accessKind); + + if (attributes(accessStmt).has(FlangName.ACCESS_ID)) { + var accessIds = getChildren(accessStmt, FlangName.ACCESS_ID); + accessStmt.addChildren(accessIds); + } + } + + public void importStmt(ImportStmt importStmt) { + stmt(importStmt); + + var kindSrc = attributes().getString(importStmt, "value", FlangName.IMPORT_KIND); + var kind = ImportKind.valueOf(kindSrc.toUpperCase()); + importStmt.set(ImportStmt.KIND, kind); + + if (attributes(importStmt).has(FlangName.NAME)) { + var nameIds = attributes(importStmt).getStringList(FlangName.NAME); + var names = nameIds.stream() + .map(nameId -> attributes().get(nameId).getString("source")) + .toList(); + importStmt.set(ImportStmt.NAMES, names); + } + } + + public void defaultImplicitStmt(DefaultImplicitStmt implicitStmt) { + stmt(implicitStmt); + + var specs = getChildren(implicitStmt, FlangName.IMPLICIT_SPEC); + implicitStmt.addChildren(specs); + } + + public void implicitNoneStmt(ImplicitNoneStmt implicitStmt) { + stmt(implicitStmt); + + var attrs = attributes(implicitStmt); + var specs = attrs.getStringList(FlangName.IMPLICIT_NONE_NAME_SPEC); + var specValues = specs.stream() + .map(id -> attributes().get(id).getString("value")) + .toList(); + + implicitStmt.set(ImplicitNoneStmt.EXPLICIT_TYPES, specValues.contains("Type")); + implicitStmt.set(ImplicitNoneStmt.EXPLICIT_EXTERNAL, specValues.contains("External")); + } + + public void derivedTypeStmt(DerivedTypeStmt derivedTypeStmt) { + stmt(derivedTypeStmt); + + var typeAttrs = getChildren(derivedTypeStmt, FlangName.TYPE_ATTR_SPEC); + derivedTypeStmt.addChildren(typeAttrs); + + var typeNameId = attributes().getString(derivedTypeStmt, "TypeName"); + var typeName = attributes().get(typeNameId).getString("source"); + derivedTypeStmt.set(DerivedTypeStmt.TYPE_NAME, typeName); + + var paramNameIds = attributes(derivedTypeStmt).getStringList("ParamNames"); + var paramNames = paramNameIds.stream() + .map(this::toNamedParameter) + .toList(); + derivedTypeStmt.addChildren(paramNames); + } + + public void dataComponentDefStmt(DataComponentDefStmt dataComponentDefStmt) { + stmt(dataComponentDefStmt); + + var declType = getChild(dataComponentDefStmt, FlangName.DECLARATION_TYPE_SPEC); + dataComponentDefStmt.addChild(declType); + + var componentAttrs = getChildren(dataComponentDefStmt, FlangName.COMPONENT_ATTR_SPEC); + dataComponentDefStmt.addChildren(componentAttrs); + + var componentDecls = getChildren(dataComponentDefStmt, FlangName.COMPONENT_OR_FILL); + dataComponentDefStmt.addChildren(componentDecls); + } + + public void endTypeStmt(EndTypeStmt endTypeStmt) { + stmt(endTypeStmt); + } + + public void defaultInterfaceStmt(DefaultInterfaceStmt defaultInterfaceStmt) { + stmt(defaultInterfaceStmt); + + var genericSpec = getChildOptional(defaultInterfaceStmt, FlangName.GENERIC_SPEC); + genericSpec.ifPresent(defaultInterfaceStmt::addChild); + } + + public void abstractInterfaceStmt(AbstractInterfaceStmt abstractInterfaceStmt) { + stmt(abstractInterfaceStmt); + } + + public void endInterfaceStmt(EndInterfaceStmt endInterfaceStmt) { + stmt(endInterfaceStmt); + } + + public void procDeclStmt(ProcDeclStmt procDeclStmt) { + stmt(procDeclStmt); + + var procInterface = getChildOptional(procDeclStmt, FlangName.PROC_INTERFACE); + procInterface.ifPresent(procDeclStmt::addChild); + + var procAttrs = getChildren(procDeclStmt, FlangName.PROC_ATTR_SPEC); + procDeclStmt.addChildren(procAttrs); + + var procDecls = getChildren(procDeclStmt, FlangName.PROC_DECL); + procDeclStmt.addChildren(procDecls); + } + + public void singleBoundPointerAssignStmt(SingleBoundPointerAssignStmt pointerAssignStmt) { + stmt(pointerAssignStmt); + + var object = getChild(pointerAssignStmt, FlangName.DATA_REF); + pointerAssignStmt.addChild(object); + + var bounds = getChildren(pointerAssignStmt, FlangName.BOUNDS_SPEC); + pointerAssignStmt.addChildren(bounds); + + var target = getChild(pointerAssignStmt, FlangName.EXPR); + pointerAssignStmt.addChild(target); + } + + public void doubleBoundPointerAssignStmt(DoubleBoundPointerAssignStmt pointerAssignStmt) { + stmt(pointerAssignStmt); + + var object = getChild(pointerAssignStmt, FlangName.DATA_REF); + pointerAssignStmt.addChild(object); + + var bounds = getChildren(pointerAssignStmt, FlangName.BOUNDS_REMAPPING); + pointerAssignStmt.addChildren(bounds); + + var target = getChild(pointerAssignStmt, FlangName.EXPR); + pointerAssignStmt.addChild(target); + } + + public void doubleBound(DoubleBound doubleBound) { + var lower = getChild(doubleBound, "lower"); + doubleBound.addChild(lower); + + var upper = getChild(doubleBound, "upper"); + doubleBound.addChild(upper); + } } diff --git a/FortranParser/src/pt/up/fe/specs/fortran/parser/processors/TypeProcessors.java b/FortranParser/src/pt/up/fe/specs/fortran/parser/processors/TypeProcessors.java index 3dcfba39..dee0b0d3 100644 --- a/FortranParser/src/pt/up/fe/specs/fortran/parser/processors/TypeProcessors.java +++ b/FortranParser/src/pt/up/fe/specs/fortran/parser/processors/TypeProcessors.java @@ -2,12 +2,19 @@ import pt.up.fe.specs.fortran.ast.nodes.decl.KindSelector; import pt.up.fe.specs.fortran.ast.nodes.type.*; +import pt.up.fe.specs.fortran.ast.nodes.type.decltype.DerivedDeclType; +import pt.up.fe.specs.fortran.ast.nodes.type.decltype.IntrinsicDeclType; +import pt.up.fe.specs.fortran.ast.nodes.type.decltype.StarDeclType; +import pt.up.fe.specs.fortran.ast.nodes.type.enums.DeclTypeKind; +import pt.up.fe.specs.fortran.ast.nodes.type.lenselector.ConstLenSelector; +import pt.up.fe.specs.fortran.ast.nodes.type.lenselector.KindParamLenSelector; +import pt.up.fe.specs.fortran.ast.nodes.type.lenselector.ParamCharLenSelector; +import pt.up.fe.specs.fortran.ast.nodes.type.lenselector.ParamLenSelector; +import pt.up.fe.specs.fortran.ast.nodes.type.typeparam.TypeParam; import pt.up.fe.specs.fortran.parser.FlangName; import pt.up.fe.specs.fortran.parser.FortranJsonResult; public class TypeProcessors extends ANodeProcessor { - - public TypeProcessors(FortranJsonResult data) { super(data); } @@ -26,14 +33,19 @@ public void kindSelector(KindSelector kindSelector) { // This is a legacy kind selector (e.g. "integer*8") var value = attributes().getString(kindSelector, "uint64_t", FlangName.STAR_SIZE); - kindSelector.set(KindSelector.VALUE, Integer.parseInt(value)); + kindSelector.set(KindSelector.VALUE, value); kindSelector.set(KindSelector.LEGACY, true); } else { // Otherwise, we assume it's a modern kind selector (e.g. "integer(8)") - var value = attributes().getString(kindSelector, "CharBlock", FlangName.EXPR, FlangName.LITERAL_CONSTANT, FlangName.INT_LITERAL_CONSTANT); + var value = attributes().getOptionalString(kindSelector, "CharBlock", FlangName.EXPR, FlangName.LITERAL_CONSTANT, FlangName.INT_LITERAL_CONSTANT) + .or(() -> attributes().getOptionalString(kindSelector, "source", FlangName.EXPR, FlangName.DESIGNATOR, FlangName.DATA_REF, FlangName.NAME)); - kindSelector.set(KindSelector.VALUE, Integer.parseInt(value)); + if (value.isEmpty()) { + throw new RuntimeException("Could not find value for kind selector: " + kindSelector); + } + + kindSelector.set(KindSelector.VALUE, value.get()); kindSelector.set(KindSelector.LEGACY, false); } } @@ -62,8 +74,73 @@ public void realType(RealType realType) { } } - public void lengthSelector(LengthSelector lengthSelector) { - var childId = attributes(lengthSelector).getVariantString(); - lengthSelector.addChild(getChild(attributes().get(childId).getVariantString())); + public void constLenSelector(ConstLenSelector selector) { + var length = attributes().getString(selector, "uint64_t"); + selector.set(ConstLenSelector.LENGTH, Long.parseLong(length)); + } + + public void paramCharLenSelector(ParamCharLenSelector selector) { + var param = getChild(selector, FlangName.TYPE_PARAM_VALUE); + selector.addChild(param); + } + + public void paramLenSelector(ParamLenSelector selector) { + var param = getChild(selector, FlangName.TYPE_PARAM_VALUE); + selector.addChild(param); + } + + public void kindParamLenSelector(KindParamLenSelector selector) { + var kind = getChild(selector, FlangName.EXPR); + selector.addChild(kind); + + if (attributes(selector).has(FlangName.TYPE_PARAM_VALUE)) { + var param = getChild(selector, FlangName.TYPE_PARAM_VALUE); + selector.addChild(param); + } + } + + public void complexType(ComplexType complexType) { + if (attributes(complexType).has(FlangName.KIND_SELECTOR)) { + var kindSelector = getChild(complexType, FlangName.KIND_SELECTOR); + complexType.addChild(kindSelector); + } + } + + public void typeParam(TypeParam typeParam) { + var keyword = attributes().getOptionalString(typeParam, "source", FlangName.KEYWORD, FlangName.NAME); + typeParam.set(TypeParam.KEYWORD, keyword); + + var values = getChild(typeParam, FlangName.TYPE_PARAM_VALUE); + typeParam.addChild(values); + } + + public void derivedType(DerivedType derivedType) { + var name = attributes().getString(derivedType, "source", FlangName.NAME); + derivedType.set(DerivedType.NAME, name); + + if (attributes(derivedType).has(FlangName.TYPE_PARAM_SPEC)) { + var typeParams = getChildren(derivedType, FlangName.TYPE_PARAM_SPEC); + derivedType.addChildren(typeParams); + } + } + + public void intrinsicDeclType(IntrinsicDeclType declType) { + var intrinsicType = getChild(declType, FlangName.INTRINSIC_TYPE_SPEC); + declType.addChild(intrinsicType); + } + + public void derivedDeclType(DerivedDeclType declType) { + var variantKey = attributes(declType).getVariantKey(); + var kind = DeclTypeKind.valueOf(variantKey.toUpperCase()); + declType.set(DerivedDeclType.KIND, kind); + + var derivedType = getVariantChild(declType); + declType.addChild(derivedType); + } + + public void starDeclType(StarDeclType declType) { + var variantKey = attributes(declType).getVariantKey(); + var kind = DeclTypeKind.valueOf(variantKey.toUpperCase()); + declType.set(DerivedDeclType.KIND, kind); } } diff --git a/FortranParser/src/pt/up/fe/specs/fortran/parser/processors/UtilsProcessors.java b/FortranParser/src/pt/up/fe/specs/fortran/parser/processors/UtilsProcessors.java index 90359393..c3e272ba 100644 --- a/FortranParser/src/pt/up/fe/specs/fortran/parser/processors/UtilsProcessors.java +++ b/FortranParser/src/pt/up/fe/specs/fortran/parser/processors/UtilsProcessors.java @@ -1,35 +1,17 @@ package pt.up.fe.specs.fortran.parser.processors; +import pt.up.fe.specs.fortran.ast.nodes.io.ExprIoControlSpec; +import pt.up.fe.specs.fortran.ast.nodes.io.Format; import pt.up.fe.specs.fortran.ast.nodes.utils.*; -import pt.up.fe.specs.fortran.ast.nodes.utils.enums.IoControlSpecKind; +import pt.up.fe.specs.fortran.ast.nodes.io.enums.ExprIoControlSpecKind; import pt.up.fe.specs.fortran.parser.FlangName; import pt.up.fe.specs.fortran.parser.FortranJsonResult; public class UtilsProcessors extends ANodeProcessor { - - public UtilsProcessors(FortranJsonResult data) { super(data); } - public void format(Format format) { - var childId = getVariantChildId(format); - - if (data().attributes().isIdInteger(childId)) { - // Create placeholder LabelDecl - var labelRef = factory().labelRef(factory().labelDecl(Integer.parseInt(childId))); - format.addChild(labelRef); - data().processorData().addLabelRef(labelRef); - return; - } - - format.addChild(getChild(childId)); - } - - public void star(Star star) { - - } - public void nameValue(NameValue nameValue) { nameValue.set(NameValue.NAME, attributes().getString(nameValue, "source", FlangName.NAME)); @@ -43,12 +25,12 @@ public void ioUnit(IoUnit ioUnit) { ioUnit.addChild(getChild(ioUnit, variantKey)); } - public void ioControlSpec(IoControlSpec ioControlSpec) { + public void ioControlSpec(ExprIoControlSpec ioControlSpec) { var childId = attributes(ioControlSpec).getVariantString(); ioControlSpec.set( - IoControlSpec.KIND, - IoControlSpecKind.valueOf(attributes().get(childId).getString("kind").toUpperCase()) + ExprIoControlSpec.KIND, + ExprIoControlSpecKind.valueOf(attributes().get(childId).getString("kind").toUpperCase()) ); ioControlSpec.addChild(getChild(attributes().get(childId).getString(FlangName.EXPR))); diff --git a/FortranParser/src/pt/up/fe/specs/fortran/parser/processors/VariableProcessor.java b/FortranParser/src/pt/up/fe/specs/fortran/parser/processors/VariableProcessor.java index fa2aadb6..6783af1c 100644 --- a/FortranParser/src/pt/up/fe/specs/fortran/parser/processors/VariableProcessor.java +++ b/FortranParser/src/pt/up/fe/specs/fortran/parser/processors/VariableProcessor.java @@ -1,6 +1,9 @@ package pt.up.fe.specs.fortran.parser.processors; +import pt.up.fe.specs.fortran.ast.nodes.decl.DesignatorVariable; +import pt.up.fe.specs.fortran.ast.nodes.decl.Variable; import pt.up.fe.specs.fortran.ast.nodes.expr.DataRef; +import pt.up.fe.specs.fortran.parser.FlangName; import pt.up.fe.specs.fortran.ast.nodes.expr.enums.ScopeKind; import pt.up.fe.specs.fortran.parser.FortranJsonResult; @@ -9,14 +12,16 @@ public VariableProcessor(FortranJsonResult data) { super(data); } - public void dataRefProcessor(DataRef dataRef) { - - var name = attributes(dataRef).getString("source"); - var scope = attributes(dataRef) + public void dataRef(DataRef dataRef) { + var name = attributes(dataRef).getString("source");var scope = attributes(dataRef) .getOptionalString("scope") .flatMap(ScopeKind::of); - dataRef.set(DataRef.NAME, name); dataRef.set(DataRef.SCOPE, scope); } + + public void designatorVariable(DesignatorVariable variable) { + var designator = getChild(variable, FlangName.DESIGNATOR); + variable.addChild(designator); + } } diff --git a/FortranParser/test/pt/up/fe/specs/fortran/parser/FortranParserTest.java b/FortranParser/test/pt/up/fe/specs/fortran/parser/FortranParserTest.java index 5eb4111c..c087bef6 100644 --- a/FortranParser/test/pt/up/fe/specs/fortran/parser/FortranParserTest.java +++ b/FortranParser/test/pt/up/fe/specs/fortran/parser/FortranParserTest.java @@ -9,12 +9,10 @@ import pt.up.fe.specs.util.SpecsIo; import pt.up.fe.specs.util.SpecsStrings; import pt.up.fe.specs.util.SpecsSystem; +import pt.up.fe.specs.util.utilities.StringLines; -import java.io.InputStreamReader; -import java.nio.charset.StandardCharsets; import java.util.function.BiFunction; -import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.fail; public class FortranParserTest { @@ -33,7 +31,8 @@ private static void testNative(String resource) { } private static void testNative(String resource, DataStore fortranOptions) { - test(resource, (r, c) -> new FortranNativeParser(c).parse(SpecsIo.resourceToStream(r)), fortranOptions); + test(resource, (r, c) -> new FortranNativeParser(c) + .parse(SpecsIo.resourceToStream(r), SpecsIo.getExtension(r)), fortranOptions); } private static void testJson(String resource) { @@ -41,7 +40,7 @@ private static void testJson(String resource) { } private static void testJson(String resource, DataStore fortranOptions) { - test(resource, (r, c) -> FortranJsonParser.parse(new InputStreamReader(SpecsIo.resourceToStream(r), StandardCharsets.UTF_8), c), fortranOptions); + test(resource, (r, c) -> FortranJsonParser.parse(SpecsIo.read(SpecsIo.resourceToStream(r)), c), fortranOptions); } private static void test(String resource, BiFunction parser, DataStore fortranOptions) { @@ -62,18 +61,54 @@ private static void test(String resource, BiFunction "f90"); + } + + var expectedResourceName = BASE_RESOURCE + SpecsIo.removeExtension(resource) + ".expected." + extension; + if (!SpecsIo.hasResource(expectedResourceName)) { + fail("Could not find expected output resource '" + expectedResourceName + "'. Generated contents:\n" + code); } // Compare resource contents with code, normalized var expectedNormalized = SpecsStrings.normalizeFileContents(SpecsIo.getResource(expectedResourceName), true); var codeNormalized = SpecsStrings.normalizeFileContents(code, true); - assertEquals(expectedNormalized, codeNormalized, "Codes do not match.\nAST code:\n" + code); + compareCode(expectedNormalized, codeNormalized, code); + } + + private static void compareCode(String expected, String normalized, String original) { + var expectedLines = StringLines.getLines(expected); + var normalizedLines = StringLines.getLines(normalized); + var numLines = Math.min(expectedLines.size(), normalizedLines.size()); + + for (var line = 0; line < numLines; line++) { + var expectedLine = expectedLines.get(line); + var normalizedLine = normalizedLines.get(line); + + var col = 0; + while (col < expectedLine.length() && col < normalizedLine.length() + && expectedLine.charAt(col) == normalizedLine.charAt(col)) { + col++; + } + + if (col != expectedLine.length() || col != normalizedLine.length()) { + reportMismatch(line + 1, col + 1, expectedLine, normalizedLine, original); + return; + } + } + if (expectedLines.size() > numLines) { + reportMismatch(numLines + 1, 0, expectedLines.get(numLines), "", original); + } else if (normalizedLines.size() > numLines) { + reportMismatch(numLines + 1, 0, "", normalizedLines.get(numLines), original); + } + } + private static void reportMismatch(int line, int col, String expected, String got, String code) { + fail("Encountered a code mismatch on line " + line + " column " + col + ".\nExpected: '" + expected + + "'\nGot: '" + got + "'\n\nGenerated code:\n" + code); } @Test @@ -532,6 +567,150 @@ void testCommentNative() { } } + @Test + void testLegacyDo() { + testJson("stmt/legacy_do.json"); + } + + @Test + void testLegacyDoNative() { + if (SpecsPlatforms.isLinux()) { + testNative("stmt/legacy_do.f90"); + } + } + + @Test + void testReturn() { + testJson("stmt/return.json"); + } + + @Test + void testReturnNative() { + if (SpecsPlatforms.isLinux()) { + testNative("stmt/return.f90"); + } + } + + @Test + void testComplexLiteral() { + testJson("expr/complex_literal.json"); + } + + @Test + void testComplexLiteralNative() { + if (SpecsPlatforms.isLinux()) { + testNative("expr/complex_literal.f90"); + } + } + + @Test + void testSubstring() { + testJson("expr/substring.json"); + } + + @Test + void testSubstringNative() { + if (SpecsPlatforms.isLinux()) { + testNative("expr/substring.f90"); + } + } + + @Test + void testContinuationLine() { + testJson("continuation_line.json"); + } + + @Test + void testContinuationLineNative() { + if (SpecsPlatforms.isLinux()) { + testNative("continuation_line.f"); + } + } + + @Test + void testLengthSelector() { + testJson("type/length_selector.json"); + } + + @Test + void testLengthSelectorNative() { + if (SpecsPlatforms.isLinux()) { + testNative("type/length_selector.f90"); + } + } + + @Test + void testIoControl() { + testJson("io/io_control.json"); + } + + @Test + void testIoControlNative() { + if (SpecsPlatforms.isLinux()) { + testNative("io/io_control.f90"); + } + } + + @Test + void testFunction() { + testJson("program/function.json"); + } + + @Test + void testFunctionNative() { + if (SpecsPlatforms.isLinux()) { + testNative("program/function.f90"); + } + } + + @Test + void testModule1() { + testJson("program/module1.json"); + } + + @Test + void testModule1Native() { + if (SpecsPlatforms.isLinux()) { + testNative("program/module1.f90"); + } + } + + @Test + void testModule2() { + testJson("program/module2.json"); + } + + @Test + void testModule2Native() { + if (SpecsPlatforms.isLinux()) { + testNative("program/module2.f90"); + } + } + + @Test + void testImplicit() { + testJson("program/implicit.json"); + } + + @Test + void testImplicitNative() { + if (SpecsPlatforms.isLinux()) { + testNative("program/implicit.f90"); + } + } + + @Test + void testPointerAssign() { + testJson("stmt/pointer_assign.json"); + } + + @Test + void testPointerAssignNative() { + if (SpecsPlatforms.isLinux()) { + testNative("stmt/pointer_assign.f90"); + } + } + @Test void testFujitsu0000_0000() { testJson("fujitsu/0000/0000_0000.json"); @@ -676,4 +855,52 @@ void testFujitsu0000_0033Native() { testNative("fujitsu/0000/0000_0033.f90"); } } + + @Test + void testFujitsu0001_0000() { + testJson("fujitsu/0001/0001_0000.json"); + } + + @Test + void testFujitsu0001_0000Native() { + if (SpecsPlatforms.isLinux()) { + testNative("fujitsu/0001/0001_0000.f"); + } + } + + @Test + void testFujitsu0001_0007() { + testJson("fujitsu/0001/0001_0007.json"); + } + + @Test + void testFujitsu0001_0007Native() { + if (SpecsPlatforms.isLinux()) { + testNative("fujitsu/0001/0001_0007.f"); + } + } + + @Test + void testFujitsu0001_0011() { + testJson("fujitsu/0001/0001_0011.json"); + } + + @Test + void testFujitsu0001_0011Native() { + if (SpecsPlatforms.isLinux()) { + testNative("fujitsu/0001/0001_0011.f"); + } + } + + @Test + void testFujitsu0001_0032() { + testJson("fujitsu/0001/0001_0032.json"); + } + + @Test + void testFujitsu0001_0032Native() { + if (SpecsPlatforms.isLinux()) { + testNative("fujitsu/0001/0001_0032.f"); + } + } } diff --git a/FortranWeaver/resources/fortran/weaverspecs/actionModel.xml b/FortranWeaver/resources/fortran/weaverspecs/actionModel.xml index 4691e0c4..0ec00b04 100644 --- a/FortranWeaver/resources/fortran/weaverspecs/actionModel.xml +++ b/FortranWeaver/resources/fortran/weaverspecs/actionModel.xml @@ -66,11 +66,11 @@ - + - + @@ -78,17 +78,18 @@ - + - + - + @@ -100,13 +101,13 @@ - - + - - + \ No newline at end of file diff --git a/FortranWeaver/resources/fortran/weaverspecs/artifacts.xml b/FortranWeaver/resources/fortran/weaverspecs/artifacts.xml index ba201705..7988a4c3 100644 --- a/FortranWeaver/resources/fortran/weaverspecs/artifacts.xml +++ b/FortranWeaver/resources/fortran/weaverspecs/artifacts.xml @@ -33,7 +33,8 @@ - + @@ -71,9 +72,8 @@ - + - @@ -85,23 +85,22 @@ - + - + - - + + - - + @@ -122,14 +121,18 @@ - - - + + + + + + + + - - + @@ -156,7 +159,7 @@ - + @@ -165,7 +168,7 @@ - + @@ -173,13 +176,13 @@ - + - + diff --git a/FortranWeaver/resources/fortran/weaverspecs/joinPointModel.xml b/FortranWeaver/resources/fortran/weaverspecs/joinPointModel.xml index 3f293028..7161b037 100644 --- a/FortranWeaver/resources/fortran/weaverspecs/joinPointModel.xml +++ b/FortranWeaver/resources/fortran/weaverspecs/joinPointModel.xml @@ -14,9 +14,7 @@ - - - + @@ -26,39 +24,50 @@ - + + + + + - + - + - + - + + + - + - + - + - + - + - + - + - + - + @@ -66,21 +75,27 @@ + + + + - + + + + + - - - + - + @@ -92,7 +107,7 @@ - + diff --git a/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/FortranJoinpoints.java b/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/FortranJoinpoints.java index 5a94bcc7..b1e09de1 100644 --- a/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/FortranJoinpoints.java +++ b/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/FortranJoinpoints.java @@ -15,9 +15,9 @@ import pt.up.fe.specs.fortran.ast.nodes.FortranNode; import pt.up.fe.specs.fortran.ast.nodes.decl.EntityDecl; -import pt.up.fe.specs.fortran.ast.nodes.decl.ExprInitialization; import pt.up.fe.specs.fortran.ast.nodes.decl.FortranDecl; -import pt.up.fe.specs.fortran.ast.nodes.decl.Initialization; +import pt.up.fe.specs.fortran.ast.nodes.decl.init.ExprInitialization; +import pt.up.fe.specs.fortran.ast.nodes.decl.init.Initialization; import pt.up.fe.specs.fortran.ast.nodes.expr.*; import pt.up.fe.specs.fortran.ast.nodes.loops.LoopControl; import pt.up.fe.specs.fortran.ast.nodes.loops.RangeLoopControl; @@ -29,12 +29,14 @@ import pt.up.fe.specs.fortran.ast.nodes.omp.clause.OmpOrderedClause; import pt.up.fe.specs.fortran.ast.nodes.omp.clause.OmpReductionClause; import pt.up.fe.specs.fortran.ast.nodes.program.*; +import pt.up.fe.specs.fortran.ast.nodes.program.subprogram.Subroutine; +import pt.up.fe.specs.fortran.ast.nodes.program.unit.ProgramUnit; import pt.up.fe.specs.fortran.ast.nodes.stmt.*; import pt.up.fe.specs.fortran.ast.nodes.stmt.ifstmt.*; import pt.up.fe.specs.fortran.ast.nodes.stmt.loop.DoConstruct; -import pt.up.fe.specs.fortran.ast.nodes.type.attributes.AttributeSpecifier; -import pt.up.fe.specs.fortran.ast.nodes.type.attributes.KeywordAttributeSpecifier; -import pt.up.fe.specs.fortran.ast.nodes.type.attributes.ParameterKeyword; +import pt.up.fe.specs.fortran.ast.nodes.stmt.usestmt.UseStmt; +import pt.up.fe.specs.fortran.ast.nodes.type.attributes.AttrSpec; +import pt.up.fe.specs.fortran.ast.nodes.type.attributes.OtherAttrSpec; import pt.up.fe.specs.fortran.ast.nodes.utils.NameValue; import pt.up.fe.specs.fortran.weaver.abstracts.AFortranWeaverJoinPoint; import pt.up.fe.specs.fortran.weaver.abstracts.joinpoints.AJoinPoint; @@ -63,7 +65,6 @@ public class FortranJoinpoints { JOINPOINT_FACTORY.put(DataRef.class, FDataRef::new); JOINPOINT_FACTORY.put(Designator.class, FDesignator::new); JOINPOINT_FACTORY.put(DoConstruct.class, FDoConstruct::new); - JOINPOINT_FACTORY.put(ExecutableStmt.class, FExecutableStatement::new); JOINPOINT_FACTORY.put(Execution.class, FExecution::new); JOINPOINT_FACTORY.put(Expr.class, FExpr::new); JOINPOINT_FACTORY.put(IntLiteral.class, FIntLiteral::new); @@ -72,7 +73,7 @@ public class FortranJoinpoints { JOINPOINT_FACTORY.put(NameValue.class, FNameValue::new); JOINPOINT_FACTORY.put(RangeLoopControl.class, FRangeLoopControl::new); JOINPOINT_FACTORY.put(RealLiteral.class, FRealLiteral::new); - JOINPOINT_FACTORY.put(StmtBlock.class, FStatementBlock::new); + JOINPOINT_FACTORY.put(ExecBlock.class, FExecBlock::new); JOINPOINT_FACTORY.put(StringLiteral.class, FStringLiteral::new); JOINPOINT_FACTORY.put(Specification.class, FSpecification::new); JOINPOINT_FACTORY.put(OmpConstruct.class, FOmpConstruct::new); @@ -92,12 +93,10 @@ public class FortranJoinpoints { JOINPOINT_FACTORY.put(ElseIfBlock.class, FElseIfBlock::new); JOINPOINT_FACTORY.put(ElseIfStmt.class, FElseIfStatement::new); JOINPOINT_FACTORY.put(ElseBlock.class, FElseBlock::new); - JOINPOINT_FACTORY.put(Subroutine.class, FSubroutine::new); - JOINPOINT_FACTORY.put(SpecificationStmt.class, FSpecificationStatement::new); + JOINPOINT_FACTORY.put(SpecStmt.class, FSpecificationStatement::new); JOINPOINT_FACTORY.put(TypeDeclarationStmt.class, FTypeDeclarationStatement::new); - JOINPOINT_FACTORY.put(AttributeSpecifier.class, FAttributeSpecifier::new); - JOINPOINT_FACTORY.put(KeywordAttributeSpecifier.class, FKeywordAttributeSpecifier::new); - JOINPOINT_FACTORY.put(ParameterKeyword.class, FParameterKeyword::new); + JOINPOINT_FACTORY.put(AttrSpec.class, FAttrSpec::new); + JOINPOINT_FACTORY.put(OtherAttrSpec.class, FOtherAttrSpec::new); JOINPOINT_FACTORY.put(FortranDecl.class, FFortranDecl::new); JOINPOINT_FACTORY.put(EntityDecl.class, FEntityDecl::new); JOINPOINT_FACTORY.put(Initialization.class, FInitialization::new); diff --git a/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/FortranWeaver.java b/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/FortranWeaver.java index a2e2702a..9208ba79 100644 --- a/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/FortranWeaver.java +++ b/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/FortranWeaver.java @@ -109,11 +109,9 @@ public boolean close() { for (var file : currentRoot.getFiles()) { // Get relative path var filename = file.get(FortranFile.FILE_NAME); - filename = SpecsIo.getExtension(filename).equals("json") ? SpecsIo.removeExtension(filename) + ".f90" : filename; var folder = new File(file.get(FortranFile.FOLDER_NAME)); var inputSourcePath = new File(file.get(FortranFile.INPUT_SOURCE_PATH)); - var baseOutputFile = inputSourcePath.isFile() ? filename : SpecsIo.getRelativePath(folder, inputSourcePath) + "/" + filename; var outputFile = new File(outputFolder, baseOutputFile); diff --git a/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/FortranWeaver.json b/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/FortranWeaver.json index 1940bdb1..70e0ae32 100644 --- a/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/FortranWeaver.json +++ b/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/FortranWeaver.json @@ -231,8 +231,8 @@ { "type": "joinpoint", "name": "actionStatement", - "extends": "executableStatement" , - "tooltip": "Represents an action statement", + "extends": "statement" , + "tooltip": "Represents an executable statement", "children": [ { "type": "attribute", @@ -983,7 +983,7 @@ }, { "type": "joinpoint", - "name": "attributeSpecifier", + "name": "attrSpec", "extends": "joinpoint" , "children": [ { @@ -1489,7 +1489,7 @@ { "type": "joinpoint", "name": "compilerDirective", - "extends": "executableStatement" , + "extends": "statement" , "children": [ { "type": "attribute", @@ -2209,15 +2209,15 @@ }, { "type": "joinpoint", - "name": "doStatement", - "extends": "executableStatement" , + "name": "doConstruct", + "extends": "execConstruct" , "tooltip": "Represents a do loop", "children": [ { "type": "attribute", "children": [ { - "type": "execution", + "type": "execBlock", "name": "body" }] }, @@ -2237,22 +2237,6 @@ "name": "kind" }] }, - { - "type": "attribute", - "children": [ - { - "type": "Boolean", - "name": "isFirst" - }] - }, - { - "type": "attribute", - "children": [ - { - "type": "Boolean", - "name": "isLast" - }] - }, { "type": "attribute", "tooltip": "Returns an array with the children of the node", @@ -2367,7 +2351,7 @@ "tooltip": "Performs a copy of the do statement, including its controls, but not the body", "children": [ { - "type": "doStatement", + "type": "doConstruct", "name": "copyScope" }] }, @@ -2380,7 +2364,7 @@ "name": "sameScope" }, { - "type": "doStatement", + "type": "doConstruct", "name": "loop", "defaultValue": "" }] @@ -2507,7 +2491,7 @@ "type": "attribute", "children": [ { - "type": "statementBlock", + "type": "execBlock", "name": "body" }] }, @@ -2742,7 +2726,7 @@ "type": "attribute", "children": [ { - "type": "statementBlock", + "type": "execBlock", "name": "body" }] }, @@ -3446,24 +3430,15 @@ }, { "type": "joinpoint", - "name": "executableStatement", - "extends": "statement" , - "tooltip": "Represents an executable statement", + "name": "execBlock", + "extends": "joinpoint" , "children": [ { "type": "attribute", "children": [ { - "type": "Boolean", - "name": "isFirst" - }] - }, - { - "type": "attribute", - "children": [ - { - "type": "Boolean", - "name": "isLast" + "type": "execPartConstruct[]", + "name": "constructs" }] }, { @@ -3689,25 +3664,9 @@ }, { "type": "joinpoint", - "name": "execution", - "extends": "statementBlock" , + "name": "execConstruct", + "extends": "execPartConstruct" , "children": [ - { - "type": "attribute", - "children": [ - { - "type": "executableStatement[]", - "name": "executableStmts" - }] - }, - { - "type": "attribute", - "children": [ - { - "type": "statement[]", - "name": "stmts" - }] - }, { "type": "attribute", "tooltip": "Returns an array with the children of the node", @@ -3817,32 +3776,6 @@ "name": "scopeNodes" }] }, - { - "type": "action", - "children": [ - { - "type": "void", - "name": "insertBegin" - }, - { - "type": "executableStatement", - "name": "stmt", - "defaultValue": "" - }] - }, - { - "type": "action", - "children": [ - { - "type": "void", - "name": "insertEnd" - }, - { - "type": "executableStatement", - "name": "stmt", - "defaultValue": "" - }] - }, { "type": "action", "tooltip": "Performs a copy of the node and its children, but not of the nodes in its fields", @@ -3957,9 +3890,8 @@ }, { "type": "joinpoint", - "name": "expr", + "name": "execPartConstruct", "extends": "joinpoint" , - "tooltip": "Represents an expression", "children": [ { "type": "attribute", @@ -4184,15 +4116,15 @@ }, { "type": "joinpoint", - "name": "exprInitialization", - "extends": "initialization" , + "name": "execution", + "extends": "execBlock" , "children": [ { "type": "attribute", "children": [ { - "type": "expr", - "name": "expr" + "type": "execPartConstruct[]", + "name": "constructs" }] }, { @@ -4304,6 +4236,32 @@ "name": "scopeNodes" }] }, + { + "type": "action", + "children": [ + { + "type": "void", + "name": "insertBegin" + }, + { + "type": "execPartConstruct", + "name": "stmt", + "defaultValue": "" + }] + }, + { + "type": "action", + "children": [ + { + "type": "void", + "name": "insertEnd" + }, + { + "type": "execPartConstruct", + "name": "stmt", + "defaultValue": "" + }] + }, { "type": "action", "tooltip": "Performs a copy of the node and its children, but not of the nodes in its fields", @@ -4418,29 +4376,10 @@ }, { "type": "joinpoint", - "name": "file", - "defaultAttr": "name", + "name": "expr", "extends": "joinpoint" , - "tooltip": "Represents a source file (e.g., .f90)", + "tooltip": "Represents an expression", "children": [ - { - "type": "attribute", - "tooltip": "the name of the folder", - "children": [ - { - "type": "String", - "name": "foldername" - }] - }, - { - "type": "attribute", - "tooltip": "the name of the file", - "children": [ - { - "type": "String", - "name": "name" - }] - }, { "type": "attribute", "tooltip": "Returns an array with the children of the node", @@ -4664,9 +4603,17 @@ }, { "type": "joinpoint", - "name": "fortranDecl", - "extends": "joinpoint" , + "name": "exprInitialization", + "extends": "initialization" , "children": [ + { + "type": "attribute", + "children": [ + { + "type": "expr", + "name": "expr" + }] + }, { "type": "attribute", "tooltip": "Returns an array with the children of the node", @@ -4890,48 +4837,27 @@ }, { "type": "joinpoint", - "name": "ifConstruct", - "extends": "executableStatement" , - "tooltip": "Represents the root of an if construct", + "name": "file", + "defaultAttr": "name", + "extends": "joinpoint" , + "tooltip": "Represents a source file (e.g., .f90)", "children": [ { "type": "attribute", + "tooltip": "the name of the folder", "children": [ { - "type": "elseBlock", - "name": "elseBlock" - }] - }, - { - "type": "attribute", - "children": [ - { - "type": "elseIfBlock[]", - "name": "elseIfBlocks" - }] - }, - { - "type": "attribute", - "children": [ - { - "type": "ifThenBlock", - "name": "ifThenBlock" - }] - }, - { - "type": "attribute", - "children": [ - { - "type": "Boolean", - "name": "isFirst" + "type": "String", + "name": "foldername" }] }, { "type": "attribute", + "tooltip": "the name of the file", "children": [ { - "type": "Boolean", - "name": "isLast" + "type": "String", + "name": "name" }] }, { @@ -5157,41 +5083,9 @@ }, { "type": "joinpoint", - "name": "ifStatement", - "extends": "actionStatement" , + "name": "fortranDecl", + "extends": "joinpoint" , "children": [ - { - "type": "attribute", - "children": [ - { - "type": "expr", - "name": "condition" - }] - }, - { - "type": "attribute", - "children": [ - { - "type": "actionStatement", - "name": "statement" - }] - }, - { - "type": "attribute", - "children": [ - { - "type": "Boolean", - "name": "isFirst" - }] - }, - { - "type": "attribute", - "children": [ - { - "type": "Boolean", - "name": "isLast" - }] - }, { "type": "attribute", "tooltip": "Returns an array with the children of the node", @@ -5415,24 +5309,32 @@ }, { "type": "joinpoint", - "name": "ifThenBlock", - "extends": "joinpoint" , - "tooltip": "Represents the first block of an if construct", + "name": "ifConstruct", + "extends": "execConstruct" , + "tooltip": "Represents the root of an if construct", "children": [ { "type": "attribute", "children": [ { - "type": "statementBlock", - "name": "body" + "type": "elseBlock", + "name": "elseBlock" }] }, { "type": "attribute", "children": [ { - "type": "ifThenStatement", - "name": "header" + "type": "elseIfBlock[]", + "name": "elseIfBlocks" + }] + }, + { + "type": "attribute", + "children": [ + { + "type": "ifThenBlock", + "name": "ifThenBlock" }] }, { @@ -5658,9 +5560,8 @@ }, { "type": "joinpoint", - "name": "ifThenStatement", - "extends": "joinpoint" , - "tooltip": "Represents the header of an 'if then' block", + "name": "ifStatement", + "extends": "actionStatement" , "children": [ { "type": "attribute", @@ -5672,39 +5573,63 @@ }, { "type": "attribute", - "tooltip": "Returns an array with the children of the node", "children": [ { - "type": "joinpoint[]", - "name": "children" + "type": "actionStatement", + "name": "statement" }] }, { "type": "attribute", - "tooltip": "String with the code represented by this node", "children": [ { - "type": "String", - "name": "code" + "type": "Boolean", + "name": "isFirst" }] }, { "type": "attribute", - "tooltip": "true if the given node is a descendant of this node", "children": [ { "type": "Boolean", - "name": "contains" - }, - { - "type": "joinpoint", - "name": "jp", - "defaultValue": "" + "name": "isLast" }] }, { "type": "attribute", - "tooltip": "Returns an array with the descendants of the node", + "tooltip": "Returns an array with the children of the node", + "children": [ + { + "type": "joinpoint[]", + "name": "children" + }] + }, + { + "type": "attribute", + "tooltip": "String with the code represented by this node", + "children": [ + { + "type": "String", + "name": "code" + }] + }, + { + "type": "attribute", + "tooltip": "true if the given node is a descendant of this node", + "children": [ + { + "type": "Boolean", + "name": "contains" + }, + { + "type": "joinpoint", + "name": "jp", + "defaultValue": "" + }] + }, + { + "type": "attribute", + "tooltip": "Returns an array with the descendants of the node", "children": [ { "type": "joinpoint[]", @@ -5893,9 +5818,26 @@ }, { "type": "joinpoint", - "name": "initialization", + "name": "ifThenBlock", "extends": "joinpoint" , + "tooltip": "Represents the first block of an if construct", "children": [ + { + "type": "attribute", + "children": [ + { + "type": "execBlock", + "name": "body" + }] + }, + { + "type": "attribute", + "children": [ + { + "type": "ifThenStatement", + "name": "header" + }] + }, { "type": "attribute", "tooltip": "Returns an array with the children of the node", @@ -6119,15 +6061,16 @@ }, { "type": "joinpoint", - "name": "intLiteral", - "extends": "literal" , + "name": "ifThenStatement", + "extends": "joinpoint" , + "tooltip": "Represents the header of an 'if then' block", "children": [ { "type": "attribute", "children": [ { - "type": "String", - "name": "literal" + "type": "expr", + "name": "condition" }] }, { @@ -6353,8 +6296,8 @@ }, { "type": "joinpoint", - "name": "keywordAttributeSpecifier", - "extends": "attributeSpecifier" , + "name": "initialization", + "extends": "joinpoint" , "children": [ { "type": "attribute", @@ -6579,18 +6522,9 @@ }, { "type": "joinpoint", - "name": "literal", - "extends": "expr" , - "tooltip": "Represents a literal", + "name": "intLiteral", + "extends": "kindedLiteral" , "children": [ - { - "type": "attribute", - "children": [ - { - "type": "String", - "name": "literal" - }] - }, { "type": "attribute", "tooltip": "Returns an array with the children of the node", @@ -6814,10 +6748,18 @@ }, { "type": "joinpoint", - "name": "loopControl", - "extends": "joinpoint" , - "tooltip": "Represents the loop control structure, with specialized subclasses for different loop kinds", + "name": "internalSubprogram", + "extends": "subprogram" , "children": [ + { + "type": "attribute", + "tooltip": "Returns the subprogram's specification part", + "children": [ + { + "type": "specification", + "name": "specification" + }] + }, { "type": "attribute", "tooltip": "Returns an array with the children of the node", @@ -7041,18 +6983,10 @@ }, { "type": "joinpoint", - "name": "mainProgram", - "extends": "programUnit" , + "name": "kindedLiteral", + "extends": "literal" , + "tooltip": "Represents a literal with a kind specifier", "children": [ - { - "type": "attribute", - "tooltip": "Returns the unit's specification part", - "children": [ - { - "type": "specification", - "name": "specification" - }] - }, { "type": "attribute", "tooltip": "Returns an array with the children of the node", @@ -7276,18 +7210,10 @@ }, { "type": "joinpoint", - "name": "nameValue", - "extends": "joinpoint" , - "tooltip": "Represents a name/value pair in a compiler directive", + "name": "literal", + "extends": "expr" , + "tooltip": "Represents a literal", "children": [ - { - "type": "attribute", - "children": [ - { - "type": "String", - "name": "name" - }] - }, { "type": "attribute", "tooltip": "Returns an array with the children of the node", @@ -7511,34 +7437,10 @@ }, { "type": "joinpoint", - "name": "ompBlockConstruct", - "extends": "ompConstruct" , - "tooltip": "Represents an OpenMP block construct (such as parallel or task)", + "name": "loopControl", + "extends": "joinpoint" , + "tooltip": "Represents the loop control structure, with specialized subclasses for different loop kinds", "children": [ - { - "type": "attribute", - "children": [ - { - "type": "ompClause[]", - "name": "clauses" - }] - }, - { - "type": "attribute", - "children": [ - { - "type": "Boolean", - "name": "isFirst" - }] - }, - { - "type": "attribute", - "children": [ - { - "type": "Boolean", - "name": "isLast" - }] - }, { "type": "attribute", "tooltip": "Returns an array with the children of the node", @@ -7648,46 +7550,6 @@ "name": "scopeNodes" }] }, - { - "type": "action", - "children": [ - { - "type": "void", - "name": "setBody" - }, - { - "type": "execution", - "name": "body", - "defaultValue": "" - }] - }, - { - "type": "action", - "tooltip": "Sets the construct's clauses", - "children": [ - { - "type": "void", - "name": "setClauses" - }, - { - "type": "ompClause[]", - "name": "clauses", - "defaultValue": "" - }] - }, - { - "type": "action", - "children": [ - { - "type": "void", - "name": "setDirective" - }, - { - "type": "String", - "name": "directive", - "defaultValue": "" - }] - }, { "type": "action", "tooltip": "Performs a copy of the node and its children, but not of the nodes in its fields", @@ -7802,10 +7664,18 @@ }, { "type": "joinpoint", - "name": "ompClause", - "extends": "joinpoint" , - "tooltip": "Represents an OpenMP clause", + "name": "mainProgram", + "extends": "programUnit" , "children": [ + { + "type": "attribute", + "tooltip": "Returns the main program's specification part", + "children": [ + { + "type": "specification", + "name": "specification" + }] + }, { "type": "attribute", "tooltip": "Returns an array with the children of the node", @@ -8029,32 +7899,16 @@ }, { "type": "joinpoint", - "name": "ompConstruct", - "extends": "executableStatement" , - "tooltip": "Represents a generic OpenMP construct", + "name": "nameValue", + "extends": "joinpoint" , + "tooltip": "Represents a name/value pair in a compiler directive", "children": [ { "type": "attribute", "children": [ { - "type": "ompClause[]", - "name": "clauses" - }] - }, - { - "type": "attribute", - "children": [ - { - "type": "Boolean", - "name": "isFirst" - }] - }, - { - "type": "attribute", - "children": [ - { - "type": "Boolean", - "name": "isLast" + "type": "String", + "name": "name" }] }, { @@ -8166,33 +8020,6 @@ "name": "scopeNodes" }] }, - { - "type": "action", - "tooltip": "Sets the construct's clauses", - "children": [ - { - "type": "void", - "name": "setClauses" - }, - { - "type": "ompClause[]", - "name": "clauses", - "defaultValue": "" - }] - }, - { - "type": "action", - "children": [ - { - "type": "void", - "name": "setDirective" - }, - { - "type": "String", - "name": "directive", - "defaultValue": "" - }] - }, { "type": "action", "tooltip": "Performs a copy of the node and its children, but not of the nodes in its fields", @@ -8307,10 +8134,18 @@ }, { "type": "joinpoint", - "name": "ompDataSharingClause", - "extends": "ompClause" , - "tooltip": "Represents an OpenMP datasharing clause (public, private, ...)", + "name": "ompBlockConstruct", + "extends": "ompConstruct" , + "tooltip": "Represents an OpenMP block construct (such as parallel or task)", "children": [ + { + "type": "attribute", + "children": [ + { + "type": "ompClause[]", + "name": "clauses" + }] + }, { "type": "attribute", "tooltip": "Returns an array with the children of the node", @@ -8422,7 +8257,47 @@ }, { "type": "action", - "tooltip": "Performs a copy of the node and its children, but not of the nodes in its fields", + "children": [ + { + "type": "void", + "name": "setBody" + }, + { + "type": "execBlock", + "name": "body", + "defaultValue": "" + }] + }, + { + "type": "action", + "tooltip": "Sets the construct's clauses", + "children": [ + { + "type": "void", + "name": "setClauses" + }, + { + "type": "ompClause[]", + "name": "clauses", + "defaultValue": "" + }] + }, + { + "type": "action", + "children": [ + { + "type": "void", + "name": "setDirective" + }, + { + "type": "String", + "name": "directive", + "defaultValue": "" + }] + }, + { + "type": "action", + "tooltip": "Performs a copy of the node and its children, but not of the nodes in its fields", "children": [ { "type": "joinpoint", @@ -8534,34 +8409,10 @@ }, { "type": "joinpoint", - "name": "ompLoopConstruct", - "extends": "ompConstruct" , - "tooltip": "Represents an OpenMP loop construct (such as do or do parallel)", + "name": "ompClause", + "extends": "joinpoint" , + "tooltip": "Represents an OpenMP clause", "children": [ - { - "type": "attribute", - "children": [ - { - "type": "ompClause[]", - "name": "clauses" - }] - }, - { - "type": "attribute", - "children": [ - { - "type": "Boolean", - "name": "isFirst" - }] - }, - { - "type": "attribute", - "children": [ - { - "type": "Boolean", - "name": "isLast" - }] - }, { "type": "attribute", "tooltip": "Returns an array with the children of the node", @@ -8671,46 +8522,6 @@ "name": "scopeNodes" }] }, - { - "type": "action", - "children": [ - { - "type": "void", - "name": "setLoop" - }, - { - "type": "doStatement", - "name": "loop", - "defaultValue": "" - }] - }, - { - "type": "action", - "tooltip": "Sets the construct's clauses", - "children": [ - { - "type": "void", - "name": "setClauses" - }, - { - "type": "ompClause[]", - "name": "clauses", - "defaultValue": "" - }] - }, - { - "type": "action", - "children": [ - { - "type": "void", - "name": "setDirective" - }, - { - "type": "String", - "name": "directive", - "defaultValue": "" - }] - }, { "type": "action", "tooltip": "Performs a copy of the node and its children, but not of the nodes in its fields", @@ -8825,9 +8636,18 @@ }, { "type": "joinpoint", - "name": "ompOrderedClause", - "extends": "ompClause" , + "name": "ompConstruct", + "extends": "execConstruct" , + "tooltip": "Represents a generic OpenMP construct", "children": [ + { + "type": "attribute", + "children": [ + { + "type": "ompClause[]", + "name": "clauses" + }] + }, { "type": "attribute", "tooltip": "Returns an array with the children of the node", @@ -8937,6 +8757,33 @@ "name": "scopeNodes" }] }, + { + "type": "action", + "tooltip": "Sets the construct's clauses", + "children": [ + { + "type": "void", + "name": "setClauses" + }, + { + "type": "ompClause[]", + "name": "clauses", + "defaultValue": "" + }] + }, + { + "type": "action", + "children": [ + { + "type": "void", + "name": "setDirective" + }, + { + "type": "String", + "name": "directive", + "defaultValue": "" + }] + }, { "type": "action", "tooltip": "Performs a copy of the node and its children, but not of the nodes in its fields", @@ -9051,8 +8898,9 @@ }, { "type": "joinpoint", - "name": "ompReductionClause", + "name": "ompDataSharingClause", "extends": "ompClause" , + "tooltip": "Represents an OpenMP datasharing clause (public, private, ...)", "children": [ { "type": "attribute", @@ -9277,9 +9125,18 @@ }, { "type": "joinpoint", - "name": "parameterKeyword", - "extends": "keywordAttributeSpecifier" , + "name": "ompLoopConstruct", + "extends": "ompConstruct" , + "tooltip": "Represents an OpenMP loop construct (such as do or do parallel)", "children": [ + { + "type": "attribute", + "children": [ + { + "type": "ompClause[]", + "name": "clauses" + }] + }, { "type": "attribute", "tooltip": "Returns an array with the children of the node", @@ -9389,6 +9246,46 @@ "name": "scopeNodes" }] }, + { + "type": "action", + "children": [ + { + "type": "void", + "name": "setLoop" + }, + { + "type": "doConstruct", + "name": "loop", + "defaultValue": "" + }] + }, + { + "type": "action", + "tooltip": "Sets the construct's clauses", + "children": [ + { + "type": "void", + "name": "setClauses" + }, + { + "type": "ompClause[]", + "name": "clauses", + "defaultValue": "" + }] + }, + { + "type": "action", + "children": [ + { + "type": "void", + "name": "setDirective" + }, + { + "type": "String", + "name": "directive", + "defaultValue": "" + }] + }, { "type": "action", "tooltip": "Performs a copy of the node and its children, but not of the nodes in its fields", @@ -9487,26 +9384,1188 @@ }] }, { - "type": "action", - "tooltip": "Overload which accepts a list of join points", + "type": "action", + "tooltip": "Overload which accepts a list of join points", + "children": [ + { + "type": "joinpoint", + "name": "replaceWith" + }, + { + "type": "joinpoint[]", + "name": "node", + "defaultValue": "" + }] + }] + }, + { + "type": "joinpoint", + "name": "ompOrderedClause", + "extends": "ompClause" , + "children": [ + { + "type": "attribute", + "tooltip": "Returns an array with the children of the node", + "children": [ + { + "type": "joinpoint[]", + "name": "children" + }] + }, + { + "type": "attribute", + "tooltip": "String with the code represented by this node", + "children": [ + { + "type": "String", + "name": "code" + }] + }, + { + "type": "attribute", + "tooltip": "true if the given node is a descendant of this node", + "children": [ + { + "type": "Boolean", + "name": "contains" + }, + { + "type": "joinpoint", + "name": "jp", + "defaultValue": "" + }] + }, + { + "type": "attribute", + "tooltip": "Returns an array with the descendants of the node", + "children": [ + { + "type": "joinpoint[]", + "name": "descendants" + }] + }, + { + "type": "attribute", + "tooltip": "Looks for an ancestor joinpoint name, walking back on the AST", + "children": [ + { + "type": "joinpoint", + "name": "getAncestor" + }, + { + "type": "String", + "name": "type", + "defaultValue": "" + }] + }, + { + "type": "attribute", + "tooltip": "Returns the index of this join point in relation to its parent", + "children": [ + { + "type": "int", + "name": "indexOfSelf" + }] + }, + { + "type": "attribute", + "tooltip": "Returns the node that came before this node, or undefined if there is none", + "children": [ + { + "type": "joinpoint", + "name": "leftJp" + }] + }, + { + "type": "attribute", + "tooltip": "Returns the parent node in the AST, or undefined if it is the root node", + "children": [ + { + "type": "joinpoint", + "name": "parent" + }] + }, + { + "type": "attribute", + "tooltip": "Returns the node that comes after this node, or undefined if there is none", + "children": [ + { + "type": "joinpoint", + "name": "rightJp" + }] + }, + { + "type": "attribute", + "tooltip": "Returns the 'program' join point", + "children": [ + { + "type": "program", + "name": "root" + }] + }, + { + "type": "attribute", + "tooltip": "the nodes of the scope of the current join point. If this node has a body (e.g., loop, function) corresponds to the children of the body. Otherwise, returns an empty array", + "children": [ + { + "type": "joinpoint[]", + "name": "scopeNodes" + }] + }, + { + "type": "action", + "tooltip": "Performs a copy of the node and its children, but not of the nodes in its fields", + "children": [ + { + "type": "joinpoint", + "name": "copy" + }] + }, + { + "type": "action", + "tooltip": "Performs a copy of the node and its children, including the nodes in their fields (only the first level of field nodes, this function is not recursive)", + "children": [ + { + "type": "joinpoint", + "name": "deepCopy" + }] + }, + { + "type": "action", + "tooltip": "Removes node associated to the joinpoint from the AST", + "children": [ + { + "type": "joinpoint", + "name": "detach" + }] + }, + { + "type": "action", + "tooltip": "Inserts the given join point after this join point", + "children": [ + { + "type": "joinpoint", + "name": "insertAfter" + }, + { + "type": "joinpoint", + "name": "node", + "defaultValue": "" + }] + }, + { + "type": "action", + "tooltip": "Overload which accepts a string", + "children": [ + { + "type": "joinpoint", + "name": "insertAfter" + }, + { + "type": "String", + "name": "code", + "defaultValue": "" + }] + }, + { + "type": "action", + "tooltip": "Inserts the given join point before this join point", + "children": [ + { + "type": "joinpoint", + "name": "insertBefore" + }, + { + "type": "joinpoint", + "name": "node", + "defaultValue": "" + }] + }, + { + "type": "action", + "tooltip": "Overload which accepts a string", + "children": [ + { + "type": "joinpoint", + "name": "insertBefore" + }, + { + "type": "String", + "name": "node", + "defaultValue": "" + }] + }, + { + "type": "action", + "tooltip": "Replaces this node with the given node", + "children": [ + { + "type": "joinpoint", + "name": "replaceWith" + }, + { + "type": "joinpoint", + "name": "node", + "defaultValue": "" + }] + }, + { + "type": "action", + "tooltip": "Overload which accepts a list of join points", + "children": [ + { + "type": "joinpoint", + "name": "replaceWith" + }, + { + "type": "joinpoint[]", + "name": "node", + "defaultValue": "" + }] + }] + }, + { + "type": "joinpoint", + "name": "ompReductionClause", + "extends": "ompClause" , + "children": [ + { + "type": "attribute", + "tooltip": "Returns an array with the children of the node", + "children": [ + { + "type": "joinpoint[]", + "name": "children" + }] + }, + { + "type": "attribute", + "tooltip": "String with the code represented by this node", + "children": [ + { + "type": "String", + "name": "code" + }] + }, + { + "type": "attribute", + "tooltip": "true if the given node is a descendant of this node", + "children": [ + { + "type": "Boolean", + "name": "contains" + }, + { + "type": "joinpoint", + "name": "jp", + "defaultValue": "" + }] + }, + { + "type": "attribute", + "tooltip": "Returns an array with the descendants of the node", + "children": [ + { + "type": "joinpoint[]", + "name": "descendants" + }] + }, + { + "type": "attribute", + "tooltip": "Looks for an ancestor joinpoint name, walking back on the AST", + "children": [ + { + "type": "joinpoint", + "name": "getAncestor" + }, + { + "type": "String", + "name": "type", + "defaultValue": "" + }] + }, + { + "type": "attribute", + "tooltip": "Returns the index of this join point in relation to its parent", + "children": [ + { + "type": "int", + "name": "indexOfSelf" + }] + }, + { + "type": "attribute", + "tooltip": "Returns the node that came before this node, or undefined if there is none", + "children": [ + { + "type": "joinpoint", + "name": "leftJp" + }] + }, + { + "type": "attribute", + "tooltip": "Returns the parent node in the AST, or undefined if it is the root node", + "children": [ + { + "type": "joinpoint", + "name": "parent" + }] + }, + { + "type": "attribute", + "tooltip": "Returns the node that comes after this node, or undefined if there is none", + "children": [ + { + "type": "joinpoint", + "name": "rightJp" + }] + }, + { + "type": "attribute", + "tooltip": "Returns the 'program' join point", + "children": [ + { + "type": "program", + "name": "root" + }] + }, + { + "type": "attribute", + "tooltip": "the nodes of the scope of the current join point. If this node has a body (e.g., loop, function) corresponds to the children of the body. Otherwise, returns an empty array", + "children": [ + { + "type": "joinpoint[]", + "name": "scopeNodes" + }] + }, + { + "type": "action", + "tooltip": "Performs a copy of the node and its children, but not of the nodes in its fields", + "children": [ + { + "type": "joinpoint", + "name": "copy" + }] + }, + { + "type": "action", + "tooltip": "Performs a copy of the node and its children, including the nodes in their fields (only the first level of field nodes, this function is not recursive)", + "children": [ + { + "type": "joinpoint", + "name": "deepCopy" + }] + }, + { + "type": "action", + "tooltip": "Removes node associated to the joinpoint from the AST", + "children": [ + { + "type": "joinpoint", + "name": "detach" + }] + }, + { + "type": "action", + "tooltip": "Inserts the given join point after this join point", + "children": [ + { + "type": "joinpoint", + "name": "insertAfter" + }, + { + "type": "joinpoint", + "name": "node", + "defaultValue": "" + }] + }, + { + "type": "action", + "tooltip": "Overload which accepts a string", + "children": [ + { + "type": "joinpoint", + "name": "insertAfter" + }, + { + "type": "String", + "name": "code", + "defaultValue": "" + }] + }, + { + "type": "action", + "tooltip": "Inserts the given join point before this join point", + "children": [ + { + "type": "joinpoint", + "name": "insertBefore" + }, + { + "type": "joinpoint", + "name": "node", + "defaultValue": "" + }] + }, + { + "type": "action", + "tooltip": "Overload which accepts a string", + "children": [ + { + "type": "joinpoint", + "name": "insertBefore" + }, + { + "type": "String", + "name": "node", + "defaultValue": "" + }] + }, + { + "type": "action", + "tooltip": "Replaces this node with the given node", + "children": [ + { + "type": "joinpoint", + "name": "replaceWith" + }, + { + "type": "joinpoint", + "name": "node", + "defaultValue": "" + }] + }, + { + "type": "action", + "tooltip": "Overload which accepts a list of join points", + "children": [ + { + "type": "joinpoint", + "name": "replaceWith" + }, + { + "type": "joinpoint[]", + "name": "node", + "defaultValue": "" + }] + }] + }, + { + "type": "joinpoint", + "name": "otherAttrSpec", + "extends": "attrSpec" , + "children": [ + { + "type": "attribute", + "tooltip": "Returns an array with the children of the node", + "children": [ + { + "type": "joinpoint[]", + "name": "children" + }] + }, + { + "type": "attribute", + "tooltip": "String with the code represented by this node", + "children": [ + { + "type": "String", + "name": "code" + }] + }, + { + "type": "attribute", + "tooltip": "true if the given node is a descendant of this node", + "children": [ + { + "type": "Boolean", + "name": "contains" + }, + { + "type": "joinpoint", + "name": "jp", + "defaultValue": "" + }] + }, + { + "type": "attribute", + "tooltip": "Returns an array with the descendants of the node", + "children": [ + { + "type": "joinpoint[]", + "name": "descendants" + }] + }, + { + "type": "attribute", + "tooltip": "Looks for an ancestor joinpoint name, walking back on the AST", + "children": [ + { + "type": "joinpoint", + "name": "getAncestor" + }, + { + "type": "String", + "name": "type", + "defaultValue": "" + }] + }, + { + "type": "attribute", + "tooltip": "Returns the index of this join point in relation to its parent", + "children": [ + { + "type": "int", + "name": "indexOfSelf" + }] + }, + { + "type": "attribute", + "tooltip": "Returns the node that came before this node, or undefined if there is none", + "children": [ + { + "type": "joinpoint", + "name": "leftJp" + }] + }, + { + "type": "attribute", + "tooltip": "Returns the parent node in the AST, or undefined if it is the root node", + "children": [ + { + "type": "joinpoint", + "name": "parent" + }] + }, + { + "type": "attribute", + "tooltip": "Returns the node that comes after this node, or undefined if there is none", + "children": [ + { + "type": "joinpoint", + "name": "rightJp" + }] + }, + { + "type": "attribute", + "tooltip": "Returns the 'program' join point", + "children": [ + { + "type": "program", + "name": "root" + }] + }, + { + "type": "attribute", + "tooltip": "the nodes of the scope of the current join point. If this node has a body (e.g., loop, function) corresponds to the children of the body. Otherwise, returns an empty array", + "children": [ + { + "type": "joinpoint[]", + "name": "scopeNodes" + }] + }, + { + "type": "action", + "tooltip": "Performs a copy of the node and its children, but not of the nodes in its fields", + "children": [ + { + "type": "joinpoint", + "name": "copy" + }] + }, + { + "type": "action", + "tooltip": "Performs a copy of the node and its children, including the nodes in their fields (only the first level of field nodes, this function is not recursive)", + "children": [ + { + "type": "joinpoint", + "name": "deepCopy" + }] + }, + { + "type": "action", + "tooltip": "Removes node associated to the joinpoint from the AST", + "children": [ + { + "type": "joinpoint", + "name": "detach" + }] + }, + { + "type": "action", + "tooltip": "Inserts the given join point after this join point", + "children": [ + { + "type": "joinpoint", + "name": "insertAfter" + }, + { + "type": "joinpoint", + "name": "node", + "defaultValue": "" + }] + }, + { + "type": "action", + "tooltip": "Overload which accepts a string", + "children": [ + { + "type": "joinpoint", + "name": "insertAfter" + }, + { + "type": "String", + "name": "code", + "defaultValue": "" + }] + }, + { + "type": "action", + "tooltip": "Inserts the given join point before this join point", + "children": [ + { + "type": "joinpoint", + "name": "insertBefore" + }, + { + "type": "joinpoint", + "name": "node", + "defaultValue": "" + }] + }, + { + "type": "action", + "tooltip": "Overload which accepts a string", + "children": [ + { + "type": "joinpoint", + "name": "insertBefore" + }, + { + "type": "String", + "name": "node", + "defaultValue": "" + }] + }, + { + "type": "action", + "tooltip": "Replaces this node with the given node", + "children": [ + { + "type": "joinpoint", + "name": "replaceWith" + }, + { + "type": "joinpoint", + "name": "node", + "defaultValue": "" + }] + }, + { + "type": "action", + "tooltip": "Overload which accepts a list of join points", + "children": [ + { + "type": "joinpoint", + "name": "replaceWith" + }, + { + "type": "joinpoint[]", + "name": "node", + "defaultValue": "" + }] + }] + }, + { + "type": "joinpoint", + "name": "program", + "extends": "joinpoint" , + "tooltip": "Represents the complete program and is the top-most join point in the hierarchy", + "children": [ + { + "type": "attribute", + "tooltip": "Returns an array with the children of the node", + "children": [ + { + "type": "joinpoint[]", + "name": "children" + }] + }, + { + "type": "attribute", + "tooltip": "String with the code represented by this node", + "children": [ + { + "type": "String", + "name": "code" + }] + }, + { + "type": "attribute", + "tooltip": "true if the given node is a descendant of this node", + "children": [ + { + "type": "Boolean", + "name": "contains" + }, + { + "type": "joinpoint", + "name": "jp", + "defaultValue": "" + }] + }, + { + "type": "attribute", + "tooltip": "Returns an array with the descendants of the node", + "children": [ + { + "type": "joinpoint[]", + "name": "descendants" + }] + }, + { + "type": "attribute", + "tooltip": "Looks for an ancestor joinpoint name, walking back on the AST", + "children": [ + { + "type": "joinpoint", + "name": "getAncestor" + }, + { + "type": "String", + "name": "type", + "defaultValue": "" + }] + }, + { + "type": "attribute", + "tooltip": "Returns the index of this join point in relation to its parent", + "children": [ + { + "type": "int", + "name": "indexOfSelf" + }] + }, + { + "type": "attribute", + "tooltip": "Returns the node that came before this node, or undefined if there is none", + "children": [ + { + "type": "joinpoint", + "name": "leftJp" + }] + }, + { + "type": "attribute", + "tooltip": "Returns the parent node in the AST, or undefined if it is the root node", + "children": [ + { + "type": "joinpoint", + "name": "parent" + }] + }, + { + "type": "attribute", + "tooltip": "Returns the node that comes after this node, or undefined if there is none", + "children": [ + { + "type": "joinpoint", + "name": "rightJp" + }] + }, + { + "type": "attribute", + "tooltip": "Returns the 'program' join point", + "children": [ + { + "type": "program", + "name": "root" + }] + }, + { + "type": "attribute", + "tooltip": "the nodes of the scope of the current join point. If this node has a body (e.g., loop, function) corresponds to the children of the body. Otherwise, returns an empty array", + "children": [ + { + "type": "joinpoint[]", + "name": "scopeNodes" + }] + }, + { + "type": "action", + "tooltip": "Performs a copy of the node and its children, but not of the nodes in its fields", + "children": [ + { + "type": "joinpoint", + "name": "copy" + }] + }, + { + "type": "action", + "tooltip": "Performs a copy of the node and its children, including the nodes in their fields (only the first level of field nodes, this function is not recursive)", + "children": [ + { + "type": "joinpoint", + "name": "deepCopy" + }] + }, + { + "type": "action", + "tooltip": "Removes node associated to the joinpoint from the AST", + "children": [ + { + "type": "joinpoint", + "name": "detach" + }] + }, + { + "type": "action", + "tooltip": "Inserts the given join point after this join point", + "children": [ + { + "type": "joinpoint", + "name": "insertAfter" + }, + { + "type": "joinpoint", + "name": "node", + "defaultValue": "" + }] + }, + { + "type": "action", + "tooltip": "Overload which accepts a string", + "children": [ + { + "type": "joinpoint", + "name": "insertAfter" + }, + { + "type": "String", + "name": "code", + "defaultValue": "" + }] + }, + { + "type": "action", + "tooltip": "Inserts the given join point before this join point", + "children": [ + { + "type": "joinpoint", + "name": "insertBefore" + }, + { + "type": "joinpoint", + "name": "node", + "defaultValue": "" + }] + }, + { + "type": "action", + "tooltip": "Overload which accepts a string", + "children": [ + { + "type": "joinpoint", + "name": "insertBefore" + }, + { + "type": "String", + "name": "node", + "defaultValue": "" + }] + }, + { + "type": "action", + "tooltip": "Replaces this node with the given node", + "children": [ + { + "type": "joinpoint", + "name": "replaceWith" + }, + { + "type": "joinpoint", + "name": "node", + "defaultValue": "" + }] + }, + { + "type": "action", + "tooltip": "Overload which accepts a list of join points", + "children": [ + { + "type": "joinpoint", + "name": "replaceWith" + }, + { + "type": "joinpoint[]", + "name": "node", + "defaultValue": "" + }] + }] + }, + { + "type": "joinpoint", + "name": "programUnit", + "extends": "joinpoint" , + "children": [ + { + "type": "attribute", + "tooltip": "Returns an array with the children of the node", + "children": [ + { + "type": "joinpoint[]", + "name": "children" + }] + }, + { + "type": "attribute", + "tooltip": "String with the code represented by this node", + "children": [ + { + "type": "String", + "name": "code" + }] + }, + { + "type": "attribute", + "tooltip": "true if the given node is a descendant of this node", + "children": [ + { + "type": "Boolean", + "name": "contains" + }, + { + "type": "joinpoint", + "name": "jp", + "defaultValue": "" + }] + }, + { + "type": "attribute", + "tooltip": "Returns an array with the descendants of the node", + "children": [ + { + "type": "joinpoint[]", + "name": "descendants" + }] + }, + { + "type": "attribute", + "tooltip": "Looks for an ancestor joinpoint name, walking back on the AST", + "children": [ + { + "type": "joinpoint", + "name": "getAncestor" + }, + { + "type": "String", + "name": "type", + "defaultValue": "" + }] + }, + { + "type": "attribute", + "tooltip": "Returns the index of this join point in relation to its parent", + "children": [ + { + "type": "int", + "name": "indexOfSelf" + }] + }, + { + "type": "attribute", + "tooltip": "Returns the node that came before this node, or undefined if there is none", + "children": [ + { + "type": "joinpoint", + "name": "leftJp" + }] + }, + { + "type": "attribute", + "tooltip": "Returns the parent node in the AST, or undefined if it is the root node", + "children": [ + { + "type": "joinpoint", + "name": "parent" + }] + }, + { + "type": "attribute", + "tooltip": "Returns the node that comes after this node, or undefined if there is none", + "children": [ + { + "type": "joinpoint", + "name": "rightJp" + }] + }, + { + "type": "attribute", + "tooltip": "Returns the 'program' join point", + "children": [ + { + "type": "program", + "name": "root" + }] + }, + { + "type": "attribute", + "tooltip": "the nodes of the scope of the current join point. If this node has a body (e.g., loop, function) corresponds to the children of the body. Otherwise, returns an empty array", + "children": [ + { + "type": "joinpoint[]", + "name": "scopeNodes" + }] + }, + { + "type": "action", + "tooltip": "Performs a copy of the node and its children, but not of the nodes in its fields", + "children": [ + { + "type": "joinpoint", + "name": "copy" + }] + }, + { + "type": "action", + "tooltip": "Performs a copy of the node and its children, including the nodes in their fields (only the first level of field nodes, this function is not recursive)", + "children": [ + { + "type": "joinpoint", + "name": "deepCopy" + }] + }, + { + "type": "action", + "tooltip": "Removes node associated to the joinpoint from the AST", + "children": [ + { + "type": "joinpoint", + "name": "detach" + }] + }, + { + "type": "action", + "tooltip": "Inserts the given join point after this join point", + "children": [ + { + "type": "joinpoint", + "name": "insertAfter" + }, + { + "type": "joinpoint", + "name": "node", + "defaultValue": "" + }] + }, + { + "type": "action", + "tooltip": "Overload which accepts a string", + "children": [ + { + "type": "joinpoint", + "name": "insertAfter" + }, + { + "type": "String", + "name": "code", + "defaultValue": "" + }] + }, + { + "type": "action", + "tooltip": "Inserts the given join point before this join point", + "children": [ + { + "type": "joinpoint", + "name": "insertBefore" + }, + { + "type": "joinpoint", + "name": "node", + "defaultValue": "" + }] + }, + { + "type": "action", + "tooltip": "Overload which accepts a string", + "children": [ + { + "type": "joinpoint", + "name": "insertBefore" + }, + { + "type": "String", + "name": "node", + "defaultValue": "" + }] + }, + { + "type": "action", + "tooltip": "Replaces this node with the given node", + "children": [ + { + "type": "joinpoint", + "name": "replaceWith" + }, + { + "type": "joinpoint", + "name": "node", + "defaultValue": "" + }] + }, + { + "type": "action", + "tooltip": "Overload which accepts a list of join points", + "children": [ + { + "type": "joinpoint", + "name": "replaceWith" + }, + { + "type": "joinpoint[]", + "name": "node", + "defaultValue": "" + }] + }] + }, + { + "type": "joinpoint", + "name": "rangeLoopControl", + "extends": "loopControl" , + "children": [ + { + "type": "attribute", + "children": [ + { + "type": "expr", + "name": "lower" + }] + }, + { + "type": "attribute", + "children": [ + { + "type": "expr", + "name": "step" + }] + }, + { + "type": "attribute", + "children": [ + { + "type": "expr", + "name": "upper" + }] + }, + { + "type": "attribute", "children": [ { - "type": "joinpoint", - "name": "replaceWith" - }, - { - "type": "joinpoint[]", - "name": "node", - "defaultValue": "" + "type": "dataRef", + "name": "var" }] - }] - }, - { - "type": "joinpoint", - "name": "program", - "extends": "joinpoint" , - "tooltip": "Represents the complete program and is the top-most join point in the hierarchy", - "children": [ + }, { "type": "attribute", "tooltip": "Returns an array with the children of the node", @@ -9616,6 +10675,32 @@ "name": "scopeNodes" }] }, + { + "type": "action", + "children": [ + { + "type": "void", + "name": "setStep" + }, + { + "type": "expr", + "name": "step", + "defaultValue": "" + }] + }, + { + "type": "action", + "children": [ + { + "type": "void", + "name": "setUpper" + }, + { + "type": "expr", + "name": "upper", + "defaultValue": "" + }] + }, { "type": "action", "tooltip": "Performs a copy of the node and its children, but not of the nodes in its fields", @@ -9730,18 +10815,9 @@ }, { "type": "joinpoint", - "name": "programUnit", - "extends": "joinpoint" , + "name": "realLiteral", + "extends": "kindedLiteral" , "children": [ - { - "type": "attribute", - "tooltip": "Returns the unit's specification part", - "children": [ - { - "type": "specification", - "name": "specification" - }] - }, { "type": "attribute", "tooltip": "Returns an array with the children of the node", @@ -9965,41 +11041,9 @@ }, { "type": "joinpoint", - "name": "rangeLoopControl", - "extends": "loopControl" , + "name": "specification", + "extends": "joinpoint" , "children": [ - { - "type": "attribute", - "children": [ - { - "type": "expr", - "name": "lower" - }] - }, - { - "type": "attribute", - "children": [ - { - "type": "expr", - "name": "step" - }] - }, - { - "type": "attribute", - "children": [ - { - "type": "expr", - "name": "upper" - }] - }, - { - "type": "attribute", - "children": [ - { - "type": "dataRef", - "name": "var" - }] - }, { "type": "attribute", "tooltip": "Returns an array with the children of the node", @@ -10111,27 +11155,15 @@ }, { "type": "action", + "tooltip": "Adds a UseStmt to a specification part. The statement is inserted at the beginning.", "children": [ { "type": "void", - "name": "setStep" - }, - { - "type": "expr", - "name": "step", - "defaultValue": "" - }] - }, - { - "type": "action", - "children": [ - { - "type": "void", - "name": "setUpper" + "name": "addUseStmt" }, { - "type": "expr", - "name": "upper", + "type": "useStatement", + "name": "stmt", "defaultValue": "" }] }, @@ -10249,15 +11281,23 @@ }, { "type": "joinpoint", - "name": "realLiteral", - "extends": "literal" , + "name": "specificationStatement", + "extends": "statement" , "children": [ { "type": "attribute", "children": [ { - "type": "String", - "name": "literal" + "type": "Boolean", + "name": "isFirst" + }] + }, + { + "type": "attribute", + "children": [ + { + "type": "Boolean", + "name": "isLast" }] }, { @@ -10483,23 +11523,24 @@ }, { "type": "joinpoint", - "name": "specification", - "extends": "statementBlock" , + "name": "statement", + "extends": "joinpoint" , + "tooltip": "Represents a Fortran statement", "children": [ { "type": "attribute", "children": [ { - "type": "specificationStatement[]", - "name": "specificationStmts" + "type": "Boolean", + "name": "isFirst" }] }, { "type": "attribute", "children": [ { - "type": "statement[]", - "name": "stmts" + "type": "Boolean", + "name": "isLast" }] }, { @@ -10611,20 +11652,6 @@ "name": "scopeNodes" }] }, - { - "type": "action", - "tooltip": "Adds a UseStmt to a specification part. The statement is inserted at the beginning.", - "children": [ - { - "type": "void", - "name": "addUseStmt" - }, - { - "type": "useStatement", - "name": "stmt", - "defaultValue": "" - }] - }, { "type": "action", "tooltip": "Performs a copy of the node and its children, but not of the nodes in its fields", @@ -10739,25 +11766,9 @@ }, { "type": "joinpoint", - "name": "specificationStatement", - "extends": "statement" , + "name": "stringLiteral", + "extends": "kindedLiteral" , "children": [ - { - "type": "attribute", - "children": [ - { - "type": "Boolean", - "name": "isFirst" - }] - }, - { - "type": "attribute", - "children": [ - { - "type": "Boolean", - "name": "isLast" - }] - }, { "type": "attribute", "tooltip": "Returns an array with the children of the node", @@ -10981,24 +11992,16 @@ }, { "type": "joinpoint", - "name": "statement", + "name": "subprogram", "extends": "joinpoint" , - "tooltip": "Represents a Fortran statement", "children": [ { "type": "attribute", + "tooltip": "Returns the subprogram's specification part", "children": [ { - "type": "Boolean", - "name": "isFirst" - }] - }, - { - "type": "attribute", - "children": [ - { - "type": "Boolean", - "name": "isLast" + "type": "specification", + "name": "specification" }] }, { @@ -11224,15 +12227,24 @@ }, { "type": "joinpoint", - "name": "statementBlock", - "extends": "joinpoint" , + "name": "subroutine", + "extends": "internalSubprogram" , "children": [ { "type": "attribute", "children": [ { - "type": "statement[]", - "name": "stmts" + "type": "String", + "name": "name" + }] + }, + { + "type": "attribute", + "tooltip": "Returns the subprogram's specification part", + "children": [ + { + "type": "specification", + "name": "specification" }] }, { @@ -11458,15 +12470,39 @@ }, { "type": "joinpoint", - "name": "stringLiteral", - "extends": "literal" , + "name": "typeDeclarationStatement", + "extends": "specificationStatement" , "children": [ { "type": "attribute", "children": [ { - "type": "String", - "name": "literal" + "type": "attrSpec[]", + "name": "attrs" + }] + }, + { + "type": "attribute", + "children": [ + { + "type": "entityDecl[]", + "name": "decls" + }] + }, + { + "type": "attribute", + "children": [ + { + "type": "Boolean", + "name": "isFirst" + }] + }, + { + "type": "attribute", + "children": [ + { + "type": "Boolean", + "name": "isLast" }] }, { @@ -11692,8 +12728,8 @@ }, { "type": "joinpoint", - "name": "subroutine", - "extends": "programUnit" , + "name": "useOnlyStatement", + "extends": "useStatement" , "children": [ { "type": "attribute", @@ -11705,11 +12741,18 @@ }, { "type": "attribute", - "tooltip": "Returns the unit's specification part", "children": [ { - "type": "specification", - "name": "specification" + "type": "Boolean", + "name": "isFirst" + }] + }, + { + "type": "attribute", + "children": [ + { + "type": "Boolean", + "name": "isLast" }] }, { @@ -11935,23 +12978,15 @@ }, { "type": "joinpoint", - "name": "typeDeclarationStatement", - "extends": "specificationStatement" , + "name": "useRenameStatement", + "extends": "useStatement" , "children": [ { "type": "attribute", "children": [ { - "type": "attributeSpecifier[]", - "name": "attrs" - }] - }, - { - "type": "attribute", - "children": [ - { - "type": "entityDecl[]", - "name": "decls" + "type": "String", + "name": "moduleName" }] }, { diff --git a/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/importable/AstFactory.java b/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/importable/AstFactory.java index f61fb901..039e89a2 100644 --- a/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/importable/AstFactory.java +++ b/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/importable/AstFactory.java @@ -7,7 +7,7 @@ import pt.up.fe.specs.fortran.ast.nodes.loops.RangeLoopControl; import pt.up.fe.specs.fortran.ast.nodes.omp.clause.OmpClause; import pt.up.fe.specs.fortran.ast.nodes.omp.enums.OmpClauseKind; -import pt.up.fe.specs.fortran.ast.nodes.stmt.ExecutableStmt; +import pt.up.fe.specs.fortran.ast.nodes.program.construct.ExecPartConstruct; import pt.up.fe.specs.fortran.ast.nodes.stmt.loop.DoConstruct; import pt.up.fe.specs.fortran.weaver.FortranJoinpoints; import pt.up.fe.specs.fortran.weaver.FortranWeaver; @@ -18,7 +18,7 @@ import java.util.stream.Collectors; public class AstFactory { - public static AOmpLoopConstruct ompLoopConstruct(ADoStatement loop, Object[] args) { + public static AOmpLoopConstruct ompLoopConstruct(ADoConstruct loop, Object[] args) { List clauses = SpecsCollections.asListT(AOmpClause.class, args) .stream() .map(clause -> (OmpClause) clause.getNode()) @@ -50,8 +50,12 @@ public static ADataRef dataRef(String name) { return FortranJoinpoints.create(FortranWeaver.getFactory().dataRef(name), ADataRef.class); } - public static AUseStatement useStatement(String moduleName) { - return FortranJoinpoints.create(FortranWeaver.getFactory().useStmt(moduleName), AUseStatement.class); + public static AUseRenameStatement useRenameStatement(String moduleName) { + return FortranJoinpoints.create(FortranWeaver.getFactory().useRenameStmt(moduleName), AUseRenameStatement.class); + } + + public static AUseOnlyStatement useOnlyStatement(String moduleName) { + return FortranJoinpoints.create(FortranWeaver.getFactory().useOnlyStmt(moduleName), AUseOnlyStatement.class); } public static AOmpReductionClause ompReductionClause(String operator, Object[] args) { @@ -66,12 +70,12 @@ public static AOmpReductionClause ompReductionClause(String operator, Object[] a } public static AExecution execution(Object[] args) { - List stmts = SpecsCollections.asListT(AExecutableStatement.class, args) + List constructs = SpecsCollections.asListT(AExecPartConstruct.class, args) .stream() - .map(stmt -> (ExecutableStmt) stmt.getNode()) + .map(stmt -> (ExecPartConstruct) stmt.getNode()) .toList(); - return FortranJoinpoints.create(FortranWeaver.getFactory().execution(stmts), AExecution.class); + return FortranJoinpoints.create(FortranWeaver.getFactory().execution(constructs), AExecution.class); } public static AOmpOrderedClause ompOrderedClause(int value) { @@ -108,11 +112,11 @@ public static ARangeLoopControl rangeLoopControl(ADataRef var, AExpr lower, AExp ); } - public static ADoStatement doStatement(ARangeLoopControl control) { + public static ADoConstruct doStatement(ARangeLoopControl control) { RangeLoopControl ctrl = (RangeLoopControl) control.getNode(); return FortranJoinpoints.create( FortranWeaver.getFactory().doConstruct(ctrl), - ADoStatement.class + ADoConstruct.class ); } diff --git a/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FActionStatement.java b/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FActionStatement.java index b9380fbf..bdebdad5 100644 --- a/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FActionStatement.java +++ b/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FActionStatement.java @@ -9,7 +9,7 @@ public class FActionStatement extends AActionStatement { private final ActionStmt actionStmt; public FActionStatement(ActionStmt actionStmt) { - super(new FExecutableStatement(actionStmt)); + super(new FStatement(actionStmt)); this.actionStmt = actionStmt; } diff --git a/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FAttrSpec.java b/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FAttrSpec.java new file mode 100644 index 00000000..eab7d4f8 --- /dev/null +++ b/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FAttrSpec.java @@ -0,0 +1,18 @@ +package pt.up.fe.specs.fortran.weaver.joinpoints; + +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.type.attributes.AttrSpec; +import pt.up.fe.specs.fortran.weaver.abstracts.joinpoints.AAttrSpec; + +public class FAttrSpec extends AAttrSpec { + public final AttrSpec attrSpec; + + public FAttrSpec(AttrSpec attrSpec) { + this.attrSpec = attrSpec; + } + + @Override + public FortranNode getNode() { + return null; + } +} diff --git a/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FAttributeSpecifier.java b/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FAttributeSpecifier.java deleted file mode 100644 index a1a5ea8c..00000000 --- a/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FAttributeSpecifier.java +++ /dev/null @@ -1,19 +0,0 @@ -package pt.up.fe.specs.fortran.weaver.joinpoints; - -import pt.up.fe.specs.fortran.ast.nodes.FortranNode; -import pt.up.fe.specs.fortran.ast.nodes.type.attributes.AttributeSpecifier; -import pt.up.fe.specs.fortran.weaver.abstracts.joinpoints.AAttributeSpecifier; - -public class FAttributeSpecifier extends AAttributeSpecifier { - - public final AttributeSpecifier attributeSpecifier; - - public FAttributeSpecifier(AttributeSpecifier attributeSpecifier) { - this.attributeSpecifier = attributeSpecifier; - } - - @Override - public FortranNode getNode() { - return null; - } -} diff --git a/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FCompilerDirective.java b/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FCompilerDirective.java index 75f3f408..1911a04d 100644 --- a/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FCompilerDirective.java +++ b/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FCompilerDirective.java @@ -4,7 +4,6 @@ import pt.up.fe.specs.fortran.ast.nodes.stmt.CompilerDirective; import pt.up.fe.specs.fortran.weaver.FortranJoinpoints; import pt.up.fe.specs.fortran.weaver.abstracts.joinpoints.ACompilerDirective; -import pt.up.fe.specs.fortran.weaver.abstracts.joinpoints.AExpr; import pt.up.fe.specs.fortran.weaver.abstracts.joinpoints.ANameValue; public class FCompilerDirective extends ACompilerDirective { @@ -12,7 +11,7 @@ public class FCompilerDirective extends ACompilerDirective { private final CompilerDirective compilerDirective; public FCompilerDirective(CompilerDirective compilerDirective) { - super(new FExecutableStatement(compilerDirective)); + super(new FStatement(compilerDirective)); this.compilerDirective = compilerDirective; } diff --git a/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FDoConstruct.java b/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FDoConstruct.java index 167572c4..006bdb13 100644 --- a/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FDoConstruct.java +++ b/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FDoConstruct.java @@ -3,18 +3,18 @@ import pt.up.fe.specs.fortran.ast.nodes.FortranNode; import pt.up.fe.specs.fortran.ast.nodes.stmt.loop.DoConstruct; import pt.up.fe.specs.fortran.weaver.FortranJoinpoints; -import pt.up.fe.specs.fortran.weaver.abstracts.joinpoints.ADoStatement; +import pt.up.fe.specs.fortran.weaver.abstracts.joinpoints.ADoConstruct; import pt.up.fe.specs.fortran.weaver.abstracts.joinpoints.AExecution; import pt.up.fe.specs.fortran.weaver.abstracts.joinpoints.ALoopControl; import java.util.Objects; -public class FDoConstruct extends ADoStatement { +public class FDoConstruct extends ADoConstruct { private final DoConstruct doConstruct; public FDoConstruct(DoConstruct doConstruct) { - super(new FExecutableStatement(doConstruct)); + super(new FExecConstruct(doConstruct)); this.doConstruct = doConstruct; } @@ -34,14 +34,14 @@ public String getKindImpl() { } @Override - public ADoStatement copyScopeImpl() { + public ADoConstruct copyScopeImpl() { DoConstruct copiedDoStmt = (DoConstruct) doConstruct.copy(); copiedDoStmt.getBody().removeChildren(); return new FDoConstruct(copiedDoStmt); } @Override - public boolean sameScopeImpl(ADoStatement loop) { + public boolean sameScopeImpl(ADoConstruct loop) { if (!Objects.equals(this.getKindImpl(), loop.getKindImpl())) { return false; } diff --git a/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FElseBlock.java b/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FElseBlock.java index 27ee8e2c..c148a14e 100644 --- a/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FElseBlock.java +++ b/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FElseBlock.java @@ -4,7 +4,7 @@ import pt.up.fe.specs.fortran.ast.nodes.stmt.ifstmt.ElseBlock; import pt.up.fe.specs.fortran.weaver.FortranJoinpoints; import pt.up.fe.specs.fortran.weaver.abstracts.joinpoints.AElseBlock; -import pt.up.fe.specs.fortran.weaver.abstracts.joinpoints.AStatementBlock; +import pt.up.fe.specs.fortran.weaver.abstracts.joinpoints.AExecBlock; public class FElseBlock extends AElseBlock { @@ -15,8 +15,8 @@ public FElseBlock(ElseBlock elseBlock) { } @Override - public AStatementBlock getBodyImpl() { - return FortranJoinpoints.create(elseBlock.getBlock(), AStatementBlock.class); + public AExecBlock getBodyImpl() { + return FortranJoinpoints.create(elseBlock.getBlock(), AExecBlock.class); } @Override diff --git a/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FElseIfBlock.java b/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FElseIfBlock.java index bcad5ab3..0d0f9257 100644 --- a/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FElseIfBlock.java +++ b/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FElseIfBlock.java @@ -5,7 +5,7 @@ import pt.up.fe.specs.fortran.weaver.FortranJoinpoints; import pt.up.fe.specs.fortran.weaver.abstracts.joinpoints.AElseIfBlock; import pt.up.fe.specs.fortran.weaver.abstracts.joinpoints.AElseIfStatement; -import pt.up.fe.specs.fortran.weaver.abstracts.joinpoints.AStatementBlock; +import pt.up.fe.specs.fortran.weaver.abstracts.joinpoints.AExecBlock; public class FElseIfBlock extends AElseIfBlock { @@ -16,8 +16,8 @@ public FElseIfBlock(ElseIfBlock elseIfBlock) { } @Override - public AStatementBlock getBodyImpl() { - return FortranJoinpoints.create(elseIfBlock.getBlock(), AStatementBlock.class); + public AExecBlock getBodyImpl() { + return FortranJoinpoints.create(elseIfBlock.getBlock(), AExecBlock.class); } @Override diff --git a/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FExecBlock.java b/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FExecBlock.java new file mode 100644 index 00000000..78de61a2 --- /dev/null +++ b/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FExecBlock.java @@ -0,0 +1,28 @@ +package pt.up.fe.specs.fortran.weaver.joinpoints; + +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.program.ExecBlock; +import pt.up.fe.specs.fortran.weaver.FortranJoinpoints; +import pt.up.fe.specs.fortran.weaver.abstracts.joinpoints.AExecBlock; +import pt.up.fe.specs.fortran.weaver.abstracts.joinpoints.AExecPartConstruct; + +public class FExecBlock extends AExecBlock { + private final ExecBlock execBlock; + + public FExecBlock(ExecBlock execBlock) { + this.execBlock = execBlock; + } + + @Override + public AExecPartConstruct[] getConstructsArrayImpl() { + return (AExecPartConstruct[]) execBlock.getConstructs() + .stream() + .map(FortranJoinpoints::create) + .toArray(); + } + + @Override + public FortranNode getNode() { + return execBlock; + } +} diff --git a/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FExecConstruct.java b/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FExecConstruct.java new file mode 100644 index 00000000..d9982532 --- /dev/null +++ b/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FExecConstruct.java @@ -0,0 +1,19 @@ +package pt.up.fe.specs.fortran.weaver.joinpoints; + +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.program.construct.ExecConstruct; +import pt.up.fe.specs.fortran.weaver.abstracts.joinpoints.AExecConstruct; + +public class FExecConstruct extends AExecConstruct { + public final ExecConstruct executableConstruct; + + public FExecConstruct(ExecConstruct executableConstruct) { + super(new FExecPartConstruct(executableConstruct)); + this.executableConstruct = executableConstruct; + } + + @Override + public FortranNode getNode() { + return executableConstruct; + } +} diff --git a/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FExecPartConstruct.java b/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FExecPartConstruct.java new file mode 100644 index 00000000..367d8386 --- /dev/null +++ b/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FExecPartConstruct.java @@ -0,0 +1,18 @@ +package pt.up.fe.specs.fortran.weaver.joinpoints; + +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.program.construct.ExecPartConstruct; +import pt.up.fe.specs.fortran.weaver.abstracts.joinpoints.AExecPartConstruct; + +public class FExecPartConstruct extends AExecPartConstruct { + private final ExecPartConstruct execPartConstruct; + + public FExecPartConstruct(ExecPartConstruct execPartConstruct) { + this.execPartConstruct = execPartConstruct; + } + + @Override + public FortranNode getNode() { + return execPartConstruct; + } +} diff --git a/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FExecutableStatement.java b/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FExecutableStatement.java deleted file mode 100644 index b168dfd7..00000000 --- a/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FExecutableStatement.java +++ /dev/null @@ -1,20 +0,0 @@ -package pt.up.fe.specs.fortran.weaver.joinpoints; - -import pt.up.fe.specs.fortran.ast.nodes.FortranNode; -import pt.up.fe.specs.fortran.ast.nodes.stmt.ExecutableStmt; -import pt.up.fe.specs.fortran.weaver.abstracts.joinpoints.AExecutableStatement; - -public class FExecutableStatement extends AExecutableStatement { - - private final ExecutableStmt executableStmt; - - public FExecutableStatement(ExecutableStmt executableStmt) { - super(new FStatement(executableStmt)); - this.executableStmt = executableStmt; - } - - @Override - public FortranNode getNode() { - return executableStmt; - } -} diff --git a/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FExecution.java b/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FExecution.java index 73825203..594fa14f 100644 --- a/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FExecution.java +++ b/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FExecution.java @@ -2,38 +2,25 @@ import pt.up.fe.specs.fortran.ast.nodes.FortranNode; import pt.up.fe.specs.fortran.ast.nodes.program.Execution; -import pt.up.fe.specs.fortran.weaver.FortranJoinpoints; -import pt.up.fe.specs.fortran.weaver.abstracts.joinpoints.AExecutableStatement; +import pt.up.fe.specs.fortran.weaver.abstracts.joinpoints.AExecPartConstruct; import pt.up.fe.specs.fortran.weaver.abstracts.joinpoints.AExecution; -import pt.up.fe.specs.fortran.weaver.abstracts.joinpoints.AStatement; - -import java.util.stream.Collectors; public class FExecution extends AExecution { private final Execution execution; public FExecution(Execution execution) { - super(new FStatementBlock(execution)); + super(new FExecBlock(execution)); this.execution = execution; } @Override - public AExecutableStatement[] getExecutableStmtsArrayImpl() { - return execution.getStatements() - .stream() - .map(FortranJoinpoints::create) - .toList() - .toArray(new AExecutableStatement[0]); - } - - @Override - public void insertBeginImpl(AExecutableStatement stmt) { + public void insertBeginImpl(AExecPartConstruct stmt) { execution.addChild(0, stmt.getNode()); } @Override - public void insertEndImpl(AExecutableStatement stmt) { + public void insertEndImpl(AExecPartConstruct stmt) { execution.addChild(stmt.getNode()); } diff --git a/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FExprInitialization.java b/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FExprInitialization.java index ae74463c..ce1923f5 100644 --- a/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FExprInitialization.java +++ b/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FExprInitialization.java @@ -1,7 +1,7 @@ package pt.up.fe.specs.fortran.weaver.joinpoints; import pt.up.fe.specs.fortran.ast.nodes.FortranNode; -import pt.up.fe.specs.fortran.ast.nodes.decl.ExprInitialization; +import pt.up.fe.specs.fortran.ast.nodes.decl.init.ExprInitialization; import pt.up.fe.specs.fortran.weaver.FortranJoinpoints; import pt.up.fe.specs.fortran.weaver.abstracts.joinpoints.AExpr; import pt.up.fe.specs.fortran.weaver.abstracts.joinpoints.AExprInitialization; diff --git a/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FIfConstruct.java b/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FIfConstruct.java index 6d0e8357..d192404d 100644 --- a/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FIfConstruct.java +++ b/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FIfConstruct.java @@ -3,14 +3,17 @@ import pt.up.fe.specs.fortran.ast.nodes.FortranNode; import pt.up.fe.specs.fortran.ast.nodes.stmt.ifstmt.IfConstruct; import pt.up.fe.specs.fortran.weaver.FortranJoinpoints; -import pt.up.fe.specs.fortran.weaver.abstracts.joinpoints.*; +import pt.up.fe.specs.fortran.weaver.abstracts.joinpoints.AElseBlock; +import pt.up.fe.specs.fortran.weaver.abstracts.joinpoints.AElseIfBlock; +import pt.up.fe.specs.fortran.weaver.abstracts.joinpoints.AIfConstruct; +import pt.up.fe.specs.fortran.weaver.abstracts.joinpoints.AIfThenBlock; public class FIfConstruct extends AIfConstruct { public final IfConstruct ifConstruct; public FIfConstruct(IfConstruct ifConstruct) { - super(new FExecutableStatement(ifConstruct)); + super(new FExecConstruct(ifConstruct)); this.ifConstruct = ifConstruct; } diff --git a/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FIfThenBlock.java b/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FIfThenBlock.java index fda9d604..2ae9a8f7 100644 --- a/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FIfThenBlock.java +++ b/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FIfThenBlock.java @@ -3,9 +3,9 @@ import pt.up.fe.specs.fortran.ast.nodes.FortranNode; import pt.up.fe.specs.fortran.ast.nodes.stmt.ifstmt.IfThenBlock; import pt.up.fe.specs.fortran.weaver.FortranJoinpoints; +import pt.up.fe.specs.fortran.weaver.abstracts.joinpoints.AExecBlock; import pt.up.fe.specs.fortran.weaver.abstracts.joinpoints.AIfThenBlock; import pt.up.fe.specs.fortran.weaver.abstracts.joinpoints.AIfThenStatement; -import pt.up.fe.specs.fortran.weaver.abstracts.joinpoints.AStatementBlock; public class FIfThenBlock extends AIfThenBlock { @@ -16,8 +16,8 @@ public FIfThenBlock(IfThenBlock ifThenBlock) { } @Override - public AStatementBlock getBodyImpl() { - return FortranJoinpoints.create(ifThenBlock.getBlock(), AStatementBlock.class); + public AExecBlock getBodyImpl() { + return FortranJoinpoints.create(ifThenBlock.getBlock(), AExecBlock.class); } @Override diff --git a/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FInitialization.java b/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FInitialization.java index 966e819b..47d98f0f 100644 --- a/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FInitialization.java +++ b/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FInitialization.java @@ -1,7 +1,7 @@ package pt.up.fe.specs.fortran.weaver.joinpoints; import pt.up.fe.specs.fortran.ast.nodes.FortranNode; -import pt.up.fe.specs.fortran.ast.nodes.decl.Initialization; +import pt.up.fe.specs.fortran.ast.nodes.decl.init.Initialization; import pt.up.fe.specs.fortran.weaver.abstracts.joinpoints.AInitialization; public class FInitialization extends AInitialization { diff --git a/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FIntLiteral.java b/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FIntLiteral.java index 2bc8e158..5790c850 100644 --- a/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FIntLiteral.java +++ b/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FIntLiteral.java @@ -9,7 +9,7 @@ public class FIntLiteral extends AIntLiteral { private final IntLiteral intLiteral; public FIntLiteral(IntLiteral intLiteral) { - super(new FLiteral(intLiteral)); + super(new FKindedLiteral(intLiteral)); this.intLiteral = intLiteral; } diff --git a/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FInternalSubprogram.java b/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FInternalSubprogram.java new file mode 100644 index 00000000..92802c82 --- /dev/null +++ b/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FInternalSubprogram.java @@ -0,0 +1,20 @@ +package pt.up.fe.specs.fortran.weaver.joinpoints; + +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.program.subprogram.InternalSubprogram; +import pt.up.fe.specs.fortran.weaver.abstracts.joinpoints.AInternalSubprogram; + +public class FInternalSubprogram extends AInternalSubprogram { + private final InternalSubprogram internalSubprogram; + + public FInternalSubprogram(InternalSubprogram internalSubprogram) { + super(new FSubprogram(internalSubprogram)); + + this.internalSubprogram = internalSubprogram; + } + + @Override + public FortranNode getNode() { + return internalSubprogram; + } +} diff --git a/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FKeywordAttributeSpecifier.java b/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FKeywordAttributeSpecifier.java deleted file mode 100644 index f1b83914..00000000 --- a/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FKeywordAttributeSpecifier.java +++ /dev/null @@ -1,20 +0,0 @@ -package pt.up.fe.specs.fortran.weaver.joinpoints; - -import pt.up.fe.specs.fortran.ast.nodes.FortranNode; -import pt.up.fe.specs.fortran.ast.nodes.type.attributes.KeywordAttributeSpecifier; -import pt.up.fe.specs.fortran.weaver.abstracts.joinpoints.AKeywordAttributeSpecifier; - -public class FKeywordAttributeSpecifier extends AKeywordAttributeSpecifier { - - public final KeywordAttributeSpecifier keywordAttributeSpecifier; - - public FKeywordAttributeSpecifier(KeywordAttributeSpecifier keywordAttributeSpecifier) { - super(new FAttributeSpecifier(keywordAttributeSpecifier)); - this.keywordAttributeSpecifier = keywordAttributeSpecifier; - } - - @Override - public FortranNode getNode() { - return keywordAttributeSpecifier; - } -} diff --git a/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FKindedLiteral.java b/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FKindedLiteral.java new file mode 100644 index 00000000..d8d0365e --- /dev/null +++ b/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FKindedLiteral.java @@ -0,0 +1,19 @@ +package pt.up.fe.specs.fortran.weaver.joinpoints; + +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.expr.KindedLiteral; +import pt.up.fe.specs.fortran.weaver.abstracts.joinpoints.AKindedLiteral; + +public class FKindedLiteral extends AKindedLiteral { + private final KindedLiteral kindedLiteral; + + public FKindedLiteral(KindedLiteral kindedLiteral) { + super(new FLiteral(kindedLiteral)); + this.kindedLiteral = kindedLiteral; + } + + @Override + public FortranNode getNode() { + return kindedLiteral; + } +} diff --git a/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FLiteral.java b/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FLiteral.java index f4c24ba6..c4593251 100644 --- a/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FLiteral.java +++ b/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FLiteral.java @@ -14,11 +14,6 @@ public FLiteral(Literal literal) { this.literal = literal; } - @Override - public String getLiteralImpl() { - return literal.getLiteral(); - } - @Override public FortranNode getNode() { return literal; diff --git a/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FMainProgram.java b/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FMainProgram.java index a331f2bf..50828f60 100644 --- a/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FMainProgram.java +++ b/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FMainProgram.java @@ -1,11 +1,12 @@ package pt.up.fe.specs.fortran.weaver.joinpoints; import pt.up.fe.specs.fortran.ast.nodes.FortranNode; -import pt.up.fe.specs.fortran.ast.nodes.program.MainProgram; +import pt.up.fe.specs.fortran.ast.nodes.program.unit.MainProgram; +import pt.up.fe.specs.fortran.weaver.FortranJoinpoints; import pt.up.fe.specs.fortran.weaver.abstracts.joinpoints.AMainProgram; +import pt.up.fe.specs.fortran.weaver.abstracts.joinpoints.ASpecification; public class FMainProgram extends AMainProgram { - public final MainProgram mainProgram; public FMainProgram(MainProgram mainProgram) { @@ -15,6 +16,11 @@ public FMainProgram(MainProgram mainProgram) { @Override public FortranNode getNode() { - return null; + return mainProgram; + } + + @Override + public ASpecification getSpecificationImpl() { + return FortranJoinpoints.create(mainProgram.getSpecification(), ASpecification.class); } } diff --git a/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FOmpBlockConstruct.java b/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FOmpBlockConstruct.java index 75ec0d84..15a0cb8c 100644 --- a/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FOmpBlockConstruct.java +++ b/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FOmpBlockConstruct.java @@ -2,8 +2,8 @@ import pt.up.fe.specs.fortran.ast.nodes.FortranNode; import pt.up.fe.specs.fortran.ast.nodes.omp.OmpBlockConstruct; -import pt.up.fe.specs.fortran.ast.nodes.program.Execution; -import pt.up.fe.specs.fortran.weaver.abstracts.joinpoints.AExecution; +import pt.up.fe.specs.fortran.ast.nodes.program.ExecBlock; +import pt.up.fe.specs.fortran.weaver.abstracts.joinpoints.AExecBlock; import pt.up.fe.specs.fortran.weaver.abstracts.joinpoints.AOmpBlockConstruct; public class FOmpBlockConstruct extends AOmpBlockConstruct { @@ -16,8 +16,8 @@ public FOmpBlockConstruct(OmpBlockConstruct ompBlockConstruct) { } @Override - public void setBodyImpl(AExecution body) { - ompBlockConstruct.setBody((Execution) body.getNode()); + public void setBodyImpl(AExecBlock body) { + ompBlockConstruct.setBody((ExecBlock) body.getNode()); } @Override diff --git a/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FOmpConstruct.java b/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FOmpConstruct.java index d6332fb1..7a90f0ab 100644 --- a/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FOmpConstruct.java +++ b/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FOmpConstruct.java @@ -5,7 +5,6 @@ import pt.up.fe.specs.fortran.ast.nodes.omp.clause.OmpClause; import pt.up.fe.specs.fortran.ast.nodes.omp.enums.OmpDirectiveKind; import pt.up.fe.specs.fortran.weaver.FortranJoinpoints; -import pt.up.fe.specs.fortran.weaver.abstracts.joinpoints.AExpr; import pt.up.fe.specs.fortran.weaver.abstracts.joinpoints.AOmpClause; import pt.up.fe.specs.fortran.weaver.abstracts.joinpoints.AOmpConstruct; @@ -17,7 +16,7 @@ public class FOmpConstruct extends AOmpConstruct { public final OmpConstruct ompConstruct; public FOmpConstruct(OmpConstruct ompConstruct) { - super(new FExecutableStatement(ompConstruct)); + super(new FExecConstruct(ompConstruct)); this.ompConstruct = ompConstruct; } diff --git a/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FOmpLoopConstruct.java b/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FOmpLoopConstruct.java index bd6471f6..b23f4813 100644 --- a/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FOmpLoopConstruct.java +++ b/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FOmpLoopConstruct.java @@ -3,7 +3,7 @@ import pt.up.fe.specs.fortran.ast.nodes.FortranNode; import pt.up.fe.specs.fortran.ast.nodes.omp.OmpLoopConstruct; import pt.up.fe.specs.fortran.ast.nodes.stmt.loop.DoConstruct; -import pt.up.fe.specs.fortran.weaver.abstracts.joinpoints.ADoStatement; +import pt.up.fe.specs.fortran.weaver.abstracts.joinpoints.ADoConstruct; import pt.up.fe.specs.fortran.weaver.abstracts.joinpoints.AOmpLoopConstruct; public class FOmpLoopConstruct extends AOmpLoopConstruct { @@ -15,8 +15,7 @@ public FOmpLoopConstruct(OmpLoopConstruct ompLoopConstruct) { this.ompLoopConstruct = ompLoopConstruct; } - @Override - public void setLoopImpl(ADoStatement loop) { + public void setLoopImpl(ADoConstruct loop) { ompLoopConstruct.setLoop((DoConstruct) loop.getNode()); } diff --git a/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FOtherAttrSpec.java b/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FOtherAttrSpec.java new file mode 100644 index 00000000..c28b4f08 --- /dev/null +++ b/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FOtherAttrSpec.java @@ -0,0 +1,20 @@ +package pt.up.fe.specs.fortran.weaver.joinpoints; + +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.type.attributes.OtherAttrSpec; +import pt.up.fe.specs.fortran.weaver.abstracts.joinpoints.AOtherAttrSpec; + +public class FOtherAttrSpec extends AOtherAttrSpec { + private final OtherAttrSpec otherAttrSpec; + + public FOtherAttrSpec(OtherAttrSpec otherAttrSpec) { + super(new FAttrSpec(otherAttrSpec)); + + this.otherAttrSpec = otherAttrSpec; + } + + @Override + public FortranNode getNode() { + return otherAttrSpec; + } +} diff --git a/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FParameterKeyword.java b/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FParameterKeyword.java deleted file mode 100644 index be8c4ac3..00000000 --- a/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FParameterKeyword.java +++ /dev/null @@ -1,20 +0,0 @@ -package pt.up.fe.specs.fortran.weaver.joinpoints; - -import pt.up.fe.specs.fortran.ast.nodes.FortranNode; -import pt.up.fe.specs.fortran.ast.nodes.type.attributes.ParameterKeyword; -import pt.up.fe.specs.fortran.weaver.abstracts.joinpoints.AParameterKeyword; - -public class FParameterKeyword extends AParameterKeyword { - - public final ParameterKeyword parameterKeyword; - - public FParameterKeyword(ParameterKeyword parameterKeyword) { - super(new FKeywordAttributeSpecifier(parameterKeyword)); - this.parameterKeyword = parameterKeyword; - } - - @Override - public FortranNode getNode() { - return parameterKeyword; - } -} diff --git a/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FProgramUnit.java b/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FProgramUnit.java index 8286d049..baa08cbc 100644 --- a/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FProgramUnit.java +++ b/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FProgramUnit.java @@ -1,10 +1,8 @@ package pt.up.fe.specs.fortran.weaver.joinpoints; import pt.up.fe.specs.fortran.ast.nodes.FortranNode; -import pt.up.fe.specs.fortran.ast.nodes.program.ProgramUnit; -import pt.up.fe.specs.fortran.weaver.FortranJoinpoints; +import pt.up.fe.specs.fortran.ast.nodes.program.unit.ProgramUnit; import pt.up.fe.specs.fortran.weaver.abstracts.joinpoints.AProgramUnit; -import pt.up.fe.specs.fortran.weaver.abstracts.joinpoints.ASpecification; public class FProgramUnit extends AProgramUnit { @@ -14,11 +12,6 @@ public FProgramUnit(ProgramUnit programUnit) { this.programUnit = programUnit; } - @Override - public ASpecification getSpecificationImpl() { - return FortranJoinpoints.create(programUnit.getSpecification(), ASpecification.class); - } - @Override public FortranNode getNode() { return programUnit; diff --git a/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FRealLiteral.java b/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FRealLiteral.java index e56c7e12..b5dc7c88 100644 --- a/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FRealLiteral.java +++ b/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FRealLiteral.java @@ -5,11 +5,10 @@ import pt.up.fe.specs.fortran.weaver.abstracts.joinpoints.ARealLiteral; public class FRealLiteral extends ARealLiteral { - private final RealLiteral realLiteral; public FRealLiteral(RealLiteral realLiteral) { - super(new FLiteral(realLiteral)); + super(new FKindedLiteral(realLiteral)); this.realLiteral = realLiteral; } diff --git a/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FSpecification.java b/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FSpecification.java index 6c22f902..ec121be0 100644 --- a/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FSpecification.java +++ b/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FSpecification.java @@ -2,31 +2,17 @@ import pt.up.fe.specs.fortran.ast.nodes.FortranNode; import pt.up.fe.specs.fortran.ast.nodes.program.Specification; -import pt.up.fe.specs.fortran.ast.nodes.stmt.UseStmt; -import pt.up.fe.specs.fortran.weaver.FortranJoinpoints; -import pt.up.fe.specs.fortran.weaver.abstracts.joinpoints.AExpr; +import pt.up.fe.specs.fortran.ast.nodes.stmt.usestmt.UseStmt; import pt.up.fe.specs.fortran.weaver.abstracts.joinpoints.ASpecification; -import pt.up.fe.specs.fortran.weaver.abstracts.joinpoints.ASpecificationStatement; import pt.up.fe.specs.fortran.weaver.abstracts.joinpoints.AUseStatement; public class FSpecification extends ASpecification { - public final Specification specification; public FSpecification(Specification specification) { - super(new FStatementBlock(specification)); this.specification = specification; } - @Override - public ASpecificationStatement[] getSpecificationStmtsArrayImpl() { - return specification.getSpecificationStatements() - .stream() - .map(FortranJoinpoints::create) - .toList() - .toArray(new ASpecificationStatement[0]); - } - @Override public void addUseStmtImpl(AUseStatement stmt) { specification.addUseStmt((UseStmt) stmt.getNode()); diff --git a/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FSpecificationStatement.java b/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FSpecificationStatement.java index 818eef0e..8fede0ae 100644 --- a/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FSpecificationStatement.java +++ b/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FSpecificationStatement.java @@ -1,20 +1,20 @@ package pt.up.fe.specs.fortran.weaver.joinpoints; import pt.up.fe.specs.fortran.ast.nodes.FortranNode; -import pt.up.fe.specs.fortran.ast.nodes.stmt.SpecificationStmt; +import pt.up.fe.specs.fortran.ast.nodes.stmt.SpecStmt; import pt.up.fe.specs.fortran.weaver.abstracts.joinpoints.ASpecificationStatement; public class FSpecificationStatement extends ASpecificationStatement { - public final SpecificationStmt specificationStmt; + public final SpecStmt specStmt; - public FSpecificationStatement(SpecificationStmt specificationStmt) { - super(new FStatement(specificationStmt)); - this.specificationStmt = specificationStmt; + public FSpecificationStatement(SpecStmt specStmt) { + super(new FStatement(specStmt)); + this.specStmt = specStmt; } @Override public FortranNode getNode() { - return specificationStmt; + return specStmt; } } diff --git a/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FStatementBlock.java b/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FStatementBlock.java deleted file mode 100644 index 2de65620..00000000 --- a/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FStatementBlock.java +++ /dev/null @@ -1,30 +0,0 @@ -package pt.up.fe.specs.fortran.weaver.joinpoints; - -import pt.up.fe.specs.fortran.ast.nodes.FortranNode; -import pt.up.fe.specs.fortran.ast.nodes.program.StmtBlock; -import pt.up.fe.specs.fortran.weaver.FortranJoinpoints; -import pt.up.fe.specs.fortran.weaver.abstracts.joinpoints.AExpr; -import pt.up.fe.specs.fortran.weaver.abstracts.joinpoints.AStatement; -import pt.up.fe.specs.fortran.weaver.abstracts.joinpoints.AStatementBlock; - -public class FStatementBlock extends AStatementBlock { - - private final StmtBlock stmtBlock; - - public FStatementBlock(StmtBlock stmtBlock) { - this.stmtBlock = stmtBlock; - } - - @Override - public AStatement[] getStmtsArrayImpl() { - return (AStatement[]) stmtBlock.getStatements() - .stream() - .map(FortranJoinpoints::create) - .toArray(); - } - - @Override - public FortranNode getNode() { - return stmtBlock; - } -} diff --git a/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FStringLiteral.java b/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FStringLiteral.java index 13e62664..f19f000e 100644 --- a/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FStringLiteral.java +++ b/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FStringLiteral.java @@ -9,7 +9,7 @@ public class FStringLiteral extends AStringLiteral { private final StringLiteral stringLiteral; public FStringLiteral(StringLiteral stringLiteral) { - super(new FLiteral(stringLiteral)); + super(new FKindedLiteral(stringLiteral)); this.stringLiteral = stringLiteral; } diff --git a/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FSubprogram.java b/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FSubprogram.java new file mode 100644 index 00000000..943d6016 --- /dev/null +++ b/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FSubprogram.java @@ -0,0 +1,25 @@ +package pt.up.fe.specs.fortran.weaver.joinpoints; + +import pt.up.fe.specs.fortran.ast.nodes.FortranNode; +import pt.up.fe.specs.fortran.ast.nodes.program.subprogram.Subprogram; +import pt.up.fe.specs.fortran.weaver.FortranJoinpoints; +import pt.up.fe.specs.fortran.weaver.abstracts.joinpoints.ASpecification; +import pt.up.fe.specs.fortran.weaver.abstracts.joinpoints.ASubprogram; + +public class FSubprogram extends ASubprogram { + private final Subprogram subprogram; + + public FSubprogram(Subprogram subprogram) { + this.subprogram = subprogram; + } + + @Override + public FortranNode getNode() { + return subprogram; + } + + @Override + public ASpecification getSpecificationImpl() { + return FortranJoinpoints.create(subprogram.getSpecification(), ASpecification.class); + } +} diff --git a/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FSubroutine.java b/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FSubroutine.java index 9d76803e..68fb63e9 100644 --- a/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FSubroutine.java +++ b/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FSubroutine.java @@ -1,25 +1,25 @@ package pt.up.fe.specs.fortran.weaver.joinpoints; import pt.up.fe.specs.fortran.ast.nodes.FortranNode; -import pt.up.fe.specs.fortran.ast.nodes.program.Subroutine; +import pt.up.fe.specs.fortran.ast.nodes.program.subprogram.Subroutine; import pt.up.fe.specs.fortran.weaver.abstracts.joinpoints.ASubroutine; public class FSubroutine extends ASubroutine { - public final Subroutine subroutine; public FSubroutine(Subroutine subroutine) { - super(new FProgramUnit(subroutine)); + super(new FInternalSubprogram(subroutine)); + this.subroutine = subroutine; } @Override - public FortranNode getNode() { - return subroutine; + public String getNameImpl() { + return subroutine.getName(); } @Override - public String getModuleNameImpl() { - return subroutine.getName(); + public FortranNode getNode() { + return subroutine; } } diff --git a/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FTypeDeclarationStatement.java b/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FTypeDeclarationStatement.java index b673097a..571de3f0 100644 --- a/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FTypeDeclarationStatement.java +++ b/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FTypeDeclarationStatement.java @@ -3,9 +3,8 @@ import pt.up.fe.specs.fortran.ast.nodes.FortranNode; import pt.up.fe.specs.fortran.ast.nodes.stmt.TypeDeclarationStmt; import pt.up.fe.specs.fortran.weaver.FortranJoinpoints; -import pt.up.fe.specs.fortran.weaver.abstracts.joinpoints.AAttributeSpecifier; +import pt.up.fe.specs.fortran.weaver.abstracts.joinpoints.AAttrSpec; import pt.up.fe.specs.fortran.weaver.abstracts.joinpoints.AEntityDecl; -import pt.up.fe.specs.fortran.weaver.abstracts.joinpoints.AExpr; import pt.up.fe.specs.fortran.weaver.abstracts.joinpoints.ATypeDeclarationStatement; public class FTypeDeclarationStatement extends ATypeDeclarationStatement { @@ -18,12 +17,12 @@ public FTypeDeclarationStatement(TypeDeclarationStmt typeDeclarationStmt) { } @Override - public AAttributeSpecifier[] getAttrsArrayImpl() { + public AAttrSpec[] getAttrsArrayImpl() { return typeDeclarationStmt.getAttributes() .stream() .map(FortranJoinpoints::create) .toList() - .toArray(new AAttributeSpecifier[0]); + .toArray(new AAttrSpec[0]); } @Override diff --git a/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FUseStatement.java b/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FUseStatement.java index f48db5e9..9b13dfae 100644 --- a/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FUseStatement.java +++ b/FortranWeaver/src/pt/up/fe/specs/fortran/weaver/joinpoints/FUseStatement.java @@ -1,7 +1,7 @@ package pt.up.fe.specs.fortran.weaver.joinpoints; import pt.up.fe.specs.fortran.ast.nodes.FortranNode; -import pt.up.fe.specs.fortran.ast.nodes.stmt.UseStmt; +import pt.up.fe.specs.fortran.ast.nodes.stmt.usestmt.UseStmt; import pt.up.fe.specs.fortran.weaver.abstracts.joinpoints.AUseStatement; public class FUseStatement extends AUseStatement {