/*************************************************************************/
/* Copyright (c) 2004 */
/* Daniel Sleator, David Temperley, and John Lafferty */
/* Copyright (c) 2013 Linas Vepstas */
/* All rights reserved */
/* */
/* Use of the link grammar parsing system is subject to the terms of the */
/* license set forth in the LICENSE file included with this software. */
/* This license allows free redistribution and use in source and binary */
/* forms, with or without modification, subject to certain conditions. */
/* */
/*************************************************************************/
#ifndef _WORD_STRUCTURE_H_
#define _WORD_STRUCTURE_H_
#include <inttypes.h>
#include "stdbool.h"
#include "api-types.h"
typedef struct X_node_struct X_node;
struct X_node_struct
{
const char * string; /* the word itself */
Exp * exp;
X_node *next;
const Gword *word; /* originating Wordgraph word */
};
/**
* Word, as represented shortly after tokenization, but before parsing.
*
* X_node* x:
* Contains a pointer to a list of expressions from the dictionary,
* Computed by build_sentence_expressions().
*
* Disjunct* d:
* Contains a pointer to a list of disjuncts for this word.
* Computed by: prepare_to_parse(), but modified by pruning and power
* pruning.
*/
struct Word_struct
{
const char *unsplit_word;
X_node * x; /* Sentence starts out with these, */
Disjunct * d; /* eventually these get generated. */
uint32_t num_disjuncts; /* Length of above. */
bool optional; /* Linkage is optional. */
const char **alternatives;
Gword **gwords; /* gword alternatives. */
};
#endif