Rev 6647 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 6647 | Rev 7597 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | (* |
1 | (* |
2 | Copyright 2016 Anton Krotov |
2 | Copyright 2016, 2018 Anton Krotov |
Line 3... | Line 3... | ||
3 | 3 | ||
4 | This program is free software: you can redistribute it and/or modify |
4 | This program is free software: you can redistribute it and/or modify |
5 | it under the terms of the GNU Lesser General Public License as published by |
5 | it under the terms of the GNU Lesser General Public License as published by |
6 | the Free Software Foundation, either version 3 of the License, or |
6 | the Free Software Foundation, either version 3 of the License, or |
Line 36... | Line 36... | ||
36 | END GetChar; |
36 | END GetChar; |
Line 37... | Line 37... | ||
37 | 37 | ||
38 | PROCEDURE ParamParse; |
38 | PROCEDURE ParamParse; |
Line 39... | Line 39... | ||
39 | VAR p, count, name: INTEGER; c: CHAR; cond: INTEGER; |
39 | VAR p, count, name: INTEGER; c: CHAR; cond: INTEGER; |
40 | 40 | ||
41 | PROCEDURE ChangeCond(A, B, C: INTEGER); |
41 | PROCEDURE ChangeCond(A, B, C: INTEGER; c: CHAR; VAR cond: INTEGER); |
42 | BEGIN |
42 | BEGIN |
43 | IF (c <= 20X) & (c # 0X) THEN |
43 | IF (c <= 20X) & (c # 0X) THEN |
44 | cond := A |
44 | cond := A |
Line 62... | Line 62... | ||
62 | cond := 0; |
62 | cond := 0; |
63 | count := 1; |
63 | count := 1; |
64 | WHILE (argc < MAX_PARAM) & (cond # 6) DO |
64 | WHILE (argc < MAX_PARAM) & (cond # 6) DO |
65 | c := GetChar(p); |
65 | c := GetChar(p); |
66 | CASE cond OF |
66 | CASE cond OF |
67 | |0: ChangeCond(0, 4, 1); IF cond = 1 THEN Params[count, 0] := p END |
67 | |0: ChangeCond(0, 4, 1, c, cond); IF cond = 1 THEN Params[count, 0] := p END |
68 | |1: ChangeCond(0, 3, 1); IF cond IN {0, 6} THEN Params[count, 1] := p - 1; INC(count) END |
68 | |1: ChangeCond(0, 3, 1, c, cond); IF cond IN {0, 6} THEN Params[count, 1] := p - 1; INC(count) END |
69 | |3: ChangeCond(3, 1, 3); IF cond = 6 THEN Params[count, 1] := p - 1; INC(count) END |
69 | |3: ChangeCond(3, 1, 3, c, cond); IF cond = 6 THEN Params[count, 1] := p - 1; INC(count) END |
70 | |4: ChangeCond(5, 0, 5); IF cond = 5 THEN Params[count, 0] := p END |
70 | |4: ChangeCond(5, 0, 5, c, cond); IF cond = 5 THEN Params[count, 0] := p END |
71 | |5: ChangeCond(5, 1, 5); IF cond = 6 THEN Params[count, 1] := p - 1; INC(count) END |
71 | |5: ChangeCond(5, 1, 5, c, cond); IF cond = 6 THEN Params[count, 1] := p - 1; INC(count) END |
72 | ELSE |
72 | ELSE |
73 | END; |
73 | END; |
74 | INC(p) |
74 | INC(p) |
75 | END; |
75 | END; |
76 | argc := count |
76 | argc := count |