private static function getParameterList(SimpleXMLElement $element) { $list = new ParameterMetaDataList(); foreach ($element->AST_formal_parameter_list as $key => $parameterList) { if (strcasecmp($key, ParameterMetaDataList::NODE_NAME) !== 0) { continue; } $parameters = $parameterList->children(); foreach ($parameters as $k => $parameterDef) { if (strcasecmp($k, ParameterMetaData::NODE_NAME) !== 0) { continue; } $parameterMeta = new ParameterMetaData(); $parameterMeta->setToken(new VariableTokenMetaData(self::getTokenValue($parameterDef->Token_variable_name))); if (strcasecmp($k, ParameterMetaData::NODE_NAME) === 0) { $astType = $parameterDef->AST_type; $type = new TypeMetaData(); $type->setToken(new ClassTokenMetaData(self::getTokenValue($astType->Token_class_name))); $parameterMeta->setType($type); } $list->add($parameterMeta); } } return $list; }
public function visitParameterMeta(ParameterMetaData $meta) { $buf = new TreeOutput(); $buf->add('[' . $meta->getNodeName() . ']'); $buf->down(); $buf->writeln($meta->getType()->toJSValue($this)); $buf->writeln($meta->getToken()->toJSValue($this)); $buf->up(); return $buf; }