Awesome
Abstract Syntax Tree Builder for Delphi
With DelphiAST you can take real Delphi code and get an abstract syntax tree. One unit at time and without a symbol table though.
FreePascal and Lazarus compatible.
Sample input
unit Unit1;
interface
uses
Unit2;
function Sum(A, B: Integer): Integer;
implementation
function Sum(A, B: Integer): Integer;
begin
Result := A + B;
end;
end.
Sample outcome
<UNIT line="1" col="1" name="Unit1">
<INTERFACE begin_line="3" begin_col="1" end_line="10" end_col="1">
<USES begin_line="5" begin_col="1" end_line="8" end_col="1">
<UNIT line="6" col="3" name="Unit2"/>
</USES>
<METHOD begin_line="8" begin_col="1" end_line="10" end_col="1" kind="function" name="Sum">
<PARAMETERS line="8" col="13">
<PARAMETER line="8" col="14">
<NAME line="8" col="14" value="A"/>
<TYPE line="8" col="20" name="Integer"/>
</PARAMETER>
<PARAMETER line="8" col="17">
<NAME line="8" col="17" value="B"/>
<TYPE line="8" col="20" name="Integer"/>
</PARAMETER>
</PARAMETERS>
<RETURNTYPE line="8" col="30">
<TYPE line="8" col="30" name="Integer"/>
</RETURNTYPE>
</METHOD>
</INTERFACE>
<IMPLEMENTATION begin_line="10" begin_col="1" end_line="17" end_col="1">
<METHOD begin_line="12" begin_col="1" end_line="17" end_col="1" kind="function" name="Sum">
<PARAMETERS line="12" col="13">
<PARAMETER line="12" col="14">
<NAME line="12" col="14" value="A"/>
<TYPE line="12" col="20" name="Integer"/>
</PARAMETER>
<PARAMETER line="12" col="17">
<NAME line="12" col="17" value="B"/>
<TYPE line="12" col="20" name="Integer"/>
</PARAMETER>
</PARAMETERS>
<RETURNTYPE line="12" col="30">
<TYPE line="12" col="30" name="Integer"/>
</RETURNTYPE>
<STATEMENTS begin_line="13" begin_col="1" end_line="15" end_col="4">
<ASSIGN line="14" col="3">
<LHS line="14" col="3">
<IDENTIFIER line="14" col="3" name="Result"/>
</LHS>
<RHS line="14" col="13">
<EXPRESSION line="14" col="13">
<ADD line="14" col="15">
<IDENTIFIER line="14" col="13" name="A"/>
<IDENTIFIER line="14" col="17" name="B"/>
</ADD>
</EXPRESSION>
</RHS>
</ASSIGN>
</STATEMENTS>
</METHOD>
</IMPLEMENTATION>
</UNIT>
Copyright
Copyright (c) 2014-2020 Roman Yankovsky (roman@yankovsky.me) et al
DelphiAST is released under the Mozilla Public License, v. 2.0
See LICENSE for details.