我有一种简单的语言,它由像这样的模式组成
size(50*50)
start(10, 20, -x)
forward(15)
stop
这是海龟绘图语言的一个例子。我需要正确标记它。以上是源代码实例。语句和表达式用换行符分隔。我将我的扫描仪设置为使用换行符等分隔符。我预计next("start")
吃掉字符串“start”,然后我发出next("(")
吃第一个括号。然而,它似乎做了一些超出我预期的事情。扫描仪是否已经根据分隔符将上述内容分解为标记和/或我是否需要以不同的方式处理?对我来说,第一行的“start”、“(”、“50”、“*”、“50”和“)”将构成单独的标记,这似乎是一个未实现的期望。如何用尽可能少的代码标记上述内容?我目前不需要写分词器,我正在写一个解释器,所以我目前不想花时间在分词上,我只是喜欢 Scanner 在这里和我一起工作。
我的useDelimiter
电话如下:
Scanner s ///...
s.useDelimiter(Pattern.compile("[\\s]&&[^\\r\\n]"));
发出第一个next
电话会给我整个文件内容。没有上面的调用,它给了我整个第一行。