[Pythonの自作プログラミング言語を使用する]パート3

序文

私はプログラミング言語を実行しました:mylang

開始

実際、ifを最初にすべきですが、「最初に単一ブランチ構造を説明し、次に複数ブランチ構造を説明する」という概念を維持するために、if

ソースコード

def parse_while(block):
    global status
    try:
        foo = block.split('\n')[0][6:-2]
    except:
        return ['error','WhileSentenceError:wrong initial']
    while(1):
        F = comp(foo)
        if(F[0] == 'error'):
            return F
        if(not F[0]):
            break
        for i in block.split('\n')[1:-1]:
            i = i.strip()
            val = comp(i)
            if(val[0] == 'error'):
                return val
            if(status == MYL_BREAK_STATUS):
                status = MYL_NONE_STATUS
                return ['']
    return ['']

ステータスグローバル変数については、[Python自作プログラミング言語を使用する]の第2章を参照してください

パラメータ
block:コード

初めに
    try:
        foo = block.split('\n')[0][6:-2]
    except:
        return ['error','WhileSentenceError:wrong initial']

これを理解するには、forの構文を見てください。

while(<foo>){
    <code>
}

これblock.split('\n')[0]while(<foo>){ 6行目です。<foo>
したがって、-2を<foo>使用するように頼む必要あります。

後で
    while(1):
        F = comp(foo)
        if(F[0] == 'error'):
            return F
        if(not F[0]):
            break
        for i in block.split('\n')[1:-1]:
            i = i.strip()
            val = comp(i)
            if(val[0] == 'error'):
                return val
            if(status == MYL_BREAK_STATUS):
                status = MYL_NONE_STATUS
                return ['']

別に見てください

初めに
        F = comp(foo)
        if(F[0] == 'error'):
            return F
        if(not F[0]):
            break

式を確認してください<foo>

後で
        for i in block.split('\n')[1:-1]:
            i = i.strip()
            val = comp(i)
            if(val[0] == 'error'):
                return val
            if(status == MYL_BREAK_STATUS):
                status = MYL_NONE_STATUS
                return ['']

コードを実行して判断するbreak

やっと
    return ['']

終わり

結論として

Created with Raphaël 2.2.0 开始 判断表达式 执行内部代码 结束 yes no

著者

ヒットロード

さようなら、クラスから出るのは終わった!

ヒットロードは時々更新されます、見るか去ってください!

おすすめ

転載: blog.csdn.net/weixin_42954615/article/details/109148037