19Language::Productions make_productions() {
 
   20  Language::Productions prods;
 
   22  prods[PROD_DOC](
"doc") >> 
"top_items";
 
   23  prods[PROD_DOC2](
"doc") >> 
"NEWLINE", 
"top_items";
 
   24  prods[PROD_TOP_FIRST](
"top_items") >> 
"top_item";
 
   25  prods[PROD_TOP_NEXT](
"top_items") >> 
"top_items", 
"top_item";
 
   26  prods[PROD_TOP_DIRECT](
"top_item") >> 
"%", 
"any*", 
"NEWLINE";
 
   27  prods[PROD_TOP_BEGIN](
"top_item") >> 
"-", 
"-", 
"-", 
"NEWLINE";
 
   28  prods[PROD_TOP_END](
"top_item") >> 
".", 
".", 
".", 
"NEWLINE";
 
   29  prods[PROD_TOP_BMAP](
"top_item") >> 
"bmap_item";
 
   30  prods[PROD_BMAP_FIRST](
"bmap_items") >> 
"bmap_item";
 
   31  prods[PROD_BMAP_NEXT](
"bmap_items") >> 
"bmap_items", 
"bmap_item";
 
   32  prods[PROD_BMAP_SCALAR](
"bmap_item") >> 
"scalar", 
":", 
"WS*", 
"tag?", 
"map_scalar", 
"NEWLINE";
 
   33  prods[PROD_BMAP_BSCALAR](
"bmap_item") >> 
"scalar", 
":", 
"WS*", 
"bscalar";
 
   34  prods[PROD_BMAP_BVALUE](
"bmap_item") >> 
"scalar", 
":", 
"WS*", 
"NEWLINE", 
"bvalue";
 
   35  prods[PROD_BVALUE_EMPTY](
"bvalue");
 
   36  prods[PROD_BVALUE_BMAP](
"bvalue") >> 
"INDENT", 
"bmap_items", 
"DEDENT";
 
   38  prods[PROD_BVALUE_BSEQ](
"bvalue") >> 
"INDENT", 
"bseq_items", 
"DEDENT";
 
   39  prods[PROD_BMAP_FMAP](
"bmap_item") >> 
"scalar", 
":", 
"WS*", 
"tag?", 
"fmap", 
"NEWLINE";
 
   40  prods[PROD_BMAP_FSEQ](
"bmap_item") >> 
"scalar", 
":", 
"WS*", 
"tag?", 
"fseq", 
"NEWLINE";
 
   41  prods[PROD_BSEQ_FIRST](
"bseq_items") >> 
"bseq_item";
 
   42  prods[PROD_BSEQ_NEXT](
"bseq_items") >> 
"bseq_items", 
"bseq_item";
 
   43  prods[PROD_BSEQ_SCALAR](
"bseq_item") >> 
"-", 
"WS+", 
"tag?", 
"scalar", 
"NEWLINE";
 
   44  prods[PROD_BSEQ_BSCALAR](
"bseq_item") >> 
"-", 
"WS+", 
"bscalar";
 
   45  prods[PROD_BSEQ_BMAP](
"bseq_item") >> 
"-", 
"NEWLINE", 
"INDENT", 
"bmap_items", 
"DEDENT";
 
   46  prods[PROD_BSEQ_BMAP_TRAIL](
"bseq_item") >> 
"-", 
"WS+", 
"NEWLINE", 
"INDENT", 
"bmap_items", 
"DEDENT";
 
   47  prods[PROD_BSEQ_BSEQ](
"bseq_item") >> 
"-", 
"NEWLINE", 
"INDENT", 
"bseq_items", 
"DEDENT";
 
   48  prods[PROD_BSEQ_BSEQ_TRAIL](
"bseq_item") >> 
"-", 
"WS+", 
"NEWLINE", 
"INDENT", 
"bseq_items", 
"DEDENT";
 
   49  prods[PROD_BSEQ_FMAP](
"bseq_item") >> 
"-", 
"WS+", 
"tag?", 
"fmap", 
"NEWLINE";
 
   50  prods[PROD_BSEQ_FSEQ](
"bseq_item") >> 
"-", 
"WS+", 
"tag?", 
"fseq", 
"NEWLINE";
 
   51  prods[PROD_FMAP](
"fmap") >> 
"{", 
"WS*", 
"fmap_items", 
"}", 
"WS*";
 
   52  prods[PROD_FMAP_EMPTY](
"fmap") >> 
"{", 
"WS*", 
"}", 
"WS*";
 
   53  prods[PROD_FMAP_FIRST](
"fmap_items") >> 
"fmap_item";
 
   54  prods[PROD_FMAP_NEXT](
"fmap_items") >> 
"fmap_items", 
",", 
"WS*", 
"fmap_item";
 
   55  prods[PROD_FMAP_SCALAR](
"fmap_item") >> 
"scalar", 
":", 
"WS*", 
"tag?", 
"scalar";
 
   56  prods[PROD_FMAP_FMAP](
"fmap_item") >> 
"scalar", 
":", 
"WS*", 
"tag?", 
"fmap";
 
   57  prods[PROD_FMAP_FSEQ](
"fmap_item") >> 
"scalar", 
":", 
"WS*", 
"tag?", 
"fseq";
 
   58  prods[PROD_FSEQ](
"fseq") >> 
"[", 
"WS*", 
"fseq_items", 
"]", 
"WS*";
 
   59  prods[PROD_FSEQ_EMPTY](
"fseq") >> 
"[", 
"WS*", 
"]", 
"WS*";
 
   60  prods[PROD_FSEQ_FIRST](
"fseq_items") >> 
"fseq_item";
 
   61  prods[PROD_FSEQ_NEXT](
"fseq_items") >> 
"fseq_items", 
",", 
"WS*", 
"fseq_item";
 
   62  prods[PROD_FSEQ_SCALAR](
"fseq_item") >> 
"tag?", 
"scalar";
 
   63  prods[PROD_FSEQ_FMAP](
"fseq_item") >> 
"tag?", 
"fmap";
 
   64  prods[PROD_FSEQ_FSEQ](
"fseq_item") >> 
"tag?", 
"fseq";
 
   65  prods[PROD_SCALAR_RAW](
"scalar") >> 
"scalar_head", 
"scalar_tail*";
 
   66  prods[PROD_SCALAR_QUOTED](
"scalar") >> 
"scalar_quoted";
 
   67  prods[PROD_MAP_SCALAR_RAW](
"map_scalar") >> 
"scalar_head", 
"scalar_tail*", 
"map_scalar_escaped*";
 
   68  prods[PROD_MAP_SCALAR_QUOTED](
"map_scalar") >> 
"scalar_quoted";
 
   69  prods[PROD_SCALAR_DQUOTED](
"scalar_quoted") >> 
"\"", 
"dquoted*", 
"descape*", 
"\"", 
"WS*";
 
   70  prods[PROD_SCALAR_SQUOTED](
"scalar_quoted") >> 
"'", 
"squoted*", 
"sescape*", 
"'", 
"WS*";
 
   71  prods[PROD_SCALAR_HEAD_OTHER](
"scalar_head") >> 
"OTHERCHAR";
 
   72  prods[PROD_SCALAR_HEAD_DOT](
"scalar_head") >> 
".", 
"OTHERCHAR";
 
   73  prods[PROD_SCALAR_HEAD_DASH](
"scalar_head") >> 
"-", 
"OTHERCHAR";
 
   74  prods[PROD_SCALAR_HEAD_DOT_DOT](
"scalar_head") >> 
".", 
".", 
"OTHERCHAR";
 
   75  prods[PROD_MAP_SCALAR_ESCAPED_EMPTY](
"map_scalar_escaped*");
 
   76  prods[PROD_MAP_SCALAR_ESCAPED_NEXT](
"map_scalar_escaped*") >> 
"map_scalar_escaped*", 
",", 
"scalar_tail*";
 
   77  prods[PROD_TAG_EMPTY](
"tag?");
 
   78  prods[PROD_TAG](
"tag?") >> 
"!", 
"!", 
"OTHERCHAR+", 
"WS+";
 
   79  prods[PROD_BSCALAR](
"bscalar") >> 
"bscalar_header", 
"WS*", 
"NEWLINE", 
"INDENT", 
"bscalar_items", 
"DEDENT";
 
   80  prods[PROD_BSCALAR_FIRST](
"bscalar_items") >> 
"bscalar_item";
 
   81  prods[PROD_BSCALAR_NEXT](
"bscalar_items") >> 
"bscalar_items", 
"bscalar_item";
 
   82  prods[PROD_BSCALAR_LINE](
"bscalar_item") >> 
"any*", 
"NEWLINE";
 
   83  prods[PROD_BSCALAR_INDENT](
"bscalar_item") >> 
"INDENT", 
"bscalar_items", 
"DEDENT";
 
   84  prods[PROD_BSCALAR_HEADER_LITERAL](
"bscalar_header") >> 
"|", 
"bscalar_head_c*";
 
   85  prods[PROD_BSCALAR_HEADER_FOLDED](
"bscalar_header") >> 
">", 
"bscalar_head_c*";
 
   86  prods[PROD_BSCALAR_HEAD_EMPTY](
"bscalar_head_c*");
 
   87  prods[PROD_BSCALAR_HEAD_NEXT](
"bscalar_head_c*") >> 
"bscalar_head_c*", 
"bscalar_head_c";
 
   88  prods[PROD_BSCALAR_HEAD_OTHER](
"bscalar_head_c") >> 
"OTHERCHAR";
 
   89  prods[PROD_BSCALAR_HEAD_DASH](
"bscalar_head_c") >> 
"-";
 
   90  prods[PROD_DQUOTED_EMPTY](
"dquoted*");
 
   91  prods[PROD_DQUOTED_NEXT](
"dquoted*") >> 
"dquoted*", 
"dquoted";
 
   92  prods[PROD_SQUOTED_EMPTY](
"squoted*");
 
   93  prods[PROD_SQUOTED_NEXT](
"squoted*") >> 
"squoted*", 
"squoted";
 
   94  prods[PROD_ANY_EMPTY](
"any*");
 
   95  prods[PROD_ANY_NEXT](
"any*") >> 
"any*", 
"any";
 
   96  prods[PROD_DESCAPE_EMPTY](
"descape*");
 
   97  prods[PROD_DESCAPE_NEXT](
"descape*") >> 
"descape*", 
"descape";
 
   98  prods[PROD_DESCAPE](
"descape") >> 
"\\", 
"descaped", 
"dquoted*";
 
   99  prods[PROD_SESCAPE_EMPTY](
"sescape*");
 
  100  prods[PROD_SESCAPE_NEXT](
"sescape*") >> 
"sescape*", 
"sescape";
 
  101  prods[PROD_SESCAPE](
"sescape") >> 
"'", 
"'", 
"squoted*";
 
  102  prods[PROD_SCALAR_TAIL_EMPTY](
"scalar_tail*");
 
  103  prods[PROD_SCALAR_TAIL_NEXT](
"scalar_tail*") >> 
"scalar_tail*", 
"scalar_tail";
 
  104  prods[PROD_OTHER_FIRST](
"OTHERCHAR+") >> 
"OTHERCHAR";
 
  105  prods[PROD_OTHER_NEXT](
"OTHERCHAR+") >> 
"OTHERCHAR+", 
"OTHERCHAR";
 
  106  prods[PROD_SCALAR_TAIL_SPACE](
"scalar_tail") >> 
"WS";
 
  107  prods[PROD_SCALAR_TAIL_DOT](
"scalar_tail") >> 
".";
 
  108  prods[PROD_SCALAR_TAIL_DASH](
"scalar_tail") >> 
"-";
 
  109  prods[PROD_SCALAR_TAIL_SQUOT](
"scalar_tail") >> 
"'";
 
  110  prods[PROD_SCALAR_TAIL_OTHER](
"scalar_tail") >> 
"OTHERCHAR";
 
  111  prods[PROD_DESCAPED_DQUOT](
"descaped") >> 
"\"";
 
  112  prods[PROD_DESCAPED_SLASH](
"descaped") >> 
"\\";
 
  113  prods[PROD_DESCAPED_DQUOTED](
"descaped") >> 
"dquoted";
 
  114  prods[PROD_DQUOTED_COMMON](
"dquoted") >> 
"common";
 
  115  prods[PROD_DQUOTED_SQUOT](
"dquoted") >> 
"'";
 
  116  prods[PROD_SQUOTED_COMMON](
"squoted") >> 
"common";
 
  117  prods[PROD_SQUOTED_DQUOT](
"squoted") >> 
"\"";
 
  118  prods[PROD_SQUOTED_SLASH](
"squoted") >> 
"\\";
 
  119  prods[PROD_ANY_COMMON](
"any") >> 
"common";
 
  120  prods[PROD_ANY_DQUOT](
"any") >> 
"\"";
 
  121  prods[PROD_ANY_SQUOT](
"any") >> 
"'";
 
  122  prods[PROD_ANY_SLASH](
"any") >> 
"\\";
 
  123  prods[PROD_COMMON_SPACE](
"common") >> 
"WS";
 
  124  prods[PROD_COMMON_COLON](
"common") >> 
":";
 
  125  prods[PROD_COMMON_DOT](
"common") >> 
".";
 
  126  prods[PROD_COMMON_DASH](
"common") >> 
"-";
 
  127  prods[PROD_COMMON_PIPE](
"common") >> 
"|";
 
  128  prods[PROD_COMMON_LSQUARE](
"common") >> 
"[";
 
  129  prods[PROD_COMMON_RSQUARE](
"common") >> 
"]";
 
  130  prods[PROD_COMMON_LCURLY](
"common") >> 
"{";
 
  131  prods[PROD_COMMON_RCURLY](
"common") >> 
"}";
 
  132  prods[PROD_COMMON_RANGLE](
"common") >> 
">";
 
  133  prods[PROD_COMMON_COMMA](
"common") >> 
",";
 
  134  prods[PROD_COMMON_PERCENT](
"common") >> 
"%";
 
  135  prods[PROD_COMMON_EXCL](
"common") >> 
"!";
 
  136  prods[PROD_COMMON_OTHER](
"common") >> 
"OTHERCHAR";
 
  137  prods[PROD_SPACE_STAR_EMPTY](
"WS*");
 
  138  prods[PROD_SPACE_STAR_NEXT](
"WS*") >> 
"WS*", 
"WS";
 
  139  prods[PROD_SPACE_PLUS_FIRST](
"WS+") >> 
"WS";
 
  140  prods[PROD_SPACE_PLUS_NEXT](
"WS+") >> 
"WS+", 
"WS";
 
  146Language make_language() {
 
  149  prods = make_productions();
 
  150  Language::Tokens& toks = out.tokens;
 
  152  toks[TOK_NEWLINE](
"NEWLINE", 
"((#[^\r\n]*)?\r?\n[ \t]*)+");
 
  153  toks[TOK_INDENT](
"INDENT", 
"((#[^\r\n]*)?\r?\n[ \t]*)+");
 
  154  toks[TOK_DEDENT](
"DEDENT", 
"((#[^\r\n]*)?\r?\n[ \t]*)+");
 
  155  toks[TOK_SPACE](
"WS", 
"[ \t]");
 
  156  toks[TOK_COLON](
":", 
":");
 
  157  toks[TOK_DOT](
".", 
"\\.");
 
  158  toks[TOK_DASH](
"-", 
"\\-");
 
  159  toks[TOK_DQUOT](
"\"", 
"\"");
 
  160  toks[TOK_SQUOT](
"'", 
"'");
 
  161  toks[TOK_SLASH](
"\\", 
"\\\\");
 
  162  toks[TOK_PIPE](
"|", 
"\\|");
 
  163  toks[TOK_LSQUARE](
"[", 
"\\[");
 
  164  toks[TOK_RSQUARE](
"]", 
"\\]");
 
  165  toks[TOK_LCURLY](
"{", 
"{");
 
  166  toks[TOK_RCURLY](
"}", 
"}");
 
  167  toks[TOK_RANGLE](
">", 
">");
 
  168  toks[TOK_COMMA](
",", 
",");
 
  169  toks[TOK_PERCENT](
"%", 
"%");
 
  170  toks[TOK_EXCL](
"!", 
"!");
 
  171  toks[TOK_OTHER](
"OTHERCHAR", 
"[^ \t:\\.\\-\"'\\\\\\|\\[\\]{}>,%#!\n\r]");
 
  177  if (ptr.strong_count() == 0) {
 
  178    ptr.
reset(
new Language(make_language()));
 
  185  if (ptr.strong_count() == 0) {
 
A TeuchosParser Language for a subset of YAML.
 
void reset()
Reset to null.
 
The Teuchos namespace contains all of the classes, structs and enums used by Teuchos,...
 
RCP< const ReaderTables > ReaderTablesPtr
an RCP to a const ReaderTables
 
RCP< const Language > LanguagePtr
an RCP to a const Language
 
ReaderTablesPtr make_reader_tables(Language const &language)
constructs ReaderTables for the given Language.
 
Productions productions
vector of productions