非法字符在第几行第几列

👁️ 2 人浏览 💬 0 人评论 ❤️ 添加收藏

下面这段源码里有一个玩具语言不认识的字符。输出它的位置,格式 行:列,行列都从 1 数起。

let ok = 1;
total = ok @ 2;

玩具语言的词法规则:关键字 let if else while;标识符以字母或下划线开头;数字是连续的数位;字符串用一对双引号括起来(不含转义);双字符运算符 >= <= == !=;单字符运算符 + - * / = < > ; ( );空白只做分隔。

KEYWORDS = ("let", "if", "else", "while")
TWO = ("==", "!=", ">=", "<=")
ONE = "+-*/=<>;()"
SRC = 'let rate = 12;\nlet msg = "hi there";\ntotal = rate >= 3;'

BAD = "let ok = 1;\ntotal = ok @ 2;"
LEGAL = set(ONE) | set('"') | set(" \t")

line, col = 1, 1
for c in BAD:
    if c == "\n":
        line += 1; col = 1; continue
    if not (c.isalnum() or c == "_" or c in LEGAL):
        print(str(line) + ":" + str(col)); break
    col += 1
提交你的答案
请登录后提交答案。
去登录
代码编辑器
Ctrl + Enter 运行
本次输入:
输出:

                        
👩‍🏫
AI
💬 题目评论

全部评论