# Parsing a non-number in a string

**URL:** <https://discourse.julialang.org/t/parsing-a-non-number-in-a-string/66299>\
**Category:** New to Julia\
**Tags:** parsing\
**Created:** [August 12, 2021, 9:14pm UTC](https://discourse.julialang.org/t/parsing-a-non-number-in-a-string/66299 "2021-08-12T21:14:52Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![dgpdx](https://avatars.discourse-cdn.com/v4/letter/d/45deac/32.png) [@dgpdx](https://discourse.julialang.org/u/dgpdx)\
**Post date:** [August 12, 2021, 9:14pm UTC](https://discourse.julialang.org/t/parsing-a-non-number-in-a-string/66299/1 "2021-08-12T21:14:52Z")

</div>

I am parsing a string like “1 2 [Any]”. The 1 an 2 parse into Ints just fine, but how can I get [Any] to parse into an array? parse(Any,s[3]) returns an error, as does parse(,s[3]). Please advise.

---

<div class="post-metadata">

**Author:** ![jling](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jling/32/212909_2.png) [@jling](https://discourse.julialang.org/u/jling)\
**Post date:** [August 12, 2021, 9:19pm UTC](https://discourse.julialang.org/t/parsing-a-non-number-in-a-string/66299/2 "2021-08-12T21:19:46Z")

</div>

use with caution

```julia
julia> s = "[Any]"
"[Any]"

julia> eval(Meta.parse(s))
1-element Vector{DataType}:
 Any

```

---

<div class="post-metadata">

**Author:** ![Sukera](https://avatars.discourse-cdn.com/v4/letter/s/ce7236/32.png) [@Sukera](https://discourse.julialang.org/u/Sukera)\
**Post date:** [August 12, 2021, 9:24pm UTC](https://discourse.julialang.org/t/parsing-a-non-number-in-a-string/66299/4 "2021-08-12T21:24:34Z")

</div>

Before you do this - what do you want `"[Any]"` to _mean_? As it stands, from a julia point of view, this is a very unusual vector. If you have to resort to something like `eval(Meta.parse(s))`, you’re on the wrong road the vast majority of time.

---

<div class="post-metadata">

**Author:** ![dgpdx](https://avatars.discourse-cdn.com/v4/letter/d/45deac/32.png) [@dgpdx](https://discourse.julialang.org/u/dgpdx)\
**Post date:** [August 12, 2021, 9:26pm UTC](https://discourse.julialang.org/t/parsing-a-non-number-in-a-string/66299/5 "2021-08-12T21:26:45Z")

</div>

{Any} could mean something like “1 2 [dup \*]”.

---

<div class="post-metadata">

**Author:** ![Sukera](https://avatars.discourse-cdn.com/v4/letter/s/ce7236/32.png) [@Sukera](https://discourse.julialang.org/u/Sukera)\
**Post date:** [August 12, 2021, 9:27pm UTC](https://discourse.julialang.org/t/parsing-a-non-number-in-a-string/66299/6 "2021-08-12T21:27:33Z")

</div>

In which case, what is `dup`? Do you mean you just want to parse anything between `[` and `]` as a vector…?

You’ll have to at least know what kind of data the vector should hold.

---

<div class="post-metadata">

**Author:** ![dgpdx](https://avatars.discourse-cdn.com/v4/letter/d/45deac/32.png) [@dgpdx](https://discourse.julialang.org/u/dgpdx)\
**Post date:** [August 12, 2021, 9:28pm UTC](https://discourse.julialang.org/t/parsing-a-non-number-in-a-string/66299/7 "2021-08-12T21:28:11Z")

</div>

Trying eval(Meta.parse(s)) gives this error – **ERROR:** Base.Meta.ParseError(“unexpected "]"”)

---

<div class="post-metadata">

**Author:** ![dgpdx](https://avatars.discourse-cdn.com/v4/letter/d/45deac/32.png) [@dgpdx](https://discourse.julialang.org/u/dgpdx)\
**Post date:** [August 12, 2021, 9:29pm UTC](https://discourse.julialang.org/t/parsing-a-non-number-in-a-string/66299/8 "2021-08-12T21:29:08Z")

</div>

I want the vector to hold any datatype.

---

<div class="post-metadata">

**Author:** ![jling](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jling/32/212909_2.png) [@jling](https://discourse.julialang.org/u/jling)\
**Post date:** [August 12, 2021, 9:29pm UTC](https://discourse.julialang.org/t/parsing-a-non-number-in-a-string/66299/9 "2021-08-12T21:29:36Z")

</div>

can you show a MWE? (minimal working example) and what you’re trying to achieve?

---

<div class="post-metadata">

**Author:** ![jzr](https://avatars.discourse-cdn.com/v4/letter/j/eb9ed0/32.png) [@jzr](https://discourse.julialang.org/u/jzr)\
**Post date:** [August 12, 2021, 9:29pm UTC](https://discourse.julialang.org/t/parsing-a-non-number-in-a-string/66299/10 "2021-08-12T21:29:41Z")

</div>

It will help to get some background. Why are you parsing strings into Julia code?

---

<div class="post-metadata">

**Author:** ![dgpdx](https://avatars.discourse-cdn.com/v4/letter/d/45deac/32.png) [@dgpdx](https://discourse.julialang.org/u/dgpdx)\
**Post date:** [August 12, 2021, 9:29pm UTC](https://discourse.julialang.org/t/parsing-a-non-number-in-a-string/66299/11 "2021-08-12T21:29:58Z")

</div>

duo is a function.

---

<div class="post-metadata">

**Author:** ![dgpdx](https://avatars.discourse-cdn.com/v4/letter/d/45deac/32.png) [@dgpdx](https://discourse.julialang.org/u/dgpdx)\
**Post date:** [August 12, 2021, 9:31pm UTC](https://discourse.julialang.org/t/parsing-a-non-number-in-a-string/66299/12 "2021-08-12T21:31:00Z")

</div>

I’m implementing a concatinative language in julia. Similar to Forth.

---

<div class="post-metadata">

**Author:** ![DNF](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dnf/32/10191_2.png) [@DNF](https://discourse.julialang.org/u/DNF)\
**Post date:** [August 12, 2021, 9:32pm UTC](https://discourse.julialang.org/t/parsing-a-non-number-in-a-string/66299/13 "2021-08-12T21:32:00Z")

</div>

I think you need to provide a copy-pastable example that reproduces the problem exactly, and show what output you want.

What is `s`?

---

<div class="post-metadata">

**Author:** ![kristoffer.carlsson](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/kristoffer.carlsson/32/22_2.png) [@kristoffer.carlsson](https://discourse.julialang.org/u/kristoffer.carlsson)\
**Post date:** [August 12, 2021, 9:32pm UTC](https://discourse.julialang.org/t/parsing-a-non-number-in-a-string/66299/14 "2021-08-12T21:32:03Z")

</div>

You probably want to write your own parser then. You can use Base for simple things like parsing numbers but more complicated objects you might be best of parsing yourself.

---

<div class="post-metadata">

**Author:** ![jzr](https://avatars.discourse-cdn.com/v4/letter/j/eb9ed0/32.png) [@jzr](https://discourse.julialang.org/u/jzr)\
**Post date:** [August 12, 2021, 9:32pm UTC](https://discourse.julialang.org/t/parsing-a-non-number-in-a-string/66299/15 "2021-08-12T21:32:47Z")

</div>

It won’t work to use the Julia parser because Julia has different syntax from Forth.

---

<div class="post-metadata">

**Author:** ![dgpdx](https://avatars.discourse-cdn.com/v4/letter/d/45deac/32.png) [@dgpdx](https://discourse.julialang.org/u/dgpdx)\
**Post date:** [August 12, 2021, 9:32pm UTC](https://discourse.julialang.org/t/parsing-a-non-number-in-a-string/66299/16 "2021-08-12T21:32:51Z")

</div>

I do a readline to get user input. The string " 1 2 [dup \*] should result in all three items being pushed onto a stack.

---

<div class="post-metadata">

**Author:** ![jling](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jling/32/212909_2.png) [@jling](https://discourse.julialang.org/u/jling)\
**Post date:** [August 12, 2021, 9:33pm UTC](https://discourse.julialang.org/t/parsing-a-non-number-in-a-string/66299/17 "2021-08-12T21:33:57Z")

</div>

although there are a lot of DSL in Julia (in the form of macros), I think it is a pretty common opinion that languages that are good at being parser/compiler are different from other languages. The macros in Julia are essentially still combing back to Julia’s syntax in the end.

In this case I think Julia is not what you want to use to implement another language

---

<div class="post-metadata">

**Author:** ![jzr](https://avatars.discourse-cdn.com/v4/letter/j/eb9ed0/32.png) [@jzr](https://discourse.julialang.org/u/jzr)\
**Post date:** [August 12, 2021, 9:35pm UTC](https://discourse.julialang.org/t/parsing-a-non-number-in-a-string/66299/18 "2021-08-12T21:35:32Z")

</div>

I think Julia could be good for implementing languages, but you will have to write your own function for converting strings into syntax trees, aka a parser. (That’s not specific to Julia however.)

---

<div class="post-metadata">

**Author:** ![dgpdx](https://avatars.discourse-cdn.com/v4/letter/d/45deac/32.png) [@dgpdx](https://discourse.julialang.org/u/dgpdx)\
**Post date:** [August 12, 2021, 9:35pm UTC](https://discourse.julialang.org/t/parsing-a-non-number-in-a-string/66299/19 "2021-08-12T21:35:48Z")

</div>

That’s too bad.I really wanted the new language to inherit all the features and functionality of Julia.

---

<div class="post-metadata">

**Author:** ![dgpdx](https://avatars.discourse-cdn.com/v4/letter/d/45deac/32.png) [@dgpdx](https://discourse.julialang.org/u/dgpdx)\
**Post date:** [August 12, 2021, 9:37pm UTC](https://discourse.julialang.org/t/parsing-a-non-number-in-a-string/66299/20 "2021-08-12T21:37:20Z")

</div>

Many thanks for the replies!

---

<div class="post-metadata">

**Author:** ![jzr](https://avatars.discourse-cdn.com/v4/letter/j/eb9ed0/32.png) [@jzr](https://discourse.julialang.org/u/jzr)\
**Post date:** [August 12, 2021, 9:38pm UTC](https://discourse.julialang.org/t/parsing-a-non-number-in-a-string/66299/21 "2021-08-12T21:38:45Z")

</div>

> [@dgpdx](#):
>
> That’s too bad.I really wanted the new language to inherit all the features and functionality of Julia.

Maybe what you want is an embedded DSL, e.g. in a nonstandard string literal, to take your Forth and turn it into Julia.
