编程题:模板引擎(一代)
本学期课设的Web后端要生成HTML,但用变量和字符串拼接HTML就太土了,我要做个模板引擎!身为标准制定者,我有相当大的权力,我规定:
- 变量只允许**大写字母**。就是说……最多26个变量(对此我毫无惭愧,咱还没学哈希表呢)
- 例如变量N定义N=Arya Stark。
- 模板中形如$X的表达式要替换成变量X对应的值。X表示大写字母。
- 例如<h1>Name: $N</h1>要替换成<h1>Name: Arya Stark</h1>
- 如果想表达$字符而不是作为变量开始标志,就要双写$$。
- 例如$$A将被替换为$A
- **无需**考虑嵌套定义的情况。
- 例如定义B=the $A means ...,替换变量B时不用递归扩展值中的$A(那是将来的feature)。
- 未定义的变量当成空串(体贴的容错设计)
- 变量如重复定义,最后一次的定义为准。
- 变量引用不允许跨行。
#### 输入规格
- 首行为整数n,表示所用变量的个数。
- 后续n行为X=...形式的变量定义。其中X为大写字母,后接一个=等号。=与行尾之间是变量的值,内容不限。
- 之后有若干行待转换的模板。逐行读入,替换其中可能的变量引用,输出转换后的结果。直到EOF为止。
#### 输出规格
逐行输出模板转换后的结果。
#### 样例输入
in
4
N=J-20
T=Price List
P=110 Million
C=red
<html>
<head>
<title>$T</title>
</head>
<body>
<h3 style="color: $C;">$N, $$$P$X $z</h3>
</body>
</html>
#### 样例输出
out
<html>
<head>
<title>Price List</title>
</head>
<body>
<h3 style="color: red;">J-20, $110 Million $z</h3>
</body>
</html>
#### 样例解释
- 首行表示有4个变量。
- 随后4行分别定义了N, T, P, C变量。
- 之后直到EOF是待转换的文本,逐行处理,找出其中的变量并替换成对应的值
- $T替换成"Price List",其他变量类似。
- $$替换为1个$字符。
- $X没有定义,替换为空串。
- $z不符合变量格式,原样输出。
答案:若无答案欢迎评论
- 变量只允许**大写字母**。就是说……最多26个变量(对此我毫无惭愧,咱还没学哈希表呢)
- 例如变量N定义N=Arya Stark。
- 模板中形如$X的表达式要替换成变量X对应的值。X表示大写字母。
- 例如<h1>Name: $N</h1>要替换成<h1>Name: Arya Stark</h1>
- 如果想表达$字符而不是作为变量开始标志,就要双写$$。
- 例如$$A将被替换为$A
- **无需**考虑嵌套定义的情况。
- 例如定义B=the $A means ...,替换变量B时不用递归扩展值中的$A(那是将来的feature)。
- 未定义的变量当成空串(体贴的容错设计)
- 变量如重复定义,最后一次的定义为准。
- 变量引用不允许跨行。
#### 输入规格
- 首行为整数n,表示所用变量的个数。
- 后续n行为X=...形式的变量定义。其中X为大写字母,后接一个=等号。=与行尾之间是变量的值,内容不限。
- 之后有若干行待转换的模板。逐行读入,替换其中可能的变量引用,输出转换后的结果。直到EOF为止。
#### 输出规格
逐行输出模板转换后的结果。
#### 样例输入
in
4
N=J-20
T=Price List
P=110 Million
C=red
<html>
<head>
<title>$T</title>
</head>
<body>
<h3 style="color: $C;">$N, $$$P$X $z</h3>
</body>
</html>
#### 样例输出
out
<html>
<head>
<title>Price List</title>
</head>
<body>
<h3 style="color: red;">J-20, $110 Million $z</h3>
</body>
</html>
#### 样例解释
- 首行表示有4个变量。
- 随后4行分别定义了N, T, P, C变量。
- 之后直到EOF是待转换的文本,逐行处理,找出其中的变量并替换成对应的值
- $T替换成"Price List",其他变量类似。
- $$替换为1个$字符。
- $X没有定义,替换为空串。
- $z不符合变量格式,原样输出。
答案:若无答案欢迎评论