<COMMENT>"*/" {BEGIN(INITIAL);} <COMMENT>([^*]|\n)+|. <COMMENT><<EOF>> {printf("Unterminated comment\n"); return 0;}
时间: 2024-03-24 15:38:30 浏览: 69
这是一个Flex中的正则表达式规则,用于处理注释。具体来说,它描述了如何匹配输入中的注释,并将其忽略或报错。该规则包含了三个部分,分别是:
1. <COMMENT>"*/" {BEGIN(INITIAL);}:表示当匹配到<COMMENT>中的"*/"时,将Flex的当前状态切换回初始状态(INITIAL)。这是为了防止注释结束符号影响到后续的词法分析。
2. <COMMENT>([^*]|\n)+:表示匹配除了"*"和换行符以外的任何字符,重复1次或多次。这是为了匹配注释中的所有内容,包括换行符。
3. .<COMMENT><<EOF>>:表示当匹配到文件结尾(EOF)时,如果注释还没有结束,则输出一个错误信息"Unterminated comment"。
这个规则实现了对注释的忽略和错误处理,可以帮助编译器或解释器正确地处理输入中的注释。
相关问题
"/*" {BEGIN(COMMENT);} <COMMENT>"*/" {BEGIN(INITIAL);} <COMMENT>([^*]|\n)+|. <COMMENT><<EOF>> {printf("Unterminated comment\n"); return 0;}
这段代码与我之前解释的代码非常相似,只是对于注释的处理稍有不同。它也使用了 Lex 的状态机,当遇到 "/*" 时,状态机进入 COMMENT 状态,并且切换到 COMMENT 模式。在 COMMENT 模式下,除了遇到 "*/" 以外的所有字符都被视为注释内容。当遇到 "*/" 时,状态机回到初始状态并退出 COMMENT 模式。如果在 COMMENT 模式下到达了文件末尾,说明注释没有被正确结束,Lex 会输出错误信息。这段代码比之前的代码多了一个规则,即当遇到一个单独的 "*" 时,它会被视为普通的字符而不是注释内容。
<table id="entryDetail"> <thead > <tr> <th>操作</th> <th>提单号/运单号</th> <th>一程日期</th> <th>二程日期</th> <th>预计到货日期</th> <th>海船公司</th> <th>放箱日期</th> <th>放箱单上传</th> </tr> <tr> <td><input type="button" name="comment" onclick="deleteTableRow(this)" value="删除"></td> <td><input type="text" name="comment"></td> <td><input type="date" name="date1"></td> <td><input type="date" name="date2"></td> <td><input type="date" name="date3"></td> <td><input type="text" name="commen1t"></td> <td><input type="date" name="date4"></td> <td><input type="file" name="attachment"></td> </tr> </thead> </table>宽度铺满滚动和选中删除
您可以使用以下代码来实现您的要求:
```html
<style>
#entryDetail {
width: 100%;
table-layout: fixed;
}
th, td {
padding: 10px;
text-align: center;
}
th:first-child, td:first-child {
width: 10%;
}
th:nth-child(2), td:nth-child(2) {
width: 15%;
}
th:nth-child(3), td:nth-child(3), th:nth-child(4), td:nth-child(4), th:nth-child(5), td:nth-child(5) {
width: 12%;
}
th:nth-child(6), td:nth-child(6) {
width: 20%;
}
th:last-child, td:last-child {
width: 16%;
}
tbody tr:hover {
background-color: #f5f5f5;
}
</style>
<script>
function deleteTableRow(btn) {
var row = btn.parentNode.parentNode;
row.parentNode.removeChild(row);
}
</script>
<table id="entryDetail">
<thead>
<tr>
<th>操作</th>
<th>提单号/运单号</th>
<th>一程日期</th>
<th>二程日期</th>
<th>预计到货日期</th>
<th>海船公司</th>
<th>放箱日期</th>
<th>放箱单上传</th>
</tr>
</thead>
<tbody>
<tr>
<td><input type="button" name="comment" onclick="deleteTableRow(this)" value="删除"></td>
<td><input type="text" name="comment"></td>
<td><input type="date" name="date1"></td>
<td><input type="date" name="date2"></td>
<td><input type="date" name="date3"></td>
<td><input type="text" name="comment1"></td>
<td><input type="date" name="date4"></td>
<td><input type="file" name="attachment"></td>
</tr>
</tbody>
</table>
```
此代码将表格的宽度设置为100%,并使其表格布局固定。它还将表头和单元格的填充和文本对齐方式设置为居中。每个表头和单元格都有一个宽度百分比,以便在表格宽度变化时自适应。还添加了一个鼠标悬停样式以提高用户体验。在代码的底部,有一个JavaScript函数deleteTableRow(btn),它将从表格中删除所在行。
阅读全文