Created
December 25, 2011 11:54
-
-
Save eidas/1519139 to your computer and use it in GitHub Desktop.
SMILE BASIC キーワードカウンタ
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# -*- coding: utf-8 -*- | |
# sbcountmk2.py : Smile Basic mk2のキーワード出現頻度を調べる | |
import re, sys, codecs | |
# グローバル変数定義 | |
iflag = False | |
dic = {} | |
# カウントリストの初期化 | |
def init_dic(): | |
for key in keywords_list: | |
dic[key] = 0 | |
# キーワード出現頻度のカウント | |
def countup_keyword(key): | |
if key in dic: | |
dic[key] += 1 | |
else: | |
dic[key] = 1 | |
# 出現カウントの出力 | |
def print_count(): | |
key_list = dic.keys() | |
key_list.sort() | |
for key in key_list: | |
sys.stdout.write('|') | |
sys.stdout.write('%8s ' % key) | |
sys.stdout.write('|') | |
sys.stdout.write('%8d' % dic[key]) | |
sys.stdout.write('|') | |
sys.stdout.write('\n') | |
# キーワードリストの定義 | |
keywords_list = [ | |
"CLEAR","LET","DIM","REM","KEY","VSYNC", | |
"ON","GOTO","GOSUB","RETURN","STOP","END", | |
"FOR","TO","STEP","NEXT","IF","THEN","ELSE", | |
"READ","DATA","RESTORE","TMREAD","DTREAD", | |
"CLS","COLOR","LOCATE","PRINT","CHKCHR", | |
"SWAP","SORT","RSORT","STRIG","BREPEAT", | |
"BUTTON","INKEY$","INPUT","LINPUT", | |
"LOAD","SAVE","DELETE","EXEC","RENAME","APPEND", | |
"RECVFILE","SENDFILE","ACLS", | |
"VISIBLE","COLINIT","COLSET","COLREAD","CHRINIT","CHRSET","CHRREAD", | |
"SPPAGE","SPSET","SPCLR", | |
"SPOFS","SPCHR","SPANIM","SPANGLE","SPSCALE","SPCHK", | |
"SPREAD","SPSETV","SPGETV","SPHOME", | |
"SPCOL","SPCOLVEC","SPHITSP","SPHIT","SPHITRC", | |
"BGPAGE","BGCLIP","BGOFS","BGPUT","BGREAD", | |
"BGFILL","BGCLR","BGCHK","BGCOPY", | |
"GPAGE","GCOLOR","GCLS","GSPOIT", | |
"GPSET","GPAINT","GLINE","GBOX","GFILL","GCIRCLE","GPUTCHR", | |
"GDRAWMD","GPRIO","GCOPY", | |
"BEEP","BGMPLAY","BGMSTOP","BGMCHK", | |
"BGMSET","BGMSETD","BGMCLEAR","BGMSETV","BGMGETV","BMGPRG", | |
"TALK","TALKSTOP","TALKCHK", | |
"PNLTYPE","PNLSTR","ICONSET","ICONCLR","ICONCHK", | |
"ASC","CHR$","VAL","STR$","HEX$","MID$", | |
"LEFT$","RIGHT$","INSTR$","SUBST$", | |
"LEN","FLOOR","RND","ABS","SGN","SQR","EXP","LOG", | |
"PI","RAD","DEG","SIN","COS","TAN","ATAN","POW", | |
"CSRX","CSRY","FREEMEM","VERSION","ERR","ERL","RESULT", | |
"TCHX","TCHY","TCHST","TCHTIME","MAINCNTL","MAINCNTH", | |
"TABSTOP","TRUE","FALSE","CANCEL","ICONPUSE","ICONPAGE","ICONMAX", | |
"FUNCNO","FREEVAR","SYSBEEP", | |
"KEYBOARD","SPHITNO","SPHITX","SPHITY","SPHITT", | |
"TIME$","DATE$","MEM$","PRGNAME$","PACKAGE$" | |
] | |
print keywords_list.count | |
# メイン | |
init_dic() | |
f=codecs.open('petitcom.txt','r','utf-8') | |
lbldel=re.compile('^@.*$',iflag) | |
qtdel=re.compile('".*?"',iflag) | |
remdel=re.compile("(REM\s|').*$",iflag) | |
spl=re.compile('[A-Z]+\$?',iflag) | |
for m in f: | |
l=unicode(m) | |
print l, | |
l=l.replace(u'↓',u'\n') | |
for row in l.splitlines(): | |
row=row.upper() | |
row=lbldel.sub(' ',row) | |
row=qtdel.sub(' ',row) | |
row=remdel.sub(' REM ',row) | |
row=spl.findall(row) | |
for key in row: | |
if key in keywords_list: | |
countup_keyword(key) | |
f.close() | |
print '-----------------' | |
print_count() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
2012.03.14
プチコンmkⅡ用のキーワードを追加しました。
間違ってなければ、プログラム中で使えるキーワードは172個のはず。
(実は前のバージョンまではIFとTHENがキーワードからもれてました。なぜそんなメジャーなのがもれてたのか不明)