From 5da06327a09b767f763f8151e66fb0596a289c4a Mon Sep 17 00:00:00 2001 From: mike lowis Date: Fri, 9 Apr 2021 16:37:06 -0400 Subject: [PATCH] changed LEN to Length --- lib/obnc/FilesTest.obn | 18 ++++---- lib/obnc/Strings.obn | 42 +++++++++--------- lib/obnc/StringsTest.obn | 12 ++--- src/.Oberon.y.swp | Bin 131072 -> 0 bytes src/Oberon.y | 2 +- src/Table.c | 2 +- src/y.tab.c | 2 +- tests/obnc/passing/T4Expressions.obn | 2 +- .../obnc/passing/T6ProcedureDeclarations.obn | 36 +++++++-------- 9 files changed, 58 insertions(+), 58 deletions(-) delete mode 100644 src/.Oberon.y.swp diff --git a/lib/obnc/FilesTest.obn b/lib/obnc/FilesTest.obn index 9b37be0..2388e2c 100644 --- a/lib/obnc/FilesTest.obn +++ b/lib/obnc/FilesTest.obn @@ -395,33 +395,33 @@ module FilesTest; buf: array 4 of Byte; i: Int; begin - for i := 0 to LEN(buf) - 1 do buf[i] := i + 1 end; + for i := 0 to Length(buf) - 1 do buf[i] := i + 1 end; f := Files.New("ReadWriteBytesTest"); Assert(f # nil); Files.SetPos(r, f, 0); - Files.WriteBytes(r, buf, LEN(buf)); - Files.WriteBytes(r, buf, LEN(buf)); + Files.WriteBytes(r, buf, Length(buf)); + Files.WriteBytes(r, buf, Length(buf)); Files.Close(f); - for i := 0 to LEN(buf) - 1 do buf[i] := 0 end; + for i := 0 to Length(buf) - 1 do buf[i] := 0 end; Files.SetPos(r, f, 0); - Files.ReadBytes(r, buf, LEN(buf)); + Files.ReadBytes(r, buf, Length(buf)); Assert(~r.eof); - for i := 0 to LEN(buf) - 1 do + for i := 0 to Length(buf) - 1 do Assert(buf[i] = i + 1) end; - Files.ReadBytes(r, buf, LEN(buf)); + Files.ReadBytes(r, buf, Length(buf)); Assert(~r.eof); - for i := 0 to LEN(buf) - 1 do + for i := 0 to Length(buf) - 1 do Assert(buf[i] = i + 1) end; - Files.ReadBytes(r, buf, LEN(buf)); + Files.ReadBytes(r, buf, Length(buf)); Assert(r.eof) end TestReadWriteBytes; diff --git a/lib/obnc/Strings.obn b/lib/obnc/Strings.obn index ba95fd6..9ca30dc 100644 --- a/lib/obnc/Strings.obn +++ b/lib/obnc/Strings.obn @@ -9,8 +9,8 @@ module Strings; Implements the basic library module from "The Oakwood Guidelines for Oberon-2 Compiler Developers". All character arrays are assumed to contain 0X as a terminator and positions start at 0.*) - procedure Length*(s: array of Char): Int; -(**Length(s) returns the number of characters in s up to and excluding the first 0X.*) + procedure Len*(s: array of Char): Int; +(**Len(s) returns the number of characters in s up to and excluding the first 0X.*) var i: Int; begin i := 0; @@ -18,7 +18,7 @@ Implements the basic library module from "The Oakwood Guidelines for Oberon-2 Co INC(i) end return i - end Length; + end Len; procedure Min(a, b: Int): Int; @@ -28,16 +28,16 @@ Implements the basic library module from "The Oakwood Guidelines for Oberon-2 Co procedure Insert*(source: array of Char; pos: Int; var dest: array of Char); -(**Insert(src, pos, dst) inserts the string src into the string dst at position pos (0 <= pos <= Length(dst)). If pos = Length(dst), src is appended to dst. If the size of dst is not large enough to hold the result of the operation, the result is truncated so that dst is always terminated with a 0X.*) +(**Insert(src, pos, dst) inserts the string src into the string dst at position pos (0 <= pos <= Len(dst)). If pos = Len(dst), src is appended to dst. If the size of dst is not large enough to hold the result of the operation, the result is truncated so that dst is always terminated with a 0X.*) var sourceLength, destLength, newLength: Int; i, lim: Int; begin - destLength := Length(dest); + destLength := Len(dest); Assert(pos >= 0); Assert(pos <= destLength); - sourceLength := Length(source); - newLength := Min(destLength + sourceLength, LEN(dest) - 1); + sourceLength := Len(source); + newLength := Min(destLength + sourceLength, Length(dest) - 1); (*make room for source in dest*) dest[newLength] := 0X; @@ -54,12 +54,12 @@ Implements the basic library module from "The Oakwood Guidelines for Oberon-2 Co procedure Append*(extra: array of Char; var dest: array of Char); -(**Append(s, dst) has the same effect as Insert(s, Length(dst), dst).*) +(**Append(s, dst) has the same effect as Insert(s, Len(dst), dst).*) var destLength, newLength: Int; i: Int; begin - destLength := Length(dest); - newLength := Min(destLength + Length(extra), LEN(dest) - 1); + destLength := Len(dest); + newLength := Min(destLength + Len(extra), Length(dest) - 1); for i := destLength to newLength - 1 do dest[i] := extra[i - destLength] @@ -69,10 +69,10 @@ Implements the basic library module from "The Oakwood Guidelines for Oberon-2 Co procedure Delete*(var s: array of Char; pos, n: Int); -(**Delete(s, pos, n) deletes n characters from s starting at position pos (0 <= pos <= Length(s)). If n > Length(s) - pos, the new length of s is pos.*) +(**Delete(s, pos, n) deletes n characters from s starting at position pos (0 <= pos <= Len(s)). If n > Len(s) - pos, the new length of s is pos.*) var length, n1, i: Int; begin - length := Length(s); + length := Len(s); Assert(pos >= 0); Assert(pos <= length); Assert(n >= 0); @@ -85,14 +85,14 @@ Implements the basic library module from "The Oakwood Guidelines for Oberon-2 Co procedure Replace*(source: array of Char; pos: Int; var dest: array of Char); -(**Replace(src, pos, dst) has the same effect as Delete(dst, pos, Length(src)) followed by an Insert(src, pos, dst).*) +(**Replace(src, pos, dst) has the same effect as Delete(dst, pos, Len(src)) followed by an Insert(src, pos, dst).*) var destLength, n, i: Int; begin - destLength := Length(dest); + destLength := Len(dest); Assert(pos >= 0); Assert(pos <= destLength); - n := Min(Length(source), LEN(dest) - 1 - pos); (*actual number of characters to replace*) + n := Min(Len(source), Length(dest) - 1 - pos); (*actual number of characters to replace*) (*replace characters*) for i := 0 to n - 1 do @@ -106,14 +106,14 @@ Implements the basic library module from "The Oakwood Guidelines for Oberon-2 Co procedure Extract*(source: array of Char; pos, n: Int; var dest: array of Char); -(**Extract(src, pos, n, dst) extracts a substring dst with n characters from position pos (0 <= pos <= Length(src)) in src. If n > Length(src) - pos, dst is only the part of src from pos to the end of src, i.e. Length(src) - 1. If the size of dst is not large enough to hold the result of the operation, the result is truncated so that dst is always terminated with a 0X.*) +(**Extract(src, pos, n, dst) extracts a substring dst with n characters from position pos (0 <= pos <= Len(src)) in src. If n > Len(src) - pos, dst is only the part of src from pos to the end of src, i.e. Len(src) - 1. If the size of dst is not large enough to hold the result of the operation, the result is truncated so that dst is always terminated with a 0X.*) var sourceLength, n1, i: Int; begin - sourceLength := Length(source); + sourceLength := Len(source); Assert(pos >= 0); Assert(pos <= sourceLength); - n1 := Min(n, Min(sourceLength - pos, LEN(dest) - 1)); (*actual number of characters to extract*) + n1 := Min(n, Min(sourceLength - pos, Length(dest) - 1)); (*actual number of characters to extract*) for i := 0 to n1 - 1 do dest[i] := source[pos + i] end; @@ -122,11 +122,11 @@ Implements the basic library module from "The Oakwood Guidelines for Oberon-2 Co procedure Pos*(pattern, s: array of Char; pos: Int): Int; -(**Pos(pat, s, pos) returns the position of the first occurrence of pat in s. Searching starts at position pos (0 <= pos <= Length(s)). If pat is not found, -1 is returned.*) +(**Pos(pat, s, pos) returns the position of the first occurrence of pat in s. Searching starts at position pos (0 <= pos <= Len(s)). If pat is not found, -1 is returned.*) var idxs, idxp, result: Int; begin Assert(pos >= 0); - Assert(pos < LEN(s)); + Assert(pos < Length(s)); idxs := pos - 1; repeat @@ -143,7 +143,7 @@ Implements the basic library module from "The Oakwood Guidelines for Oberon-2 Co result := -1 end; - Assert((result = -1) or (result >= 0) & (result + idxp < LEN(s))) + Assert((result = -1) or (result >= 0) & (result + idxp < Length(s))) return result end Pos; diff --git a/lib/obnc/StringsTest.obn b/lib/obnc/StringsTest.obn index f3933fa..8199b70 100644 --- a/lib/obnc/StringsTest.obn +++ b/lib/obnc/StringsTest.obn @@ -25,13 +25,13 @@ module StringsTest; begin (*test Length*) - Assert(Strings.Length("") = 0); + Assert(Strings.Len("") = 0); shortStr := ""; - Assert(Strings.Length(shortStr) = 0); + Assert(Strings.Len(shortStr) = 0); shortStr := 22X; - Assert(Strings.Length(shortStr) = 1); + Assert(Strings.Len(shortStr) = 1); shortStr := "123"; - Assert(Strings.Length(shortStr) = 3); + Assert(Strings.Len(shortStr) = 3); (*test Insert*) s := "cde"; @@ -47,9 +47,9 @@ begin Strings.Insert("bcd", 1, shortStr); Assert(shortStr = "abc"); s := "foo bar"; - Strings.Insert(" baz", Strings.Length(s), s); + Strings.Insert(" baz", Strings.Len(s), s); Assert(s = "foo bar baz"); - Strings.Insert(" qux qux qux qux qux", Strings.Length(s), s); + Strings.Insert(" qux qux qux qux qux", Strings.Len(s), s); Assert(s = "foo bar baz q"); (*test Append*) diff --git a/src/.Oberon.y.swp b/src/.Oberon.y.swp deleted file mode 100644 index 0627e870e1c18ed2153d21a6056ddbb8866ef7d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 131072 zcmYc?2=nw+u+TGPU|?VnU|>kwQjoBMr-LDE0t-WKN=|-xW-&+xFD}b0&dkrls{|}r z2Q^SXIKQ+gIaNQmGCwIVS--d_S>Hb?wJ1MNuM(_olo$00nI7#kTH zfJ|0aQdAHY3I#Do@n{H)hQMeDjE2By2#kinXb6mkz-S1JhQJ63fsz6_hI$4D1}3O~ zbD=aN8qERauYl69?mkQ%Cscebloo?ZKq&?;sCYM&J`9zBQViTs@qQ@n2Xzoko(C#^ z9!lRuljntsPlM8Hm>~?9em)47VIGurVu3JV^864k!vZM%08L&1D&7XA8(1L>n0`SB zmtiuLW@CdeVDdr`F2gJ+Jrhk{7%F}cN*l977%=@J5H8$(U(n=5q4M*g^b}}>!Sstk z#bNdvLn90(FAkN5#m`wZc?qa|CX|kVMkq|bBvd>fN*_d%mx7AJMw1Mn5f0NY4VABe z(u>jLWuW2>P+A(AAYl4sq2jRkosA|h2bB+o(w5K!1Jf@L6>oylJ!taKsA z5X{TK5Wvg8V8hG6pvlX?AO`AB@iH*H;bCC7#lygGjE8|?Ee`|3EFK1ib{+>kPKOP1K8y*G*IUWWEE*=Jk@7xRwPq-NvE^sq2?BQl$Sjo-6FqNBup^=+`p@Ex$ zA%mNN!JC_bL6@6>fuEa!fsdPk;S(1F!$&R#hVxtu3_H0P7-n-ZFwEj&U?|{XVDRK( zV36lxVEDnwz;Kn5fnfzF1H*Do28MP{28LKp28I|;1_o3=AhY z7#NmtFfi0{Ffc@OFfc@MFfeFyFfeFwFfhDiXJFXO&cM*j&cM*b&cG1K&cG1C&cMLS z&cN`5je%hU8v{cH8v}z48v_Fe8w0}h&dk6d$IQU6go%M6hlzn9n~8zJjfsK5m5G6YhlzoKlZkduOu}+waA)*GdVx6xI`g2Be6(9D>EfE zuf&=`wKOj?KTn~WfkCyFp|~WmBr{o|EI%_v!L_0wzo;a*GB+tdCnPZ`CshMUcX4HI zT4qjaKw?QobgZT|1B1R+T4`Q#NoIatu|isYkwR{MN@-52LP1e}N-0EGOP>M7eCLeR z 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 diff --git a/src/Oberon.y b/src/Oberon.y index a8290f4..76f82a6 100644 --- a/src/Oberon.y +++ b/src/Oberon.y @@ -3598,8 +3598,8 @@ static Trees_Node PredeclaredProcedureAST(const char procName[], Trees_Node expL {"FLT", TREES_FLT_PROC}, {"INC", TREES_INC_PROC}, {"INCL", TREES_INCL_PROC}, - {"LEN", TREES_LEN_PROC}, {"LSL", TREES_LSL_PROC}, + {"Length", TREES_LEN_PROC}, {"New", TREES_NEW_PROC}, {"ORD", TREES_ORD_PROC}, {"PACK", TREES_PACK_PROC}, diff --git a/src/Table.c b/src/Table.c index f375689..24145ec 100644 --- a/src/Table.c +++ b/src/Table.c @@ -93,8 +93,8 @@ void Table_Init(void) {"INC", TREES_PROCEDURE_KIND, TREES_INC_PROC}, {"INCL", TREES_PROCEDURE_KIND, TREES_INCL_PROC}, {"Int", TREES_TYPE_KIND, TREES_INTEGER_TYPE}, - {"LEN", TREES_PROCEDURE_KIND, TREES_LEN_PROC}, {"LSL", TREES_PROCEDURE_KIND, TREES_LSL_PROC}, + {"Length", TREES_PROCEDURE_KIND, TREES_LEN_PROC}, {"New", TREES_PROCEDURE_KIND, TREES_NEW_PROC}, {"ORD", TREES_PROCEDURE_KIND, TREES_ORD_PROC}, {"PACK", TREES_PROCEDURE_KIND, TREES_PACK_PROC}, diff --git a/src/y.tab.c b/src/y.tab.c index aaab518..f641eff 100644 --- a/src/y.tab.c +++ b/src/y.tab.c @@ -5576,8 +5576,8 @@ static Trees_Node PredeclaredProcedureAST(const char procName[], Trees_Node expL {"FLT", TREES_FLT_PROC}, {"INC", TREES_INC_PROC}, {"INCL", TREES_INCL_PROC}, - {"LEN", TREES_LEN_PROC}, {"LSL", TREES_LSL_PROC}, + {"Length", TREES_LEN_PROC}, {"New", TREES_NEW_PROC}, {"ORD", TREES_ORD_PROC}, {"PACK", TREES_PACK_PROC}, diff --git a/tests/obnc/passing/T4Expressions.obn b/tests/obnc/passing/T4Expressions.obn index 35b9162..74ff492 100644 --- a/tests/obnc/passing/T4Expressions.obn +++ b/tests/obnc/passing/T4Expressions.obn @@ -407,7 +407,7 @@ Out.Integer(ORD({1, 2, a, 5, b, 8} = {1, 2, a..b, 8}), 0); Out.Ln; Assert(i = 1); a := ""; - Assert(LEN(a) = 10); + Assert(Length(a) = 10); Assert(LSL(0, 0) = 0); Assert(LSL(0, 1) = 0); diff --git a/tests/obnc/passing/T6ProcedureDeclarations.obn b/tests/obnc/passing/T6ProcedureDeclarations.obn index 268d0fd..28d3ae4 100644 --- a/tests/obnc/passing/T6ProcedureDeclarations.obn +++ b/tests/obnc/passing/T6ProcedureDeclarations.obn @@ -51,8 +51,8 @@ module T6ProcedureDeclarations; procedure P3(A: Matrix); begin - Assert(LEN(A) = 10); - Assert(LEN(A[0]) = 20) + Assert(Length(A) = 10); + Assert(Length(A[0]) = 20) end P3; procedure P4(A: array of Row); @@ -81,8 +81,8 @@ module T6ProcedureDeclarations; procedure P(var A: Matrix); begin - Assert(LEN(A) = 10); - Assert(LEN(A[0]) = 20) + Assert(Length(A) = 10); + Assert(Length(A[0]) = 20) end P; procedure Q(var x: T0); @@ -113,7 +113,7 @@ module T6ProcedureDeclarations; procedure P(a: array of Int); var i: Int; begin - for i := 0 to LEN(a) - 1 do + for i := 0 to Length(a) - 1 do Assert(a[i] = i + 1) end end P; @@ -125,8 +125,8 @@ module T6ProcedureDeclarations; var c, i, j: Int; begin c := 0; - for i := 0 to LEN(M) - 1 do - for j := 0 to LEN(M[0]) - 1 do + for i := 0 to Length(M) - 1 do + for j := 0 to Length(M[0]) - 1 do Assert(M[i, j] = c); INC(c) end @@ -136,8 +136,8 @@ module T6ProcedureDeclarations; procedure Inner1(row: array of Int); var c, j: Int; begin - c := LEN(row); - for j := 0 to LEN(row) - 1 do + c := Length(row); + for j := 0 to Length(row) - 1 do Assert(row[j] = c); INC(c) end @@ -153,9 +153,9 @@ module T6ProcedureDeclarations; var c, i, j, k: Int; begin c := 0; - for i := 0 to LEN(T) - 1 do - for j := 0 to LEN(T[0]) - 1 do - for k := 0 to LEN(T[0, 0]) - 1 do + for i := 0 to Length(T) - 1 do + for j := 0 to Length(T[0]) - 1 do + for k := 0 to Length(T[0, 0]) - 1 do Assert(T[i, j, k] = c); INC(c) end @@ -165,14 +165,14 @@ module T6ProcedureDeclarations; end R; begin - for i := 0 to LEN(a) - 1 do + for i := 0 to Length(a) - 1 do a[i] := i + 1 end; P(a); c := 0; - for i := 0 to LEN(M) - 1 do - for j := 0 to LEN(M[0]) - 1 do + for i := 0 to Length(M) - 1 do + for j := 0 to Length(M[0]) - 1 do M[i, j] := c; INC(c) end @@ -180,9 +180,9 @@ module T6ProcedureDeclarations; Q(M); c := 0; - for i := 0 to LEN(T) - 1 do - for j := 0 to LEN(T[0]) - 1 do - for k := 0 to LEN(T[0, 0]) - 1 do + for i := 0 to Length(T) - 1 do + for j := 0 to Length(T[0]) - 1 do + for k := 0 to Length(T[0, 0]) - 1 do T[i, j, k] := c; INC(c) end -- 2.52.0