public SymbolType(SymbolsGen yyp,string name,bool defined) { Lexer yyl = yyp.m_lexer; int p = name.IndexOf("+"); int num = 0; if (p>0) { num = int.Parse(name.Substring(p+1)); if (num> yyp.LastSymbol) yyp.LastSymbol = num; name = name.Substring(0,p); } yyl.yytext = name; CSymbol s = new CSymbol(yyp); if (num>0) s.m_yynum = num; s = s.Resolve(); if (defined) s.m_defined = true; m_name = name; m_next=yyp.stypes; yyp.stypes=this; }
public override void ClassDefinition(string bas) { string line, name; int n = m_lexer.yytext.Length; line = m_lexer.yytext; int num = EmitClassDefin(m_lexer.m_buf,ref m_lexer.m_pch,m_lexer.m_buf.Length,null,bas,out bas,out name,false); m_lexer.Advance(); m_lexer.yytext = name; CSymbol s = new CSymbol(this); s.m_yynum = num; s = s.Resolve(); s.m_defined = true; s.m_emitted = true; if (line[1]=='n') { s.m_symtype = CSymbol.SymType.nodesymbol; if (m_symbols.symbols.Contains(bas)) s.m_refSymbol = (CSymbol)m_symbols.symbols[bas]; else m_symbols.erh.Error(new CSToolsFatalException(44,s,"Unknown base type "+bas+": reorder declarations?")); } }