|
- unit uengShaderFileHelper;
-
- {$mode objfpc}{$H+}
- {$I uengShaderFile.inc}
-
- interface
-
- uses
- uengShaderPart, uengShaderFileParser;
-
- function IsValidIdentifier(const aIdent: String): Boolean;
- function CheckEndToken(const aArgs: TengParseArgs; const aShaderPart: TengShaderPart): String;
-
- implementation
-
- uses
- sysutils,
- uengShaderFileConstants, uengShaderFileTypes;
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- function IsValidIdentifier(const aIdent: String): Boolean;
- var
- i, len: Integer;
- begin
- len := Length(aIdent);
- result := false;
- for i := 1 to len do
- if not (aIdent[i] in VALID_IDENT_CHARS) then
- exit;
- result := true;
- end;
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- function CheckEndToken(const aArgs: TengParseArgs; const aShaderPart: TengShaderPart): String;
- var
- oldLine, oldCol: Integer;
- param: TengTokenParameterList;
- begin
- param := TengTokenParameterList.Create('');
- try
- oldLine := aArgs.Line;
- oldCol := aArgs.Col;
- if not aArgs.ExtractToken(param) then
- raise EengUnexpectedToken.Create(TOKEN_NONE, TOKEN_END, oldLine, oldCol, aShaderPart.Filename);
- if (param[0].Name <> TOKEN_END) then
- raise EengUnexpectedToken.Create(param[0].Name, TOKEN_END, oldLine, oldCol, aShaderPart.Filename);
- if (param.Count <> 1) then
- raise EengInvalidParamterCount.Create(TOKEN_END, 1, oldLine, oldCol, aShaderPart.Filename);
- result := '';
- finally
- FreeAndNil(param);
- end;
- end;
-
- end.
|