当前位置: 首页>>代码示例>>Scala>>正文


Scala CommonTokenStream类代码示例

本文整理汇总了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;未经允许,请勿转载。