diff options
author | Adrian Thurston <thurston@complang.org> | 2013-05-19 22:40:19 -0400 |
---|---|---|
committer | Adrian Thurston <thurston@complang.org> | 2013-05-19 22:40:19 -0400 |
commit | 85185e6c2d08b8580cc48e04916ae4068fd144d3 (patch) | |
tree | 55cf449649343dc85e3f6e0768af8783157e1c04 | |
parent | fee74cce1728592bf96ac76323bd994895a0daf9 (diff) | |
download | colm-85185e6c2d08b8580cc48e04916ae4068fd144d3.tar.gz |
trying out more production labels
-rw-r--r-- | colm/colm.lm | 34 | ||||
-rw-r--r-- | colm/loadcolm.cc | 70 |
2 files changed, 53 insertions, 51 deletions
diff --git a/colm/colm.lm b/colm/colm.lm index 6a0dc00a..c974b3d4 100644 --- a/colm/colm.lm +++ b/colm/colm.lm @@ -183,23 +183,23 @@ def start [RootItemList: root_item*] def root_item - [RlDef: rl_def] commit -| [LiteralDef: literal_def] commit -| [TokenDef: token_def] commit -| [IgnoreDef: ignore_def] commit -| [CflDef: cfl_def] commit -| [RegionDef: region_def] commit -| [ContextDef: context_def] commit -| [NamespaceDef: namespace_def] commit -| [FunctionDef: function_def] commit -| [IterDef: iter_def] commit -| [Statement: statement] commit -| [GlobalDef: global_def] commit -| [ExportDef: export_def] commit -| [PreEofDef: pre_eof_def] commit -| [PrecedenceDef: precedence_def] commit -| [AliasDef: alias_def] commit -| [Include: include] commit + [RlDef: rl_def] :RlProd commit +| [LiteralDef: literal_def] :LiteralProd commit +| [TokenDef: token_def] :TokenProd commit +| [IgnoreDef: ignore_def] :IgnoreProd commit +| [CflDef: cfl_def] :CflProd commit +| [RegionDef: region_def] :RegionProd commit +| [ContextDef: context_def] :ContextProd commit +| [NamespaceDef: namespace_def] :NamespaceProd commit +| [FunctionDef: function_def] :FunctionProd commit +| [IterDef: iter_def] :IterProd commit +| [Statement: statement] :StatementProd commit +| [GlobalDef: global_def] :GlobalProd commit +| [ExportDef: export_def] :ExportProd commit +| [PreEofDef: pre_eof_def] :PreEofProd commit +| [PrecedenceDef: precedence_def] :PrecedenceProd commit +| [AliasDef: alias_def] :AliasProd commit +| [Include: include] :IncludeProd commit def include [INCLUDE File: lit] diff --git a/colm/loadcolm.cc b/colm/loadcolm.cc index 660b1986..e159d1cc 100644 --- a/colm/loadcolm.cc +++ b/colm/loadcolm.cc @@ -1789,67 +1789,69 @@ struct LoadColm void walkRootItem( root_item &rootItem, StmtList *stmtList ) { - if ( rootItem.RlDef() != 0 ) { + switch ( rootItem.prodType() ) { + case root_item::RlProd: walkRlDef( rootItem.RlDef() ); - } - else if ( rootItem.TokenDef() != 0 ) { + break; + case root_item::TokenProd: walkTokenDef( rootItem.TokenDef() ); - } - else if ( rootItem.IgnoreDef() != 0 ) { + break; + case root_item::IgnoreProd: walkIgnoreDef( rootItem.IgnoreDef() ); - } - else if ( rootItem.LiteralDef() != 0 ) { + break; + case root_item::LiteralProd: walkLiteralDef( rootItem.LiteralDef() ); - } - else if ( rootItem.CflDef() != 0 ) { + break; + case root_item::CflProd: walkCflDef( rootItem.CflDef() ); - } - else if ( rootItem.RegionDef() != 0 ) { + break; + case root_item::RegionProd: walkLexRegion( rootItem.RegionDef() ); - } - else if ( rootItem.Statement() != 0 ) { + break; + case root_item::StatementProd: { LangStmt *stmt = walkStatement( rootItem.Statement() ); if ( stmt != 0 ) stmtList->append( stmt ); + break; } - else if ( rootItem.ContextDef() != 0 ) { + case root_item::ContextProd: walkContextDef( rootItem.ContextDef() ); - } - else if ( rootItem.NamespaceDef() != 0 ) { + break; + case root_item::NamespaceProd: walkNamespaceDef( rootItem.NamespaceDef() ); - } - else if ( rootItem.FunctionDef() != 0 ) { + break; + case root_item::FunctionProd: walkFunctionDef( rootItem.FunctionDef() ); - } - else if ( rootItem.IterDef() != 0 ) { - walkIterDef( rootItem.IterDef() ); - } - else if ( rootItem.IterDef() != 0 ) { + break; + case root_item::IterProd: walkIterDef( rootItem.IterDef() ); - } - else if ( rootItem.PreEofDef() != 0 ) { + break; + case root_item::PreEofProd: walkPreEof( rootItem.PreEofDef() ); - } - else if ( rootItem.ExportDef() != 0 ) { + break; + case root_item::ExportProd: { LangStmt *stmt = walkExportDef( rootItem.ExportDef() ); if ( stmt != 0 ) stmtList->append( stmt ); + break; } - else if ( rootItem.AliasDef() != 0 ) { + case root_item::AliasProd: walkAliasDef( rootItem.AliasDef() ); - } - else if ( rootItem.PrecedenceDef() != 0 ) { + break; + case root_item::PrecedenceProd: walkPrecedenceDef( rootItem.PrecedenceDef() ); - } - else if ( rootItem.Include() != 0 ) { + break; + case root_item::IncludeProd: { StmtList *includeList = walkInclude( rootItem.Include() ); stmtList->append( *includeList ); + break; } - else if ( rootItem.GlobalDef() != 0 ) { + case root_item::GlobalProd: { LangStmt *stmt = walkGlobalDef( rootItem.GlobalDef() ); if ( stmt != 0 ) stmtList->append( stmt ); - } + break; + }} } bool walkOptNoIgnore( opt_no_ignore OptNoIngore ) |