Beispiel #1
0
	void Imperative_forloop(out ProtoCore.AST.ImperativeAST.ImperativeNode forloop) {
		ProtoCore.AST.ImperativeAST.ImperativeNode node;
		ProtoCore.AST.ImperativeAST.ForLoopNode loopNode = new ProtoCore.AST.ImperativeAST.ForLoopNode();
		List<ProtoCore.AST.ImperativeAST.ImperativeNode> body = null;   
		
		Expect(33);
		NodeUtils.SetNodeLocation(loopNode, t); loopNode.KwForLine = t.line; loopNode.KwForCol = t.col; 
		Expect(12);
		int idLine = la.line; int idCol = la.col; 
		Imperative_Ident(out node);
		loopNode.LoopVariable = node; loopNode.LoopVariable.line = idLine; loopNode.LoopVariable.col = idCol; 
		Expect(65);
		loopNode.KwInLine = t.line; loopNode.KwInCol = t.col; int exprLine = la.line; int exprCol = la.col; 
		Imperative_expr(out node);
		loopNode.Expression = node; if (loopNode.Expression != null) {  loopNode.Expression.line = exprLine; loopNode.Expression.col = exprCol; } 
		Expect(13);
		if (la.kind == 45) {
			Get();
			Imperative_stmtlist(out body);
			loopNode.Body = body; 
			Expect(46);
			NodeUtils.SetNodeEndLocation(loopNode, t); 
		} else if (StartOf(21)) {
			ProtoCore.AST.ImperativeAST.ImperativeNode singleStmt = null; 
			Imperative_stmt(out singleStmt);
			loopNode.Body.Add(singleStmt); 
		} else SynErr(110);
		forloop = loopNode;
		
	}
Beispiel #2
0
	void Imperative_forloop(out ProtoCore.AST.ImperativeAST.ImperativeNode forloop) {
		ProtoCore.AST.ImperativeAST.IfStmtNode dummyIfNode = new ProtoCore.AST.ImperativeAST.IfStmtNode();
		ProtoCore.AST.ImperativeAST.ImperativeNode node;
		ProtoCore.AST.ImperativeAST.ForLoopNode loopNode = new ProtoCore.AST.ImperativeAST.ForLoopNode();
		List<ProtoCore.AST.ImperativeAST.ImperativeNode> body = null;   
		
		Expect(34);
		NodeUtils.SetNodeLocation(loopNode, t); loopNode.KwForLine = t.line; loopNode.KwForCol = t.col; 
		Expect(10);
		int idLine = la.line; int idCol = la.col; 
		Imperative_Ident(out node);
		loopNode.loopVar = node; loopNode.loopVar.line = idLine; loopNode.loopVar.col = idCol; 
		Expect(68);
		loopNode.KwInLine = t.line; loopNode.KwInCol = t.col; int exprLine = la.line; int exprCol = la.col; 
		Imperative_expr(out node);
		loopNode.expression = node; if (loopNode.expression != null) {  loopNode.expression.line = exprLine; loopNode.expression.col = exprCol; } 
		Expect(11);
		if (la.kind == 46) {
			Get();
			Imperative_stmtlist(out body);
			loopNode.body = body; 
			Expect(47);
			NodeUtils.SetNodeEndLocation(loopNode, t); 
		} else if (StartOf(22)) {
			ProtoCore.AST.ImperativeAST.ImperativeNode singleStmt = null; 
			Imperative_stmt(out singleStmt);
			loopNode.body.Add(singleStmt); 
		} else SynErr(116);
		dummyIfNode.IfExprNode
		= new ProtoCore.AST.ImperativeAST.BooleanNode(true);
		dummyIfNode.IfBody.Add(loopNode);
		dummyIfNode.line = loopNode.line;
		dummyIfNode.col = loopNode.col;
		dummyIfNode.endLine = loopNode.endLine;
		dummyIfNode.endCol = loopNode.endCol;
		forloop = dummyIfNode;
		
	}