MCPcopy
hub / github.com/lutzroeder/netron / _parseArguments

Method _parseArguments

source/python.js:1637–1710  ·  view source on GitHub ↗
(terminal)

Source from the content-addressed store, hash-verified

1635 return null;
1636 }
1637 _parseArguments(terminal) {
1638 let posonlyargs = [];
1639 let args = [];
1640 let vararg = null;
1641 const kwonlyargs = [];
1642 const kw_defaults = [];
1643 let kwarg = null;
1644 const defaults = [];
1645 let is_slash = false;
1646 let is_vararg = false; // '*'
1647 let is_kwarg = false; // '**'
1648 const read = (required) => {
1649 const name = this._parseName(required);
1650 if (name) {
1651 const annotation = terminal !== ':' && this._tokenizer.accept(':') ? this._parseType() : null;
1652 return new ast.arg(name.id, annotation, null);
1653 }
1654 return null;
1655 };
1656 while (!this._tokenizer.accept(terminal)) {
1657 this._tokenizer.accept('\n');
1658 if (this._tokenizer.accept('/')) {
1659 if (is_slash || is_vararg || is_kwarg) {
1660 throw new python.Error(`Invalid '/' in arguments ${this._location()}`);
1661 }
1662 is_slash = true;
1663 } else if (this._tokenizer.accept('*')) {
1664 if (is_vararg) {
1665 throw new python.Error(`Multiple '*' arguments ${this._location()}`);
1666 }
1667 is_vararg = true;
1668 const arg = read(false);
1669 vararg = arg ? arg : vararg;
1670 } else if (this._tokenizer.accept('**')) {
1671 if (is_kwarg) {
1672 throw new python.Error(`Multiple '**' arguments ${this._location()}`);
1673 }
1674 is_kwarg = true;
1675 kwarg = read(true);
1676 } else {
1677 const arg = read(false);
1678 if (!arg) {
1679 this._tokenizer.expect(terminal);
1680 break;
1681 }
1682 const default_value = this._tokenizer.accept('=') ? this._parseExpression() : null;
1683 if (!is_vararg && !is_kwarg) {
1684 if (is_slash) {
1685 args.push(arg);
1686 } else {
1687 posonlyargs.push(arg);
1688 }
1689 if (default_value !== null) {
1690 defaults.push(default_value);
1691 }
1692 } else if (is_vararg && !is_kwarg) {
1693 kwonlyargs.push(arg);
1694 kw_defaults.push(default_value);

Callers 2

_parseStatementMethod · 0.80
_parseExpressionMethod · 0.80

Calls 6

readFunction · 0.85
_parseExpressionMethod · 0.80
acceptMethod · 0.45
_locationMethod · 0.45
expectMethod · 0.45
pushMethod · 0.45

Tested by

no test coverage detected