Kann hier jemand OCaml?
Ich nämlich nicht! 8-/
Seit einem Tag versuch ich hier einen Fehler zu finden:
1 | type enumLoopStates = LoopKeep | LoopBreak | LoopReturn | LoopError
|
2 |
|
3 | let tNP inStr =
|
4 | let myTag = treeTagGet inStr
|
5 | and myTagType = treeTagTypeGet inStr
|
6 | and myStr = ref treeTagConsume inStr
|
7 | and loopState = ref LoopKeep in (
|
8 | if myTagType = TagTypeShort then begin
|
9 | ""
|
10 | end
|
11 | else begin
|
12 | while !loopState = LoopKeep do
|
13 | loopState := LoopBreak;
|
14 | if treeTagTypeGet !myStr = TagTypeNone then begin
|
15 | ""
|
16 | end
|
17 | else begin
|
18 | let nextTagType = treeTagTypeGet !myStr
|
19 | and nextTag = treeTagGet !myStr in ( (* ***2*** *)
|
20 | if nextTagType = TagTypeClose && nextTag = myTag then begin
|
21 | ""
|
22 | end
|
23 | if nextTagType = TagTypeNone then begin (* ***1*** *)
|
24 | ""
|
25 | end
|
26 | else begin
|
27 | ""
|
28 | end
|
29 | )
|
30 | end
|
31 | done
|
32 | end
|
33 | )
|
Die Funktionen treeTagConsume, treeTagGet liefern einen String.
treeTagTypeGet liefert einen:
type enumTagTypes = TagTypeNone | TagTypeShort | TagTypeOpen |
TagTypeClose
Ich hab möglichst viel rausgeworfen, daher ist das Ergebnis auch immer
nur ein "".
Der Compiler meckert an ***1***
1 | if nextTagType = TagTypeNone then begin
|
2 | ^^
|
3 | Error: Syntax error: ')' expected
|
Und an ***2***
1 | and nextTag = treeTagGet !myStr in (
|
2 | ^
|
3 | This '(' might be unmatched
|
Ich schnall es echt nicht, was ich da falsch geklammert habe.
Die Einrückung mag für OCaml unüblich sein.
Vorsichtshalber hab ich überall begin / end verwendet.