public FactorNode Factor() { var factor = new FactorNode(); if (token.value == "not") { factor.not = true; Match(TokenTypes.ID, "not"); } if (token.type == TokenTypes.ID) { factor.value = token.value; factor.type = TokenTypes.ID; Match(TokenTypes.ID); if (token.type == TokenTypes.LPAR) { Match(TokenTypes.LPAR); bool end; do { factor.expressionList.Add(Expression()); end = token.value == ")"; if (!end) { Match(TokenTypes.COMMA); } } while (!end); } else if (token.type == TokenTypes.LBRACKET) { Match(TokenTypes.LBRACKET); factor.arrayExpression = Expression(); Match(TokenTypes.RBRACKET); } } else if (token.type == TokenTypes.NUM) { factor.value = token.value; Match(TokenTypes.NUM); factor.type = TokenTypes.NUM; } else if (token.type == TokenTypes.LPAR) { Match(TokenTypes.LPAR); factor.parExpression = Expression(); Match(TokenTypes.RPAR); } return(factor); }
private string Factor(FactorNode node) { string output = ""; //needs to address various froms of NUM if (node.type == TokenTypes.ID) { output += "ldloc." + program.Declarations.variableList.FindIndex(x => node.value == x.variableName) + "\n"; } if (node.type == TokenTypes.NUM) { output += "ldc.i4." + node.value + "\n"; } if (node.not) { output += "not\n"; } return(output); }