• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Scala CommonTokenStream类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了Scala中org.antlr.v4.runtime.CommonTokenStream的典型用法代码示例。如果您正苦于以下问题:Scala CommonTokenStream类的具体用法?Scala CommonTokenStream怎么用?Scala CommonTokenStream使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。



在下文中一共展示了CommonTokenStream类的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Scala代码示例。

示例1: SummaryParser

//设置package包名称以及导入依赖的类
package org.argus.jawa.summary.parser

import java.io.StringReader

import org.antlr.v4.runtime.misc.ParseCancellationException
import org.antlr.v4.runtime.{BailErrorStrategy, CharStreams, CommonTokenStream, NoViableAltException}
import org.argus.jawa.summary.rule.SummaryFile
import org.argus.jawa.summary.grammar.{SafsuLexer, SafsuParser}


object SummaryParser {
  def apply(source: String): SummaryFile =
    parse(source)

  @throws[SummaryParserException]
  def parse(source: String): SummaryFile = {
    val reader = new StringReader(source)
    val input = CharStreams.fromReader(reader)
    val lexer = new SafsuLexer(input)
    val cts = new CommonTokenStream(lexer)
    val parser = new SafsuParser(cts)
    parser.setErrorHandler(new BailErrorStrategy)
    try {
      SummaryParserVisitor(parser.summaryFile())
    } catch {
      case oie: IndexOutOfBoundsException =>
        throw SummaryParserException(oie)
      case nvae: NoViableAltException =>
        throw SummaryParserException(nvae)
      case pce: ParseCancellationException =>
        throw SummaryParserException(pce.getCause)
    }
  }
}

case class SummaryParserException(cause: Throwable) extends Exception(cause.getMessage) 
开发者ID:arguslab,项目名称:Argus-SAF,代码行数:37,代码来源:SummaryParser.scala


示例2: CodegenTests

//设置package包名称以及导入依赖的类
package test

import org.scalatest.FunSuite
import ast2._
import org.antlr.v4.runtime.ANTLRInputStream
import org.antlr.v4.runtime.CommonTokenStream
import intermediate.Intermediate


class CodegenTests extends FunSuite {
  
  def intermediate(filename: String, code: String, runtime: Runtime) = {

    try {
      val unit = Main.process(filename, code, runtime)
      val module = Intermediate.codegen(unit)
      println(module)
      val bytes = Codegen.codegen(module)
      Main.execute(unit.module.name, bytes, runtime)
    } 
    catch {
      case e: TypeException =>
        Main.showException(e, code)
        throw e
    }
  }
  
  def ty(code: String) = {
    val lexer = new TypegrammarLexer(new ANTLRInputStream(code))
    val parser = new TypegrammarParser(new CommonTokenStream(lexer))
    val cst = parser.ty()
    val gty = new TypeVisitor().visitTy(cst)
    val ty = Typegrammar.toType(gty)
    ty
  }

  def matches(in: Any, exp: String) = {
    val exp2 = "^" + exp.replace("(", "\\(").replace(")", "\\)") + "$"
    val r = exp.r.findFirstIn(in.toString)
    r match {
      case Some(_) => true
      case None => false
    }
  }

  test("Class as Eq") {
    val runtime = new Runtime()
    val code = """
      module test

      a = { z => { x => x } ({ x => x + z } ) } (2)
      a(1)

      """
    val ret = intermediate("test", code, runtime)
    println(ret)
  }
} 
开发者ID:voiser,项目名称:functional-toy-language,代码行数:59,代码来源:CodegenTests.scala


示例3: es

//设置package包名称以及导入依赖的类
package definiti.core.parser.project

import java.nio.file.{Files, Path, Paths}

import definiti.core.parser.antlr.{CoreDefinitionLexer, CoreDefinitionParser}
import definiti.core.parser.api.CoreDefinitionASTParser
import definiti.core.utils.CollectionUtils.scalaSeq
import definiti.core.{ClassDefinition, ReferenceContext}
import org.antlr.v4.runtime.{CharStreams, CommonTokenStream}

trait CoreParser {
  lazy val core: Seq[ClassDefinition] = {
    extractCoreDefinitionFiles()
      .map(_.toAbsolutePath.toString)
      .flatMap(parseCoreDefinitionFile)
  }

  lazy val coreContext: ReferenceContext = {
    ReferenceContext(
      classes = core,
      verifications = Seq.empty,
      namedFunctions = Seq.empty,
      requirements = Seq.empty
    )
  }

  private def extractCoreDefinitionFiles(): Seq[Path] = {
    val source = Paths.get("src", "main", "resources", "api")
    scalaSeq(Files.find(source, 1000, (path, _) => String.valueOf(path).endsWith(".definition")))
  }

  private def parseCoreDefinitionFile(fileName: String): Seq[ClassDefinition] = {
    val in = CharStreams.fromFileName(fileName)
    val lexer = new CoreDefinitionLexer(in)
    val tokens = new CommonTokenStream(lexer)
    val parser = new CoreDefinitionParser(tokens)
    val coreDefinition = parser.coreDefinition()
    CoreDefinitionASTParser.definitionContextToAST(coreDefinition)
  }
} 
开发者ID:definiti,项目名称:definiti-core,代码行数:41,代码来源:CoreParser.scala



注:本文中的org.antlr.v4.runtime.CommonTokenStream类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Scala Framing类代码示例发布时间:2022-05-23
下一篇:
Scala DelegableAuthInfoDAO类代码示例发布时间:2022-05-23
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap