ちょっとだけ「俺」仕様
今日はVAR_STMTS行きます。
いつものように、今日書く部分の文法規則↓
7. VAR_STMTS → IDS ':' TYPE ';' (VAR_STMTS | λ)
def var_stmts():
global token
if token in KEYWORD:
エラー:予約語が変数名に使われてるよ!
x = ids()
if token != ':':
エラー:':'コロンが抜けてませんか?
if next_token() not in ['int', 'integer', 'bool', 'boolean']:
エラー:型名が間違ってませんか?
if next_token() != ';':
エラー:';'セミコロンが抜けてませんか?
if next_token != 'begin':
if token in KEYWORD:
エラー:ここは'begin'か非キーワードのくるところ!
if token not in KEYWORD:
var_stmts()
今は、型として「integer」と「boolean」の2つだけしか想定していないので、この部分は後々変更されます。
また、「僕はPascalが好きです」と言っておいてなんなんですが、integerとかbooleanとかprocedureとか・・・、なんか長ったらしいですよね。
正直、書く時「めんどくさいなー」と思ったりします。
オリジナルに敬意を表して、このながったらしい書き方も受理させますが、ささやかな変更として「int」「bool」「proc」「func」などの省略形も書けるようにしたいと思います。
ほんの少しC言語風?せっかくイチから作るのですから、ちょっとだけ「俺色」に染めてやります。