public void initGrammar(BufferedReader bufferedReader){ String line = ""; try { line = bufferedReader.readLine(); String[] temp = line.split(" "); Global.NotTerminal.add(temp[0]); Production sproduction = new Production(temp[0]); for(int i = 2;i<temp.length;i++){ Global.Terminal.add(temp[i]); sproduction.right.add(temp[i]); } Global.productionList.add(sproduction); Global.start = temp[0]; while ((line = bufferedReader.readLine()) != null){ temp = line.split(" "); Global.NotTerminal.add(temp[0]); Production production = new Production(temp[0]); for(int i = 2;i<temp.length;i++){ Global.Terminal.add(temp[i]); production.right.add(temp[i]); } Global.productionList.add(production); } Global.Terminal.removeAll(Global.NotTerminal); }catch (Exception e){ e.printStackTrace(); } }转python
时间: 2024-01-21 07:02:38 浏览: 298
基于自定义BufferedReader中的read和readLine方法
5星 · 资源好评率100%
以下是将该Java方法转换为Python函数的示例代码:
```python
def initGrammar(bufferedReader):
line = ""
try:
line = bufferedReader.readline()
temp = line.split(" ")
Global.NotTerminal.add(temp[0])
sproduction = Production(temp[0])
for i in range(2, len(temp)):
Global.Terminal.add(temp[i])
sproduction.right.add(temp[i])
Global.productionList.add(sproduction)
Global.start = temp[0]
while line:
line = bufferedReader.readline()
if not line:
break
temp = line.split(" ")
Global.NotTerminal.add(temp[0])
production = Production(temp[0])
for i in range(2, len(temp)):
Global.Terminal.add(temp[i])
production.right.add(temp[i])
Global.productionList.add(production)
Global.Terminal.difference_update(Global.NotTerminal)
except Exception as e:
print(e)
```
在这个Python函数中,我们使用了类似于Java方法的结构。我们首先定义了一个变量`line`,并设置为空字符串。然后,我们使用`try-except`语句块来捕获可能发生的异常。
在`try`块中,我们首先读取`bufferedReader`对象中的第一行,并将其拆分为一个非终结符和一系列终结符。然后,我们将这些符号添加到全局符号表中,并创建一个产生式对象,将其左部设置为该非终结符,并将其右部设置为这些终结符。接着,我们将该产生式对象添加到全局产生式列表中,并将该非终结符设置为起始符号。
接下来,我们使用一个`while`循环来读取每一行,并重复上述过程,将每个新的产生式对象添加到全局产生式列表中。最后,我们从全局终结符集合中删除所有的非终结符。
与Java方法不同的是,我们在Python函数中使用了`range()`函数来生成一个范围,以便迭代字符串中的每个元素。此外,我们使用了`Global.Terminal.difference_update()`方法来删除非终结符。
阅读全文