我创建了一个深奥的编程语言,我想实现这个结构来打印文本:
!(some-text)
该结构必须在括号中写入文本,并以结尾。
但是由于某些原因,这个结构只在查找换行符时结束。我认为这是因为点匹配除了n以外的任何符号。我尝试使用(?!…)创建条件,但这也不起作用。最终我不知道如何匹配没有n和)的所有符号。
下面我附上了令牌表的完整代码,以便您发现其中的错误并建议修复它们的方法。提前感谢任何帮助!
token_table = [
(r'[ tn]+', None),
(r'!((?!)).*)', 'PRINTSTR'), # This is not working
(r'[-]?[0-9]+', 'INT'),
(r'(?!!|?|(|)|:|<|>|+).*', None),
(r'!', 'PASS'),
(r'?', 'IF'),
(r'(', 'LPAR'),
(r')', 'RPAR'),
(r'>', 'INPUT'),
(r'<', 'PRINT'),
(r':', 'GOTO'),
(r'+', 'ADD'), ]
不要使用.
,使用[^)]
来匹配)
以外的任何字符。包括换行符
(r'!([^)]*)', 'PRINTSTR')