Resolve() public method

public Resolve ( ) : CSymbol
return CSymbol
Beispiel #1
0
		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;
		}
Beispiel #2
0
	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?"));
		}
	}