I以下のモジュールを有する:アレイタイプが定義されていない
module lexer
export parseCode
function parseCode(s::String)
lexeme::Array{UInt32, 1}
words = Dict("dup"=>UInt32(0x40000001), "drop"=>UInt32(0x40000002), "swap"=> UInt32(0x40000003), "+"=> UInt32(0x40000004), "-"=> UInt32(0x40000005), "x"=> UInt(0x4000000c),"/"=>UInt32(0x40000006), "%"=> UInt32(0x40000007), "if"=> UInt32(0x40000008),
"j"=> UInt32(0x40000009), "print"=> UInt32(0x4000000a), "exit"=>UInt32(b))
opcode = split(s)
for w in opcode
instruction::UInt32
instruction = get(words,w,0)
if instruction != 0
push!(lexeme,instruction)
end
end
push!(lexeme,UInt32(11))
return lexeme
end
end
機能parseCodeは、文字列s内の単語を解析し、各単語に対して対応する整数値を取得し、にそれらをプッシュします配列の語彙素。 関数はtest.jlする配列を返します。
require("stackProcessor")
require("lexer")
using stackProcessor
using lexer
#=prog=Array{UInt32,4}
prog=[3,4,0x40000001, 5, 0x40000002, 3,0x40000003, 2, 0x40000004, 0x40000000]
processor(prog)
=#
f = open("opcode.txt")
s = readall(f)
close(f)
print(s)
opcode = parseCode(s)
print(repr(opcode))
processor(opcode)
オペコードは、語彙素の配列のコピーを取得する必要がある変数ですが、私は次のエラーを取得する:
oadError: UndefVarError: lexeme not defined
in parseCode at C:\Users\Administrator\AppData\Local\atom\app-1.10.2\julia\lexer.jl:11
in include_string at loading.jl:282
in include_string at C:\Users\Administrator\.julia\v0.4\CodeTools\src\eval.jl:32
in anonymous at C:\Users\Administrator\.julia\v0.4\Atom\src\eval.jl:84
in withpath at C:\Users\Administrator\.julia\v0.4\Requires\src\require.jl:37
in withpath at C:\Users\Administrator\.julia\v0.4\Atom\src\eval.jl:53
[inlined code] from C:\Users\Administrator\.julia\v0.4\Atom\src\eval.jl:83
in anonymous at task.jl:58
while loading C:\Users\Administrator\AppData\Local\atom\app-1.10.2\julia\test.jl, in expression starting on line 17
おかしい事はありますそれは正常に動作していた今、私にこのエラーを与えている。 私はJuliaで配列がコピーとして返されると思ったので、エラーがどこから来ているのかわかりません。あなたはローカル変数を初期化することを望んでいたよう
おそらく '語彙素を'は、最初は地球環境から放置されていたため、これは以前に働いていました。グローバルに再定義するか、関数 'parseCode'を変更する必要があります。 –
@ダン:次に、関数の引数として空の配列を渡し、次に新しい内容で配列を埋める必要がありますか? – JJTO