Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Мазмұны
Кіріспе
Стандартты UNIX құралы
Standard UNIX utility
Lex – лексикалық талдаушыларды ("сканерлер" немесе "лексерлер") құратын компьютерлік бағдарлама. Ол көбінесе yacc талдаушы генераторымен бірге қолданылады және көптеген Unix және Unix-қа ұқсас жүйелерде стандартты лексикалық талдаушы генераторы болып табылады. POSIX стандартында оған баламалы құрал қарастырылған. Lex лексикалық талдаушыны сипаттайтын кіріс ағынын оқиды және лексикалық талдаушыны C бағдарламалау тілінде іске асыратын бастапқы кодты жасайды. C-дан басқа, Lex-тің кейбір ескі нұсқалары Ratfor тілінде де лексер құра алады.
Lex is a computer program that generates lexical analyzers ("scanners" or "lexers"). It is commonly used with the yacc parser generator and is the standard lexical analyzer generator on many Unix and Unix like systems. An equivalent tool is specified as part of the POSIX standard. Lex reads an input stream specifying the lexical analyzer and writes source code which implements the lexical analyzer in the C programming language. In addition to C, some old versions of Lex could generate a lexer in Ratfor.
Тарих
Лексті алғаш Майк Леск пен Эрик Шмидт жазды және 1975 жылы сипаттады. Келесі жылдары Lex көптеген Unix және Unix-ке ұқсас жүйелерде стандартты лексикалық талдау генераторына айналды. 1983 жылы Lex, Белл зертханаларының лицензиясы бойынша Чарльз Ривер Дата Системінің UNOS операциялық жүйесі үшін қолжетімді бірнеше UNIX құралдарының бірі болды. Алғашында коммерциялық бағдарлама ретінде таратылғанымен, Lex-тің кейбір нұсқалары қазір ашық кодты бағдарлама болып табылады. Lex-тің бастапқы коммерциялық кодына негізделген ашық кодты нұсқалары қазір Bell Labs-тің OpenSolaris және Plan 9 сияқты ашық кодты операциялық жүйелерімен бірге таратылады. Lex-тің танымал ашық кодты нұсқасы, flex деп аталады, немесе «жылдам лексикалық талдаушы», коммерциялық кодтан туындамаған.
Lex was originally written by Mike Lesk and Eric Schmidt and described in 1975. In the following years, Lex became standard lexical analyzer generator on many Unix and Unix like systems. In 1983, Lex was one of several UNIX tools available for Charles River Data Systems' UNOS operating system under Bell Laboratories license. Although originally distributed as proprietary software, some versions of Lex are now open source. Open source versions of Lex, based on the original proprietary code, are now distributed with open source operating systems such as OpenSolaris and Plan 9 from Bell Labs. One popular open source version of Lex, called flex, or the "fast lexical analyzer", is not derived from proprietary coding.
Lex-ті талдау генераторларымен пайдалану
Лекс, басқа лексикалық талдағыштар сияқты, ережелерді тек қана тұрақты өрнектермен сипатталатындарымен шектейді. Осы себепті, Лексті тілдердің Хомский иерархиясы көрсеткендей, шекті күйдегі автоматтар іске асыра алады. Күрделі тілдерді тану үшін Лекс көбінесе Yacc немесе Bison сияқты синтаксистік талдау генераторларымен бірге қолданылады. Синтаксистік талдау генераторлары кіріс ағынын талдау үшін формальды грамматиканы пайдаланады. Әдетте, синтаксистік талдаушы, мысалы, Yacc арқылы жасалған, кіріс ретінде таңбалар ағынын ("таңбалар ағыны") қабылдау, символдар ағынын ("символдар ағыны") тікелей өңдеуге қарағанда артықшылықты болып табылады. Лекс мұндай таңбалар ағынын жасау үшін жиі қолданылады. Сканерсіз синтаксистік талдау – кіріс таңбалар ағынын тікелей, бөлек лексикалық талдаушысыз талдау.
Lex, as with other lexical analyzers, limits rules to those which can be described by regular expressions. Due to this, Lex can be implemented by a finite state automata as shown by the Chomsky hierarchy of languages. To recognize more complex languages, Lex is often used with parser generators such as Yacc or Bison. Parser generators use a formal grammar to parse an input stream. It is typically preferable to have a parser, one generated by Yacc for instance, accept a stream of tokens (a "token stream") as input, rather than having to process a stream of characters (a "character stream") directly. Lex is often used to produce such a token stream. Scannerless parsing refers to parsing the input character stream directly, without a distinct lexer.
Лекс және
make – Lex қолданылатын бағдарламаларды күтіп ұстауға арналған құрал. Make, .l кеңейтімі бар файлды Lex бастапқы файлы деп қарастырады. Make ішкі макросы LFLAGS, Lex опцияларын make автоматты түрде шақыруы үшін пайдаланылуы мүмкін.
make is a utility that can be used to maintain programs involving Lex. Make assumes that a file that has an extension of l is a Lex source file. The make internal macro LFLAGS can be used to specify Lex options to be invoked automatically by make.