Initial check in lib

This commit is contained in:
2026-01-03 18:33:48 +01:00
parent b20cd8e688
commit 5666f85e99
89 changed files with 36370 additions and 1 deletions
+88
View File
@@ -0,0 +1,88 @@
unit dpglib.CharLiteralElem;
interface
uses
dpgrtl.types,
dpglib.types,
dpglib.GrammarAtom;
type
// =========================================================================
// Class TCharLiteralElem declaration
// =========================================================================
TCharLiteralElem = class( TGrammarAtom,
ICharLiteralElem,
IGrammarAtom,
IAlternativeElem,
IGrammarElem)
public
// ------------------------------------------------------------
// Constructor/destructor
// ------------------------------------------------------------
constructor Create( pGrammar : IGrammar;
pToken : IToken;
pInverted : boolean;
pAutoGenType: integer);
public
// ------------------------------------------------------------
// IGrammarElem methods
// ------------------------------------------------------------
procedure Generate;
function Look( pK: integer): ILookahead;
end;
implementation
// ****************************************************************************
// Constructor/destructor
// ****************************************************************************
// ----------------------------------------------------------------------------
// Constructor
// ----------------------------------------------------------------------------
constructor TCharLiteralElem.Create( pGrammar : IGrammar;
pToken : IToken;
pInverted : boolean;
pAutoGenType: integer);
begin
inherited Create( pGrammar, pToken, AUTOGEN_NONE);
{ TODO 1 -omiki -ctoken : Fix for TokenTypeForCharLiteral }
if pToken.TokenText = '' then
begin
fLine := 1;
exit;
end;
fTokenType := ord(pToken.TokenText[1]);
// token_type = ANTLRLexer.tokentypeforcharliteral(pToken.TokenText);
// pGrammar.charVocabulary.add fTokenType;
fLine := pToken.TokenLine;
fNot := pInverted;
fAutoGenType:= pAutoGenType;
end;
// ****************************************************************************
// IGrammarElem implementation
// ****************************************************************************
// ----------------------------------------------------------------------------
// Generate
// ----------------------------------------------------------------------------
procedure TCharLiteralElem.Generate;
var
elem: ICharLiteralElem;
begin
elem := self;
fGrammar.Generator.Gen(elem);
end;
// ----------------------------------------------------------------------------
// Look
// ----------------------------------------------------------------------------
function TCharLiteralElem.Look(pK: integer): ILookahead;
begin
result := fGrammar.LLkAnalyzer.Look( pK, self);
end;
end.