Initial check in docu
This commit is contained in:
@@ -0,0 +1,367 @@
|
||||
// ============================================================================
|
||||
// This file is generated by the Delphi Parser Generator.
|
||||
// ----------------------------------------------------------------------------
|
||||
// DPG version: 1.0.0.118r
|
||||
// Grammar: javadoclexer.g
|
||||
// ============================================================================
|
||||
unit JavaDocLexer;
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes,
|
||||
Contnrs,
|
||||
dpgLexer,
|
||||
dpgToken,
|
||||
dpgTokenStreamSelector,
|
||||
dpgTypes,
|
||||
JavaDocTokens,
|
||||
SysUtils;
|
||||
|
||||
type
|
||||
// =========================================================================
|
||||
// Class TJavaDocLexer declaration
|
||||
// =========================================================================
|
||||
TJavaDocLexer = class( TdpgLexer)
|
||||
|
||||
public
|
||||
Selector : IdpgTokenStreamSelector;
|
||||
|
||||
protected // Protected grammar rules
|
||||
procedure mID ( pCreate: boolean);
|
||||
|
||||
protected // Public grammar rules ("rescoped")
|
||||
procedure mPARAM ( pCreate: boolean);
|
||||
procedure mEXCEPTION ( pCreate: boolean);
|
||||
procedure mSTAR ( pCreate: boolean);
|
||||
procedure mJAVADOC_CLOSE ( pCreate: boolean);
|
||||
procedure mNEWLINE ( pCreate: boolean);
|
||||
|
||||
public
|
||||
function NextToken: IdpgToken; override;
|
||||
end;
|
||||
|
||||
implementation
|
||||
uses
|
||||
dpgException,
|
||||
dpgExceptionSemantic,
|
||||
dpgExceptionMismatchedChar;
|
||||
|
||||
// ============================================================================
|
||||
// mPARAM
|
||||
// ============================================================================
|
||||
procedure TJavaDocLexer.mPARAM( pCreate: boolean);
|
||||
var
|
||||
_begin: integer;
|
||||
_cnt_3: integer;
|
||||
_save: integer;
|
||||
_token: IdpgToken;
|
||||
_ttype: integer;
|
||||
|
||||
begin
|
||||
_begin := Length( fText) +1;
|
||||
_token := nil;
|
||||
_ttype := TT_PARAM;
|
||||
|
||||
match('@param');
|
||||
_cnt_3 := 0;
|
||||
|
||||
while(true) do
|
||||
begin
|
||||
if (( LA(1) in [' '])) then
|
||||
begin
|
||||
match(' ');
|
||||
end
|
||||
|
||||
else
|
||||
begin
|
||||
if _cnt_3 >= 1 then
|
||||
break
|
||||
else
|
||||
Raise EdpgMismatchedChar.Create( LA(1), [' '], FileName, Line, Column);
|
||||
end;
|
||||
|
||||
INC(_cnt_3);
|
||||
end;
|
||||
mID(false);
|
||||
|
||||
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;
|
||||
|
||||
// ============================================================================
|
||||
// mID
|
||||
// ============================================================================
|
||||
procedure TJavaDocLexer.mID( pCreate: boolean);
|
||||
var
|
||||
_begin: integer;
|
||||
_cnt_9: integer;
|
||||
_save: integer;
|
||||
_token: IdpgToken;
|
||||
_ttype: integer;
|
||||
|
||||
begin
|
||||
_begin := Length( fText) +1;
|
||||
_token := nil;
|
||||
_ttype := TT_ID;
|
||||
|
||||
_cnt_9 := 0;
|
||||
|
||||
while(true) do
|
||||
begin
|
||||
if (( LA(1) in ['a'..'z'])) then
|
||||
begin
|
||||
match( ['a'..'z']);
|
||||
end
|
||||
|
||||
else
|
||||
begin
|
||||
if _cnt_9 >= 1 then
|
||||
break
|
||||
else
|
||||
Raise EdpgMismatchedChar.Create( LA(1), ['a'..'z'], FileName, Line, Column);
|
||||
end;
|
||||
|
||||
INC(_cnt_9);
|
||||
end;
|
||||
|
||||
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;
|
||||
|
||||
// ============================================================================
|
||||
// mEXCEPTION
|
||||
// ============================================================================
|
||||
procedure TJavaDocLexer.mEXCEPTION( pCreate: boolean);
|
||||
var
|
||||
_begin: integer;
|
||||
_cnt_6: integer;
|
||||
_save: integer;
|
||||
_token: IdpgToken;
|
||||
_ttype: integer;
|
||||
|
||||
begin
|
||||
_begin := Length( fText) +1;
|
||||
_token := nil;
|
||||
_ttype := TT_EXCEPTION;
|
||||
|
||||
match('@exception');
|
||||
_cnt_6 := 0;
|
||||
|
||||
while(true) do
|
||||
begin
|
||||
if (( LA(1) in [' '])) then
|
||||
begin
|
||||
match(' ');
|
||||
end
|
||||
|
||||
else
|
||||
begin
|
||||
if _cnt_6 >= 1 then
|
||||
break
|
||||
else
|
||||
Raise EdpgMismatchedChar.Create( LA(1), [' '], FileName, Line, Column);
|
||||
end;
|
||||
|
||||
INC(_cnt_6);
|
||||
end;
|
||||
mID(false);
|
||||
|
||||
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;
|
||||
|
||||
// ============================================================================
|
||||
// mSTAR
|
||||
// ============================================================================
|
||||
procedure TJavaDocLexer.mSTAR( pCreate: boolean);
|
||||
var
|
||||
_begin: integer;
|
||||
_save: integer;
|
||||
_token: IdpgToken;
|
||||
_ttype: integer;
|
||||
|
||||
begin
|
||||
_begin := Length( fText) +1;
|
||||
_token := nil;
|
||||
_ttype := TT_STAR;
|
||||
|
||||
match('*');
|
||||
_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;
|
||||
|
||||
// ============================================================================
|
||||
// mJAVADOC_CLOSE
|
||||
// ============================================================================
|
||||
procedure TJavaDocLexer.mJAVADOC_CLOSE( pCreate: boolean);
|
||||
var
|
||||
_begin: integer;
|
||||
_save: integer;
|
||||
_token: IdpgToken;
|
||||
_ttype: integer;
|
||||
|
||||
begin
|
||||
_begin := Length( fText) +1;
|
||||
_token := nil;
|
||||
_ttype := TT_JAVADOC_CLOSE;
|
||||
|
||||
match('*/');
|
||||
Selector.Pop;
|
||||
|
||||
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 TJavaDocLexer.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);
|
||||
end
|
||||
|
||||
else if (( LA(1) in [#13])) then
|
||||
begin
|
||||
match(#13);
|
||||
end
|
||||
|
||||
else if (( LA(1) in [#10])) then
|
||||
begin
|
||||
match(#10);
|
||||
end
|
||||
|
||||
else
|
||||
Raise EdpgMismatchedChar.Create( LA(1), [#10,#13], FileName, Line, Column);
|
||||
newLine;
|
||||
_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 TJavaDocLexer.NextToken : IdpgToken;
|
||||
var
|
||||
la1 : char;
|
||||
la2 : char;
|
||||
begin
|
||||
while( true) do
|
||||
begin
|
||||
ResetText;
|
||||
|
||||
try
|
||||
la1 := LA(1);
|
||||
la2 := LA(2);
|
||||
|
||||
if (( LA(1) in ['@']) and (LA(2) in ['p'])) then
|
||||
begin
|
||||
mPARAM(true);
|
||||
result := fReturnToken;
|
||||
end
|
||||
|
||||
else if (( LA(1) in ['@']) and (LA(2) in ['e'])) then
|
||||
begin
|
||||
mEXCEPTION(true);
|
||||
result := fReturnToken;
|
||||
end
|
||||
|
||||
else if (( LA(1) in ['*']) and (LA(2) in ['/'])) then
|
||||
begin
|
||||
mJAVADOC_CLOSE(true);
|
||||
result := fReturnToken;
|
||||
end
|
||||
|
||||
else if (( LA(1) in ['*'])) then
|
||||
begin
|
||||
mSTAR(true);
|
||||
result := fReturnToken;
|
||||
end
|
||||
|
||||
else if (( LA(1) in [#10,#13])) then
|
||||
begin
|
||||
mNEWLINE(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.
|
||||
Reference in New Issue
Block a user