亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
日韩在线观看一区二区| 在线视频中文字幕一区二区| 99久久国产综合精品色伊| 欧美亚洲免费在线一区| 欧美高清一级片在线观看| 男人操女人的视频在线观看欧美| av一区二区三区四区| 欧美不卡一二三| 一区二区三区四区视频精品免费 | 久久影院视频免费| 亚洲精品国产高清久久伦理二区| 狠狠久久亚洲欧美| 欧美日韩成人一区二区| 亚洲欧洲色图综合| 国产精品99精品久久免费| 日韩欧美国产高清| 亚洲成人精品一区二区| 色综合久久久网| 国产拍揄自揄精品视频麻豆| 久久成人羞羞网站| 8x8x8国产精品| 亚洲国产aⅴ天堂久久| 91黄视频在线观看| 一区二区高清在线| 色狠狠桃花综合| 亚洲人精品一区| 99久久综合国产精品| 国产精品理论片| 国产91露脸合集magnet | 久久黄色级2电影| 欧美丝袜自拍制服另类| 一区二区三区精品| 欧美亚洲国产一区二区三区va| 亚洲久本草在线中文字幕| 99国产精品久久| 亚洲欧美综合另类在线卡通| 99精品1区2区| 伊人色综合久久天天人手人婷| 91久久久免费一区二区| 亚洲h动漫在线| 日韩欧美一区二区久久婷婷| 激情图片小说一区| 久久久久久久综合日本| 成人一区二区三区| 亚洲日本一区二区| 在线免费观看日韩欧美| 婷婷综合另类小说色区| 91精品国产一区二区| 久草热8精品视频在线观看| 日韩精品一区二区三区在线观看| 久久99精品国产.久久久久久| 久久久亚洲午夜电影| 成人深夜福利app| 一区二区三区成人| 欧美一区二区免费观在线| 美女网站一区二区| 国产欧美一区二区三区在线看蜜臀| 国产高清无密码一区二区三区| 亚洲欧洲av在线| 欧美精品一二三四| 国产一区二区女| 亚洲人成电影网站色mp4| 欧美少妇性性性| 国产精品影视网| 一区二区三区在线影院| 日韩欧美你懂的| 成人免费看视频| 亚洲成av人影院在线观看网| 精品成人免费观看| 91麻豆高清视频| 久久99久久99精品免视看婷婷 | 精品欧美久久久| 97久久精品人人做人人爽50路 | 依依成人综合视频| 精品美女在线观看| 不卡的av电影| 久久国产精品99精品国产| 亚洲特黄一级片| 精品理论电影在线| 在线观看中文字幕不卡| 国产寡妇亲子伦一区二区| 亚洲国产综合视频在线观看| 久久久久久夜精品精品免费| 欧美午夜一区二区三区免费大片| 韩国成人福利片在线播放| 亚洲综合区在线| 国产精品三级在线观看| 日韩欧美123| 欧美日韩国产精品自在自线| 成人午夜视频福利| 精品一区二区成人精品| 日韩av在线播放中文字幕| 日韩一区在线免费观看| 久久久久国产精品麻豆ai换脸| 欧美群妇大交群的观看方式| 日本高清不卡aⅴ免费网站| 国产a区久久久| 国内外成人在线| 青青草原综合久久大伊人精品优势| 一区二区三区欧美视频| 国产精品狼人久久影院观看方式| 久久久久久久综合色一本| 日韩欧美一级精品久久| 91精品国产一区二区三区| 欧美精品高清视频| 色婷婷精品久久二区二区蜜臂av | 亚洲三级电影网站| 中文字幕不卡的av| 国产欧美精品区一区二区三区| 欧美一级日韩一级| 91精品国产综合久久精品麻豆| 欧洲国内综合视频| 欧美最猛性xxxxx直播| 色综合激情久久| 色悠久久久久综合欧美99| 99精品视频在线免费观看| 97国产一区二区| 色综合久久中文综合久久97| 91在线丨porny丨国产| 91老师片黄在线观看| gogogo免费视频观看亚洲一| 成人app软件下载大全免费| 国产高清在线精品| av资源网一区| av成人免费在线观看| 色综合久久综合| 欧美日韩国产高清一区二区三区| 欧美老肥妇做.爰bbww视频| 欧美精品乱码久久久久久按摩| 日韩亚洲欧美在线| 久久婷婷综合激情| 中文字幕乱码久久午夜不卡| 亚洲欧美日韩国产中文在线| 亚洲国产精品久久久久婷婷884| 三级精品在线观看| 精品在线视频一区| 成人高清免费观看| 色久优优欧美色久优优| 日韩区在线观看| 国产三级一区二区三区| 亚洲精品国产无天堂网2021 | 一区二区三区四区高清精品免费观看 | 成人黄色片在线观看| 欧美午夜电影网| 精品不卡在线视频| 亚洲猫色日本管| 美女爽到高潮91| 成人av在线网站| 欧美日韩亚洲不卡| 国产午夜亚洲精品不卡| 一区二区三区四区在线免费观看| 日本亚洲免费观看| 99re热这里只有精品视频| 欧美日韩大陆一区二区| 国产欧美日韩在线视频| 亚洲高清免费观看高清完整版在线观看 | 亚洲四区在线观看| 久久成人免费网| 色婷婷激情综合| 久久精品一区四区| 亚洲国产综合91精品麻豆| 国产成人h网站| 在线成人av影院| 国产精品久久久久久久裸模| 麻豆成人免费电影| 日本精品视频一区二区| 久久久久国产成人精品亚洲午夜 | 欧美精品色综合| 国产精品视频观看| 久久se精品一区精品二区| 欧美在线视频你懂得| 国产精品免费久久久久| 蜜臀久久99精品久久久久宅男| 欧美影院精品一区| 亚洲欧洲三级电影| 国产精品中文欧美| 欧美大胆人体bbbb| 天堂在线一区二区| 欧美在线观看一区二区| 中文字幕乱码日本亚洲一区二区| 久久99九九99精品| 91精品国产91久久久久久一区二区 | 欧美在线小视频| 亚洲欧洲精品一区二区精品久久久| 黑人巨大精品欧美黑白配亚洲| 在线成人免费观看| 一区二区三区精品在线| 91丨porny丨国产入口| 国产欧美视频一区二区| 国产乱码精品一区二区三区av | 六月丁香婷婷久久| 欧美精品在线一区二区三区| 一区二区在线观看视频| 91网站视频在线观看| 国产精品的网站| 色综合久久99| 亚洲午夜精品在线| 欧美三级中文字幕| 亚洲成av人片在线观看无码| 欧美午夜一区二区三区|