Hi Guillaume,
1. the DDLName is a template macro, which means you can find the template "DDL Name" definition in the tree of DDL Template Editor.
For example,
CREATE TABLE %DDLName("EA", "TABLE", "INCLUDE_OWNER", "INCLUDE_SURROUND")%
click "DDL Name" in the tree, you can find that there are variables like "$parameter1", "$parameter2", "$parameter3" "$parameter4".
It is straight forward to see what logic these parameters served.
For example, suppose there is no "$parameter2" defined for "DDL Name" template, we will need lots and lots of field macros like DDLTableName, DDLProcedureName, DDLFunctionName, DDLViewName......; and it is impossible to add new types if EA does not support it.
However, in this way, it is a freedom to pass new arguments, even the number of parameter/arguments.
2. EA does support reverse engineering for Database ---- through ODBC.
Context menu on a package | Code Engineering | Import DB Schema from ODBC. Then EA will pull the schema from the connected DBMS and create tables/procedures/views/....
EA is actually doing more than this. From Tools | Database Builder | you can compare the model in EA and the current schema in your DBMS.
Then different will be picked up (E.g. field length is 10 inside EA and 20 in DBMS), then you can choose "merge to EA" or "merge to DBMS", suppose you choose merge to DBMS, a group of DDL scripts will be generated in an executable order.
3. As qwerty mentioned, the reverse engineering from "DDL text" is not trivial. Basically, a parser (for each different DBMSs and each DBMS has different versions which might have different grammar syntax) is needed to analyze the text. (Think how EA import C++/Java source code.)
Hope that helps
