S表达式
时间限制:1秒 内存限制:256M
【问题描述】
LISP语言使用一种 S 表达式来表示程序和数据。一个 S 表达式可以简单地定义为:
1)、单个字母(大写或小写)是一个 S 表达式;
2)、如果 \(u\) 和 \(v\) 是 S 表达式,则 \((u,v)\) 也是 S 表达式。
例如,根据上述定义的第 1 条,单个字母 \(a,c \)和 \(m\) 分别是一个合法的 S 表达式。而根据第 2 条,\((a,c)\) 和 \(((a,c),m)\) 也是合法的 S 表达式。
你的任务是:根据定义,判断输入的表达式是否为合法的 S 表达式。
【输入格式】
第一行一个整数 \(n\),表示待判别的表达式个数。
以下 \(n\) 行,每行一个字符串,表示待判别的表达式。字符串的前或后可能会有多余的空格,每行不超过 72 个字符。
【输出格式】
第一行输出表达式的个数。
以下 \(n\) 行,每行对应一个判别信息。如果对应的表达式是合法的 S 表达式,则输出“Yes”,否则输出“No”。
【输入输出样例】
Input
6
a
b
(a,b)
((a,b),(c,d))
(ab,c)
[a,b]
Output
6
Yes
Yes
Yes
Yes
No
No
【数据说明】
对于 \(100\%\) 的数据 表达式长度不超过100。
【来源】
Mr.he