Esempio n. 1
0
	void Imperative_Ident(out ProtoCore.AST.ImperativeAST.ImperativeNode node) {
		ProtoCore.AST.ImperativeAST.ImperativeNode var = null; 
		Expect(1);
		if (!disableKwCheck && IsKeyWord(t.val, false, false))
		{
		   errors.SemErr(t.line, t.col, String.Format(Resources.keywordCantBeUsedAsIdentifier, t.val));
		}
		int ltype = (0 == String.Compare(t.val, "return")) ? (int)ProtoCore.PrimitiveType.kTypeReturn : (int)ProtoCore.PrimitiveType.kTypeVar;
		if (ltype == (int)ProtoCore.PrimitiveType.kTypeReturn && la.val != "=")
		{
		   SynErr(String.Format(Resources.InvalidReturnStatement, la.val)); 
		}        
		var = BuildImperativeIdentifier(t.val, (ProtoCore.PrimitiveType)ltype);
		NodeUtils.SetNodeLocation(var, t);
		
		#if ENABLE_INC_DEC_FIX 
		if (la.kind == 65 || la.kind == 66) {
			Imperative_PostFixOp(out op);
			ProtoCore.AST.ImperativeAST.PostFixNode pfNode = new ProtoCore.AST.ImperativeAST.PostFixNode();
			pfNode.Operator = op;
			pfNode.Identifier = var;
			var = pfNode;                           
			
		}
		#endif 
		node = var; 
	}
Esempio n. 2
0
	void Imperative_Ident(out ProtoCore.AST.ImperativeAST.ImperativeNode node) {
		ProtoCore.AST.ImperativeAST.ImperativeNode var = null; 
		Expect(1);
		if (!disableKwCheck && IsKeyWord(t.val, false, false))
		{
		   errors.SemErr(t.line, t.col, String.Format("\"{0}\" is a keyword, identifier expected", t.val));
		}
		int ltype = (0 == String.Compare(t.val, "return")) ? (int)ProtoCore.PrimitiveType.kTypeReturn : (int)ProtoCore.PrimitiveType.kTypeVar;
		if (ltype == (int)ProtoCore.PrimitiveType.kTypeReturn && la.val != "=")
		{
		   SynErr("Return statement is invalid. Do you mean: return = " + la.val + " ?"); 
		}        
		var = BuildImperativeIdentifier(t.val, (ProtoCore.PrimitiveType)ltype);
		NodeUtils.SetNodeLocation(var, t);
		
		#if ENABLE_INC_DEC_FIX 
		if (la.kind == 68 || la.kind == 69) {
			Imperative_PostFixOp(out op);
			ProtoCore.AST.ImperativeAST.PostFixNode pfNode = new ProtoCore.AST.ImperativeAST.PostFixNode();
			pfNode.Operator = op;
			pfNode.Identifier = var;
			var = pfNode;                           
			
		}
		#endif 
		node = var; 
	}