Автор Тема: Про парсер и лексер.  (Прочитано 50597 раз)

chucheloid

  • Newbie
  • *
  • Сообщений: 35
    • Просмотр профиля
Re: Про парсер и лексер.
« Ответ #105 : Сентябрь 17, 2012, 12:09:00 pm »
Я там ещё у странички запросил исходный код и получил 2312 строчечный html вот с такими названиями функций: MVCTest_SamplesViewModel__N_closureOf__N_lambda__8064_8256.

Веб для меня -- тёмный лес...
Ты пытаешься понять язык высокого уровня глядя на машинный код, полученный после оптимизирующего компилятора.
Это очень не правильный подход.

chucheloid

  • Newbie
  • *
  • Сообщений: 35
    • Просмотр профиля
Re: Про парсер и лексер.
« Ответ #106 : Сентябрь 17, 2012, 12:16:26 pm »
Это не веб, это выхлоп компилятора немерли (если не ошибаюсь).
И да, для данных примеров оно выглядит как суровый оверкил.
Смотреть нужно не машинный код. А тот код, из которого это все получается.

(мало того что для такой простой задачи там порядка 2к строк, так еще и пачка либ подключено:
Если почитать этот код, то станет ясно, что это код _всех_ демок и обвязки.
Ну и проект еще только начали писать. Объем генерируемого кода там можно очень жестоко оптимизировать. Просто это пока никто не делал.

хотя, возможно как минимум часть этих либ нужна лишь для подсветки синтаксиса исходника странички и так далее.
Именно.

Kemet

  • Hero Member
  • *****
  • Сообщений: 587
    • Просмотр профиля
Re: Про парсер и лексер.
« Ответ #107 : Сентябрь 18, 2012, 06:22:25 pm »
chucheloid, а что в твоем понимание "лексер"?

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Про парсер и лексер.
« Ответ #108 : Ноябрь 05, 2012, 12:57:02 pm »
Ссылочка в тему.
[PEG] Очень хорошо забытое старое

Вообще PEG довольно интересен как замена регулярок.

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Про парсер и лексер.
« Ответ #109 : Ноябрь 05, 2012, 03:24:43 pm »
Ух ты. А добровольцы одинэснеги уже прикрутили Lua к 1С и тамошний LPeg юзают.

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Про парсер и лексер.
« Ответ #110 : Ноябрь 05, 2012, 08:18:48 pm »
http://www.inf.puc-rio.br/~roberto/docs/peg.pdf

Цитировать
Current text pattern-matching tools are based on regular expressions. However, pure regular
expressions have proven too weak a formalism for the task: many interesting patterns either are
difficult to describe or cannot be described by regular expressions. Moreover, the inherent nondeterminism of regular expressions does not fit the need to capture specific parts of a match.
Motivated by these reasons, most scripting languages nowadays use pattern-matching tools that
extend the original regular-expression formalism with a set of ad-hoc features, such as greedy
repetitions, lazy repetitions, possessive repetitions, “longest match rule”, lookahead, etc. These
ad-hoc extensions bring their own set of problems, such as lack of a formal foundation and complex
implementations.
In this paper, we propose the use of Parsing Expression Grammars (PEGs) as a basis for pattern
matching. Following this proposal, we present LPEG, a pattern-matching tool based on PEGs for
the Lua scripting language. LPEG unifies the ease of use of pattern-matching tools with the full
expressive power of PEGs. Because of this expressive power, it can avoid the myriad of ad-hoc
constructions present in several current pattern-matching tools. We also present a Parsing Machine
that allows a small and efficient implementation of PEGs for pattern matching.

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Про парсер и лексер.
« Ответ #111 : Ноябрь 06, 2012, 04:47:40 pm »
Ух ты. А добровольцы одинэснеги уже прикрутили Lua к 1С и тамошний LPeg юзают.

http://code.google.com/p/v7lua/

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Про парсер и лексер.
« Ответ #112 : Ноябрь 13, 2012, 07:37:52 pm »

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Про парсер и лексер.
« Ответ #113 : Апрель 12, 2013, 03:09:29 pm »
Цитировать
The Parsing Expression Grammar Template Library (PEGTL) is a C++0x library for creating parsers according to a Parsing Expression Grammar (PEG). Grammars are embedded as regular C++ code, created with template programming (not template meta programming). These hierarchies naturally correspond to the inductive definition of PEGs. The library extends on the subject of PEGs with new expression types, actions that can be attached to grammar rules, and mechanisms to ensure helpful diagnostics in case of parsing errors. PEGs are superficially similar to Context-Free Grammars (CFGs); for a description see Wikipedia page on PEGs or this paper on PEGs by Bryan Ford.
https://code.google.com/p/pegtl/