All Downloads are FREE. Search and download functionalities are using the official Maven repository.

scala.scalanative.nir.parser.Val.scala Maven / Gradle / Ivy

The newest version!
package scala.scalanative
package nir
package parser

import fastparse.all._

object Val extends Base[nir.Val] {

  import Base._
  import IgnoreWhitespace._

  val None   = P("none".! map (_ => nir.Val.None))
  val True   = P("true".! map (_ => nir.Val.True))
  val False  = P("false".! map (_ => nir.Val.False))
  val Null   = P("null".! map (_ => nir.Val.Null))
  val Zero   = P("zero[" ~ Type.parser ~ "]" map (nir.Val.Zero(_)))
  val Undef  = P("undef[" ~ Type.parser ~ "]" map (nir.Val.Undef(_)))
  val Byte   = P("byte" ~ Base.Byte map (nir.Val.Byte(_)))
  val Short  = P("short" ~ Base.Short map (nir.Val.Short(_)))
  val Int    = P("int" ~ Base.Int map (nir.Val.Int(_)))
  val Long   = P("long" ~ Base.Long map (nir.Val.Long(_)))
  val Float  = P("float" ~ Base.Float map (nir.Val.Float(_)))
  val Double = P("double" ~ Base.Double map (nir.Val.Double(_)))
  val NoneStruct =
    P(
      "struct" ~ "{" ~ Val.parser.rep(sep = ",") ~ "}" map (nir.Val
        .Struct(nir.Global.None, _)))
  val Struct =
    P(
      "struct" ~ nir.parser.Global.parser ~ "{" ~ Val.parser
        .rep(sep = ",") ~ "}" map {
        case (n, values) => nir.Val.Struct(n, values)
      })
  val Array =
    P("array" ~ Type.parser ~ "{" ~ Val.parser.rep(sep = ",") ~ "}" map {
      case (ty, values) => nir.Val.Array(ty, values)
    })
  val Chars = P("c" ~ stringLit map (nir.Val.Chars(_)))
  val Local =
    P(nir.parser.Local.parser ~ ":" ~ Type.parser map {
      case (name, ty) => nir.Val.Local(name, ty)
    })
  val Global =
    P(nir.parser.Global.parser ~ ":" ~ Type.parser map {
      case (name, valty) => nir.Val.Global(name, valty)
    })
  val Unit   = P("unit".! map (_ => nir.Val.Unit))
  val Const  = P("const" ~ Val.parser map (nir.Val.Const(_)))
  val String = P(stringLit map (nir.Val.String(_)))

  override val parser: P[nir.Val] =
    None | True | False | Null | Zero | Undef | Long | Int | Short | Byte | Double | Float | NoneStruct | Struct | Array | Chars | Local | Global | Unit | Const | String

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy