robustness + regex fix
This commit is contained in:
@ -42,7 +42,7 @@ class CommandChainParser:
|
|||||||
|
|
||||||
|
|
||||||
class CommandParser:
|
class CommandParser:
|
||||||
CMD_PATTERN = r"^[a-zA-Z]+(?:\(([0-9.]+|(([a-zA-Z0-9]+(?:\(([^()]*|(?1)+)(\s*\,\s*(?1))*\))?)(\.(?1))*))(\s*\,\s*(?1))*\))?"
|
CMD_PATTERN = r"^[a-zA-Z]+(?:\(([0-9.\-+]+|(([a-zA-Z0-9]+(?:\(([^()]*|(?1)+)(\s*\,\s*(?1))*\))?)(\.(?1))*))(\s*\,\s*(?1))*\))?"
|
||||||
ID_PATTERN = r"^[a-zA-Z]+(?=\(|\.|$)"
|
ID_PATTERN = r"^[a-zA-Z]+(?=\(|\.|$)"
|
||||||
ARG_PATTERN = CommandChainParser.CHAIN_PATTERN
|
ARG_PATTERN = CommandChainParser.CHAIN_PATTERN
|
||||||
TRIM_PATTERN = r"^\s*\,\s*"
|
TRIM_PATTERN = r"^\s*\,\s*"
|
||||||
|
|||||||
@ -19,6 +19,7 @@ TODO: 除零出现 nan 情况的单独处理
|
|||||||
class ArgParser:
|
class ArgParser:
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def to_params(args: str, delim: str = ',') -> list[str]:
|
def to_params(args: str, delim: str = ',') -> list[str]:
|
||||||
|
raise DeprecationWarning
|
||||||
_params = args.replace(" ", "").split(delim)
|
_params = args.replace(" ", "").split(delim)
|
||||||
params: list[str] = []
|
params: list[str] = []
|
||||||
# 还是避免 while 为好
|
# 还是避免 while 为好
|
||||||
@ -28,11 +29,14 @@ class ArgParser:
|
|||||||
return params
|
return params
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def as_float(args: list[str], default: float = 0.0) -> float:
|
def as_float(args: list[str] | str, default: float = 0.0) -> float:
|
||||||
try:
|
try:
|
||||||
if len(args) >= 1:
|
if isinstance(args, list) and len(args) >= 1:
|
||||||
x = float(args[0])
|
x = float(args[0])
|
||||||
return x
|
return x
|
||||||
|
elif isinstance(args, str):
|
||||||
|
x = float(args)
|
||||||
|
return x
|
||||||
except:
|
except:
|
||||||
# raise Exception(f"cannot parse {args}")
|
# raise Exception(f"cannot parse {args}")
|
||||||
return default
|
return default
|
||||||
@ -66,9 +70,9 @@ class ArgParser:
|
|||||||
y = float(args[1])
|
y = float(args[1])
|
||||||
z = float(args[2])
|
z = float(args[2])
|
||||||
return np.array((x, y, z))
|
return np.array((x, y, z))
|
||||||
|
return default
|
||||||
except:
|
except:
|
||||||
raise Exception(f"cannot parse {args}")
|
raise Exception(f"cannot parse {args}")
|
||||||
return default
|
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def as_vec4(
|
def as_vec4(
|
||||||
|
|||||||
Reference in New Issue
Block a user