Initial check in docu

This commit is contained in:
2026-01-03 18:31:15 +01:00
parent e2c3cbc520
commit ee130973e2
98 changed files with 9430 additions and 0 deletions
+43
View File
@@ -0,0 +1,43 @@
unit filter;
lexer Tfilter;
options
{
k = 2;
filter = true;
}
// ----------------------------------------------------------------------------
// Paragraph
// ----------------------------------------------------------------------------
P
: "<p>"
;
// ----------------------------------------------------------------------------
// Break
// ----------------------------------------------------------------------------
BR
: "<br>"
;
// ----------------------------------------------------------------------------
// Newline
// ----------------------------------------------------------------------------
NEWLINE
:
(
'\r' '\n' { newLine; _ttype := TT_SKIP; }
| '\r' { newLine; _ttype := TT_SKIP; }
| '\n' { newLine; _ttype := TT_SKIP; }
)
;
// ----------------------------------------------------------------------------
// Tab
// ----------------------------------------------------------------------------
TAB
: '\t' { tab; _ttype := TT_SKIP; }
;
+234
View File
@@ -0,0 +1,234 @@
// ============================================================================
// This file is generated by the Delphi Parser Generator.
// ----------------------------------------------------------------------------
// DPG version: 1.0.0.78r
// Grammar: filter.g
// ============================================================================
unit filter;
interface
uses
Classes,
Contnrs,
dpgLexer,
dpgToken,
dpgTypes,
filterTokens,
SysUtils;
type
// =========================================================================
// Class Tfilter declaration
// =========================================================================
Tfilter = class( TdpgLexer)
protected // Public grammar rules ("rescoped")
procedure mP ( pCreate: boolean);
procedure mBR ( pCreate: boolean);
procedure mNEWLINE ( pCreate: boolean);
procedure mTAB ( pCreate: boolean);
public
function NextToken: IdpgToken; override;
end;
implementation
uses
dpgException,
dpgExceptionSemantic,
dpgExceptionMismatchedChar;
// ============================================================================
// mP
// ============================================================================
procedure Tfilter.mP( pCreate: boolean);
var
_begin: integer;
_save: integer;
_token: IdpgToken;
_ttype: integer;
begin
_begin := Length( fText) +1;
_token := nil;
_ttype := TT_P;
match('<p>');
if (_ttype <> TT_SKIP) and (pCreate = true) then
begin
_token := makeToken( _ttype);
_token.TokenText := Copy( fText, _begin, Length(fText)-_begin+1);
end;
fReturnToken := _token;
end;
// ============================================================================
// mBR
// ============================================================================
procedure Tfilter.mBR( pCreate: boolean);
var
_begin: integer;
_save: integer;
_token: IdpgToken;
_ttype: integer;
begin
_begin := Length( fText) +1;
_token := nil;
_ttype := TT_BR;
match('<br>');
if (_ttype <> TT_SKIP) and (pCreate = true) then
begin
_token := makeToken( _ttype);
_token.TokenText := Copy( fText, _begin, Length(fText)-_begin+1);
end;
fReturnToken := _token;
end;
// ============================================================================
// mNEWLINE
// ============================================================================
procedure Tfilter.mNEWLINE( pCreate: boolean);
var
_begin: integer;
_save: integer;
_token: IdpgToken;
_ttype: integer;
begin
_begin := Length( fText) +1;
_token := nil;
_ttype := TT_NEWLINE;
if (( LA(1) in [#13]) and (LA(2) in [#10])) then
begin
match(#13);
match(#10);
newLine; _ttype := TT_SKIP;
end
else if (( LA(1) in [#13])) then
begin
match(#13);
newLine; _ttype := TT_SKIP;
end
else if (( LA(1) in [#10])) then
begin
match(#10);
newLine; _ttype := TT_SKIP;
end
else
Raise EdpgMismatchedChar.Create( LA(1), [#10,#13], FileName, Line, Column);
if (_ttype <> TT_SKIP) and (pCreate = true) then
begin
_token := makeToken( _ttype);
_token.TokenText := Copy( fText, _begin, Length(fText)-_begin+1);
end;
fReturnToken := _token;
end;
// ============================================================================
// mTAB
// ============================================================================
procedure Tfilter.mTAB( pCreate: boolean);
var
_begin: integer;
_save: integer;
_token: IdpgToken;
_ttype: integer;
begin
_begin := Length( fText) +1;
_token := nil;
_ttype := TT_TAB;
match(#9);
tab; _ttype := TT_SKIP;
if (_ttype <> TT_SKIP) and (pCreate = true) then
begin
_token := makeToken( _ttype);
_token.TokenText := Copy( fText, _begin, Length(fText)-_begin+1);
end;
fReturnToken := _token;
end;
// ----------------------------------------------------------------------------
// NextToken
// ----------------------------------------------------------------------------
function Tfilter.NextToken : IdpgToken;
begin
while( true) do
begin
ResetText;
try
if (( LA(1) in ['<']) and (LA(2) in ['p'])) then
begin
mP(true);
result := fReturnToken;
end
else if (( LA(1) in ['<']) and (LA(2) in ['b'])) then
begin
mBR(true);
result := fReturnToken;
end
else if (( LA(1) in [#10,#13])) then
begin
mNEWLINE(true);
result := fReturnToken;
end
else if (( LA(1) in [#9])) then
begin
mTAB(true);
result := fReturnToken;
end
else
begin
if LA(1) = EOF_CHAR then
begin
uponEof;
result := TdpgToken.Create(TT_EOF);
end
else
begin
consume;
continue;
end;
end;
// --------------------------------------------------------------
// If we found a SKIP token, then try again...
// --------------------------------------------------------------
if result = nil then
continue;
// --------------------------------------------------------------
// Now we have a valid token, so exit the function
// --------------------------------------------------------------
break;
except
consume;
continue;
end;
end;
end;
end.
+19
View File
@@ -0,0 +1,19 @@
// ============================================================================
// This file is generated by the Delphi Parser Generator.
// ----------------------------------------------------------------------------
// DPG version: 1.0.0.78r
// Grammar: filter.g
// ============================================================================
unit filterTokens;
interface
const
TT_EOF = 1;
TT_P = 4;
TT_BR = 5;
TT_NEWLINE = 6;
TT_TAB = 7;
implementation
end.
+7
View File
@@ -0,0 +1,7 @@
// $Delphi Parser Generator: filter.pas -> TfilterTokens.txt$
Tfilter
TT_EOF=1
TT_P=4
TT_BR=5
TT_NEWLINE=6
TT_TAB=7