mirror of
https://github.com/ton-blockchain/ton
synced 2025-03-09 15:40:10 +00:00
[Tolk] Implement AST: intermediate representation of tolk files
Now, the whole .tolk file can be loaded as AST tree and then converted to Expr/Op. This gives a great ability to implement AST transformations. In the future, more and more code analysis will be moved out of legacy to AST-level.
This commit is contained in:
parent
6c30e5a7eb
commit
80001d1756
23 changed files with 3798 additions and 2233 deletions
|
@ -22,12 +22,6 @@
|
|||
namespace tolk {
|
||||
|
||||
|
||||
Symbol::Symbol(std::string str, sym_idx_t idx) : str(std::move(str)), idx(idx) {
|
||||
subclass = this->str[0] == '.' ? SymbolSubclass::dot_identifier
|
||||
: this->str[0] == '~' ? SymbolSubclass::tilde_identifier
|
||||
: SymbolSubclass::undef;
|
||||
}
|
||||
|
||||
std::string Symbol::unknown_symbol_name(sym_idx_t i) {
|
||||
if (!i) {
|
||||
return "_";
|
||||
|
@ -78,7 +72,7 @@ void open_scope(SrcLocation loc) {
|
|||
G.scope_opened_at.push_back(loc);
|
||||
}
|
||||
|
||||
void close_scope(SrcLocation loc) {
|
||||
void close_scope() {
|
||||
if (!G.scope_level) {
|
||||
throw Fatal{"cannot close the outer scope"};
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue