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() 
EndIfCode: 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 commentDer 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() 
EndIfCode: 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
EndProcedureCode: 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 :