hoffe, dass ich nicht noch mehr Fehler eingebaut habe

Ausserdem habe ich eine Mikrobeschreibung in der Enumeration hinzuge-
fügt.
Code: Alles auswählen
Structure TOKEN
LineNb.l
s.s
Type.l
EndStructure
NewList tokens.TOKEN()
Define.iPBSC test
test = New_PBSC()
If test\SetFile("test.pb")
; Read everything into a Linked List
While test\IsNextToken()
AddElement(tokens())
tokens()\s = test\GetNextToken()
tokens()\LineNb = test\GetCurrentLineNb()
tokens()\Type = test\GetCurrentType()
Wend
; Search for interface methods
ForEach tokens()
If tokens()\Type = #PBSC_Identifier
If NextElement(tokens()) And tokens()\s = "("
If PreviousElement(tokens()) And PreviousElement(tokens()) And tokens()\s = "\" And NextElement(tokens())
Debug "In line "+Str(tokens()\LineNb)+" somebody calls the method "+tokens()\s
Else
NextElement(tokens())
EndIf
Else
PreviousElement(tokens())
EndIf
EndIf
Next
test\CloseFile()
EndIf
Code: Alles auswählen
IncludeFile "Lexer.pbi"
DisableExplicit
Lexer.iPBSC = New_PBSC()
String.s = "2 ex"+#lf$
Lexer\SetFileString(String)
While Lexer\IsNextToken()
Token.s = Lexer\GetNextToken()
Typ = Lexer\GetCurrentType()
Select Typ
Case #PBSC_Other : Debug "Other : " + Token
Case #PBSC_Identifier : Debug "Identifier : " + Token
Case #PBSC_Number : Debug "Number : " + Token
Case #PBSC_String : Debug "String : " + Token
Case #PBSC_Comment : Debug "Comment : " + Token
Case #PBSC_NewLine : Debug "NewLine : " + Token
EndSelect
Wend
Hast du eine andere version? Diese method ist nicht in dem publiziertem code.edel hat geschrieben:Code: Alles auswählen
Lexer\SetFileString(String)
Code: Alles auswählen
;this is a comment
Class YourObject ;this is a comment
YourValueOfThat.l ;this is a comment
YourAnotherValue.s
YourThis(par.l) ;this is a comment
YourThat()
EndClass ;this is a comment
Der Fehler kommt auch mit dieser version.remi_meier hat geschrieben: @fsw: Jap, eine neuere Version (war etwas faul sie schon überall zu posten,
da sie ja noch Fehler beinhalten könnte, jetzt ist sie im ersten Post).
Kodierung?remi_meier hat geschrieben: Deinen Fehler kann ich mit der neusten Version nicht reproduzieren...
Wenn der Fehler weiterhin besteht, wäre es ev. möglich, dass er mit der
Kodierung der Datei zusammenhängt.
Code: Alles auswählen
Define s.s, Token.s
Define.iPBSC test
test = New_PBSC()
If test\SetFile("test.txt")
While test\IsNextToken()
Token.s = test\GetNextToken()
Select test\GetCurrentType()
Case #PBSC_Identifier : Debug "Identifier: " + Token; +" Line: " + Str(test\GetCurrentLineNb())
Case #PBSC_Number : Debug "Number: " + Token; +" Line: " + Str(test\GetCurrentLineNb())
Case #PBSC_String : Debug "String: " + Token; +" Line: " + Str(test\GetCurrentLineNb())
Case #PBSC_Comment : Debug "Comment: " + Token; +" Line: " + Str(test\GetCurrentLineNb())
Case #PBSC_NewLine : Debug "NewLine: " + Token; +" Line: " + Str(test\GetCurrentLineNb())
Case #PBSC_Other : Debug "Other: " + Token; +" Line: " + Str(test\GetCurrentLineNb())
EndSelect
Wend
test\CloseFile()
EndIf
Code: Alles auswählen
Procedure.l PBSC_GetCurrentLineNb(*this.cPBSC)
If *this\Started = #False And *this\LastToken = #LF$
ProcedureReturn *this\FileLine - 2
Else
ProcedureReturn *this\FileLine - 1
EndIf
EndProcedure
Code: Alles auswählen
Lexer.iPBSC = New_PBSC()
String.s = "Class 66 extends bla" + #lf$
Lexer\SetFileString(String)
While Lexer\IsNextToken()
Token.s = Lexer\GetNextToken()
Typ = Lexer\GetCurrentType()
Select Typ
Case #PBSC_Other : Debug "Other : " + Token
Case #PBSC_Identifier : Debug "Identifier : " + Token
Case #PBSC_Number : Debug "Number : " + Token
Case #PBSC_String : Debug "String : " + Token
Case #PBSC_Comment : Debug "Comment : " + Token
Case #PBSC_NewLine : Debug "NewLine : " + Token
EndSelect
Wend
Identifier : Class
Identifier : 66
Identifier : extends
Identifier : bla
NewLine :