Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

57 rindas
1.6 KiB

  1. unit uengShaderFileHelper;
  2. {$mode objfpc}{$H+}
  3. {$I uengShaderFile.inc}
  4. interface
  5. uses
  6. uengShaderPart, uengShaderFileParser;
  7. function IsValidIdentifier(const aIdent: String): Boolean;
  8. function CheckEndToken(const aArgs: TengParseArgs; const aShaderPart: TengShaderPart): String;
  9. implementation
  10. uses
  11. sysutils,
  12. uengShaderFileConstants, uengShaderFileTypes;
  13. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  14. function IsValidIdentifier(const aIdent: String): Boolean;
  15. var
  16. i, len: Integer;
  17. begin
  18. len := Length(aIdent);
  19. result := false;
  20. for i := 1 to len do
  21. if not (aIdent[i] in VALID_IDENT_CHARS) then
  22. exit;
  23. result := true;
  24. end;
  25. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  26. function CheckEndToken(const aArgs: TengParseArgs; const aShaderPart: TengShaderPart): String;
  27. var
  28. oldLine, oldCol: Integer;
  29. param: TengTokenParameterList;
  30. begin
  31. param := TengTokenParameterList.Create('');
  32. try
  33. oldLine := aArgs.Line;
  34. oldCol := aArgs.Col;
  35. if not aArgs.ExtractToken(param) then
  36. raise EengUnexpectedToken.Create(TOKEN_NONE, TOKEN_END, oldLine, oldCol, aShaderPart.Filename);
  37. if (param[0].Name <> TOKEN_END) then
  38. raise EengUnexpectedToken.Create(param[0].Name, TOKEN_END, oldLine, oldCol, aShaderPart.Filename);
  39. if (param.Count <> 1) then
  40. raise EengInvalidParamterCount.Create(TOKEN_END, 1, oldLine, oldCol, aShaderPart.Filename);
  41. result := '';
  42. finally
  43. FreeAndNil(param);
  44. end;
  45. end;
  46. end.