in patcher/patcher.js [868:912]
function parsePinName(v, portSize) {
let thePort = -1
let pin = -1
v = v.trim()
const env = enums["."][v]
if (env !== undefined)
return env
let m = /(.*)([\|+])(.*)/.exec(v)
if (m) {
let v0 = parsePinName(m[1], portSize)
let v1 = parsePinName(m[3], portSize)
if (v0 === undefined || v1 === undefined)
return undefined
v0 = parseInt(v0)
v1 = parseInt(v1)
return "" + (m[2] == "|" ? v0 | v1 : v0 + v1)
}
m = /^P([A-Z])_?(\d+)$/.exec(v)
if (m) {
pin = parseInt(m[2])
thePort = m[1].charCodeAt(0) - 65
}
m = /^P(\d+)_(\d+)$/.exec(v)
if (m) {
pin = parseInt(m[2])
thePort = parseInt(m[1])
}
if (thePort >= 0) {
if (!portSize) err("PINS_PORT_SIZE not specified, while trying to parse PIN " + v)
if (pin >= portSize) err("Pin name invalid: " + v)
return (thePort * portSize + pin) + ""
}
m = /^P_?(\d+)$/.exec(v)
if (m)
return m[1]
return undefined
}