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

org.sweble.wikitext.lazy.parser.MagicWord.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.
 */

/*!
 *
 * Magic Word
 * ----------
 *
 *   Grammar:
 *     - '__' Word '__'
 *
 *   AST node:
 *     Name        : MagicWord
 *     Extends     : LeafNode
 *     Constructor : word
 *     NodeType    : org.sweble.wikitext.lazy.AstNodeTypes.NT_MAGIC_WORD
 *
 *     Properties:
 *       word : String
 *
 */

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

import org.sweble.wikitext.lazy.utils.Warnings;




// -- Magic word ---------------------------------------------------------------

AstNode MagicWord =
    "__" yyValue:MagicWordChoice
  / "__"
    {
      yyValue = new Text("__");
    }
;

private inline AstNode MagicWordChoice =
    word:Word "__"
    {
      yyValue = new MagicWord(word);

      if (isGatherRtData())
        addRtData(yyValue, joinRt("__", word, "__"));
    }
  / &{ isWarningsEnabled() } MagicWordAutoCorrect
;

private inline AstNode MagicWordAutoCorrect =
    &{ isAutoCorrect(WS_NORMAL) } word:Word '_'
    {
      yyValue = new MagicWord(word);

      if (isGatherRtData())
        addRtData(yyValue, joinRt("__", word, "__"));

      fileLooksLikeWarning(
          yyValue,
          makeSpan(yyStart - 2, yyIndex),
          WS_NORMAL,
          "Magic Word",
          "the finishing `_' is missing");
    }
  / &{ isWarningLevelEnabled(WS_NORMAL) } word:WordString "__"
    {
      yyValue = new Text("__" + word + "__");

      fileLooksLikeWarning(
          yyValue,
          makeSpan(yyStart - 2, yyIndex),
          WS_NORMAL,
          "Magic Word",
          "the word itself is not a magic word (unknown)");
    }
  / &{ isAutoCorrect(WS_INFO) } word:Word
    {
      yyValue = new MagicWord(word);

      if (isGatherRtData())
        addRtData(yyValue, joinRt("__", word));

      fileLooksLikeWarning(
          yyValue,
          makeSpan(yyStart - 2, yyResult),
          WS_INFO,
          "Magic Word",
          "the finishing `__' is missing");
    }
  / &{ isWarningLevelEnabled(WS_NONE) } &WordString
    {
      yyValue = new Text("__");

      fileLooksLikeWarning(
          yyValue,
          makeSpan(yyStart - 2, yyPredResult),
          WS_NONE,
          "Magic Word",
          "the word itself is missing or not recognized as a magic word");
    }
;

private inline String Word =
  yyValue:WordString &{ isMagicWord(yyValue) }
;

private transient String WordString =
  ( '-'
  / [A-Z]
  / [a-z]
  / [0-9]
  / [\u00B7]
  / [\u00C0-\u00D6]
  / [\u00D8-\u00F6]
  / [\u00F8-\u02FF]
  / [\u0370-\u037D]
  / [\u037F-\u1FFF]
  / [\u200C-\u200D]
  / [\u2070-\u218F]
  / [\u2C00-\u2FEF]
  / [\u3001-\uD7FF]
  / [\uF900-\uFDCF]
  / [\uFDF0-\uFFFD]
  / [\u0300-\u036F]
  / [\u203F-\u2040]
  )+
;




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




© 2015 - 2024 Weber Informatics LLC | Privacy Policy