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


Scala EofCh类代码示例

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


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

示例1: CommandParser

//设置package包名称以及导入依赖的类
package sbt.impl

import scala.util.parsing.combinator.Parsers
import scala.util.parsing.input.CharSequenceReader
import scala.util.parsing.input.CharArrayReader.EofCh


private[sbt] object CommandParser extends Parsers
{
	type Elem = Char
	def parse(commandString: String): Either[String, (String, List[String])] =
	{
		command(new CharSequenceReader(commandString.trim, 0)) match
		{
			case Success(id ~ args, next) => Right((id, args))
			case err: NoSuccess =>
			{
				val pos = err.next.pos
				Left("Could not parse command: (" + pos.line + "," + pos.column + "): " + err.msg)
			}
		}
	}
	def command = phrase(identifier ~! (argument*))
	def identifier = unquoted | err("Expected identifier")
	def argument = ( (whitespaceChar+) ~> (unquoted | quoted) )
	
	def unquoted: Parser[String] = ((unquotedChar ~! (unquotedMainChar*)) ^^ { case a ~ tail => (a :: tail).mkString("") })
	def quoted: Parser[String] = quote ~> quotedChars <~ (quote | err("Missing closing quote character"))

	def quotedChars: Parser[String] = (escape | nonescapeChar)*
	def escape: Parser[Char] = backslash ~> (escapeChar | err("Illegal escape"))
	def escapeChar: Parser[Char] = quote | backslash
	def nonescapeChar: Parser[Char] = elem("", ch => !isEscapeChar(ch) && ch != EofCh)
	def unquotedChar: Parser[Char] = elem("", ch => !isEscapeChar(ch) && !Character.isWhitespace(ch) && ch != EofCh)
	def unquotedMainChar: Parser[Char] = unquotedChar | (errorIfEscape ~> failure(""))

	private def errorIfEscape = (not(quote) | err("Unexpected quote character")) ~>
		(not(backslash) | err("Escape sequences can only occur in a quoted argument"))

	private def isEscapeChar(ch: Char) = ch == '\\' || ch == '"'
	
	def quote: Parser[Char] = '"'
	def backslash: Parser[Char] = '\\'
	def whitespaceChar: Parser[Char] = elem("whitespace", ch => Character.isWhitespace(ch))

	private implicit def toString(p: Parser[List[Char]]): Parser[String] = p ^^ {_ mkString "" }
} 
开发者ID:TomasPleml,项目名称:simple-build-tool,代码行数:48,代码来源:CommandParser.scala


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