private void VisitFunctionConstant(function_constant_definition cnst)
		{
			SavePosition(cnst);
			bw.Write(cnst.name);
			SaveExpressionAndOffset(cnst.const_value);
			bw.Write(0);
			//VisitExpression((expression_node)cnst.const_value);
		}
示例#2
0
 public function_constant_reference(function_constant_definition cdn, location loc) : base(cdn.type, loc)
 {
     this.cdn = cdn;
 }
示例#3
0
		public constant_definition_node add_const_definition(string name,location loc)
		{
			constant_definition_node cdn=null;
			//cdn.loc=loc;
			switch (converting_block())
			{
				case block_type.function_block:
				{
                    common_function_node top_func = _func_stack.top();
                    function_constant_definition fcd = new function_constant_definition(name, loc, top_func);
					top_func.scope.AddSymbol(name,new SymbolInfo(fcd));
                    top_func.constants.AddElement(fcd);
                    cdn = fcd;
					break;
				}
				case block_type.type_block:
				{
                    class_constant_definition ccd = new class_constant_definition(name, loc, _ctn);
					_ctn.Scope.AddSymbol(name,new SymbolInfo(ccd));
					_ctn.const_defs.AddElement(ccd);
                    cdn = ccd;
					break;
				}
				case block_type.namespace_block:
				{
                    namespace_constant_definition ncd = new namespace_constant_definition(name, loc, _cmn);
					_cmn.scope.AddSymbol(name,new SymbolInfo(ncd));
					_cmn.constants.AddElement(ncd);
                    cdn = ncd;
					break;
				}
			}
			return cdn;
		}
        private function_constant_definition GetFunctionConstant(common_function_node func)
        {
        	int offset = (int)br.BaseStream.Position-start_pos;
			//int tmp=br.ReadByte();
			function_constant_definition fcd = new function_constant_definition(br.ReadString(),null,func);
			//members[offset] = lv;
            AddMember(fcd, offset);            
            fcd.const_value = CreateExpressionWithOffset() as constant_node;
            return fcd;
        }