byte parseCommandMoveplane( char *message, byte length, byte *position, command_t *command, bytecode_t *bytecode) { byte axis; byte offset; byte destination; rgb_t rgb; byte errorCode = 0; bytecode->executer = command->executer; skipWhitespace(message, length, position); errorCode = parseAxis(message, length, position, & axis); skipWhitespace(message, length, position); errorCode = parseOffset(message, length, position, & offset); skipWhitespace(message, length, position); errorCode = parseOffset(message, length, position, & destination); skipWhitespace(message, length, position); errorCode = parseRGB(message, length, position, & rgb); if (errorCode == 0) cubeMoveplane(axis, offset, destination, rgb); return(errorCode); };
bool UniversalJoint::parseAttributeElements(const std::string& name, const AttributeSet& attributes, int line, int column, ErrorManager* errorManager) { if(name == "AnchorPoint") { anchorPoint = parentNode->getPosition(); anchorPoint += parentNode->getRotation() * (ParserUtilities::toPoint(attributes)); } else if(name == "Axis1" || name == "Axis2") { parseAxis(name, attributes); if(name == "Axis1") { axis1 = &axes[0]; } else if(name == "Axis2") { axis1 = &axes[0]; axis2 = &axes[1]; } } else if(name == "AngularMotor") { parseMotor(name, attributes); } else if(name == "VelocityMotor") { parseMotor(name, attributes); } else if(name == "Deflection") { axes.back().minValue = (ParserUtilities::toDouble(ParserUtilities::getValueFor(attributes, "min"))); axes.back().maxValue = (ParserUtilities::toDouble(ParserUtilities::getValueFor(attributes, "max"))); axes.back().limited = true; } else if(name == "PController") { axes.back().motor->parseController(name, attributes); } else if(name == "PIDController") { axes.back().motor->parseController(name, attributes); ((PIDController*)axes.back().motor->getMotorController())->setTimeStep(simulation->getStepLength()); } else if(name == "Friction") { if(!axes.empty()) axes.back().friction = ParserUtilities::toDouble(ParserUtilities::getValueFor(attributes, "value")); } return true; }
status_t KeyLayoutMap::Parser::parse() { while (!mTokenizer->isEof()) { #if DEBUG_PARSER ALOGD("Parsing %s: '%s'.", mTokenizer->getLocation().string(), mTokenizer->peekRemainderOfLine().string()); #endif mTokenizer->skipDelimiters(WHITESPACE); if (!mTokenizer->isEol() && mTokenizer->peekChar() != '#') { String8 keywordToken = mTokenizer->nextToken(WHITESPACE); if (keywordToken == "key") { mTokenizer->skipDelimiters(WHITESPACE); status_t status = parseKey(); if (status) return status; } else if (keywordToken == "axis") { mTokenizer->skipDelimiters(WHITESPACE); status_t status = parseAxis(); if (status) return status; } else if (keywordToken == "led") { mTokenizer->skipDelimiters(WHITESPACE); status_t status = parseLed(); if (status) return status; } else { ALOGE("%s: Expected keyword, got '%s'.", mTokenizer->getLocation().string(), keywordToken.string()); return BAD_VALUE; } mTokenizer->skipDelimiters(WHITESPACE); if (!mTokenizer->isEol() && mTokenizer->peekChar() != '#') { ALOGE("%s: Expected end of line or trailing comment, got '%s'.", mTokenizer->getLocation().string(), mTokenizer->peekRemainderOfLine().string()); return BAD_VALUE; } } mTokenizer->nextLine(); } return NO_ERROR; }
byte parseCommandShift( char *message, byte length, byte *position, command_t *command, bytecode_t *bytecode) { byte axis; byte direction; byte errorCode = 0; bytecode->executer = command->executer; skipWhitespace(message, length, position); errorCode = parseAxis(message, length, position, & axis); skipWhitespace(message, length, position); errorCode = parseDirection(message, length, position, & direction); if (errorCode == 0) cubeShift(axis, direction); return(errorCode); };
byte parseCommandSetplane( char *message, byte length, byte *position, command_t *command, bytecode_t *bytecode) { byte axis; byte offset; byte errorCode = 0; bytecode->executer = command->executer; skipWhitespace(message, length, position); errorCode = parseAxis(message, length, position, & axis); skipWhitespace(message, length, position); errorCode = parseOffset(message, length, position, & offset); skipWhitespace(message, length, position); errorCode = parseRGB(message, length, position, & bytecode->u.lit.colorFrom); if (errorCode == 0) cubeSetplane(axis, offset, bytecode->u.lit.colorFrom); return(errorCode); };