浏览代码

Вывод процедур

Arthur Yefimov 2 年之前
父节点
当前提交
26aeca6c64
共有 1 个文件被更改,包括 13 次插入5 次删除
  1. 13 5
      src/Autodoc/AutodocParser.Mod

+ 13 - 5
src/Autodoc/AutodocParser.Mod

@@ -502,7 +502,15 @@ END PrintType;
 PROCEDURE PrintProcedure(P: Procedure; indent: INTEGER; inlined: BOOLEAN);
 BEGIN
   PrintIndent(indent, inlined);
-  Out.String('Procedure');
+  Out.String('Procedure '); Out.String(P.name);
+  IF P.returnType # NIL THEN
+    Out.String(' returns '); PrintType(P.returnType, indent, TRUE)
+  END;
+  IF P.params.first # NIL THEN
+    Out.String(', parameters:'); Out.Ln;
+    PrintList(P.params, indent + 1, FALSE)
+  ELSE Out.Ln
+  END
 END PrintProcedure;
 
 PROCEDURE PrintModule(M: Module; indent: INTEGER; inlined: BOOLEAN);
@@ -764,10 +772,10 @@ BEGIN
   UNTIL (sym = eot) OR (sym = ident) & (id = name)
 END ReachEndOf;
 
-PROCEDURE ParseProcedureDecl(o: Object);
+PROCEDURE ParseProcedureDecl(M: Module);
 VAR name: Str;
   P: Procedure;
-BEGIN
+BEGIN M.procedures := NewList();
   WHILE sym = procedure DO GetSym; NEW(P); InitObject(P);
     P.params := NewList(); P.exported := FALSE;
     IF (sym = minus) OR (sym = times) OR (sym = arrow) THEN GetSym END;
@@ -789,8 +797,8 @@ BEGIN
     IF sym = ident THEN GetSym;
       IF sym = semicol THEN GetSym ELSE MarkExp(';') END
     ELSE (* sym = eot *) MarkEnd('Procedure', P.name)
-    END
-    (*;Out.Int(line, 6);Out.Char(':');Out.Int(col, 0); Out.Ln;*)
+    END;
+    AddToList(M.procedures, P)
   END
 END ParseProcedureDecl;