Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

74 lines
2.2 KiB

// Copyright (c)1997-1999 Microsoft Corporation, All Rights Reserved
#ifndef __LEX__
#define __LEX__
#include <tchar.h>
#include "fmtinfo.h"
#include "token.h"
#define P_IN(x) const x &
#define P_OUT(x) x &
#define P_IO(x) x &
#define PURE = 0
// Lex state, kept at the beginning of every line (lxsBOL) from
// previous line's state at its end (lxsEOL). Must fit all bits
// necessary to restart lexing on a line by line basis.
typedef DWORD LXS;
typedef LXS * PLXS;
// Lexer and language Metrics
const unsigned ctchUserTokenPhrase = 100;
struct USERTOKENS
{
INT token; // preassigned in the user range
TCHAR szToken[ctchUserTokenPhrase+1]; // token class name exposed to user
COLORREF RGBText;
COLORREF RGBBackground;
AUTO_COLOR autocolorFore;
AUTO_COLOR autocolorBack;
};
typedef USERTOKENS * PUSERTOKENS;
typedef const USERTOKENS * PCUSERTOKENS;
// Alternate way of looking at a token, editor will only look at tokUser.
// Other clients of the lexer (like the parser or the EE) may want to look
// at the actual token in tokAct. If any of tokAct is set, then it is expected
// that the actual token is different than the meta token it passed back.
// The status bits are only used by the lexer for whatever it wants.
union TOK_ALT {
TOKEN tok;
struct {
unsigned tokUser : 12;
unsigned tokUserStatus : 4;
unsigned tokAct : 12;
unsigned tokActStatus : 4;
};
};
// A SUBLANG structure was originally used for identifying different
// dialects of the same language (like fortran fixed and fortran free)
// that use the same lexer, can be treated as two languages in the editor,
// and share all the same color/font info in the format dialog.
//
// We've extended it to be a general descriptor for a type of text file.
//
struct SUBLANG
{
LPCTSTR szSubLang;
LXS lxsInitial;
UINT nIdTemplate; // Icon and MFC doc template string resource id
CLSID clsidTemplate;
};
typedef SUBLANG * PSUBLANG;
typedef const SUBLANG * PCSUBLANG;
#define MAX_LANGNAMELEN (50)
#endif