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

org.sweble.wikitext.lazy.parser.ExtWhitespace.rats Maven / Gradle / Ivy

There is a newer version: 3.1.9
Show newest version
/**
 * Copyright 2011 The Open Source Research Group,
 *                University of Erlangen-Nürnberg
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/*!
 *
 * Whitespace
 * ----------
 *
 *   AST node:
 *     Name        : Whitespace
 *     Extends     : ContentNode
 *     NodeType    : org.sweble.wikitext.lazy.AstNodeTypes.NT_WHITESPACE
 *     Constructor : "content, hasNewline"
 *
 *     Properties:
 *       hasNewline : boolean
 *
 */

module org.sweble.wikitext.lazy.parser.ExtWhitespace;

modify org.sweble.wikitext.lazy.utils.Whitespace;

import org.sweble.wikitext.lazy.parser.ParserEntity;




// -- Preserved Transparent Elements -------------------------------------------

AstNode pTpStar = ptTpStar ;

AstNode pTpPlus = ptTpPlus ;

private transient
NodeList ptTpStar =
  tp:pTransparent*
  {
    yyValue = new NodeList(tp);
  }
;

private transient
NodeList ptTpPlus =
  tp:pTransparent+
  {
    yyValue = new NodeList(tp);
  }
;

private inline
AstNode pTransparent =
  ParserEntityXmlCommentOrIgnore
;




// -- Preserved Extended Spaces ------------------------------------------------

AstNode pExtSpaceStar = ptExtSpaceStar ;

AstNode pExtSpacePlus = ptExtSpacePlus ;

private transient
NodeList ptExtSpaceStar =
  s:pExtSpaceAtom*
  {
    yyValue = new NodeList(s);
  }
;

private transient
NodeList ptExtSpacePlus =
  s:pExtSpaceAtom+
  {
    yyValue = new NodeList(s);
  }
;

private inline
AstNode pExtSpaceAtom =
    spaces:pSpacePlus
    {
      yyValue = new Text(spaces);
    }
  / pTransparent
;




// -- Preserved Extended Whitespace --------------------------------------------

noinline transient
AstNode pExtWsStar =
 ^{
    StateAwareResult r = (StateAwareResult) ppExtWsStarMemoized(yyBase);
    final LazyParserContext context = getContext();
    Result yyResult = r.getResult(context);
    if (yyResult == null)
      yyResult = r.setResult(context, ppExtWsStarTransient(yyBase));
    if (returnTrue(r))
      return yyResult;
  }
;

/*private*/ noinline memoized
Whitespace pExtWsStarMemoized =
 ^{
    Result yyResult = new StateAwareResult("pExtWsPlus", getContext(), ppExtWsStarTransient(yyBase));
    if (returnTrue(yyResult))
      return yyResult;
  }
;

/*private*/ noinline transient
Whitespace pExtWsStarTransient =
  s:pExtSpaceStar ws:pExtWsAtom*
  {
    yyValue = new Whitespace(new NodeList(s, ws), !ws.isEmpty());
  }
;

noinline transient
AstNode pExtWsPlus =
 ^{
    StateAwareResult r = (StateAwareResult) ppExtWsPlusMemoized(yyBase);
    final LazyParserContext context = getContext();
    Result yyResult = r.getResult(context);
    if (yyResult == null)
      yyResult = r.setResult(context, ppExtWsPlusTransient(yyBase));
    if (returnTrue(r))
      return yyResult;
  }
;

/*private*/ noinline memoized
Whitespace pExtWsPlusMemoized =
 ^{
    Result yyResult = new StateAwareResult("pExtWsPlus", getContext(), ppExtWsPlusTransient(yyBase));
    if (returnTrue(yyResult))
       return yyResult;
  }
;

/*private*/ noinline transient
Whitespace pExtWsPlusTransient =
    s:pExtSpacePlus ws:pExtWsAtom*
    {
      yyValue = new Whitespace(new NodeList(s, ws), !ws.isEmpty());
    }
  / ws:pExtWsAtom+
    {
      yyValue = new Whitespace(new NodeList(ws), true);
    }
;

private inline
AstNode pExtWsAtom =
    ws:pWsPlus
    {
      yyValue = new Text(ws);
    }
  / pTransparent
;




// -- End of file --------------------------------------------------------------




© 2015 - 2024 Weber Informatics LLC | Privacy Policy