| Home | Trees | Indices | Help |
|---|
|
|
1 2 # The contents of this file are subject to the Mozilla Public License 3 # (MPL) Version 1.1 (the "License"); you may not use this file except 4 # in compliance with the License. You may obtain a copy of the License 5 # at http://www.mozilla.org/MPL/ 6 # 7 # Software distributed under the License is distributed on an "AS IS" 8 # basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See 9 # the License for the specific language governing rights and 10 # limitations under the License. 11 # 12 # The Original Code is LEPL (http://www.acooke.org/lepl) 13 # The Initial Developer of the Original Code is Andrew Cooke. 14 # Portions created by the Initial Developer are Copyright (C) 2009-2010 15 # Andrew Cooke (andrew@acooke.org). All Rights Reserved. 16 # 17 # Alternatively, the contents of this file may be used under the terms 18 # of the LGPL license (the GNU Lesser General Public License, 19 # http://www.gnu.org/licenses/lgpl.html), in which case the provisions 20 # of the LGPL License are applicable instead of those above. 21 # 22 # If you wish to allow use of your version of this file only under the 23 # terms of the LGPL License and not to allow others to use your version 24 # of this file under the MPL, indicate your decision by deleting the 25 # provisions above and replace them with the notice and other provisions 26 # required by the LGPL License. If you do not delete the provisions 27 # above, a recipient may use your version of this file under either the 28 # MPL or the LGPL License. 29 30 ''' 31 Tests for indentation aware parsing. 32 ''' 33 34 #from logging import basicConfig, DEBUG 35 from unittest import TestCase 36 37 from lepl.lexer.matchers import Token 38 from lepl.matchers.derived import Word, Letter 39 from lepl.lexer.lines.matchers import NO_BLOCKS, LineStart 40 from lepl.lexer.lines.matchers import LineEnd 41 42 43 # pylint: disable-msg=R0201 44 # unittest convention46 ''' 47 Test the `Indent` token. 48 ''' 4968 6951 ''' 52 Test simple matches against leading spaces. 53 ''' 54 #basicConfig(level=DEBUG) 55 text = ''' 56 left 57 four''' 58 word = Token(Word(Letter())) 59 indent = LineStart() 60 line1 = indent('') + LineEnd() 61 line2 = indent('') & word('left') + LineEnd() 62 line3 = indent(' ') & word('four') + LineEnd() 63 expr = (line1 & line2 & line3) 64 expr.config.lines(block_start=NO_BLOCKS) 65 parser = expr.get_parse_string() 66 result = parser(text) 67 assert result == ['', '', 'left', ' ', 'four'], result71 ''' 72 Check that tabs are expanded. 73 ''' 749476 ''' 77 Test simple matches against leading spaces. 78 ''' 79 #basicConfig(level=DEBUG) 80 text = ''' 81 onespace 82 \tspaceandtab''' 83 word = Token(Word(Letter())) 84 indent = LineStart() 85 line1 = indent('') & ~LineEnd() 86 line2 = indent(' ') & word('onespace') & ~LineEnd() 87 line3 = indent(' ') & word('spaceandtab') & ~LineEnd() 88 expr = line1 & line2 & line3 89 expr.config.lines(tabsize=4, block_start=NO_BLOCKS).trace_stack(True) 90 parser = expr.get_parse_string() 91 result = parser(text) 92 #print(result) 93 assert result == ['', ' ', 'onespace', ' ', 'spaceandtab'], result
| Home | Trees | Indices | Help |
|---|
| Generated by Epydoc 3.0.1 on Sat Jun 9 21:51:00 2012 | http://epydoc.sourceforge.net |