complex.qbk

来自「Boost provides free peer-reviewed portab」· QBK 代码 · 共 53 行

QBK
53
字号
[/==============================================================================    Copyright (C) 2001-2008 Joel de Guzman    Copyright (C) 2001-2008 Hartmut Kaiser    Distributed under the Boost Software License, Version 1.0. (See accompanying    file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)===============================================================================/][section Complex - Our first complex parser]Well, not really a complex parser, but a parser that parses complex numbers.This time, we're using __phoenix__ to do the semantic actions.Here's a simple parser expression for complex numbers:        '(' >> double_ >> -(',' >> double_) >> ')'    |   double_What's new? Well, we have:# Alternates: e.g. `a | b`. Try `a` first. If it succeeds, good. If not, try the  next alternative, `b`.# Optionals: e.g. -p. Match the parser p zero or one time.The complex parser presented above reads as:* One or two real number in parantheses, separated by comma (the second number is optional)* *OR* a single real number.This parser can parse complex numbers of the form:    (123.45, 987.65)    (123.45)    123.45[import ../../example/qi/complex_number.cpp]Here goes, this time with actions:[tutorial_complex_number]The full cpp file for this example can be found here: [@../../example/qi/complex_number.cpp]The `double_` parser attaches this action:    ref(n) = _1This assigns the parsed result (actually, the attribute of `double_`) to n.`ref(n)` tells Phoenix that `n` is a mutable reference. `_1` is a Phoenixplaceholder for the parsed result attribute.[endsect]

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?