亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? flex.texi

?? 詞法分析器生成工具
?? TEXI
?? 第 1 頁 / 共 5 頁
字號:
\input texinfo
@c %**start of header
@setfilename flex.info
@settitle Flex - a scanner generator
@c @finalout
@c @setchapternewpage odd
@c %**end of header

@set EDITION 2.5
@set UPDATED March 1995
@set VERSION 2.5

@c FIXME - Reread a printed copy with a red pen and patience.
@c FIXME - Modify all "See ..." references and replace with @xref's.

@ifinfo
@format
START-INFO-DIR-ENTRY
* Flex: (flex).         A fast scanner generator.
END-INFO-DIR-ENTRY
@end format
@end ifinfo

@c Define new indices for commands, filenames, and options.
@c @defcodeindex cm
@c @defcodeindex fl
@c @defcodeindex op

@c Put everything in one index (arbitrarily chosen to be the concept index).
@c @syncodeindex cm cp
@c @syncodeindex fl cp
@syncodeindex fn cp
@syncodeindex ky cp
@c @syncodeindex op cp
@syncodeindex pg cp
@syncodeindex vr cp

@ifinfo
This file documents Flex.

Copyright (c) 1990 The Regents of the University of California.
All rights reserved.

This code is derived from software contributed to Berkeley by
Vern Paxson.

The United States Government has rights in this work pursuant
to contract no. DE-AC03-76SF00098 between the United States
Department of Energy and the University of California.

Redistribution and use in source and binary forms are permitted
provided that: (1) source distributions retain this entire
copyright notice and comment, and (2) distributions including
binaries display the following acknowledgement:  ``This product
includes software developed by the University of California,
Berkeley and its contributors'' in the documentation or other
materials provided with the distribution and in all advertising
materials mentioning features or use of this software.  Neither the
name of the University nor the names of its contributors may be
used to endorse or promote products derived from this software
without specific prior written permission.

THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE.

@ignore
Permission is granted to process this file through TeX and print the
results, provided the printed document carries copying permission
notice identical to this one except for the removal of this paragraph
(this paragraph not being relevant to the printed manual).

@end ignore
@end ifinfo

@titlepage
@title Flex, version @value{VERSION}
@subtitle A fast scanner generator
@subtitle Edition @value{EDITION}, @value{UPDATED}
@author Vern Paxson

@page
@vskip 0pt plus 1filll
Copyright @copyright{} 1990 The Regents of the University of California.
All rights reserved.

This code is derived from software contributed to Berkeley by
Vern Paxson.

The United States Government has rights in this work pursuant
to contract no. DE-AC03-76SF00098 between the United States
Department of Energy and the University of California.

Redistribution and use in source and binary forms are permitted
provided that: (1) source distributions retain this entire
copyright notice and comment, and (2) distributions including
binaries display the following acknowledgement:  ``This product
includes software developed by the University of California,
Berkeley and its contributors'' in the documentation or other
materials provided with the distribution and in all advertising
materials mentioning features or use of this software.  Neither the
name of the University nor the names of its contributors may be
used to endorse or promote products derived from this software
without specific prior written permission.

THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE.
@end titlepage

@ifinfo

@node Top, Name, (dir), (dir)
@top flex

@cindex scanner generator

This manual documents @code{flex}.  It covers release @value{VERSION}.

@menu
* Name::                        Name
* Synopsis::                    Synopsis
* Overview::                    Overview
* Description::                 Description
* Examples::                    Some simple examples
* Format::                      Format of the input file
* Patterns::                    Patterns
* Matching::                    How the input is matched
* Actions::                     Actions
* Generated scanner::           The generated scanner
* Start conditions::            Start conditions
* Multiple buffers::            Multiple input buffers
* End-of-file rules::           End-of-file rules
* Miscellaneous::               Miscellaneous macros
* User variables::              Values available to the user
* YACC interface::              Interfacing with @code{yacc}
* Options::                     Options
* Performance::                 Performance considerations
* C++::                         Generating C++ scanners
* Incompatibilities::           Incompatibilities with @code{lex} and POSIX
* Diagnostics::                 Diagnostics
* Files::                       Files
* Deficiencies::                Deficiencies / Bugs
* See also::                    See also
* Author::                      Author
@c * Index::                       Index
@end menu

@end ifinfo

@node Name, Synopsis, Top, Top
@section Name

flex - fast lexical analyzer generator

@node Synopsis, Overview, Name, Top
@section Synopsis

@example
flex [-bcdfhilnpstvwBFILTV78+? -C[aefFmr] -ooutput -Pprefix -Sskeleton]
[--help --version] [@var{filename} @dots{}]
@end example

@node Overview, Description, Synopsis, Top
@section Overview

This manual describes @code{flex}, a tool for generating programs
that perform pattern-matching on text.  The manual
includes both tutorial and reference sections:

@table @asis
@item Description
a brief overview of the tool

@item Some Simple Examples

@item Format Of The Input File

@item Patterns
the extended regular expressions used by flex

@item How The Input Is Matched
the rules for determining what has been matched

@item Actions
how to specify what to do when a pattern is matched

@item The Generated Scanner
details regarding the scanner that flex produces;
how to control the input source

@item Start Conditions
introducing context into your scanners, and
managing "mini-scanners"

@item Multiple Input Buffers
how to manipulate multiple input sources; how to
scan from strings instead of files

@item End-of-file Rules
special rules for matching the end of the input

@item Miscellaneous Macros
a summary of macros available to the actions

@item Values Available To The User
a summary of values available to the actions

@item Interfacing With Yacc
connecting flex scanners together with yacc parsers

@item Options
flex command-line options, and the "%option"
directive

@item Performance Considerations
how to make your scanner go as fast as possible

@item Generating C++ Scanners
the (experimental) facility for generating C++
scanner classes

@item Incompatibilities With Lex And POSIX
how flex differs from AT&T lex and the POSIX lex
standard

@item Diagnostics
those error messages produced by flex (or scanners
it generates) whose meanings might not be apparent

@item Files
files used by flex

@item Deficiencies / Bugs
known problems with flex

@item See Also
other documentation, related tools

@item Author
includes contact information
@end table

@node Description, Examples, Overview, Top
@section Description

@code{flex} is a tool for generating @dfn{scanners}: programs which
recognized lexical patterns in text.  @code{flex} reads the given
input files, or its standard input if no file names are
given, for a description of a scanner to generate.  The
description is in the form of pairs of regular expressions
and C code, called @dfn{rules}. @code{flex} generates as output a C
source file, @file{lex.yy.c}, which defines a routine @samp{yylex()}.
This file is compiled and linked with the @samp{-lfl} library to
produce an executable.  When the executable is run, it
analyzes its input for occurrences of the regular
expressions.  Whenever it finds one, it executes the
corresponding C code.

@node Examples, Format, Description, Top
@section Some simple examples

First some simple examples to get the flavor of how one
uses @code{flex}.  The following @code{flex} input specifies a scanner
which whenever it encounters the string "username" will
replace it with the user's login name:

@example
%%
username    printf( "%s", getlogin() );
@end example

By default, any text not matched by a @code{flex} scanner is
copied to the output, so the net effect of this scanner is
to copy its input file to its output with each occurrence
of "username" expanded.  In this input, there is just one
rule.  "username" is the @var{pattern} and the "printf" is the
@var{action}.  The "%%" marks the beginning of the rules.

Here's another simple example:

@example
        int num_lines = 0, num_chars = 0;

%%
\n      ++num_lines; ++num_chars;
.       ++num_chars;

%%
main()
        @{
        yylex();
        printf( "# of lines = %d, # of chars = %d\n",
                num_lines, num_chars );
        @}
@end example

This scanner counts the number of characters and the
number of lines in its input (it produces no output other
than the final report on the counts).  The first line
declares two globals, "num_lines" and "num_chars", which
are accessible both inside @samp{yylex()} and in the @samp{main()}
routine declared after the second "%%".  There are two rules,
one which matches a newline ("\n") and increments both the
line count and the character count, and one which matches
any character other than a newline (indicated by the "."
regular expression).

A somewhat more complicated example:

@example
/* scanner for a toy Pascal-like language */

%@{
/* need this for the call to atof() below */
#include <math.h>
%@}

DIGIT    [0-9]
ID       [a-z][a-z0-9]*

%%

@{DIGIT@}+    @{
            printf( "An integer: %s (%d)\n", yytext,
                    atoi( yytext ) );
            @}

@{DIGIT@}+"."@{DIGIT@}*        @{
            printf( "A float: %s (%g)\n", yytext,
                    atof( yytext ) );
            @}

if|then|begin|end|procedure|function        @{
            printf( "A keyword: %s\n", yytext );
            @}

@{ID@}        printf( "An identifier: %s\n", yytext );

"+"|"-"|"*"|"/"   printf( "An operator: %s\n", yytext );

"@{"[^@}\n]*"@}"     /* eat up one-line comments */

[ \t\n]+          /* eat up whitespace */

.           printf( "Unrecognized character: %s\n", yytext );

%%

main( argc, argv )
int argc;
char **argv;
    @{
    ++argv, --argc;  /* skip over program name */
    if ( argc > 0 )
            yyin = fopen( argv[0], "r" );
    else
            yyin = stdin;

    yylex();
    @}
@end example

This is the beginnings of a simple scanner for a language
like Pascal.  It identifies different types of @var{tokens} and
reports on what it has seen.

The details of this example will be explained in the
following sections.

@node Format, Patterns, Examples, Top
@section Format of the input file

The @code{flex} input file consists of three sections, separated
by a line with just @samp{%%} in it:

@example
definitions
%%
rules
%%
user code
@end example

The @dfn{definitions} section contains declarations of simple
@dfn{name} definitions to simplify the scanner specification,
and declarations of @dfn{start conditions}, which are explained
in a later section.
Name definitions have the form:

@example
name definition

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲福利电影网| 777xxx欧美| 国产精品久久影院| 国产91精品精华液一区二区三区| 日韩一区二区在线观看| 偷拍亚洲欧洲综合| 日韩免费看的电影| 国产91精品一区二区麻豆网站| 中文字幕高清一区| 欧美系列一区二区| 加勒比av一区二区| 国产精品丝袜久久久久久app| 国产河南妇女毛片精品久久久 | 欧美亚洲国产一区二区三区| 一区二区在线观看视频在线观看| 色综合久久88色综合天天| 天天色图综合网| 国产亚洲精品久| 欧美亚洲日本一区| 激情成人综合网| 国产精品不卡在线| 日韩欧美在线网站| 成人精品小蝌蚪| 亚洲精品日韩一| 在线播放国产精品二区一二区四区| 国产米奇在线777精品观看| 一区二区三区四区不卡视频| 久久亚洲影视婷婷| 欧美一区二区日韩一区二区| 日本高清视频一区二区| 韩国欧美国产1区| 日产精品久久久久久久性色| 一区二区三区 在线观看视频| 欧美一区二区在线播放| 97精品国产露脸对白| 国产成人在线免费观看| 国产一区在线精品| 美洲天堂一区二卡三卡四卡视频| 亚洲精品水蜜桃| 亚洲欧美区自拍先锋| 国产性色一区二区| 久久久精品中文字幕麻豆发布| 欧美成人一区二区三区片免费| 6080亚洲精品一区二区| 精品视频999| 欧美色综合影院| 欧美久久婷婷综合色| 91精品国产黑色紧身裤美女| 在线观看免费一区| 欧美亚洲丝袜传媒另类| 欧美日韩成人综合天天影院| 欧美日韩一区不卡| 91精品国产综合久久久久久| 日韩欧美一二区| 欧美国产乱子伦 | 91美女片黄在线| 色综合中文字幕| 欧美精品乱人伦久久久久久| 日韩欧美国产一区在线观看| 精品国免费一区二区三区| 日韩精品一区二区三区四区视频 | 裸体歌舞表演一区二区| 国产经典欧美精品| 色猫猫国产区一区二在线视频| 91在线精品一区二区| 欧美色精品在线视频| 欧美一区二区三区的| 亚洲欧美影音先锋| 亚洲乱码国产乱码精品精的特点| 亚洲中国最大av网站| 激情欧美一区二区三区在线观看| 成人福利视频在线| 欧美色爱综合网| 国产色综合一区| 亚洲成精国产精品女| 国产精品一品二品| 欧美性生活久久| 久久精品综合网| 日韩精品电影在线| 欧美色视频在线观看| 亚洲图片欧美激情| 青娱乐精品视频在线| 色综合久久综合网欧美综合网| 国产日产欧产精品推荐色| 伦理电影国产精品| 欧美日韩国产高清一区二区| 亚洲精品国产高清久久伦理二区| 国产xxx精品视频大全| 久久综合狠狠综合久久综合88 | 国产精品国产三级国产有无不卡 | 久久综合五月天婷婷伊人| 美女爽到高潮91| 精品国产乱码久久久久久免费 | 成人欧美一区二区三区小说| 国产黄人亚洲片| 欧美韩日一区二区三区| 蜜桃久久久久久| 精品久久久影院| 国产一区二区三区四| 国产婷婷色一区二区三区| 国产成人午夜精品影院观看视频 | 精品亚洲成a人在线观看| 久久在线免费观看| av在线免费不卡| 亚洲一区二三区| 欧美白人最猛性xxxxx69交| 国产一区二区免费在线| 亚洲天堂成人在线观看| 91精品一区二区三区在线观看| 激情综合色综合久久综合| 国产精品二区一区二区aⅴ污介绍| 97久久精品人人做人人爽50路| 亚洲免费三区一区二区| 日韩精品一区二区三区蜜臀| 成人免费视频一区| 1024亚洲合集| 精品va天堂亚洲国产| 99精品欧美一区二区三区小说| 偷拍一区二区三区四区| 国产精品久久久久一区二区三区共| 在线看日韩精品电影| 精品一区二区三区日韩| 亚洲一区二区三区爽爽爽爽爽 | 久久综合久久综合久久| 欧美午夜不卡在线观看免费| 国产在线精品视频| 奇米一区二区三区av| 亚洲自拍偷拍综合| 亚洲图片激情小说| 国产精品日韩成人| 精品国产伦一区二区三区观看体验 | 911国产精品| 欧美在线观看一二区| 岛国精品在线播放| 国产成人日日夜夜| 国产原创一区二区三区| 国产一区二区成人久久免费影院 | 91丝袜美腿高跟国产极品老师| 在线不卡一区二区| 亚洲va韩国va欧美va| 国产精品三级av| 一级日本不卡的影视| 日韩高清在线观看| www.成人在线| 日韩精品一区二区三区在线观看| 国产精品久久久久久久蜜臀| 亚洲第一av色| 91麻豆文化传媒在线观看| 欧美精品一卡二卡| 综合精品久久久| 国产一区二区在线看| 国产69精品久久777的优势| 国产精品亚洲成人| 91国模大尺度私拍在线视频| 欧美日韩一区二区三区四区五区 | 精品国产乱码久久久久久闺蜜| 欧美精品一区二| 中文字幕一区二区三区乱码在线| 一区二区三区日韩在线观看| 丝袜国产日韩另类美女| 国产高清成人在线| 91久久一区二区| 日韩欧美国产三级电影视频| 国产精品二三区| 久久国产综合精品| 色国产综合视频| 精品三级av在线| 亚洲第一会所有码转帖| 国产精品一区在线| 91麻豆精品国产91久久久久久| 国产日韩高清在线| 久久av资源网| 欧美色爱综合网| 亚洲人123区| 国产老妇另类xxxxx| 6080日韩午夜伦伦午夜伦| 亚洲免费av高清| 豆国产96在线|亚洲| 日韩欧美色综合| 三级欧美在线一区| 欧美亚洲图片小说| 国产精品二三区| 色av一区二区| 亚洲成人av资源| 日韩视频免费观看高清在线视频| 久久99精品国产91久久来源| 久久伊99综合婷婷久久伊| 国产一区二区伦理片| 精品国产乱子伦一区| 夫妻av一区二区| 亚洲精品乱码久久久久久日本蜜臀| 在线免费观看日韩欧美| 日韩精品1区2区3区| 欧美成人精品1314www| 美女mm1313爽爽久久久蜜臀| 久久亚洲精华国产精华液| 成人网男人的天堂| 亚洲成年人影院| 精品福利一区二区三区| 91原创在线视频|