我剛開始pyparsing
和我有換行的問題。pyparsing和換行符
我的語法是:
from pyparsing import *
newline = LineEnd() #Literal ('\n').leaveWhitespace()
minus = Literal ('-')
plus = Literal ('+')
lparen = Literal ('(')
rparen = Literal (')')
ident = Word (alphas)
integer = Word (nums)
arith = Forward()
parenthized = Group (lparen + arith + rparen)
atom = ident | integer | parenthized
factor = ZeroOrMore (minus | plus) + atom
arith << (ZeroOrMore (factor + (minus | plus)) + factor)
statement = arith + newline
program = OneOrMore (statement)
現在,當我分析如下:不出所料
print (program.parseString ('--1-(-a-3+n)\nx\n'))
結果:
['-', '-', '1', '-', ['(', '-', 'a', '-', '3', '+', 'n', ')'], '\n', 'x', '\n']
但是當第二行可以被解析作爲第一行的尾部,第一個\n
被捲走了?
代碼:
print (program.parseString ('--1-(-a-3+n)\n-x\n'))
實際結果:
['-', '-', '1', '-', ['(', '-', 'a', '-', '3', '+', 'n', ')'], '-', 'x', '\n']
預期結果:
['-', '-', '1', '-', ['(', '-', 'a', '-', '3', '+', 'n', ')'], '\n', '-', 'x', '\n']
其實我不想分析器自動加入語句。
1.什麼是我做錯了什麼?
2.我怎樣才能解決這個問題?
3.引擎蓋下面發生了什麼導致這種行爲(這肯定是明智的,但我只是看不到點)?