Пример #1
0
 bool ParseElement(string elem, out Expression result)
 {
     result = null;
     elem = elem.Trim();
     if (elem.Length == 0) { return false; }
     if (elem[0] == '(') {
         elem = elem.Substring(1, elem.Length-2).Trim();
     }
     int val;
     if (int.TryParse(elem, out val)) {
         result = new LiteralExpression(val);
     } else {
         // verify variable name
         for(int i=0; i<elem.Length; ++i) {
             if (!char.IsUpper(elem[i]) || elem[i] == '_' || char.IsNumber(elem[i])) {
                 return false;
             }
         }
         result = new VariableExpression(elem);
     }
     return true;
 }
Пример #2
0
 State SawTurn(Token t)
 {
     Expression exp = null;
     if (t.type == TokenType.Expression) {
         exp = mExpParser.Parse(t.data);
     } else {
         switch(t.data) {
             case "left": exp = new LiteralExpression(90); break;
             case "right": exp = new LiteralExpression(-90); break;
         }
     }
     if (exp != null) {
         mScratchpad.Add(new ActionInstruction(turnAction, exp));
         return Idle;
     }
     return null;
 }