readme

来自「M5,一个功能强大的多处理器系统模拟器.很多针对处理器架构,性能的研究都使用它作」· 代码 · 共 80 行

TXT
80
字号
Inspired by a September 14, 2006 Salon article "Why Johnny Can't Code" byDavid Brin (http://www.salon.com/tech/feature/2006/09/14/basic/index.html),I thought that a fully working BASIC interpreter might be an interesting,if not questionable, PLY example.  Uh, okay, so maybe it's just a bad idea,but in any case, here it is.In this example, you'll find a rough implementation of 1964 Dartmouth BASICas described in the manual at:   http://www.bitsavers.org/pdf/dartmouth/BASIC_Oct64.pdfSee also:  http://en.wikipedia.org/wiki/Dartmouth_BASICThis dialect is downright primitive---there are no string variablesand no facilities for interactive input. Moreover, subroutines and functionsare brain-dead even more than they usually are for BASIC. Of course,the GOTO statement is provided.Nevertheless, there are a few interesting aspects of this example:  - It illustrates a fully working interpreter including lexing, parsing,    and interpretation of instructions.   - The parser shows how to catch and report various kinds of parsing    errors in a more graceful way.  - The example both parses files (supplied on command line) and    interactive input entered line by line.  - It shows how you might represent parsed information.  In this case,    each BASIC statement is encoded into a Python tuple containing the    statement type and parameters.  These tuples are then stored in    a dictionary indexed by program line numbers.  - Even though it's just BASIC, the parser contains more than 80    rules and 150 parsing states. Thus, it's a little more meaty than    the calculator example.To use the example, run it as follows:   % python basic.py hello.bas   HELLO WORLD   %or use it interactively:   % python basic.py   [BASIC] 10 PRINT "HELLO WORLD"   [BASIC] 20 END   [BASIC] RUN   HELLO WORLD   [BASIC]The following files are defined:   basic.py         - High level script that controls everything   basiclex.py      - BASIC tokenizer   basparse.py      - BASIC parser   basinterp.py     - BASIC interpreter that runs parsed programs.In addition, a number of sample BASIC programs (.bas suffix) areprovided.  These were taken out of the Dartmouth manual.Disclaimer: I haven't spent a ton of time testing this and it's likely thatI've skimped here and there on a few finer details (e.g., strictly enforcingvariable naming rules).  However, the interpreter seems to be able to runthe examples in the BASIC manual.Have fun!-Dave

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?