📄 skyparser.pas
字号:
property Words_2_Attr: TSkySyntaxAttr read FWords_2_Attr write FWords_2_Attr ;
property Words_3_Attr: TSkySyntaxAttr read FWords_3_Attr write FWords_3_Attr ;
property Words_4_Attr: TSkySyntaxAttr read FWords_4_Attr write FWords_4_Attr ;
property Words_5_Attr: TSkySyntaxAttr read FWords_5_Attr write FWords_5_Attr ;
property Words_6_Attr: TSkySyntaxAttr read FWords_6_Attr write FWords_6_Attr ;
property Words_7_Attr: TSkySyntaxAttr read FWords_7_Attr write FWords_7_Attr ;
property Words_8_Attr: TSkySyntaxAttr read FWords_8_Attr write FWords_8_Attr ;
property FileExtentions: TStrings read FFileExtentions write SetFileExtentions ;
property LanguageName: String read FLanguageName write FLanguageName ;
property AlphabetChars: String read FAlphabetChars write SetAlphabetChars ;
end;
TSkyParser = class(TCustomSkyParser)
private
protected
public
published
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('Samples', [TSkyParser]);
end;
constructor TSkySyntaxAttr.Create;
begin
inherited Create;
FUseDefBkgColor := False;
FUseDefFrgColor := False;
FBkgColor := clWindow;
FFrgColor := clWindowText;
FStyle := [];
FName := '';
end;
constructor TSkySyntaxAttr.Create(Name: String);
begin
inherited Create;
FUseDefBkgColor := False;
FUseDefFrgColor := False;
FBkgColor := clWindow;
FFrgColor := clWindowText;
FStyle := [];
FName := Name;
end;
procedure TSkySyntaxAttr.Assign(Source: TPersistent);
begin
if Source is TSkySyntaxAttr then
begin
FUseDefBkgColor := (Source as TSkySyntaxAttr).UseDefBkgColor;
FUseDefFrgColor := (Source as TSkySyntaxAttr).UseDefFrgColor;
FBkgColor := (Source as TSkySyntaxAttr).BkgColor;
FFrgColor := (Source as TSkySyntaxAttr).FrgColor;
FStyle := (Source as TSkySyntaxAttr).Style;
FName := (Source as TSkySyntaxAttr).Name;
end
else
inherited Assign(Source);
end;
constructor TCustomSkyParser.Create(AOwner : TComponent);
const
AlphaChars: String = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_';
DigitChars: String = '0123456789';
HexDigitChars: String = '0123456789abcdefABCDEF';
begin
inherited Create(AOwner);
FEscapeChar := #0; //字符串忽略符
FMacroWrapChar := #0; //宏换行符
FLineComments := TStringList.Create; //单行注释符
FBlockCommentOns := TStringList.Create; //多行注释开始符
FBlockCommentOffs := TStringList.Create; //多行注释结束符
FDelimiters := ''; //分隔符
FMacroSymbols := ''; //宏指示符
FStringChars := ''; //字符串指示符
FCharacters := #0; //单个字符指示符
//FNumberSymbols := ''; 数字串指示符(位于单词首,且其后为数字)
FWords_1 := TStringList.Create; //关键字列表_1
FWords_2 := TStringList.Create; //关键字列表_2
FWords_3 := TStringList.Create; //关键字列表_3
FWords_4 := TStringList.Create; //关键字列表_4
FWords_5 := TStringList.Create; //关键字列表_5
FWords_6 := TStringList.Create; //关键字列表_6
FWords_7 := TStringList.Create; //关键字列表_7
FWords_8 := TStringList.Create; //关键字列表_8
SetCaseSensitive(True); //默认为区分大小写
FNormalTextAttr := TSkySyntaxAttr.Create('Normal Text'); //普通文本显示属性
FCommentsAttr := TSkySyntaxAttr.Create('Comment'); //注释显示属性
FDelimitersAttr := TSkySyntaxAttr.Create('Delimiter'); //分隔符显示属性
FMacrosAttr := TSkySyntaxAttr.Create('Macro'); //宏显示属性
FStringsAttr := TSkySyntaxAttr.Create('String'); //字符串显示属性
FCharAttr := TSkySyntaxAttr.Create('Character'); //单个字符显示属性
FSpaceAttr := TSkySyntaxAttr.Create('Space'); //空白处显示属性
FHotLinkAttr := TSkySyntaxAttr.Create('HotLink'); //热点显示属性(含URL)
FInt_1_Attr := TSkySyntaxAttr.Create('Binary Numbers'); //二进制数显示属性
FInt_2_Attr := TSkySyntaxAttr.Create('Octonary Numbers'); //八进制数显示属性
FInt_3_Attr := TSkySyntaxAttr.Create('Decimal Number'); //十进制数显示属性
FInt_4_Attr := TSkySyntaxAttr.Create('Hex Number'); //十六进制数显示属性
FFloatAttr := TSkySyntaxAttr.Create('Float Number'); //浮点数显示属性
FWords_1_Attr := TSkySyntaxAttr.Create('Word List 1'); //关键字_1 显示属性
FWords_2_Attr := TSkySyntaxAttr.Create('Word List 2'); //关键字_2 显示属性
FWords_3_Attr := TSkySyntaxAttr.Create('Word List 3'); //关键字_3 显示属性
FWords_4_Attr := TSkySyntaxAttr.Create('Word List 4'); //关键字_4 显示属性
FWords_5_Attr := TSkySyntaxAttr.Create('Word List 5'); //关键字_5 显示属性
FWords_6_Attr := TSkySyntaxAttr.Create('Word List 6'); //关键字_6 显示属性
FWords_7_Attr := TSkySyntaxAttr.Create('Word List 7'); //关键字_7 显示属性
FWords_8_Attr := TSkySyntaxAttr.Create('Word List 8'); //关键字_8 显示属性
FFileExtentions := TStringList.Create; //关联文件类型
TStringList(FFileExtentions).CaseSensitive := False;
TStringList(FFileExtentions).Sorted := True;
FLanguageName := ''; //关联语言名称(如:C++)
FCurrSyntaxAttr := @FNormalTextAttr;
//真奇怪,如果 Sorted=True ,且property中如用write FLineComments则设计期载入字符串保存时Delphi会出错! 2004.4.28
TStringList(FLineComments).Sorted := True; //单行注释符
//TStringList(FBlockCommentOns).Sorted := True; 多行注释开始符 <2004.10.21 不可排序>
//TStringList(FBlockCommentOffs).Sorted := True; 多行注释结束符 <2004.10.21 不可排序>
TStringList(FWords_1).Sorted := True; //关键字列表_1
TStringList(FWords_2).Sorted := True; //关键字列表_2
TStringList(FWords_3).Sorted := True; //关键字列表_3
TStringList(FWords_4).Sorted := True; //关键字列表_4
TStringList(FWords_5).Sorted := True; //关键字列表_5
TStringList(FWords_6).Sorted := True; //关键字列表_6
TStringList(FWords_7).Sorted := True; //关键字列表_7
TStringList(FWords_8).Sorted := True; //关键字列表_8
FInt_1_Charset := DIGIT;
FInt_1_Chars := DigitChars;
FInt_2_Charset := DIGIT;
FInt_2_Chars := DigitChars;
FInt_3_Charset := DIGIT;
FInt_3_Chars := DigitChars;
FInt_4_Charset := HEXDIGIT;
FInt_4_Chars := HexDigitChars;
FAlphabet := ALPHA; //默认为标准字母表加_
FAlphabetChars := AlphaChars;
end;
destructor TCustomSkyParser.Destroy;
begin
FLineComments.Free;
FBlockCommentOns.Free;
FBlockCommentOffs.Free;
FWords_1.Free;
FWords_2.Free;
FWords_3.Free;
FWords_4.Free;
FWords_5.Free;
FWords_6.Free;
FWords_7.Free;
FWords_8.Free;
FNormalTextAttr.Free;
FCommentsAttr.Free;
FDelimitersAttr.Free;
FMacrosAttr.Free;
FStringsAttr.Free;
FCharAttr.Free;
FSpaceAttr.Free;
FHotLinkAttr.Free;
FInt_1_Attr.Free;
FInt_2_Attr.Free;
FInt_3_Attr.Free;
FInt_4_Attr.Free;
FFloatAttr.Free;
FWords_1_Attr.Free;
FWords_2_Attr.Free;
FWords_3_Attr.Free;
FWords_4_Attr.Free;
FWords_5_Attr.Free;
FWords_6_Attr.Free;
FWords_7_Attr.Free;
FWords_8_Attr.Free;
FFileExtentions.Free;
inherited Destroy;
end;
procedure TCustomSkyParser.SetCaseSensitive(Value: Boolean);
begin
if Value <> FCaseSensitive then
begin
FCaseSensitive := Value;
TStringList(FWords_1).CaseSensitive := Value;
TStringList(FWords_2).CaseSensitive := Value;
TStringList(FWords_3).CaseSensitive := Value;
TStringList(FWords_4).CaseSensitive := Value;
TStringList(FWords_5).CaseSensitive := Value;
TStringList(FWords_6).CaseSensitive := Value;
TStringList(FWords_7).CaseSensitive := Value;
TStringList(FWords_8).CaseSensitive := Value;
end;
end;
procedure TCustomSkyParser.SetDelimiters(const Value: String);
var
i, iLen: Integer;
begin
FDelimiters := Value;
FDelimiterSymbols := [];
iLen := Length(Value);
for i := 1 to iLen do
Include(FDelimiterSymbols, Value[i]); //分隔符集合
end;
procedure TCustomSkyParser.SetMacroSymbols(const Value: String);
var
i, iLen: Integer;
begin
FMacroSymbols := Value;
FMacroNoteSymbols := [];
iLen := Length(Value);
for i := 1 to iLen do
Include(FMacroNoteSymbols, Value[i]); //宏指示符集合
end;
procedure TCustomSkyParser.SetStringChars(const Value: String);
var
i, iLen: Integer;
begin
FStringChars := Value;
FStringSymbols := [];
iLen := Length(Value);
for i := 1 to iLen do
Include(FStringSymbols, Value[i]); //字符串指示符集合
end;
procedure TCustomSkyParser.SetLineComments(Value: TStrings);
begin
if Assigned(FLineComments) then
begin
FLineComments.Assign(Value);
end;
end;
procedure TCustomSkyParser.SetBlockCommentOns(Value: TStrings);
begin
if Assigned(FBlockCommentOns) then
begin
FBlockCommentOns.Assign(Value);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -