import sys def entry_point(argv): print("works!") return 0 def target(*args): return entry_point, None if __name__ == "__main__": entry_point(sys.argv)
$ hg clone https://bitbucket.org/pypy/pypy $ ... # build pypy $ python pyp\rpython\translator\goal\translate.py sample.py $ ./sample-c
from rply import LexerGenerator lg = LexerGenerator() # Regulă și expresia regulată care prinde regula respectivă lg.add("NUMBER", "\d+") lg.add("ADD", "\+") # Ignoră alte caractere lg.ignore(r"\s+") # construiește lexerul lexer = lg.build() for token in lexer.lex("2+2"): print(token)
$ python lexer.py Token('NUMBER', '2') Token('ADD', '+') Token('NUMBER', '2')
from rply import ParserGenerator pg = ParserGenerator( [ # Tokeni suportați "ADD", "NUMBER", ]) # Regula de producție, în stânga e regula, în dreapta sunt # simboluri sau nume de alte reguli @pg.production("main : expr") def main(p): return p[0] ...
... # NUMBER - nume de symbol # expr - nume de regulă @pg.production("expr : NUMBER") def expr(p): return int(p[0].value) @pg.production("expr : expr ADD expr") def addition(p): return p[0] + p[2] parser = pg.build() import sys print(parser.parse(lexer.lex(sys.argv[1])))
$ python parser.py 2+2+4
8
from rply.token import BaseBox class Number(BaseBox): def __init__(self, value): self.value = value def eval(self): return int(self.value)
Table of Contents | t |
---|---|
Exposé | ESC |
Full screen slides | e |
Presenter View | p |
Source Files | s |
Slide Numbers | n |
Toggle screen blanking | b |
Show/hide slide context | c |
Notes | 2 |
Help | h |