本文整理汇总了Python中pynes.compiler.lexical函数的典型用法代码示例。如果您正苦于以下问题:Python lexical函数的具体用法?Python lexical怎么用?Python lexical使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了lexical函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: __init__
def __init__(self, testname):
HexTestCase.__init__(self, testname)
f = open('fixtures/movingsprite/movingsprite.asm')
code = f.read()
f.close()
tokens = lexical(code)
self.ast = syntax(tokens)
示例2: test_several_lists_with_labels
def test_several_lists_with_labels(self):
code = '''
.org $E000
palette:
.db $0F,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F
.db $0F,$30,$31,$32,$33,$35,$36,$37,$38,$39,$3A,$3B,$3C,$3D,$3E,$0F
sprites:
.db $80, $00, $03, $80; Y pos, tile id, attributes, X pos
'''
tokens = lexical(code)
ast = syntax(tokens)
self.assertEquals(4, len(ast))
self.assertEquals('S_DIRECTIVE', ast[0]['type'])
self.assertEquals('.org', ast[0]['children'][0]['value'])
self.assertEquals('S_DIRECTIVE', ast[1]['type'])
self.assertEquals('.db', ast[1]['children'][0]['value'])
self.assertEquals(['palette'], ast[1]['labels'])
self.assertEquals('S_DIRECTIVE', ast[2]['type'])
self.assertEquals('.db', ast[2]['children'][0]['value'])
self.assertEquals('S_DIRECTIVE', ast[3]['type'])
self.assertEquals('.db', ast[3]['children'][0]['value'])
self.assertEquals(['sprites'], ast[3]['labels'])
labels = get_labels(ast)
expected = {'palette': 0xE000, 'sprites': 0xE000 + 32}
self.assertEquals(expected, labels)
示例3: test_compile_list
def test_compile_list(self):
code = '''
palette:
.db $0F,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F
.db $0F,$30,$31,$32,$33,$35,$36,$37,$38,$39,$3A,$3B,$3C,$3D,$3E,$0F
'''
tokens = lexical(code)
ast = syntax(tokens)
self.assertEquals(2, len(ast))
self.assertEquals('S_DIRECTIVE', ast[0]['type'])
self.assertEquals('.db', ast[0]['children'][0]['value'])
self.assertEquals( 32, len(ast[0]['children']))
palette1 = [0x0f, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09,
0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f]
for i in range(len(palette1)):
h = '$%02X' % palette1[i]
self.assertEquals(h, ast[0]['children'][i * 2 + 1]['value'])
self.assertEquals('S_DIRECTIVE', ast[1]['type'])
self.assertEquals('S_DIRECTIVE', ast[1]['type'])
self.assertEquals('.db', ast[0]['children'][0]['value'])
self.assertEquals( 32, len(ast[1]['children']))
palette2 = [0x0f, 0x30, 0x31, 0x32, 0x33, 0x35, 0x36, 0x37, 0x38, 0x39,
0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x0f]
for i in range(len(palette2)):
h = '$%02X' % palette2[i]
self.assertEquals(h, ast[1]['children'][i * 2 + 1]['value'])
示例4: test_bank_0
def test_bank_0(self):
tokens = list(lexical('.bank 0'))
self.assertEquals(2, len(tokens))
self.assertEquals('T_DIRECTIVE', tokens[0]['type'])
self.assertEquals('T_DECIMAL_ARGUMENT', tokens[1]['type'])
ast = syntax(tokens)
self.assertEquals(1, len(ast))
self.assertEquals('S_DIRECTIVE', ast[0]['type'])
示例5: test_ines_functions
def test_ines_functions(self):
example = """
.inesprg 1 ; 1x 16KB PRG code
.ineschr 1 ; 1x 8KB CHR data
.inesmap 0 ; mapper 0 = NROM, no bank swapping
.inesmir 1 ; VERT mirroring for HORIZ scrolling
"""
tokens = lexical(example)
示例6: test_org_fffa
def test_org_fffa(self):
tokens = list(lexical('.org $FFFA'))
self.assertEquals(2, len(tokens))
self.assertEquals('T_DIRECTIVE', tokens[0]['type'])
self.assertEquals('T_ADDRESS', tokens[1]['type'])
ast = syntax(tokens)
self.assertEquals(1, len(ast))
self.assertEquals('S_DIRECTIVE', ast[0]['type'])
示例7: test_example_5_14
def test_example_5_14(self):
example_5_14 = '''
; Example 5-14. Simple 16-bit square root.
;
; Returns the 8-bit square root in $20 of the
; 16-bit number in $20 (low) and $21 (high). The
; remainder is in location $21.
sqrt16: LDY #$01 ; lsby of first odd number = 1
STY $22
DEY
STY $23 ; msby of first odd number (sqrt = 0)
again: SEC
LDA $20 ; save remainder in X register
TAX ; subtract odd lo from integer lo
SBC $22
STA $20
LDA $21 ; subtract odd hi from integer hi
SBC $23
STA $21 ; is subtract result negative?
BCC nomore ; no. increment square root
INY
LDA $22 ; calculate next odd number
ADC #$01
STA $22
BCC again
INC $23
JMP again
nomore: STY $20 ; all done, store square root
STX $21 ; and remainder
RTS
'''
tokens = lexical(example_5_14)
self.assertEquals(74, len(tokens))
self.assertEquals('T_ENDLINE', tokens[0]['type'])
self.assertEquals('T_ENDLINE', tokens[1]['type'])
self.assertEquals('T_ENDLINE', tokens[2]['type'])
self.assertEquals('T_ENDLINE', tokens[3]['type'])
self.assertEquals('T_ENDLINE', tokens[4]['type'])
self.assertEquals('T_ENDLINE', tokens[5]['type'])
self.assertEquals('T_ENDLINE', tokens[6]['type'])
self.assertEquals('T_LABEL', tokens[7]['type'])
self.assertEquals('T_INSTRUCTION', tokens[8]['type'])
self.assertEquals('T_HEX_NUMBER', tokens[9]['type'])
self.assertEquals('T_ENDLINE', tokens[10]['type'])
self.assertEquals('T_INSTRUCTION', tokens[11]['type'])
self.assertEquals('T_ADDRESS', tokens[12]['type'])
self.assertEquals('T_ENDLINE', tokens[13]['type'])
self.assertEquals('T_INSTRUCTION', tokens[14]['type'])
self.assertEquals('T_ENDLINE', tokens[15]['type'])
self.assertEquals('T_INSTRUCTION', tokens[16]['type'])
self.assertEquals('T_ADDRESS', tokens[17]['type'])
self.assertEquals('T_ENDLINE', tokens[18]['type'])
示例8: test_sei_sngl
def test_sei_sngl(self):
tokens = list(lexical("SEI"))
self.assertEquals(1, len(tokens))
self.assertEquals("T_INSTRUCTION", tokens[0]["type"])
ast = syntax(tokens)
self.assertEquals(1, len(ast))
self.assertEquals("S_IMPLIED", ast[0]["type"])
code = semantic(ast)
self.assertEquals(code, [0x78])
示例9: test_asm_compiler_scrolling_5
def test_asm_compiler_scrolling_5(self):
cart = Cartridge()
cart.path = "fixtures/nesasm/scrolling/"
f = open("fixtures/nesasm/scrolling/scrolling5.asm")
code = f.read()
f.close()
tokens = lexical(code)
ast = syntax(tokens)
opcodes = semantic(ast, cart=cart)
示例10: test_sed_sngl
def test_sed_sngl(self):
tokens = list(lexical('SED'))
self.assertEquals(1, len(tokens))
self.assertEquals('T_INSTRUCTION', tokens[0]['type'])
ast = syntax(tokens)
self.assertEquals(1, len(ast))
self.assertEquals('S_IMPLIED', ast[0]['type'])
code = semantic(ast)
self.assertEquals(code, [0xf8])
示例11: test_rts_sngl
def test_rts_sngl(self):
tokens = lexical("RTS")
self.assertEquals(1, len(tokens))
self.assertEquals("T_INSTRUCTION", tokens[0]["type"])
ast = syntax(tokens)
self.assertEquals(1, len(ast))
self.assertEquals("S_IMPLIED", ast[0]["type"])
code = semantic(ast)
self.assertEquals(code, [0x60])
示例12: test_org_c000
def test_org_c000(self):
tokens = lexical('.org $C000')
self.assertEquals(2 , len(tokens))
self.assertEquals('T_DIRECTIVE', tokens[0]['type'])
self.assertEquals('T_ADDRESS', tokens[1]['type'])
ast = syntax(tokens)
self.assertEquals(1 , len(ast))
self.assertEquals('S_DIRECTIVE', ast[0]['type'])
code = semantic(ast)
示例13: test_cmp_imm
def test_cmp_imm(self):
tokens = list(lexical('CMP #$10'))
self.assertEquals(2, len(tokens))
self.assertEquals('T_INSTRUCTION', tokens[0]['type'])
self.assertEquals('T_HEX_NUMBER', tokens[1]['type'])
ast = syntax(tokens)
self.assertEquals(1, len(ast))
self.assertEquals('S_IMMEDIATE', ast[0]['type'])
code = semantic(ast)
self.assertEquals(code, [0xc9, 0x10])
示例14: test_bit_zp
def test_bit_zp(self):
tokens = lexical("BIT $00")
self.assertEquals(2, len(tokens))
self.assertEquals("T_INSTRUCTION", tokens[0]["type"])
self.assertEquals("T_ADDRESS", tokens[1]["type"])
ast = syntax(tokens)
self.assertEquals(1, len(ast))
self.assertEquals("S_ZEROPAGE", ast[0]["type"])
code = semantic(ast)
self.assertEquals(code, [0x24, 0x00])
示例15: test_lsr_acc
def test_lsr_acc(self):
tokens = lexical("LSR A")
self.assertEquals(2, len(tokens))
self.assertEquals("T_INSTRUCTION", tokens[0]["type"])
self.assertEquals("T_ACCUMULATOR", tokens[1]["type"])
ast = syntax(tokens)
self.assertEquals(1, len(ast))
self.assertEquals("S_ACCUMULATOR", ast[0]["type"])
code = semantic(ast)
self.assertEquals(code, [0x4A])